From ee5a84368d5de284ad4fbcd3d372c26a4d977a83 Mon Sep 17 00:00:00 2001 From: zhoulingpo Date: Sun, 23 Apr 2023 14:04:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E8=B5=B7=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/modules/process.js | 26 +++- src/components/Menu.vue | 1 + src/components/ProcessMixin.vue | 8 +- src/router/modules/permission.js | 12 +- src/store/index.js | 7 +- src/views/Report/ReportList.vue | 2 +- src/views/permissionApplication/launch.vue | 44 +++---- src/views/userCenter/processCenter.vue | 1 + .../userCenter/processCenter/gencyProcess.vue | 10 +- .../processCenter/monitorProcesses.vue | 7 +- .../monitorProcesses/monitorDetail.vue | 116 ++++++++++++++++-- .../userCenter/processCenter/sentProcess.vue | 49 +++++++- src/views/userCenter/processCenter/tabs.vue | 7 +- 13 files changed, 228 insertions(+), 62 deletions(-) diff --git a/src/api/modules/process.js b/src/api/modules/process.js index 5eccf35..47b2ade 100644 --- a/src/api/modules/process.js +++ b/src/api/modules/process.js @@ -57,6 +57,30 @@ export default { params: data }) }, - + // 获取一般的数据 + getAlreadData(data) { + return request({ + url: '/api/haveFinishedFlowDetail', + method: 'get', + params: data + }) + }, + // 催办 + urgePerson(data) { + return request({ + url: '/api/person/personMsg/saveNew', + method: 'post', + data: data + }) + }, + // 导出 + exportStandard(data) { + return request({ + url: '/api/historyExport', + method: 'post', + params: data , + responseType:'blob' + }) + } } diff --git a/src/components/Menu.vue b/src/components/Menu.vue index e50d3da..ef0ac64 100644 --- a/src/components/Menu.vue +++ b/src/components/Menu.vue @@ -56,6 +56,7 @@ export default { }, methods: { handleRouter (item) { + this.$store.commit('setActiveTabIndex','') if (item.belong == 0) { this.$store.commit('saveMenuName', item.label) if (this.$route.path == '/system/401Page') { diff --git a/src/components/ProcessMixin.vue b/src/components/ProcessMixin.vue index 43d2682..823dfc9 100644 --- a/src/components/ProcessMixin.vue +++ b/src/components/ProcessMixin.vue @@ -8,10 +8,10 @@ data() { return { processTypeList: [ - // { - // label: '法规入库流程', - // value: '1' - // }, + { + label: '权限申请流程', + value: '1' + }, ], formDisableFlag: false, pickerOptions: { diff --git a/src/router/modules/permission.js b/src/router/modules/permission.js index e3560a3..63b2cdd 100644 --- a/src/router/modules/permission.js +++ b/src/router/modules/permission.js @@ -5,7 +5,7 @@ const routes = [ component: () => import('../../views/Layout.vue'), children: [ { - path: 'step1', + path: 'launch', name: 'urlIndex', component: () => import('../../views/permissionApplication/launch'), meta: { @@ -13,15 +13,7 @@ const routes = [ } }, { - path: 'step2', - name: 'urlIndex', - component: () => import('../../views/permissionApplication/examine'), - meta: { - crumb: ['权限申请'] - } - }, - { - path: 'step3', + path: 'examine', name: 'urlIndex', component: () => import('../../views/permissionApplication/examine'), meta: { diff --git a/src/store/index.js b/src/store/index.js index 0cb18ac..9d56789 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -11,14 +11,19 @@ export default new Vuex.Store({ rememberData: null, menuData: [], pathUrl: '', - menuName: '' + menuName: '', + activeTab: '' }, getters: { menuData: (state) => state.menuData, menuName: (state) => state.menuName, userInfo: (state) => state.userInfo, + activeTab: (state) =>state.activeTab }, mutations: { + setActiveTabIndex(state, data){ + state.activeTab = data + }, saveUserInfo (state, data) { state.userInfo = data }, diff --git a/src/views/Report/ReportList.vue b/src/views/Report/ReportList.vue index 02338c7..baef24f 100644 --- a/src/views/Report/ReportList.vue +++ b/src/views/Report/ReportList.vue @@ -332,7 +332,7 @@ export default { }, permissionApp () { this.$router.push({ - path: '/permission/step1', + path: '/permission/launch', query: { id: 'AEHJB8YNJ3', ids: this.checkIds.toString() } }) }, diff --git a/src/views/permissionApplication/launch.vue b/src/views/permissionApplication/launch.vue index 1108383..7b630fa 100644 --- a/src/views/permissionApplication/launch.vue +++ b/src/views/permissionApplication/launch.vue @@ -44,8 +44,8 @@ :rules="assignFormRules" class="label-input-form" size="medium"> - - + @@ -53,11 +53,11 @@ - - + - - + + @@ -128,8 +128,8 @@ export default { isShowSubmit: true, formControl: false, assignForm: { - name1: '', - name2: '' + oneApprove: '', + twoApprove: '' }, tableData: [], applicationForm: {}, @@ -148,12 +148,12 @@ export default { }] }, assignFormRules: { - name1: [{ + oneApprove: [{ required: true, message: '请选择一级审批人员', trigger: 'change' }], - name2: [{ + twoApprove: [{ required: true, message: '请选择二级审批人员', trigger: 'change' @@ -179,11 +179,11 @@ export default { this.orgTableVal = '' this.orgTableValName = '' if (name === 'spr1') { - this.orgTableVal = this.assignForm.name1Id - this.orgTableValName = this.assignForm.name1 + this.orgTableVal = this.assignForm.Approve + this.orgTableValName = this.assignForm.oneApproveName } else { - this.orgTableVal = this.assignForm.name2Id - this.orgTableValName = this.assignForm.name2 + this.orgTableVal = this.assignForm.twoApprove + this.orgTableValName = this.assignForm.twoApproveName } this.visibleOrgTable = true }, @@ -199,13 +199,13 @@ export default { }) this.qcrList = checkedList if (this.treeType === 'spr1') { - this.assignForm.name1Id = parts.toString() - this.assignForm.name1 = partsName.toString() + this.assignForm.oneApprove = parts.toString() + this.assignForm.oneApproveName = partsName.toString() } else if (this.treeType === 'spr2') { - this.assignForm.name2Id = parts.toString() - this.assignForm.name2 = partsName.toString() + this.assignForm.twoApprove = parts.toString() + this.assignForm.twoApproveName = partsName.toString() } - console.log(this.assignForm.name1Id, this.assignForm.name2Id) + // console.log(this.assignForm.name1Id, this.assignForm.name2Id) }, // 获取表格列表 吧查询到的值传给子组件 reportList (ids) { @@ -217,8 +217,8 @@ export default { this.applicationForm = { } this.assignForm = { - name1: '', - name2: '' + oneApprove: '', + twoApprove: '' } this.$refs.applicationFormRef.clearValidate() this.$refs.assignFormRef.clearValidate() @@ -230,7 +230,7 @@ export default { if (v && m) { // 过了校验 需要把数据都整合 this.tableData this.applicationForm this.assignForm // 表格数据没有不能提交 需要提示 - if (this.tableData.length > 0) { + if (this.tableData.length == 0) { this.$message.warning('至少需要选择一条报告数据') } else { // 调用流程数据 diff --git a/src/views/userCenter/processCenter.vue b/src/views/userCenter/processCenter.vue index ddf17ab..0913d61 100644 --- a/src/views/userCenter/processCenter.vue +++ b/src/views/userCenter/processCenter.vue @@ -46,6 +46,7 @@ import tabs from '../userCenter/processCenter/tabs.vue' created () { }, mounted () { + this.$bus.$on('clearForm',()=>{ this.form={} }); diff --git a/src/views/userCenter/processCenter/gencyProcess.vue b/src/views/userCenter/processCenter/gencyProcess.vue index 5c20619..40235e0 100644 --- a/src/views/userCenter/processCenter/gencyProcess.vue +++ b/src/views/userCenter/processCenter/gencyProcess.vue @@ -75,8 +75,14 @@ export default { this.q.current = val; this.loadData(); }, - handle() { - alert(111); + handle(type) { + switch (type) { + case '1' : + this.$router.push({ + path:'', + query:'' + }) + } }, }, beforeDestroy(){ diff --git a/src/views/userCenter/processCenter/monitorProcesses.vue b/src/views/userCenter/processCenter/monitorProcesses.vue index d698825..996bf9b 100644 --- a/src/views/userCenter/processCenter/monitorProcesses.vue +++ b/src/views/userCenter/processCenter/monitorProcesses.vue @@ -78,11 +78,14 @@ export default { this.q.current = val; this.loadData(); }, - view() { + view(row) { this.$router.push({ path: 'monitorViews', query:{ - id: this.$route.query.id + id: this.$route.query.id, + prcNum: row.prcNum, + prcType: row.prcType, + tabsName: 'MonitorProcess' } }) } diff --git a/src/views/userCenter/processCenter/monitorProcesses/monitorDetail.vue b/src/views/userCenter/processCenter/monitorProcesses/monitorDetail.vue index 811ca8d..09cad42 100644 --- a/src/views/userCenter/processCenter/monitorProcesses/monitorDetail.vue +++ b/src/views/userCenter/processCenter/monitorProcesses/monitorDetail.vue @@ -14,9 +14,20 @@
- + 调整处理人 +
+ 催办 + 导出 +
@@ -77,8 +88,8 @@ export default { processStep: null, // 当前节点 taskKey: 0, - // 当前流程类型(1待办/2已办) - processType: 1, + // 当前流程类型 + prcType: '', // 流程列表 detailData: [], taskNames: '', @@ -90,10 +101,93 @@ export default { shunxu: '', paixu: '', checkIds: [], - checkList: [] + checkList: [], + tabsName:'', + } }, methods: { + exportStandard (){ + let exportName='' + let pramas={prcNum: this.$route.query.prcNum, + sortWord: this.shunxu ? this.paixu : '', + shunxu: this.shunxu, + exportName: exportName} + this.processTypeList.some(item=>{ + if(item.value == this.prcType){ + exportName=item.label + } + }) + this.$api.process.exportStandard(pramas,data=>{ + const disposition = data.headers['content-disposition']; + let fileName = disposition.substring(disposition.indexOf('fileName=') + 9, disposition.length); + var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 + var isOpera = userAgent.indexOf("Opera") > -1; + //判断是否IE浏览器 + if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) { + fileName = decodeUtf8(fileName) + } else { + // iso8859-1的字符转换成中文 + fileName = decodeURI(escape(fileName)); + // 去掉双引号 + fileName = fileName.replace(/\"/g, ""); + } + // console.log(fileName, 666) + function decodeUtf8(bytes) { + var encoded = ""; + for (var i = 0; i < bytes.length; i++) { + encoded += '%' + bytes[i].toString(16); + } + return decodeURIComponent(encoded); + } + if (!data.data || data.data.size === 0) { + this.$message.warning("文件下载失败") + return + } + if (typeof window.navigator.msSaveBlob !== 'undefined') { + window.navigator.msSaveBlob(new Blob([data.data], {type: 'application/zip'}), fileName) + } else { + let url = window.URL.createObjectURL(new Blob([data.data], {type: 'application/zip'})) + let link = document.createElement('a') + link.style.display = 'none' + link.href = url + link.setAttribute('download', fileName) + document.body.appendChild(link) + link.click() + document.body.removeChild(link) //下载完成移除元素 + window.URL.revokeObjectURL(url) //释放掉blob对象 + } + }) + }, + urgeRow (){ + if (this.checkList.length === 1 && !this.checkList[0].endTime) { + this.$confirm('您确认要催办该任务吗', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + confirmButtonClass: 'common-button-primary', + + }).then(() => { + this.urge(this.checkList[0]) + }) + } else { + this.$message.warning('请选择一条未完成的数据') + } + }, + urge (row) { + let params= { + msgContent: '流程编号为' + row.prcNum + '的流程,请尽快办理。', + msgTitle: '流程编号' + row.prcNum, + userId: row.assigneeId, + msgType: 'TEXT' + } + this.$api.process.urgePerson(params, + res => { + this.processTable() + this.$message.success('催办成功') + }, e => { + }) + }, selectAllEvent ({ checked }) { const records = this.$refs.xTable.getCheckboxRecords() this.checkIds = records.map(item => { @@ -126,14 +220,9 @@ export default { } }, back () { - this.$router.push({ - path: '/userCenter/processCenter', - query: { - id:'AEHJB8YNJ3', - tabsName: "fourth" - } - }) + this.$store.commit('setActiveTabIndex',this.tabsName=='AlreadyProcess'?"third":"fourth" ) //要返回上一级 + this.$router.back(-1) }, // 请求转换流程图 processNum (row) { @@ -173,6 +262,8 @@ export default { }, props: {}, mounted () { + this.tabsName=this.$route.query.tabsName + this.prcType=this.$route.query.prcType this.processNum() this.processTable() } @@ -231,6 +322,9 @@ export default { justify-content: center; align-items: center; } + .alreadbtn{ + display: flex; + } } .back{ width: 45px; diff --git a/src/views/userCenter/processCenter/sentProcess.vue b/src/views/userCenter/processCenter/sentProcess.vue index 3d588b6..ca121cd 100644 --- a/src/views/userCenter/processCenter/sentProcess.vue +++ b/src/views/userCenter/processCenter/sentProcess.vue @@ -10,7 +10,11 @@ - + + + @@ -22,7 +26,7 @@