From fc2505f46bd0e45d5a4c2ad1b4ab9187c9e7bec3 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期三, 02 四月 2025 09:19:51 +0800 Subject: [PATCH] 修改审签工作流 --- src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleForm.vue | 216 ++++++++++++++++++++++++++++++++++++ src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue | 62 ++++++++++ src/views/flowable/workflow/FlowTodo.vue | 57 ++++++++- 3 files changed, 329 insertions(+), 6 deletions(-) diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index 8db64e3..6ce720b 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -44,22 +44,33 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator"> + <a-dropdown v-if="selectedRowKeys.length > 0 "> + <a-menu slot="overlay"> + <a-menu-item key="1" @click="batchHandle"><a-icon type="delete"/>鎵归噺澶勭悊</a-menu-item> + </a-menu> + <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> + </a-dropdown> </div> <!-- table鍖哄煙-begin --> <div> + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> + <i class="anticon anticon-info-circle ant-alert-icon"></i>宸查�夋嫨 <a style="font-weight: 600">{{ + selectedRowKeys.length }}</a>椤� + <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> + </div> <a-table ref="table" - size="middle" - :scroll="{x:true}" bordered + size="middle" rowKey="id" + :scroll="{x:'max-content',y:465}" :columns="columns" :dataSource="dataSource" :pagination="ipagination" :loading="loading" - class="j-table-force-nowrap" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"> <template slot="htmlSlot" slot-scope="text"> @@ -91,7 +102,7 @@ <AssignFileStreamHandle ref="modalFormApproval" :selectShenpiData="selectShenpiData"></AssignFileStreamHandle> <DispatchFileHandle ref="modalFormDispatchFileXq" :selectShenpiData="selectDispatchFileXqData" @searchReset="searchReset"></DispatchFileHandle> - + <DispatchFileBachHandleStyle ref="modalFormDispatchFileBatch" @searchReset="searchReset" @ok="modalFormOk"></DispatchFileBachHandleStyle> </a-card> </template> @@ -103,13 +114,16 @@ import JDictSelectTag from '@/components/dict/JDictSelectTag.vue' import AssignFileStreamHandle from '@views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue' import DispatchFileHandle from '@views/flowable/workflow/dispatchFile/DispatchFileHandle.vue' +import DispatchFileBachHandleStyle from '@views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue' +import { getAction } from '@api/manage' export default { name: 'NcDeviceCharactersList', mixins:[JeecgListMixin, mixinDevice], components: { AssignFileStreamHandle, JDictSelectTag, - DispatchFileHandle + DispatchFileHandle, + DispatchFileBachHandleStyle }, data () { return { @@ -179,10 +193,12 @@ ], url: { list: '/assign/flow/toTaskBySelf', + isSameNode: '/assign/flow/isSameNode' }, dictOptions:{}, selectShenpiData: {}, - selectDispatchFileXqData:{} + selectDispatchFileXqData:{}, + selectBachData:{} } }, created() { @@ -229,6 +245,35 @@ this.selectDispatchFileXqData = item this.$refs.modalFormDispatchFileXq.clearTableSource() this.$refs.modalFormDispatchFileXq.getAllApproveData(item) + }, + batchHandle() { + if (this.selectedRowKeys.length <= 0) { + this.$notification.warning({ + message: '娑堟伅', + description: "璇烽�夋嫨涓�鏉¤褰�" + }); + return; + } else { + let ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + getAction(this.url.isSameNode+"?taskIds="+ids).then((res)=>{ + if(res.success){ + let taskDefKey=res.result + this.selectBachData.taskIds = ids + this.selectBachData.taskDefKey = taskDefKey + this.$refs.modalFormDispatchFileBatch.title="鎵归噺澶勭悊"; + this.$refs.modalFormDispatchFileBatch.edit(this.selectBachData) + this.$refs.modalFormDispatchFileBatch.disableSubmit = false; + }else{ + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }); + } + }) + } } } } diff --git a/src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleForm.vue b/src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleForm.vue new file mode 100644 index 0000000..a883bcc --- /dev/null +++ b/src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleForm.vue @@ -0,0 +1,216 @@ +<template> + <a-spin :spinning="confirmLoading"> + <j-form-container > + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> + <a-row> + <a-col :span="24" v-if="selectBachData.taskDefKey ==='task_proofread'" class="btxx"> + <a-form-model-item label="澶勭悊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='status'> + <j-dict-select-tag type='list' v-model='model.status' dictCode='nc_sq_handle_type_jd' placeholder="璇烽�夋嫨澶勭悊绫诲瀷" /> + </a-form-model-item > + </a-col> + <a-col :span="24" v-if="selectBachData.taskDefKey ==='task_approve' || selectBachData.taskDefKey ==='task_cut' || selectBachData.taskDefKey ==='task_finalize'" class="btxx"> + <a-form-model-item label="澶勭悊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='status'> + <j-dict-select-tag type='list' v-model='model.status' dictCode='nc_sq_handle_type' placeholder="璇烽�夋嫨澶勭悊绫诲瀷" /> + </a-form-model-item > + </a-col> + <a-col :span="24" class="btxx"> + <a-form-model-item label="澶勭悊鎰忚" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-textarea v-model="model.approveContent" rows="4" placeholder="璇疯緭鍏ュ鐞嗘剰瑙�"/> + </a-form-model-item > + </a-col> + </a-row> + </a-form-model> + </j-form-container> + </a-spin> +</template> + +<script> + import axios from 'axios'; + import { + httpAction, + getAction + } from '@/api/manage' + import { + validateDuplicateValue + } from '@/utils/util' + + export default { + name: 'ChCfForm', + components: {}, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + data() { + return { + principalList: [], + model: {}, + labelCol: { + xs: { + span: 24 + }, + sm: { + span: 5 + }, + }, + wrapperCol: { + xs: { + span: 24 + }, + sm: { + span: 16 + }, + }, + confirmLoading: false, + validatorRules: { + address: [{ + required: true, + message: '璇烽�夋嫨鍦板潃!' + }, ], + bt: [{ + required: true, + message: '璇疯緭鍏ユ爣棰�!' + }, ], + }, + url: { + approvalBatch: "/dncFlow/dispatchFile/approvalBatch", + }, + selectBachData:{} + } + }, + computed: { + formDisabled() { + return this.disabled + }, + }, + created() { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, + methods: { + handleChange(e) { + console.log(e); + let sss = e.split('||||') + console.log(sss); + this.model.jd = sss[0] + this.model.address = sss[1] + console.log(sss) + }, + handleSearch(e) { + if (e === '') { + return + } + const that = this; + axios.get('/s-api/api/index/lsdz?input=' + e) + .then(response => { + that.principalList = [] + console.log(that.principalList) + for (var i = 0; i < response.data.data.length; i++) { + that.principalList.push({ + value: response.data.data[i].inputValueId + '||||' + response.data.data[i].setout, + label: response.data.data[i].setout, + }); + } + // that.principalList = response.data.data + console.log(that.principalList, '8888'); // 杈撳嚭杩斿洖鐨勬暟鎹� + }) + .catch(error => { + console.error(error); // 澶勭悊閿欒鎯呭喌 + }); + }, + add() { + this.edit(this.modelDefault); + }, + edit(record) { + this.selectBachData=record + this.visible = true; + }, + submitForm () { + const that = this; + if (that.selectBachData.taskDefKey ==='task_prepare'){ + // 瑙﹀彂琛ㄥ崟楠岃瘉-閲嶆柊鍚姩 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true; + let url=this.url.approvalBatch; + let method = 'post'; + let flowTaskVo = {} + flowTaskVo.comment =this.model.approveContent; + flowTaskVo.taskIds=that.selectBachData.taskIds + flowTaskVo.targetKey=that.selectBachData.taskDefKey + console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo) + httpAction(url,flowTaskVo,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.valid = false + //鍒锋柊琛ㄦ牸 + that.$emit('searchReset') + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + }) + } + }) + //璺冲嚭鏂规硶 + return false; + }else { + if (!that.model.status==null || that.model.status===undefined){ + this.$message.warning('璇烽�夋嫨澶勭悊绫诲瀷锛�') + return false; + } + } + if (!that.model.approveContent==null || that.model.approveContent===undefined) { + this.$message.warning('璇疯緭鍏ュ鐞嗘剰瑙侊紒') + return false; + } + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true; + let url=this.url.approvalBatch + let method = 'post'; + let handle =this.model.status === '1'; + let flowTaskVo = {} + switch (that.selectBachData.taskDefKey){ + case "task_approve": + flowTaskVo.ratify=handle; + break; + case "task_cut": + flowTaskVo.cut=handle; + break; + case "task_finalize": + flowTaskVo.stereotype=handle; + break; + } + if (that.selectBachData.taskDefKey ==='task_proofread'){ + flowTaskVo.proofreadStatus =that.model.status; + } + flowTaskVo.comment =that.model.approveContent; + flowTaskVo.taskIds=that.selectBachData.taskIds + flowTaskVo.targetKey=that.selectBachData.taskDefKey + console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo) + httpAction(url,flowTaskVo,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.valid = false + that.close(); + //鍒锋柊琛ㄦ牸 + that.$emit('ok') + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + }) + } + }) + }, + } + } +</script> \ No newline at end of file diff --git "a/src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle\043Drawer.vue" "b/src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle\043Drawer.vue" new file mode 100644 index 0000000..c3bfc8a --- /dev/null +++ "b/src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle\043Drawer.vue" @@ -0,0 +1,62 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + switchFullscreen + @ok="handleOk" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + @cancel="handleCancel" + cancelText="鍏抽棴"> + <DispatchFileBachHandleForm ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></DispatchFileBachHandleForm> + </j-modal> + + +</template> +<script> + + import DispatchFileBachHandleForm from './DispatchFileBachHandleForm.vue' + + export default { + name: 'DispatchFileBachHandleStyle', + components: { + DispatchFileBachHandleForm + }, + data () { + return { + title:'', + width:800, + visible: false, + disableSubmit: false + } + }, + methods: { + add () { + this.visible=true + this.$nextTick(()=>{ + this.$refs.realForm.add(); + }) + }, + edit (record) { + this.visible=true + this.$nextTick(()=>{ + this.$refs.realForm.edit(record); + }); + }, + close () { + this.$emit('close'); + this.visible = false; + }, + submitCallback(){ + this.$emit('ok'); + this.visible = false; + }, + handleOk () { + this.$refs.realForm.submitForm(); + }, + handleCancel () { + this.close() + } + } + } +</script> \ No newline at end of file -- Gitblit v1.9.3