From 53605d638044f3129cb622d44bd6c2026b7978cd Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期四, 16 一月 2025 22:41:31 +0800 Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/project_management-vue --- src/views/index.vue | 44 ++-- src/views/flowable/task/myProcess/send/index.vue | 249 +++++++++++++++++++++--------- src/views/flowable/task/myProcess/detail/index.vue | 74 ++++++-- src/views/components/noticeTable.vue | 19 + src/components/Process/panel/taskListener.vue | 5 src/views/projectProcess/detail/index.vue | 24 ++- src/views/flowable/expression/index.vue | 6 src/views/projectProcess/index.vue | 1 8 files changed, 286 insertions(+), 136 deletions(-) diff --git a/src/components/Process/panel/taskListener.vue b/src/components/Process/panel/taskListener.vue index 4d480d8..e1bde2d 100644 --- a/src/components/Process/panel/taskListener.vue +++ b/src/components/Process/panel/taskListener.vue @@ -506,6 +506,11 @@ saveSystemListener() { if (this.checkedListenerData.length > 0) { this.checkedListenerData.forEach(value => { + value.fields.forEach(field => { + if (field.name === '寮�濮嬭鏃惰妭鐐�') { + field.string = this.modelerStore.element.id; + } + }); const listenerObject = createSystemListenerObject(this.modelerStore.moddle, value, true, "flowable"); this.bpmnElementListeners.push(listenerObject); this.elementListenersList.push(changeListenerObject(value)); diff --git a/src/views/components/noticeTable.vue b/src/views/components/noticeTable.vue index 4789ab9..c7ecb2a 100644 --- a/src/views/components/noticeTable.vue +++ b/src/views/components/noticeTable.vue @@ -20,6 +20,7 @@ </div> </div> <el-table + v-loading="tableLoading" :data="tableData" :header-cell-style="{ background: '#F5F7FC', @@ -69,12 +70,12 @@ <div style="width: 100%;display: flex;flex-direction: row-reverse;align-items: center"> <pagination style="width: 100%" - v-show="total >= 0" + v-show="total > 0" :page-sizes="[4]" :limit="queryParams.pageSize" - :page="queryParams.pageNum" + :page="queryParams.currentPage" :total="total" - @pagination="getList" + @pagination="pageChange" /> </div> </div> @@ -86,10 +87,11 @@ export default { data() { return { + tableLoading: false, currentTab: "process", total: 0, queryParams: { - pageNum: 1, + currentPage: 1, pageSize: 4, }, tableData: [], @@ -164,21 +166,26 @@ this.getList(); }, methods: { + pageChange(data) { + this.queryParams.currentPage = data.page + this.getList() + }, async getList() { var resp; - this.total = 0; - this.tableData = []; + this.tableLoading = true if (this.currentTab == "process") { resp = await getProjectProcessTodo(this.queryParams); if (resp.code === 200) { this.total = resp.total; this.tableData = resp.taskList; + this.tableLoading = false } } else { resp = await getProjectPlanToDoList(this.queryParams); if (resp.code === 200) { this.total = resp.total; this.tableData = resp.data; + this.tableLoading = false } } }, diff --git a/src/views/flowable/expression/index.vue b/src/views/flowable/expression/index.vue index b570b4b..f381207 100644 --- a/src/views/flowable/expression/index.vue +++ b/src/views/flowable/expression/index.vue @@ -73,7 +73,6 @@ <el-table v-loading="loading" :data="expressionList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> - <el-table-column label="涓婚敭" align="center" prop="id" /> <el-table-column label="鍚嶇О" align="center" prop="name" /> <el-table-column label="琛ㄨ揪寮忓唴瀹�" align="center" prop="expression" /> <el-table-column label="鎸囧畾绫诲瀷" align="center" prop="dataType" > @@ -81,6 +80,7 @@ <dict-tag :options="dict.type.exp_data_type" :value="scope.row.dataType"/> </template> </el-table-column> + <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" /> <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button @@ -110,7 +110,7 @@ /> <!-- 娣诲姞鎴栦慨鏀规祦绋嬭揪寮忓璇濇 --> - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> + <el-dialog :title="title" :visible.sync="open" width="500px" :close-on-click-modal="false" :destroy-on-close="true" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="鍚嶇О" prop="name"> <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ〃杈惧紡鍚嶇О" /> @@ -244,7 +244,7 @@ handleAdd() { this.reset(); this.open = true; - this.title = "娣诲姞娴佺▼杈惧紡"; + this.title = "娣诲姞娴佺▼琛ㄨ揪寮�"; }, /** 淇敼鎸夐挳鎿嶄綔 */ handleUpdate(row) { diff --git a/src/views/flowable/task/myProcess/detail/index.vue b/src/views/flowable/task/myProcess/detail/index.vue index 3bde1b8..ce9cef0 100644 --- a/src/views/flowable/task/myProcess/detail/index.vue +++ b/src/views/flowable/task/myProcess/detail/index.vue @@ -10,39 +10,30 @@ <!--琛ㄥ崟淇℃伅--> <el-tab-pane label="琛ㄥ崟淇℃伅" name="1"> <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�--> - <el-col :span="16" :offset="4"> + <el-col :span="16" :offset="4" v-loading="formLoading" class="tab-min-height"> <div v-if="formDataList && formDataList.length > 0"> <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative"> <div v-if="formDataObj.current"> - <!-- 褰撳墠鑺傜偣鍙崗鍚屻�佽浆鍔炵瓑鎿嶄綔 --> - <div style="position: absolute; top: 4px; right: 4px; display: flex;justify-content: center; align-items: center;"> - <el-button size="small" type="primary" @click="submitForm">纭骞舵彁浜�</el-button> - <el-button size="small" type="primary" disabled @click="submitForm">鍗忓悓鍔炵悊(鍔熻兘寮�鍙戜腑)</el-button> - <el-button size="small" type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">杞姙</el-button> - </div> - <div style="margin-bottom: 15px;color: #E6A23C">褰撳墠闃舵锛�<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div> + <div class="current">褰撳墠闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div> </div> <div v-else-if="formDataList.length > 1"> - <!-- 鍓嶇疆鑺傜偣鍙┏鍥� --> - <div style="position: absolute; top: 4px; right: 4px"> - <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeDefId)">椹� 鍥�</el-button> - </div> - <div style="margin-bottom: 15px;color: #E6A23C">鍓嶇疆闃舵锛�<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div> + <div class="before">鍓嶇疆闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div> </div> - <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''"> - <v-form-render :form-data="formDataObj.formJson" :ref="'form' + index"/> + <div v-if="formDataObj != null && formDataObj.formJsonObj != null"> + <v-form-render :form-data="formDataObj.formJsonObj.formJson" :ref="'form' + index"/> </div> <div v-else> <el-alert - title="鑺傜偣鏈粦瀹氳〃鍗�" + title="鏈粦瀹氳〃鍗�" type="warning" :closable="false" > </el-alert> </div> <div v-if="formDataList.length <= 1"> + <div class="before_none">鍓嶇疆闃舵锛�<span>涓嶅瓨鍦ㄥ墠缃樁娈�</span></div> <el-alert - title="涓嶅瓨鍦ㄥ墠缃妭鐐�" + title="涓嶅瓨鍦ㄥ墠缃樁娈�" type="warning" :closable="false" > @@ -104,7 +95,9 @@ </el-tab-pane> <!--娴佺▼鍥�--> <el-tab-pane label="娴佺▼鍥�" name="3"> - <bpmn-viewer :flowData="flowData" :procInsId="taskForm.procInsId"/> + <div class="tab-min-height" v-loading="imgLoading"> + <bpmn-viewer :flowData="flowData" :procInsId="taskForm.procInsId"/> + </div> </el-tab-pane> </el-tabs> </el-card> @@ -126,6 +119,8 @@ props: {}, data() { return { + formLoading: false, // 鍔犺浇琛ㄥ崟 + imgLoading: false, // 鍔犺浇娴佺▼鍥� projectName: '', flowName: '', // 妯″瀷xml鏁版嵁 @@ -163,7 +158,9 @@ methods: { handleClick(tab, event) { if (tab.name === '3'){ + this.imgLoading = true flowXmlAndNode({procInsId:this.taskForm.procInsId,deployId:this.taskForm.deployId}).then(res => { + this.imgLoading = false this.flowData = res.data; }) } @@ -195,6 +192,7 @@ /** 鑾峰彇娴佺▼鍙橀噺鍐呭 */ processVariables(taskId) { if (taskId) { + this.formLoading = true // 鎻愪氦娴佺▼鐢宠鏃跺~鍐欑殑琛ㄥ崟瀛樺叆浜嗘祦绋嬪彉閲忎腑鍚庣画浠诲姟澶勭悊鏃堕渶瑕佸睍绀� flowTaskFormDetail(taskId).then(res => { this.formDataList = res.data @@ -203,7 +201,6 @@ this.formDataList.forEach((formDataObj, index) => { console.log("琛ㄥ崟鏁版嵁鍒楄〃", formDataObj.formJson) let that = this - console.log(eval("that.$refs.form" + index)[0]) if (formDataObj.formJsonObj) { eval("that.$refs.form" + index)[0].setFormJson(formDataObj.formJsonObj.formJson); @@ -216,6 +213,7 @@ // this.formJson = this.formDataList[0].formJsonObj.formJson }) } + this.formLoading = false // this.$nextTick(() => { // // 鍥炴樉琛ㄥ崟 // this.$refs.vFormRef.setFormJson(res.data.formJson); @@ -283,4 +281,42 @@ margin-bottom: 20px; box-shadow: rgba(67, 71, 85, 0.27) 0px 0px 0.25em, rgba(90, 125, 188, 0.05) 0px 0.25em 1em; } +.before { + span { + color: #F56C6C + } + margin-bottom: 15px; + color: #E6A23C +} +.before_none { + span { + color: #F56C6C + } + margin-bottom: 15px; + margin-top: 15px; + color: #E6A23C +} +.reject-but { + position: absolute; + top: 4px; + right: 4px +} +.current { + span { + color: #409EFF + } + margin-bottom: 15px; + color: #E6A23C +} +.op-list { + position: absolute; + top: 4px; + right: 4px; + display: flex; + justify-content: center; + align-items: center; +} +.tab-min-height { + min-height: 500px; +} </style> diff --git a/src/views/flowable/task/myProcess/send/index.vue b/src/views/flowable/task/myProcess/send/index.vue index 4dfb7be..52bda98 100644 --- a/src/views/flowable/task/myProcess/send/index.vue +++ b/src/views/flowable/task/myProcess/send/index.vue @@ -10,39 +10,40 @@ <!--琛ㄥ崟淇℃伅--> <el-tab-pane label="琛ㄥ崟淇℃伅" name="1"> <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�--> - <el-col :span="16" :offset="4"> + <el-col :span="16" :offset="4" v-loading="formLoading" class="tab-min-height"> <div v-if="formDataList && formDataList.length > 0"> <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative"> <div v-if="formDataObj.current"> <!-- 褰撳墠鑺傜偣鍙崗鍚屻�佽浆鍔炵瓑鎿嶄綔 --> - <div style="position: absolute; top: 4px; right: 4px; display: flex;justify-content: center; align-items: center;"> - <el-button size="small" type="primary" @click="submitForm">纭骞舵彁浜�</el-button> + <div class="op-list"> + <el-button size="small" type="primary" :disabled="submitLoading" v-loading="submitLoading" @click="submitForm">纭骞舵彁浜�</el-button> <el-button size="small" type="primary" disabled @click="submitForm">鍗忓悓鍔炵悊(鍔熻兘寮�鍙戜腑)</el-button> <el-button size="small" type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">杞姙</el-button> </div> - <div style="margin-bottom: 15px;color: #E6A23C">褰撳墠闃舵锛�<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div> + <div class="current">褰撳墠闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div> </div> <div v-else-if="formDataList.length > 1"> <!-- 鍓嶇疆鑺傜偣鍙┏鍥� --> - <div style="position: absolute; top: 4px; right: 4px"> - <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeDefId)">椹� 鍥�</el-button> + <div class="reject-but"> + <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeName)">椹� 鍥�</el-button> </div> - <div style="margin-bottom: 15px;color: #E6A23C">鍓嶇疆闃舵锛�<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div> + <div class="before">鍓嶇疆闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div> </div> - <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''"> - <v-form-render :form-data="formDataObj.formJson" :ref="'form' + index"/> + <div v-if="formDataObj != null && formDataObj.formJsonObj != null"> + <v-form-render :form-data="formDataObj.formJsonObj.formJson" :ref="'form' + index"/> </div> <div v-else> <el-alert - title="鑺傜偣鏈粦瀹氳〃鍗�" + title="鏈粦瀹氳〃鍗�" type="warning" :closable="false" > </el-alert> </div> <div v-if="formDataList.length <= 1"> + <div class="before_none">鍓嶇疆闃舵锛�<span>涓嶅瓨鍦ㄥ墠缃樁娈�</span></div> <el-alert - title="涓嶅瓨鍦ㄥ墠缃妭鐐�" + title="涓嶅瓨鍦ㄥ墠缃樁娈�" type="warning" :closable="false" > @@ -54,7 +55,9 @@ </el-tab-pane> <!--娴佺▼鍥�--> <el-tab-pane label="娴佺▼鍥�" name="2"> - <bpmn-viewer :flowData="flowData"/> + <div v-loading="imgLoading" class="tab-min-height"> + <bpmn-viewer :flowData="flowData" :procInsId="procInsId"/> + </div> </el-tab-pane> </el-tabs> <!--閫夋嫨娴佺▼鎺ユ敹浜�--> @@ -70,7 +73,7 @@ <el-dialog - :title="`椹冲洖锛歚 + rejectForm.projectName" + :title="`椹冲洖锛歚 + rejectForm.taskName" :visible.sync="rejectShow" width="950px" :destroy-on-close="true" @@ -85,7 +88,7 @@ </el-input> </div> <div class="opBut"> - <el-button type="danger" size="small" @click="rejectTask">椹冲洖</el-button> + <el-button type="danger" size="small" :disabled="rejectLoading" v-loading="rejectLoading" @click="rejectTask">椹冲洖</el-button> </div> </el-dialog> @@ -152,7 +155,7 @@ </el-form> </div> <div class="opBut"> - <el-button type="danger" size="small" @click="delegation">杞� 鍔�</el-button> + <el-button type="danger" size="small" :disabled="delegationButLoading" v-loading="delegationButLoading" @click="delegation">杞� 鍔�</el-button> </div> </el-dialog> @@ -184,6 +187,11 @@ props: {}, data() { return { + rejectLoading: false, // 椹冲洖鎸夐挳鍔犺浇 + submitLoading: false, // 鎻愪氦鎸夐挳鍔犺浇 + delegationButLoading: false, // 杞姙鎸夐挳鍔犺浇 + formLoading: false, // 鍔犺浇褰撳墠鍠濆墠缃妭鐐规暟鎹� + imgLoading: false, // 鍔犺浇娴佺▼鍥� roleKey: 'role', deptKey: 'dept', multUserKey: 0, @@ -228,6 +236,7 @@ loading: true, deployId: "", // 娴佺▼瀹氫箟缂栧彿 procDefId: "", // 娴佺▼瀹炰緥缂栧彿 + procInsId: "", // 娴佺▼瀹炰緥缂栧彿 formRenderData: {}, formRenderDataList: [], variables: [], // 娴佺▼鍙橀噺鏁版嵁 @@ -243,7 +252,7 @@ rejectForm: { comment: '', // 瀹℃牳鎰忚 taskId: '', - // rejectedTaskDefKey: '' // 琚┏鍥炵殑浠诲姟key + taskName: '' // 琚┏鍥炵殑浠诲姟k } }; }, @@ -255,6 +264,7 @@ this.flowName = this.$route.query && this.$route.query.flowName; // 鍒濆鍖栬〃鍗� this.procDefId = this.$route.query && this.$route.query.procDefId; + this.procInsId = this.$route.query && this.$route.query.procInsId; this.goBackParams = this.$route.query && this.$route.query.goBackParams; // this.getNextFlowNodeByStart(this.deployId); this.getFlowFormData(this.taskId); @@ -303,8 +313,11 @@ cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { + this.delegationButLoading = true taskDelegation(this.delegationForm).then(res => { this.$message.success("宸插彂璧疯浆鍔炵敵璇�") + this.delegationButLoading = false + this.delegationShow = false this.goBack() }) }).catch(() => { @@ -432,19 +445,36 @@ this.delegationShow = true }, rejectTask() { - rejectTask(this.rejectForm).then(res => { - this.rejectShow = false - this.$message.success("椹冲洖鎴愬姛") - }) + this.$confirm(`纭畾瑕侀┏鍥炰换鍔°��${this.rejectForm.taskName}銆戝悧?`, '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.rejectLoading = true + rejectTask(this.rejectForm).then(res => { + this.rejectShow = false + this.$message.success("椹冲洖鎴愬姛") + this.goBack() + }) + }).catch((err) => { + console.log(err) + this.$message({ + type: 'info', + message: '宸插彇椹冲洖浜ゆ搷浣�' + }); + }); + }, - openRejectTask(rejectedTaskDefKey) { - // this.rejectForm.rejectedTaskDefKey = rejectedTaskDefKey; + openRejectTask(taskName) { + this.rejectForm.taskName = taskName; this.rejectForm.taskId = this.taskId; this.rejectShow = true }, handleClick(tab, event) { if (tab.name === '2'){ - flowXmlAndNode({deployId:this.deployId}).then(res => { + this.imgLoading = true + flowXmlAndNode({procInsId:this.procInsId,deployId:this.deployId}).then(res => { + this.imgLoading = false this.flowData = res.data; }) } @@ -452,13 +482,13 @@ /** 娴佺▼琛ㄥ崟鏁版嵁 */ getFlowFormData(taskId) { const params = {taskId: taskId} + this.formLoading = true flowTaskForm(params).then(res => { this.formDataList = res.data if (this.formDataList && this.formDataList.length > 0) { this.$nextTick(() => { this.formDataList.forEach((formDataObj, index) => { let that = this - console.log(eval("that.$refs.form" +index)) if (eval("that.$refs.form" +index) && formDataObj.formJsonObj) { eval("that.$refs.form" +index)[0].setFormJson(formDataObj.formJsonObj.formJson); eval("that.$refs.form" +index)[0].setFormData(formDataObj.formJsonObj); @@ -468,8 +498,8 @@ this.formJson = this.formDataList[0].formJsonObj.formJson } }) - } + this.formLoading = false // if (res.data.formJson) { // // 鍥炴樉琛ㄥ崟 // this.$refs.vFormRef.setFormJson(res.data.formJson); @@ -509,54 +539,86 @@ }, /** 鐢宠娴佺▼琛ㄥ崟鏁版嵁鎻愪氦 */ submitForm() { - let that = this - eval("that.$refs.form" +0)[0].getFormData().then(formData => { - // 鏍规嵁褰撳墠浠诲姟鎴栬�呮祦绋嬭璁¢厤缃殑涓嬩竴姝ヨ妭鐐� todo 鏆傛椂鏈秹鍙婂埌鑰冭檻缃戝叧銆佽〃杈惧紡鍜屽鑺傜偣鎯呭喌 - getNextFlowNodeByStart({deploymentId: this.deployId, variables: formData}).then(res => { - const data = res.data; - if (data) { - this.formData = formData; - if (data.dataType === 'dynamic') { - if (data.type === 'assignee') { // 鎸囧畾浜哄憳 - this.checkSendUser = true; - this.checkType = "single"; - } else if (data.type === 'candidateUsers') { // 鍊欓�変汉鍛�(澶氫釜) - this.checkSendUser = true; - this.checkType = "multiple"; - } else if (data.type === 'candidateGroups') { // 鎸囧畾缁�(鎵�灞炶鑹叉帴鏀朵换鍔�) - this.checkSendRole = true; - } else { // 浼氱 - // 娴佺▼璁捐鎸囧畾鐨� elementVariable 浣滀负浼氱浜哄憳鍒楄〃 - this.multiInstanceVars = data.vars; - this.checkSendUser = true; - this.checkType = "multiple"; - } - this.taskOpen = true; - this.taskTitle = "閫夋嫨浠诲姟鎺ユ敹"; - } else { - if (this.procDefId) { - const param = { - formJson: this.formJson, - } - // 澶嶅埗瀵硅薄鐨勫睘鎬у�肩粰鏂扮殑瀵硅薄 - Object.assign(param, formData); - // 瀹屾垚浠诲姟 - completeSubmitFormTask(this.taskId, param).then(res => { - this.$modal.msgSuccess(res.msg); - this.goBack(); - }) - // // 鍚姩娴佺▼骞跺皢琛ㄥ崟鏁版嵁鍔犲叆娴佺▼鍙橀噺 - // definitionStart(this.procDefId, param).then(res => { - // this.$modal.msgSuccess(res.msg); - // this.goBack(); - // }) - } + this.$confirm(`纭畾瑕佹彁浜や换鍔°��${this.processName}銆戝悧?`, '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.submitLoading = true + let that = this + if (eval("that.$refs.form" +0)) { + eval("that.$refs.form" +0)[0].getFormData().then(formData => { + this.formData = formData + const param = { + formJson: this.formJson, } - } - }) - }).catch(error => { - // this.$modal.msgError(error) - }) + // 澶嶅埗瀵硅薄鐨勫睘鎬у�肩粰鏂扮殑瀵硅薄 + Object.assign(param, formData); + // 瀹屾垚浠诲姟 + completeSubmitFormTask(this.taskId, param).then(res => { + this.$modal.msgSuccess(res.msg); + this.submitLoading = false + this.goBack(); + }) + }) + } else { + // 娌″叧鑱旇〃鍗曠洿鎺ヤ紶绌� + completeSubmitFormTask(this.taskId, {}).then(res => { + this.$modal.msgSuccess(res.msg); + this.submitLoading = false + this.goBack(); + }) + } + + // let that = this + // eval("that.$refs.form" +0)[0].getFormData().then(formData => { + // // 鏍规嵁褰撳墠浠诲姟鎴栬�呮祦绋嬭璁¢厤缃殑涓嬩竴姝ヨ妭鐐� todo 鏆傛椂鏈秹鍙婂埌鑰冭檻缃戝叧銆佽〃杈惧紡鍜屽鑺傜偣鎯呭喌 + // getNextFlowNodeByStart({deploymentId: this.deployId, variables: formData}).then(res => { + // const data = res.data; + // if (data) { + // this.formData = formData; + // if (data.dataType === 'dynamic') { + // if (data.type === 'assignee') { // 鎸囧畾浜哄憳 + // this.checkSendUser = true; + // this.checkType = "single"; + // } else if (data.type === 'candidateUsers') { // 鍊欓�変汉鍛�(澶氫釜) + // this.checkSendUser = true; + // this.checkType = "multiple"; + // } else if (data.type === 'candidateGroups') { // 鎸囧畾缁�(鎵�灞炶鑹叉帴鏀朵换鍔�) + // this.checkSendRole = true; + // } else { // 浼氱 + // // 娴佺▼璁捐鎸囧畾鐨� elementVariable 浣滀负浼氱浜哄憳鍒楄〃 + // this.multiInstanceVars = data.vars; + // this.checkSendUser = true; + // this.checkType = "multiple"; + // } + // this.taskOpen = true; + // this.taskTitle = "閫夋嫨浠诲姟鎺ユ敹"; + // } else { + // if (this.procDefId) { + // const param = { + // formJson: this.formJson, + // } + // // 澶嶅埗瀵硅薄鐨勫睘鎬у�肩粰鏂扮殑瀵硅薄 + // Object.assign(param, formData); + // // 瀹屾垚浠诲姟 + // completeSubmitFormTask(this.taskId, param).then(res => { + // this.$modal.msgSuccess(res.msg); + // this.goBack(); + // }) + // } + // } + // } + // }) + // }) + }).catch((err) => { + console.log(err) + this.$message({ + type: 'info', + message: '宸插彇娑堟彁浜ゆ搷浣�' + }); + }); + }, /** 閲嶇疆琛ㄥ崟 */ resetForm() { @@ -633,7 +695,6 @@ width: 800px; padding: 15px; } - .clearfix:before, .clearfix:after { display: table; @@ -642,20 +703,16 @@ .clearfix:after { clear: both } - .box-card { width: 100%; margin-bottom: 20px; } - .el-tag + .el-tag { margin-left: 10px; } - .my-label { background: #E1F3D8; } - .form-warp { min-width: 700px; padding: 20px; @@ -663,4 +720,42 @@ margin-bottom: 20px; box-shadow: rgba(67, 71, 85, 0.27) 0px 0px 0.25em, rgba(90, 125, 188, 0.05) 0px 0.25em 1em; } +.before { + span { + color: #F56C6C + } + margin-bottom: 15px; + color: #E6A23C +} +.before_none { + span { + color: #F56C6C + } + margin-bottom: 15px; + margin-top: 15px; + color: #E6A23C +} +.reject-but { + position: absolute; + top: 4px; + right: 4px +} +.current { + span { + color: #409EFF + } + margin-bottom: 15px; + color: #E6A23C +} +.op-list { + position: absolute; + top: 4px; + right: 4px; + display: flex; + justify-content: center; + align-items: center; +} +.tab-min-height { + min-height: 500px; +} </style> diff --git a/src/views/index.vue b/src/views/index.vue index 0b72951..d015b96 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -71,7 +71,7 @@ :countExceptionProjectData="countExceptionProjectData" /> </div> - <!-- 浠e姙浜嬮」 --> + <!-- 寰呭姙浜嬮」 --> <div class="flex"> <div class="flex_card"> <el-card> @@ -117,7 +117,7 @@ id="DangerSourceId" ref="mapRef" :is-show-control="true" - :list-type="true" + :list-type="false" :map-list="tableDatas" :map-type="true" class="w-full h-full border-r border-[#DBDEEA]" @@ -140,7 +140,6 @@ import Map from "./components/Map/index.vue"; import { getCalculatioln, getAbnormalData } from "@/api/login"; import { searchByKey } from "@/api/projectEngineering/projectInfo"; - export default { name: "Index", data() { @@ -218,6 +217,25 @@ this.abnormalData(obj); }, + // 鍦板浘鎼滅储 + searchList() { + var _this = this; + searchByKey({ wordKey: this.searchForm.name }).then((res) => { + if (res.code == 200) { + if (res.data.length > 0) { + // this.$refs["mapRef"].showProjectInfo(res.data); + // _this.tableDatas = res.data; + setTimeout(() => { + _this.$refs["mapRef"].makeAllMask(res.data); + }, 2000); + } else { + _this.$message.error("鏈煡璇㈠埌瀵瑰簲椤圭洰"); + } + } else { + _this.$message.error(res.msg); + } + }); + }, // 鑾峰彇寮傚父鏁版嵁 async abnormalData(obj) { const res = await getAbnormalData(obj); @@ -248,26 +266,6 @@ }; this.timeMerge = []; this.handleQuery(); - }, - - // 鍦板浘鎼滅储 - searchList() { - var _this = this; - searchByKey({ wordKey: this.searchForm.name }).then((res) => { - if (res.code == 200) { - if (res.data.length > 0) { - // this.$refs["mapRef"].showProjectInfo(res.data); - // _this.tableDatas = res.data; - setTimeout(() => { - _this.$refs["mapRef"].makeAllMask(res.data); - }, 2000); - } else { - _this.$message.error("鏈煡璇㈠埌瀵瑰簲椤圭洰"); - } - } else { - _this.$message.error(res.msg); - } - }); }, mapQuery() {}, }, diff --git a/src/views/projectProcess/detail/index.vue b/src/views/projectProcess/detail/index.vue index 207b6a4..3c05cf5 100644 --- a/src/views/projectProcess/detail/index.vue +++ b/src/views/projectProcess/detail/index.vue @@ -18,7 +18,7 @@ </div> <div class="search-warp"> <div @click="changeTab(1, 'all')" :class="{'item-warm': true, 'all-color': true, 'active': 1 === selectTabId}">鍏ㄩ儴浜嬮」<span v-if="detailData && detailData.statistics">锛坽{detailData.statistics.totalTaskNum}}锛�</span></div> - <div @click="changeTab(2, 'todo')" :class="{'item-warm': true, 'all-color': true, 'active': 2 === selectTabId}">浠e姙浜嬮」<span v-if="detailData && detailData.statistics">锛坽{detailData.statistics.todoTaskNum}}锛�</span></div> + <div @click="changeTab(2, 'todo')" :class="{'item-warm': true, 'all-color': true, 'active': 2 === selectTabId}">寰呭姙浜嬮」<span v-if="detailData && detailData.statistics">锛坽{detailData.statistics.todoTaskNum}}锛�</span></div> <div @click="changeTab(3, 'todo')" :class="{'item-warm': true, 'current-color': true, 'active': 3 === selectTabId}">褰撳墠鐜妭</div> <div @click="changeTab(4, 'remaining')" :class="{'item-warm': true, 'remaining-color': true, 'active': 4 === selectTabId}">鍓╀綑浜嬮」<span v-if="detailData && detailData.statistics">锛坽{detailData.statistics.remainingTaskNum}}锛�</span></div> <div @click="changeTab(5, 'timely')" :class="{'item-warm': true, 'timely-color': true, 'active': 5 === selectTabId}">鎸夋椂瀹屾垚锛�0锛�</div> @@ -148,9 +148,16 @@ }, mounted() { console.log(this.$route.query, "鍙傛暟") - this.queryParams.projectId = this.$route.query.projectId - this.queryParams.processDefId = this.$route.query.processDefId - this.queryParams.processName = this.$route.query.processName + let params = JSON.parse(sessionStorage.getItem("projectProDetail")) + console.log(params, "鍙傛暟") + if (!params || ! params.projectId) { + this.queryParams.projectId = this.$route.query.projectId + this.queryParams.processDefId = this.$route.query.processDefId + this.queryParams.processName = this.$route.query.processName + sessionStorage.setItem("projectProDetail", JSON.stringify(this.queryParams)) + } else { + this.queryParams = params + } this.loading = true this.getProjectProcessInfo() }, @@ -178,7 +185,7 @@ if (row.taskStatus !== '宸插畬鎴�') { return null } else { - return row.handlerName + return row.actualHandlerUserName } }, showHandle(row) { @@ -204,11 +211,13 @@ taskId: row.taskId } getTaskIsAuditing(params).then(res => { + console.log("row",row) this.$router.push({ path: '/flowable/task/myProcess/send/index', query: { deployId: row.deployId, procDefId: row.processDefId, + procInsId: row.processInsId, processName: row.taskName, flowName: this.queryParams.processName, projectName: this.detailData.projectName, @@ -246,11 +255,12 @@ this.getList() }, getList() { + this.tableLoading = true // 鑾峰彇浠诲姟鍒楄〃 getProjectProcessDetailTaskList(this.queryParams).then(res => { + this.tableLoading =false this.taskList = res.data this.total = res.total - this.tableLoading =false }) }, // 鏌ヨ璇︽儏 @@ -263,14 +273,12 @@ }) }, changeTab(id, event) { - this.tableLoading = true let beforeId = this.selectTabId this.selectTabId = id this.queryParams.taskType = event if (beforeId !== id) { this.getList() } - } } } diff --git a/src/views/projectProcess/index.vue b/src/views/projectProcess/index.vue index a71814a..f33fa53 100644 --- a/src/views/projectProcess/index.vue +++ b/src/views/projectProcess/index.vue @@ -393,6 +393,7 @@ methods: { // 鏌ョ湅璇︽儏 lookProcessDetail(row) { + sessionStorage.removeItem("projectProDetail") this.$router.push({ path: '/projectFlow/detail', query: { -- Gitblit v1.8.0