src/views/flowable/workflow/FlowTodo.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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 }); } }) } } } } 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> src/views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.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>