From f03364d1398518eaf8f10d6053430a21d30aeafb Mon Sep 17 00:00:00 2001 From: BianLzhaoMin <11485688+bianliangzhaomin123@user.noreply.gitee.com> Date: Mon, 28 Oct 2024 21:43:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=88=E8=AE=A1=E5=88=92=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/workPlan/monthPlan.js | 92 ++ manifest.json | 2 +- pages.json | 14 + pages/workPlan/monthPlan/inf-index.vue | 474 +++++++- pages/workPlan/monthPlan/pro-index.vue | 398 +++++- .../monthPlanAuditingDetails/inf-index.vue | 1080 +++++++++++++++++ .../monthPlanAuditingDetails/pro-index.vue | 1005 +++++++++++++++ pages/workPlan/monthPlanDetails/inf-index.vue | 126 +- pages/workPlan/monthPlanDetails/pro-index.vue | 119 +- .../components/infrastructure-model.vue | 13 +- .../workbench/components/production-model.vue | 8 +- static/images/workPlan/fgs_wtg.png | Bin 0 -> 3616 bytes static/images/workPlan/zgs_dsh.png | Bin 0 -> 3524 bytes 13 files changed, 3264 insertions(+), 67 deletions(-) create mode 100644 pages/workPlan/monthPlanAuditingDetails/inf-index.vue create mode 100644 pages/workPlan/monthPlanAuditingDetails/pro-index.vue create mode 100644 static/images/workPlan/fgs_wtg.png create mode 100644 static/images/workPlan/zgs_dsh.png diff --git a/api/workPlan/monthPlan.js b/api/workPlan/monthPlan.js index 741b4ca..6605ea9 100644 --- a/api/workPlan/monthPlan.js +++ b/api/workPlan/monthPlan.js @@ -96,6 +96,38 @@ export function submitPlanApi(data) { data: data }) } +// 月计划-工作待办-列表 --基建 +export function getWorkWaitListApi(data) { + return request_yn({ + url: '/ynPlanApp/infMonth/getViewReport', + method: 'post', + data: data + }) +} +// 月计划-工作待办-工程信息 --基建 +export function getWorkWaitProjectApi(data) { + return request_yn({ + url: '/ynPlanApp/infMonth/getViewReportForPro', + method: 'post', + data: data + }) +} +// 月计划-工作待办-审核不通过 --基建 +export function setAuditingRejectApi(data) { + return request_yn({ + url: '/ynPlanApp/infMonth/rejectPlan', + method: 'post', + data: data + }) +} +// 月计划-查看报表 --基建 +export function getReportFormListApi(data) { + return request_yn({ + url: '/ynPlanApp/infMonth/getViewReport', + method: 'post', + data: data + }) +} /** * 生产月计划 @@ -214,3 +246,63 @@ export function getIsPlanProApi(data) { data: data }) } + +// 月计划-工作待办-列表 - 生产 +export function getWorkWaitListProApi(data) { + return request_yn({ + url: '/ynPlanApp/proMonth/getViewReport', + method: 'post', + data: data + }) +} + +// 月计划-工作待办-工程信息- - 生产 +// export function getWorkWaitProjectProApi(data) { +// return request_yn({ +// url: '/ynPlanApp/proMonth/getViewReportForPro', +// method: 'post', +// data: data +// }) +// } + +// 月计划-工作待办-审核不通过 - 生产 +export function setAuditingRejectProApi(data) { + return request_yn({ + url: '/ynPlanApp/proMonth/rejectPlan', + method: 'post', + data: data + }) +} + +// 月计划-工作待办-列表 --生产 +// export function getWorkWaitListProApi(data) { +// return request_yn({ +// url: '/ynPlanApp/proMonth/getViewReport', +// method: 'post', +// data: data +// }) +// } +// 月计划-工作待办-工程信息 --生产 +export function getWorkWaitProjectProApi(data) { + return request_yn({ + url: '/ynPlanApp/proMonth/getViewReportForPro', + method: 'post', + data: data + }) +} +// 月计划-工作待办-审核不通过 --生产 +// export function setAuditingRejectProApi(data) { +// return request_yn({ +// url: '/ynPlanApp/proMonth/rejectPlan', +// method: 'post', +// data: data +// }) +// } +// 月计划-查看报表 --生产 +export function getReportFormListProApi(data) { + return request_yn({ + url: '/ynPlanApp/proMonth/getViewReport', + method: 'post', + data: data + }) +} diff --git a/manifest.json b/manifest.json index 3ca21e6..78b085e 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "name" : "作业管控智慧平台", - "appid" : "__UNI__4165875", + "appid" : "__UNI__5A28908", "description" : "作业管控智慧平台", "versionName" : "1.0.11", "versionCode" : 111, diff --git a/pages.json b/pages.json index 483a4f3..3e15d81 100644 --- a/pages.json +++ b/pages.json @@ -801,6 +801,13 @@ "navigationStyle": "custom" } }, + /* 月计划详情 --基建 - 审核 */ + { + "path": "pages/workPlan/monthPlanAuditingDetails/inf-index", + "style": { + "navigationStyle": "custom" + } + }, /* 月计划详情--生产 */ { "path": "pages/workPlan/monthPlanDetails/pro-index", @@ -808,6 +815,13 @@ "navigationStyle": "custom" } }, + /* 月计划详情--生产 - 审核 */ + { + "path": "pages/workPlan/monthPlanAuditingDetails/pro-index", + "style": { + "navigationStyle": "custom" + } + }, { "path": "pages/workPlan/networkPlan/index", "style": { diff --git a/pages/workPlan/monthPlan/inf-index.vue b/pages/workPlan/monthPlan/inf-index.vue index 6fa2a23..f426d47 100644 --- a/pages/workPlan/monthPlan/inf-index.vue +++ b/pages/workPlan/monthPlan/inf-index.vue @@ -24,6 +24,50 @@ + + + + + {{ getWorkWaitParams.planTime }} + + + + + + + 在建工程: + {{ item.zjs }} + + {{ item.planTime }} + + + + 已报工程数: + {{ item.ybs }} + 未报工程数: + {{ item.wbs }} + + + 待审核数: + {{ item.dsh }} + + 待审核 + + + + + + @@ -153,8 +197,8 @@ - - + + @@ -251,6 +295,50 @@ + + + + + + + + + {{ currentTimeNew }} + + + + + + + + + + + + + 在建工程: + {{ item.zjs }} + + {{ item.planTime }} + + + + 已报工程数: + {{ item.ybs }} + 未报工程数: + {{ item.wbs }} + + + 待审核数: + {{ item.dsh }} + + 已通过 + + + + + + + + + + + + 查看工程 + + + + + + + + + 搜索 + + + + + + {{ item.proName }} + + + + + @@ -427,7 +546,10 @@ import { getProjectList_2Api, getControlLevelListApi, getIsPlanApi, - getAUditingUserInfoApi + getAUditingUserInfoApi, + getWorkWaitListApi, + getWorkWaitProjectApi, + getReportFormListApi } from '../../../api/workPlan/monthPlan' export default { components: { @@ -435,7 +557,7 @@ export default { }, data() { return { - activeIndex: '发起提交', + activeIndex: '', DateValue: this.$moment().format('YYYY-MM'), pagesTotal: 1, currentPage: 0, @@ -444,10 +566,11 @@ export default { formData: {}, isType: false, currentTime: this.$moment().format('YYYY-MM'), + currentTimeNew: this.$moment().format('YYYY-MM'), btnList: [ { btn_title: '工作待办', isShow: ['24', '25'] }, { btn_title: '发起提交', isShow: ['22', '23'] }, - { btn_title: '查看报表', isShow: ['22', '23'] }, + { btn_title: '查看报表', isShow: ['22', '23', '24', '25'] }, { btn_title: '查看数据', isShow: ['22', '23'] } ], rules: { @@ -648,7 +771,28 @@ export default { scrollHeight_2: 0, scrollHeight_3: 0, searchUserName: '', - auditingUserList: [] + auditingUserList: [], + + workWaitList: [], + workWaitListNew: [], + // 获取工作待办列表数据 + getWorkWaitParams: { + planTime: this.$moment().format('YYYY-MM'), + type: '1' + }, + getWorkWaitParamsNew: { + planTime: this.$moment().format('YYYY-MM'), + type: '2' + }, + searchProjectName: '', + getWorkWaitProjectParams: { + planTime: '', + reportType: '', + keyword: '' + }, + workWaitProjectList: [], + auditingDetailsFlg: true, + isView: false } }, mounted() { @@ -674,14 +818,31 @@ export default { // 获取管控层级 this.getControlLevelListData() + // 获取工作待办列表数据 + if (this.roles == 24 || this.roles == 25) { + this.getWorkWaitListData() + } + const this_ = this uni.$on('update', function () { this_.getViewDataList() }) + uni.$on('updateView', function () { + this_.onCloseViewPopup() + this_.getWorkWaitListData() + }) + + if (this.roles == 22 || this.roles == 23) { + this.activeIndex = '发起提交' + } + if (this.roles == 24 || this.roles == 25) { + this.activeIndex = '工作待办' + } }, onUnload() { uni.$off('update') + uni.$off('updateView') }, methods: { leftClick() { @@ -690,6 +851,10 @@ export default { onTapCheck(i) { this.activeIndex = i + + if (i == '查看报表' && (this.roles == 24 || this.roles == 25)) { + this.getReportFormList() + } }, /* 减少页数 */ onReducePages() { @@ -799,28 +964,56 @@ export default { this.currentTime = this.$moment(this.currentTime).subtract(1, 'year').format('YYYY-MM') this.getMonthPlanData() }, + onReduceMonthNew() { + this.currentTimeNew = this.$moment(this.currentTimeNew).subtract(1, 'year').format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, onReduceDay() { this.currentTime = this.$moment(this.currentTime).subtract(1, 'months').format('YYYY-MM') this.getMonthPlanData() }, + onReduceDayNew() { + this.currentTimeNew = this.$moment(this.currentTimeNew).subtract(1, 'months').format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, onAddMonth() { this.currentTime = this.$moment(this.currentTime).add(1, 'year').format('YYYY-MM') this.getMonthPlanData() }, + onAddMonthNew() { + this.currentTimeNew = this.$moment(this.currentTimeNew).add(1, 'year').format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, onAddDay() { this.currentTime = this.$moment(this.currentTime).add(1, 'months').format('YYYY-MM') this.getMonthPlanData() }, + onAddDayNew() { + this.currentTimeNew = this.$moment(this.currentTimeNew).add(1, 'months').format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, onBackToday() { this.currentTime = this.$moment().format('YYYY-MM') this.getMonthPlanData() }, + onBackTodayNew() { + this.currentTimeNew = this.$moment().format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, iconClick() { this.getViewDataList() }, onChangeCurrentData(e) { this.currentTime = e.detail.value }, + onChangeCurrentDataNew(e) { + this.currentTimeNew = e.detail.value + }, onViewSelectProject() { this.$refs.popup.open('bottom') this.popupType = 'bottom' @@ -907,13 +1100,19 @@ export default { this.zfxAmount = 0 this.gfxAmount = 0 this.tfxAmount = 0 - this.monthDataList.forEach(e => { - this.kjsAmount = this.kjsAmount + e.kjsfx * 1 - this.dfxAmount = this.dfxAmount + e.dfx * 1 - this.zfxAmount = this.zfxAmount + e.zfx * 1 - this.gfxAmount = this.gfxAmount + e.gfx * 1 - this.tfxAmount = this.tfxAmount + e.tgfx * 1 - }) + // this.monthDataList.forEach(e => { + // this.kjsAmount = this.kjsAmount + e.kjsfx * 1 + // this.dfxAmount = this.dfxAmount + e.dfx * 1 + // this.zfxAmount = this.zfxAmount + e.zfx * 1 + // this.gfxAmount = this.gfxAmount + e.gfx * 1 + // this.tfxAmount = this.tfxAmount + e.tgfx * 1 + // }) + + this.kjsAmount = this.monthDataList[0].kjsfx * 1 + this.dfxAmount = this.monthDataList[0].dfx * 1 + this.zfxAmount = this.monthDataList[0].zfx * 1 + this.gfxAmount = this.monthDataList[0].gfx * 1 + this.tfxAmount = this.monthDataList[0].tgfx * 1 } if (this.scrollHeight_2 === 0) { @@ -1143,6 +1342,129 @@ export default { onCheckBoxChange(item) { console.log(item, '*****') item.isChecked = !item.isChecked + }, + /* 获取工作待办列表 */ + async getWorkWaitListData() { + console.log('this.getWorkWaitParams', this.getWorkWaitParams) + const res = await getWorkWaitListApi(this.getWorkWaitParams) + + console.log('工作待办列表', res) + + this.workWaitList = res.obj + + if (res.obj.length < 1) { + uni.showToast({ + title: '未查询到计划!', + icon: 'none' + }) + } + }, + onWorkWaitTimeReduce() { + this.getWorkWaitParams.planTime = this.$moment(this.getWorkWaitParams.planTime) + .subtract(1, 'months') + .format('YYYY-MM') + this.getWorkWaitListData() + }, + onWorkWaitTimeAdd() { + this.getWorkWaitParams.planTime = this.$moment(this.getWorkWaitParams.planTime).add(1, 'months').format('YYYY-MM') + this.getWorkWaitListData() + }, + /* 查看工程数 */ + onViewProjectNum(type) { + switch (type) { + case 1: + this.getWorkWaitProjectParams.reportType = '1' + break + case 2: + this.getWorkWaitProjectParams.reportType = '2' + break + case 3: + this.getWorkWaitProjectParams.reportType = '3' + break + case 4: + this.getWorkWaitProjectParams.reportType = '4' + break + } + if (type === 4) { + this.auditingDetailsFlg = true + this.isView = false + } else { + this.auditingDetailsFlg = false + } + + this.getWorkWaitProjectParams.planTime = this.getWorkWaitParams.planTime + this.getWorkWaitProjectParams.keyword = '' + this.getWorkWaitProjectData() + this.$refs.popupViewProject.open('center') + }, + /* 查看工程数 */ + onViewProjectNumNew(type) { + switch (type) { + case 1: + this.getWorkWaitProjectParams.reportType = '1' + break + case 2: + this.getWorkWaitProjectParams.reportType = '2' + break + case 3: + this.getWorkWaitProjectParams.reportType = '3' + break + case 4: + this.getWorkWaitProjectParams.reportType = '4' + break + case 5: + this.getWorkWaitProjectParams.reportType = '5' + break + } + if (type === 5) { + this.auditingDetailsFlg = true + this.isView = true + } else { + this.auditingDetailsFlg = false + this.isView = false + } + this.getWorkWaitProjectParams.planTime = this.getWorkWaitParamsNew.planTime + this.getWorkWaitProjectParams.keyword = '' + this.getWorkWaitProjectData() + this.$refs.popupViewProject.open('center') + }, + + onSearchWorkWaitProject() { + this.getWorkWaitProjectData() + }, + /* 获取工程 */ + async getWorkWaitProjectData() { + const res = await getWorkWaitProjectApi(this.getWorkWaitProjectParams) + console.log('工程信息列表', res) + this.workWaitProjectList = res.obj + }, + onCloseViewPopup() { + this.$refs.popupViewProject.close() + }, + /* 查看审核详情 */ + onViewAuditingDetails(item) { + if (this.auditingDetailsFlg) { + console.log('打开审核详情', item) + + uni.navigateTo({ + url: `/pages/workPlan/monthPlanAuditingDetails/inf-index?id=${item.id}&month=${this.getWorkWaitProjectParams.planTime}&isView=${this.isView}` + }) + } + }, + /* 获取报表数据 */ + async getReportFormList() { + this.getWorkWaitParamsNew.planTime = this.currentTimeNew + console.log(this.getWorkWaitParamsNew, 'this.getWorkWaitParamsNew') + const res = await getReportFormListApi(this.getWorkWaitParamsNew) + console.log('res报表数据', res) + this.workWaitListNew = res.obj + + if (res.obj.length < 1) { + uni.showToast({ + title: '未查询到计划!', + icon: 'none' + }) + } } }, @@ -1607,4 +1929,130 @@ export default { } } } + +.time-select { + width: 100%; + padding: 10rpx 0; + display: flex; + align-items: center; + justify-content: space-between; + + text { + font-weight: bold; + color: #000; + } +} + +.view-data-auditing { + width: 100%; + margin: 10rpx auto; + background-color: #fff; + + .auditing-item { + width: 98%; + margin: 0 auto; + display: flex; + + align-items: center; + padding: 8rpx 0; + + .item_1 { + width: 25%; + } + .item_2 { + width: 10%; + } + .item_3 { + width: 65%; + text-align: right; + + text { + margin-right: 10rpx; + display: inline-block; + width: 260rpx; + height: 48rpx; + border-radius: 12rpx; + line-height: 48rpx; + text-align: center; + color: #fff; + background-color: #00337a; + } + } + } + + .have-bottom { + border-bottom: 1px solid #ccc; + } +} + +.popup-view { + height: 60vh; + width: 95vw; + display: flex; + flex-direction: column; + background-color: #ccc; + + .popup-view-title { + width: 94%; + margin: 0 auto; + padding: 30rpx 0; + display: flex; + justify-content: space-between; + align-items: center; + + text { + color: #333; + font-size: 38rpx; + font-weight: bold; + } + } + + .search-container { + width: 100%; + padding: 28rpx 0; + background-color: #fff; + .search-box { + width: 94%; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + + .view-search-ipt { + width: 65%; + } + + .view-search-btn { + width: 27%; + height: 68rpx; + text-align: center; + line-height: 68rpx; + color: #fff; + background-color: #00337a; + border-radius: 12rpx; + } + } + } + + .view-project-list { + flex: 1; + overflow: hidden; + + .view-project-item { + width: 96%; + height: 96%; + margin: 2% auto; + background-color: #fff; + + view { + width: 100%; + padding-top: 13rpx; + padding-bottom: 6rpx; + text-align: center; + border-bottom: 1px solid #ccc; + box-sizing: border-box; + } + } + } +} diff --git a/pages/workPlan/monthPlan/pro-index.vue b/pages/workPlan/monthPlan/pro-index.vue index 9d6ff16..2ee47ed 100644 --- a/pages/workPlan/monthPlan/pro-index.vue +++ b/pages/workPlan/monthPlan/pro-index.vue @@ -24,6 +24,50 @@ + + + + + {{ getWorkWaitParams.planTime }} + + + + + + + 在建工程: + {{ item.zjs }} + + {{ item.planTime }} + + + + 已报工程数: + {{ item.ybs }} + 未报工程数: + {{ item.wbs }} + + + 待审核数: + {{ item.dsh }} + + 待审核 + + + + + + @@ -127,7 +171,7 @@ > @@ -153,7 +197,7 @@ - + @@ -250,6 +294,50 @@ + + + + + + + + + {{ currentTimeNew }} + + + + + + + + + + + + + 在建工程: + {{ item.zjs }} + + {{ item.planTime }} + + + + 已报工程数: + {{ item.ybs }} + 未报工程数: + {{ item.wbs }} + + + 待审核数: + {{ item.dsh }} + + 已通过 + + + + + + + + + + + + 查看工程 + + + + + + + + + 搜索 + + + + + {{ item.proName }} + + + + @@ -427,7 +544,11 @@ import { getControlModeProApi, getControlLevelListApi, getIsPlanProApi, - getAUditingUserInfoApi + getAUditingUserInfoApi, + getWorkWaitListProApi, + getWorkWaitProjectProApi, + setAuditingRejectProApi, + getReportFormListProApi } from '../../../api/workPlan/monthPlan' export default { components: { @@ -435,7 +556,7 @@ export default { }, data() { return { - activeIndex: '发起提交', + activeIndex: '', DateValue: this.$moment().format('YYYY-MM'), pagesTotal: 1, currentPage: 0, @@ -444,10 +565,11 @@ export default { formData: {}, isType: false, currentTime: this.$moment().format('YYYY-MM'), + currentTimeNew: this.$moment().format('YYYY-MM'), btnList: [ { btn_title: '工作待办', isShow: ['24', '25'] }, { btn_title: '发起提交', isShow: ['22', '23'] }, - { btn_title: '查看报表', isShow: ['22', '23'] }, + { btn_title: '查看报表', isShow: ['22', '23', '24', '25'] }, { btn_title: '查看数据', isShow: ['22', '23'] } ], monthPlanFormRules: { @@ -693,7 +815,27 @@ export default { scrollHeight_2: 0, scrollHeight_3: 0, searchUserName: '', - auditingUserList: [] + auditingUserList: [], + workWaitList: [], + workWaitListNew: [], + // 获取工作待办列表数据 + getWorkWaitParams: { + planTime: this.$moment().format('YYYY-MM'), + type: '1' + }, + getWorkWaitParamsNew: { + planTime: this.$moment().format('YYYY-MM'), + type: '2' + }, + getWorkWaitProjectParams: { + planTime: '', + reportType: '', + keyword: '' + }, + searchProjectName: '', + workWaitProjectList: [], + auditingDetailsFlg: false, + isView: false } }, mounted() { @@ -721,14 +863,32 @@ export default { // 获取作业类型和管控方式 this.getWorkTypeAndControlMode() + // 获取工作待办列表数据 + if (this.roles == 24 || this.roles == 25) { + this.getWorkWaitListData() + } + const this_ = this uni.$on('update', function () { this_.getViewDataList() }) + uni.$on('updateView', function () { + this_.onCloseViewPopup() + this_.getWorkWaitListData() + }) + + console.log(this.roles, 'this.roles ') + if (this.roles == 22 || this.roles == 23) { + this.activeIndex = '发起提交' + } + if (this.roles == 24 || this.roles == 25) { + this.activeIndex = '工作待办' + } }, onUnload() { uni.$off('update') + uni.$off('updateView') }, methods: { leftClick() { @@ -952,13 +1112,18 @@ export default { this.zfxAmount = 0 this.gfxAmount = 0 this.tfxAmount = 0 - this.monthDataList.forEach(e => { - this.kjsAmount = this.kjsAmount + e.kjsfx * 1 - this.dfxAmount = this.dfxAmount + e.dfx * 1 - this.zfxAmount = this.zfxAmount + e.zfx * 1 - this.gfxAmount = this.gfxAmount + e.gfx * 1 - this.tfxAmount = this.tfxAmount + e.tgfx * 1 - }) + // this.monthDataList.forEach(e => { + // this.kjsAmount = this.kjsAmount + e.kjsfx * 1 + // this.dfxAmount = this.dfxAmount + e.dfx * 1 + // this.zfxAmount = this.zfxAmount + e.zfx * 1 + // this.gfxAmount = this.gfxAmount + e.gfx * 1 + // this.tfxAmount = this.tfxAmount + e.tgfx * 1 + // }) + this.kjsAmount = this.monthDataList[0].kjsfx * 1 + this.dfxAmount = this.monthDataList[0].dfx * 1 + this.zfxAmount = this.monthDataList[0].zfx * 1 + this.gfxAmount = this.monthDataList[0].gfx * 1 + this.tfxAmount = this.monthDataList[0].tgfx * 1 } if (this.scrollHeight_2 === 0) { @@ -1211,6 +1376,159 @@ export default { onCheckBoxChange(item) { console.log(item, '*****') item.isChecked = !item.isChecked + }, + /* 获取工作待办列表 */ + async getWorkWaitListData() { + console.log('this.getWorkWaitParams', this.getWorkWaitParams) + const res = await getWorkWaitListProApi(this.getWorkWaitParams) + + console.log('工作待办列表', res) + + this.workWaitList = res.obj + + if (res.obj.length < 1) { + uni.showToast({ + title: '未查询到计划!', + icon: 'none' + }) + } + }, + onWorkWaitTimeReduce() { + this.getWorkWaitParams.planTime = this.$moment(this.getWorkWaitParams.planTime) + .subtract(1, 'months') + .format('YYYY-MM') + this.getWorkWaitListData() + }, + onWorkWaitTimeAdd() { + this.getWorkWaitParams.planTime = this.$moment(this.getWorkWaitParams.planTime).add(1, 'months').format('YYYY-MM') + this.getWorkWaitListData() + }, + onViewProjectNum(type) { + switch (type) { + case 1: + // console.log('在建') + + this.getWorkWaitProjectParams.reportType = '1' + break + case 2: + // console.log('已报') + this.getWorkWaitProjectParams.reportType = '2' + break + case 3: + // console.log('未报') + this.getWorkWaitProjectParams.reportType = '3' + break + case 4: + // console.log('待审核') + this.getWorkWaitProjectParams.reportType = '4' + break + } + if (type === 4) { + this.auditingDetailsFlg = true + this.isView = false + } else { + this.auditingDetailsFlg = false + } + this.getWorkWaitProjectParams.planTime = this.getWorkWaitParams.planTime + this.getWorkWaitProjectParams.keyword = '' + this.getWorkWaitProjectData() + this.$refs.popupViewProject.open('center') + }, + /* 查看工程数 */ + onViewProjectNumNew(type) { + switch (type) { + case 1: + this.getWorkWaitProjectParams.reportType = '1' + break + case 2: + this.getWorkWaitProjectParams.reportType = '2' + break + case 3: + this.getWorkWaitProjectParams.reportType = '3' + break + case 4: + this.getWorkWaitProjectParams.reportType = '4' + break + case 5: + this.getWorkWaitProjectParams.reportType = '5' + break + } + if (type === 5) { + this.auditingDetailsFlg = true + this.isView = true + } else { + this.auditingDetailsFlg = false + this.isView = false + } + this.getWorkWaitProjectParams.planTime = this.getWorkWaitParamsNew.planTime + this.getWorkWaitProjectParams.keyword = '' + this.getWorkWaitProjectData() + this.$refs.popupViewProject.open('center') + }, + onSearchWorkWaitProject() { + this.getWorkWaitProjectData() + }, + /* 获取工程 */ + async getWorkWaitProjectData() { + const res = await getWorkWaitProjectProApi(this.getWorkWaitProjectParams) + console.log('工程信息列表', res) + this.workWaitProjectList = res.obj + }, + onCloseViewPopup() { + this.$refs.popupViewProject.close() + }, + /* 查看审核详情 */ + onViewAuditingDetails(item) { + if (this.auditingDetailsFlg) { + console.log('打开审核详情', item) + + uni.navigateTo({ + url: `/pages/workPlan/monthPlanAuditingDetails/pro-index?id=${item.id}&month=${this.getWorkWaitProjectParams.planTime}&isView=${this.isView}` + }) + } + }, + /* 获取报表数据 */ + async getReportFormList() { + this.getWorkWaitParamsNew.planTime = this.currentTimeNew + console.log(this.getWorkWaitParamsNew, 'this.getWorkWaitParamsNew') + const res = await getReportFormListProApi(this.getWorkWaitParamsNew) + console.log('res报表数据', res) + this.workWaitListNew = res.obj + + if (res.obj.length < 1) { + uni.showToast({ + title: '未查询到计划!', + icon: 'none' + }) + } + }, + onReduceMonthNew() { + this.currentTimeNew = this.$moment(this.currentTimeNew).subtract(1, 'year').format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, + onReduceDayNew() { + this.currentTimeNew = this.$moment(this.currentTimeNew).subtract(1, 'months').format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, + onChangeCurrentDataNew(e) { + this.currentTimeNew = e.detail.value + }, + onAddDayNew() { + this.currentTimeNew = this.$moment(this.currentTimeNew).add(1, 'months').format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, + onAddMonthNew() { + this.currentTimeNew = this.$moment(this.currentTimeNew).add(1, 'year').format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() + }, + onBackTodayNew() { + this.currentTimeNew = this.$moment().format('YYYY-MM') + this.getWorkWaitProjectParams.planTime = this.currentTimeNew + this.getReportFormList() } }, @@ -1674,4 +1992,58 @@ export default { } } } +.time-select { + width: 100%; + padding: 10rpx 0; + display: flex; + align-items: center; + justify-content: space-between; + + text { + font-weight: bold; + color: #000; + } +} + +.view-data-auditing { + width: 100%; + margin: 10rpx auto; + background-color: #fff; + + .auditing-item { + width: 98%; + margin: 0 auto; + display: flex; + + align-items: center; + padding: 8rpx 0; + + .item_1 { + width: 25%; + } + .item_2 { + width: 10%; + } + .item_3 { + width: 65%; + text-align: right; + + text { + margin-right: 10rpx; + display: inline-block; + width: 260rpx; + height: 48rpx; + border-radius: 12rpx; + line-height: 48rpx; + text-align: center; + color: #fff; + background-color: #00337a; + } + } + } + + .have-bottom { + border-bottom: 1px solid #ccc; + } +} diff --git a/pages/workPlan/monthPlanAuditingDetails/inf-index.vue b/pages/workPlan/monthPlanAuditingDetails/inf-index.vue new file mode 100644 index 0000000..c0f715f --- /dev/null +++ b/pages/workPlan/monthPlanAuditingDetails/inf-index.vue @@ -0,0 +1,1080 @@ + + + + + diff --git a/pages/workPlan/monthPlanAuditingDetails/pro-index.vue b/pages/workPlan/monthPlanAuditingDetails/pro-index.vue new file mode 100644 index 0000000..94932c4 --- /dev/null +++ b/pages/workPlan/monthPlanAuditingDetails/pro-index.vue @@ -0,0 +1,1005 @@ + + + + + diff --git a/pages/workPlan/monthPlanDetails/inf-index.vue b/pages/workPlan/monthPlanDetails/inf-index.vue index 14cbdb5..74a64a7 100644 --- a/pages/workPlan/monthPlanDetails/inf-index.vue +++ b/pages/workPlan/monthPlanDetails/inf-index.vue @@ -78,16 +78,17 @@ - + - + {{ item.process }} - - {{ item.userName }} - {{ item.auditingResult }} - + + {{ j.operateUser }} + {{ j.operateResult }} + {{ j.operateTime }} + - {{ item.time }} + {{ item.auditingInfo[0].operateTime || '' }} @@ -360,28 +361,41 @@ export default { roles: uni.getStorageSync('wkRole'), processList: [ { - title: '项目部', process: '发起申请', userName: '', time: '', auditingResult: '', - imgSrcList: ['../../../static/images/workPlan/xmb_dd.png', '../../../static/images/workPlan/xmb_dsh.png'] + imgSrcIndex: 0, + auditingInfo: [], + imgSrcList: ['../../../static/images/workPlan/xmb_dd.png', ' ', '../../../static/images/workPlan/xmb_tg.png'] }, { - title: '项目部', process: '审核人', userName: '', time: '2', auditingResult: '', - imgSrcList: ['../../../static/images/workPlan/xmb_dd.png', '../../../static/images/workPlan/xmb_dsh.png'] + imgSrcIndex: 0, + auditingInfo: [], + imgSrcList: [ + '../../../static/images/workPlan/fgs_dsh.png', + '../../../static/images/workPlan/fgs_wtg.png', + '../../../static/images/workPlan/fgs_tg.png', + '../../../static/images/workPlan/fgs_dd.png' + ] }, { - title: '项目部', process: '审核人', userName: '', time: '', + imgSrcIndex: 0, auditingResult: '未通过', - imgSrcList: ['../../../static/images/workPlan/xmb_dd.png', '../../../static/images/workPlan/xmb_dsh.png'] + auditingInfo: [], + imgSrcList: [ + '../../../static/images/workPlan/zgs_dsh.png', + '../../../static/images/workPlan/zgs_wtg.png', + '../../../static/images/workPlan/zgs_tg.png', + '../../../static/images/workPlan/zgs_dd.png' + ] } ], searchUserName: '', @@ -524,18 +538,70 @@ export default { console.log('paramsparams参数', params) const res = await getAUditingProcessApi(params) + console.log('res审核流程', res) - const auditingList = res.obj.splice(1, 3) - console.log('res---审核流程图', auditingList) - - // this.processList[0].userName = auditingList[0].upUser - auditingList.forEach((e, index) => { - this.processList[index].userName = e.upUser - this.processList[index].time = e.upTime - this.processList[index].auditingResult = e.state + res.obj.forEach(e => { + if (e.type == 2) { + this.processList[0].auditingInfo.push({ + operateTime: e.upTime, + operateUser: e.upUser, + operateResult: e.state + }) + } + if (e.type == 3) { + this.processList[1].auditingInfo.push({ + operateTime: e.upTime, + operateUser: e.upUser, + operateResult: e.state + }) + } + if (e.type == 4) { + this.processList[2].auditingInfo.push({ + operateTime: e.upTime, + operateUser: e.upUser, + operateResult: e.state + }) + } }) - console.log('this.this.processList', this.processList) + this.processList.forEach((e, index) => { + console.log('e.auditingInfo', e.auditingInfo, 'e.auditingInfo') + if (index === 0) { + if (e.auditingInfo[e.auditingInfo.length - 1].operateTime) { + e.imgSrcIndex = 2 + } else { + e.imgSrcIndex = 0 + } + } + if (index === 1) { + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '待审核') { + e.imgSrcIndex = 0 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '未通过') { + e.imgSrcIndex = 1 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '通过') { + e.imgSrcIndex = 2 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == null) { + e.imgSrcIndex = 3 + } + } + if (index === 2) { + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '待审核') { + e.imgSrcIndex = 0 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '未通过') { + e.imgSrcIndex = 1 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '通过') { + e.imgSrcIndex = 2 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == null) { + e.imgSrcIndex = 3 + } + } + }) } }, /* 复选框事件 */ @@ -573,14 +639,16 @@ export default { let idsStr = ids.filter(e => e != null).join(',') const params = { - id: JSON.stringify(this.monthDetailsList), - user: idsStr, - state: '2' + id: this.proId, + user: idsStr + // state: '2' } console.log('saveParams保存参数', params) - const result = await setMonthPlanApi(params) + const result = await submitPlanApi(params) + + console.log(result, 'results上报人提交结果') if (result.res == 1) { uni.showToast({ title: `提交成功!`, icon: 'none' }) setTimeout(() => { @@ -732,7 +800,7 @@ export default { background-color: green; } } - .process-item view:nth-child(2) { + .process-item .box-2 { flex: 1; padding-left: 26rpx; display: flex; @@ -745,14 +813,16 @@ export default { .text_2 { width: 100%; display: flex; + // display: block; justify-content: space-between; + align-items: center; margin-top: 16rpx; font-size: 24rpx; color: #000; } } - .process-item view:last-child { + .process-item .box-3 { width: 30%; font-size: 22rpx; color: #333; diff --git a/pages/workPlan/monthPlanDetails/pro-index.vue b/pages/workPlan/monthPlanDetails/pro-index.vue index 5a6b3cc..1032d4f 100644 --- a/pages/workPlan/monthPlanDetails/pro-index.vue +++ b/pages/workPlan/monthPlanDetails/pro-index.vue @@ -145,7 +145,8 @@ import { getControlLevelListApi, updateInfPlanContentProApi, getAUditingUserInfoApi, - setMonthPlanProApi + setMonthPlanProApi, + getAUditingProcessApi } from '../../../api/workPlan/monthPlan' export default { data() { @@ -279,7 +280,46 @@ export default { tfxAmount: 0, navHeight: 0, searchUserName: '', - auditingUserList: [] + auditingUserList: [], + processList: [ + { + process: '发起申请', + userName: '', + time: '', + auditingResult: '', + imgSrcIndex: 0, + auditingInfo: [], + imgSrcList: ['../../../static/images/workPlan/xmb_dd.png', ' ', '../../../static/images/workPlan/xmb_tg.png'] + }, + { + process: '审核人', + userName: '', + time: '2', + auditingResult: '', + imgSrcIndex: 0, + auditingInfo: [], + imgSrcList: [ + '../../../static/images/workPlan/fgs_dsh.png', + '../../../static/images/workPlan/fgs_wtg.png', + '../../../static/images/workPlan/fgs_tg.png', + '../../../static/images/workPlan/fgs_dd.png' + ] + }, + { + process: '审核人', + userName: '', + time: '', + imgSrcIndex: 0, + auditingResult: '未通过', + auditingInfo: [], + imgSrcList: [ + '../../../static/images/workPlan/zgs_dsh.png', + '../../../static/images/workPlan/zgs_wtg.png', + '../../../static/images/workPlan/zgs_tg.png', + '../../../static/images/workPlan/zgs_dd.png' + ] + } + ] } }, methods: { @@ -465,6 +505,81 @@ export default { } else { uni.showToast({ title: `提交失败!`, icon: 'none' }) } + }, + /* 获取详细审核流程 */ + async getAUditingProcessData() { + if (this.roles != '22') { + const params = { + id: this.proId + } + + console.log('paramsparams参数', params) + const res = await getAUditingProcessApi(params) + console.log('res审核流程', res) + + res.obj.forEach(e => { + if (e.type == 2) { + this.processList[0].auditingInfo.push({ + operateTime: e.upTime, + operateUser: e.upUser, + operateResult: e.state + }) + } + if (e.type == 3) { + this.processList[1].auditingInfo.push({ + operateTime: e.upTime, + operateUser: e.upUser, + operateResult: e.state + }) + } + if (e.type == 4) { + this.processList[2].auditingInfo.push({ + operateTime: e.upTime, + operateUser: e.upUser, + operateResult: e.state + }) + } + }) + + this.processList.forEach((e, index) => { + console.log('e.auditingInfo', e.auditingInfo, 'e.auditingInfo') + if (index === 0) { + if (e.auditingInfo[0].operateTime) { + e.imgSrcIndex = 2 + } else { + e.imgSrcIndex = 0 + } + } + if (index === 1) { + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '待审核') { + e.imgSrcIndex = 0 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '未通过') { + e.imgSrcIndex = 1 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '通过') { + e.imgSrcIndex = 2 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == null) { + e.imgSrcIndex = 3 + } + } + if (index === 2) { + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '待审核') { + e.imgSrcIndex = 0 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '未通过') { + e.imgSrcIndex = 1 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == '通过') { + e.imgSrcIndex = 2 + } + if (e.auditingInfo[e.auditingInfo.length - 1].operateResult == null) { + e.imgSrcIndex = 3 + } + } + }) + } } }, diff --git a/pages/workPlan/workbench/components/infrastructure-model.vue b/pages/workPlan/workbench/components/infrastructure-model.vue index 75740f9..c43b101 100644 --- a/pages/workPlan/workbench/components/infrastructure-model.vue +++ b/pages/workPlan/workbench/components/infrastructure-model.vue @@ -53,8 +53,9 @@ export default { isShow: ['23', '24', '25'] } ], - roles: uni.getStorageSync('wkRole'), - title: '填报' + + title: '', + roles: uni.getStorageSync('wkRole') } }, methods: { @@ -62,14 +63,14 @@ export default { uni.navigateTo({ url: `${url}` }) } }, - onLoad() { - if (this.roles === '22') { + mounted() { + if (this.roles == 22) { this.title = '填报' } - if (this.roles === '23') { + if (this.roles == 23) { this.title = '上报' } - if (this.roles === '24' || this.roles === '25') { + if (this.roles == 24 || this.roles == 25) { this.title = '审核' } } diff --git a/pages/workPlan/workbench/components/production-model.vue b/pages/workPlan/workbench/components/production-model.vue index 4c51849..19293cd 100644 --- a/pages/workPlan/workbench/components/production-model.vue +++ b/pages/workPlan/workbench/components/production-model.vue @@ -62,14 +62,14 @@ export default { uni.navigateTo({ url: `${url}?type=2` }) } }, - onLoad() { - if (this.roles === '22') { + mounted() { + if (this.roles == 22) { this.title = '填报' } - if (this.roles === '23') { + if (this.roles == 23) { this.title = '上报' } - if (this.roles === '24' || this.roles === '25') { + if (this.roles == 24 || this.roles == 25) { this.title = '审核' } } diff --git a/static/images/workPlan/fgs_wtg.png b/static/images/workPlan/fgs_wtg.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1d2eedcc974d1744e48488a830e2d75ac5733d GIT binary patch literal 3616 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