From 53c269711fcb59f48fd2acd7e825bebfd31d09e5 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期三, 09 四月 2025 16:33:10 +0800 Subject: [PATCH] 点检工单修改,修改指派设备问题 --- src/views/eam/maintenance/modules/EamInspectionOrderModalXq.vue | 343 +++++++++ src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue | 446 ++++++++++++ src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue | 18 src/views/eam/maintenance/modules/EamInspectionOrderModal.vue | 89 ++ src/views/flowable/workflow/dispatchFile/DispatchFileHandle.vue | 3 src/views/eam/equipment/modules/MaintenanceEquipmentSelect.vue | 4 src/views/eam/maintenance/EamInspectionOrderList.vue | 180 ++++- src/views/flowable/workflow/FlowLedger.vue | 27 src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue | 17 src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue | 2 src/views/flowable/workflow/FlowCompleted.vue | 30 src/views/flowable/workflow/FlowTodo.vue | 25 src/views/flowable/workflow/InspectionOrder/InspectionOrderXq.vue | 443 ++++++++++++ src/views/flowable/workflow/InspectionOrder/InspectionOrderHandleBzz.vue | 468 +++++++++++++ 14 files changed, 2,007 insertions(+), 88 deletions(-) diff --git a/src/views/eam/equipment/modules/MaintenanceEquipmentSelect.vue b/src/views/eam/equipment/modules/MaintenanceEquipmentSelect.vue index 24fc7d6..6cc7d31 100644 --- a/src/views/eam/equipment/modules/MaintenanceEquipmentSelect.vue +++ b/src/views/eam/equipment/modules/MaintenanceEquipmentSelect.vue @@ -79,9 +79,7 @@ }, methods: { initSelectValue() { - if (!this.selectedAsyncValue || !this.selectedAsyncValue.key || this.selectedAsyncValue.key != this.value) { - console.log('ssfs', this.selectedAsyncValue) - console.log('ASGasgsgas', this.maintenanceCategory) + if (!this.selectedAsyncValue || !this.selectedAsyncValue.key || this.selectedAsyncValue.key != this.value || !this.maintenanceCategory) { console.log('杩欐墠璇锋眰鍚庡彴') getAction(`/eam/maintenanceStandard/listByUser`, { id: this.value, diff --git a/src/views/eam/maintenance/EamInspectionOrderList.vue b/src/views/eam/maintenance/EamInspectionOrderList.vue index 3fb8659..11083ce 100644 --- a/src/views/eam/maintenance/EamInspectionOrderList.vue +++ b/src/views/eam/maintenance/EamInspectionOrderList.vue @@ -44,13 +44,10 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator"> <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> -<!-- <a-button type="primary" icon="download" @click="handleExportXls('eam_inspection_order')">瀵煎嚭</a-button>--> -<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">--> -<!-- <a-button type="primary" icon="import">瀵煎叆</a-button>--> -<!-- </a-upload>--> <a-dropdown v-if="selectedRowKeys.length > 0"> <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item> + <a-menu-item key="1" @click="batchZf(5)"><a-icon type="snippets"/>浣滃簾</a-menu-item> + <a-menu-item key="2" @click="batchLq(2)"><a-icon type="form"/>棰嗗彇</a-menu-item> </a-menu> <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> </a-dropdown> @@ -98,18 +95,25 @@ </template> <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> + <a v-if="record.inspectionStatus === '1'" @click="handleEdit(record)">缂栬緫</a> - <a-divider type="vertical" /> + <a-divider v-if="record.inspectionStatus === '1'" type="vertical" /> + + <a-popconfirm v-if="record.inspectionStatus === '1'" title="纭畾棰嗗彇鍚�?" @confirm="() => handleInspection(record.id)"> + <a>棰嗗彇</a> + </a-popconfirm> + + <a-divider v-if="record.inspectionStatus === '1'" type="vertical" /> + <a-dropdown> <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> <a-menu slot="overlay"> <a-menu-item> <a @click="handleDetail(record)">璇︽儏</a> </a-menu-item> - <a-menu-item> - <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> - <a>鍒犻櫎</a> + <a-menu-item v-if="record.inspectionStatus === '1'" > + <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handleDelete(record.id)"> + <a>浣滃簾</a> </a-popconfirm> </a-menu-item> </a-menu> @@ -120,6 +124,7 @@ </div> <eam-inspection-order-modal ref="modalForm" @ok="modalFormOk"></eam-inspection-order-modal> + <EamInspectionOrderModalXq ref="modalFormXq" @ok="modalFormOk"></EamInspectionOrderModalXq> </a-card> </template> @@ -129,12 +134,15 @@ import { mixinDevice } from '@/utils/mixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import EamInspectionOrderModal from './modules/EamInspectionOrderModal' + import EamInspectionOrderModalXq from './modules/EamInspectionOrderModalXq.vue' + import { deleteAction, getAction } from '@api/manage' export default { name: 'EamInspectionOrderList', mixins:[JeecgListMixin, mixinDevice], components: { - EamInspectionOrderModal + EamInspectionOrderModal, + EamInspectionOrderModalXq }, data () { return { @@ -159,12 +167,12 @@ { title:'璁惧缂栧彿', align:"center", - dataIndex: 'equipmentId' + dataIndex: 'equipmentId_dictText' }, { title:'鏍囧噯缂栫爜', align:"center", - dataIndex: 'standardId' + dataIndex: 'standardId_dictText' }, { title:'鐐规鏃ユ湡', @@ -173,19 +181,6 @@ customRender:function (text) { return !text?"":(text.length>10?text.substr(0,10):text) } - }, - { - title:'鐐规鏃堕棿', - align:"center", - dataIndex: 'operateTime', - customRender:function (text) { - return !text?"":(text.length>10?text.substr(0,10):text) - } - }, - { - title:'鐐规浜�', - align:"center", - dataIndex: 'operator' }, { title:'鐐规杩囨湡鏃堕棿', @@ -198,12 +193,25 @@ { title:'鍒涘缓鏂瑰紡', align:"center", - dataIndex: 'creationMethod' + dataIndex: 'creationMethod_dictText' }, { title:'鐐规鐘舵��', align:"center", dataIndex: 'inspectionStatus_dictText' + }, + { + title:'鐐规鏃堕棿', + align:"center", + dataIndex: 'operateTime', + customRender:function (text) { + return !text?"":(text.length>10?text.substr(0,10):text) + } + }, + { + title:'鐐规浜�', + align:"center", + dataIndex: 'operator_dictText' }, { title:'鐝粍闀跨‘璁�', @@ -219,11 +227,6 @@ } }, { - title:'澶囨敞', - align:"center", - dataIndex: 'remark' - }, - { title: '鎿嶄綔', dataIndex: 'action', align:"center", @@ -234,11 +237,12 @@ ], url: { list: "/eam/eamInspectionOrder/list", - delete: "/eam/eamInspectionOrder/delete", + delete: "/eam/eamInspectionOrder/cancelInspectionOrder", deleteBatch: "/eam/eamInspectionOrder/deleteBatch", exportXlsUrl: "/eam/eamInspectionOrder/exportXls", importExcelUrl: "eam/eamInspectionOrder/importExcel", - + receiveInspectionOrder : "eam/eamInspectionOrder/receiveInspectionOrder", + cancelOrReceive: "eam/eamInspectionOrder/cancelOrReceive" }, dictOptions:{}, superFieldList:[], @@ -271,7 +275,113 @@ fieldList.push({type:'string',value:'remark',text:'澶囨敞',dictCode:''}) fieldList.push({type:'string',value:'imageFiles',text:'鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧',dictCode:''}) this.superFieldList = fieldList - } + }, + //璇︽儏 + handleDetail: function(record) { + this.$refs.modalFormXq.edit(record); + this.$refs.modalFormXq.title = "璇︽儏"; + this.$refs.modalFormXq.disableSubmit = true; + }, + handleInspection(id) { + if (!this.url.receiveInspectionOrder) { + this.$message.error("璇疯缃畊rl.receiveInspectionOrder!") + return + } + var that = this; + getAction(that.url.receiveInspectionOrder, { id: id }).then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }); + that.loadData(); + } else { + // that.$message.warning(res.message); + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }); + } + }); + }, + batchZf(type){ + if (this.selectedRowKeys.length <= 0) { + this.$notification.warning({ + message:'娑堟伅', + description:"璇烽�夋嫨涓�鏉¤褰�" + }); + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "纭浣滃簾", + content: "鏄惁浣滃簾閫変腑鏁版嵁锛屽彧鏈夊緟鐐规鐘舵�佺殑鏁版嵁鎵嶅彲浣滃簾鎴愬姛?", + onOk: function () { + that.loading = true; + getAction(that.url.cancelOrReceive, {ids: ids,type:type}).then((res) => { + if (res.success) { + that.$notification.success({ + message:'娑堟伅', + description:res.message + }); + that.loadData(); + that.onClearSelected(); + } else { + // that.$message.warning(res.message); + that.$notification.warning({ + message:'娑堟伅', + description:res.message + }); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, + batchLq(type){ + if (this.selectedRowKeys.length <= 0) { + this.$notification.warning({ + message:'娑堟伅', + description:"璇烽�夋嫨涓�鏉¤褰�" + }); + } else { + var ids = ""; + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ","; + } + var that = this; + this.$confirm({ + title: "纭棰嗗彇", + content: "鏄惁棰嗗彇閫変腑鏁版嵁锛屽彧鏈夊緟鐐规鐘舵�佺殑鏁版嵁鎵嶅彲棰嗗彇鎴愬姛?", + onOk: function () { + that.loading = true; + getAction(that.url.cancelOrReceive, {ids: ids,type:type}).then((res) => { + if (res.success) { + that.$notification.success({ + message:'娑堟伅', + description:res.message + }); + that.loadData(); + that.onClearSelected(); + } else { + // that.$message.warning(res.message); + that.$notification.warning({ + message:'娑堟伅', + description:res.message + }); + } + }).finally(() => { + that.loading = false; + }); + } + }); + } + }, } } </script> diff --git a/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue b/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue index 19b2053..49776ee 100644 --- a/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue +++ b/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue @@ -13,8 +13,8 @@ <a-form-model ref="form" :model="model" :rules="validatorRules"> <a-row :gutter="24"> <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜"> - <a-input placeholder="缂栫爜绯荤粺鑷姩鐢熸垚" v-model="model.standardCode" disabled /> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="宸ュ崟鍙�"> + <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled /> </a-form-model-item> </a-col> <a-col :span="8"> @@ -32,13 +32,26 @@ </a-row> <a-row :gutter="24"> <a-col :span="8"> - <a-form-model-item label="鐐规鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionDate"> - <j-date placeholder="璇烽�夋嫨鐐规鏃ユ湡" v-model="model.inspectionDate" style="width: 100%" /> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗙紪鐮�" disabled v-model="model.standardCode" /> </a-form-model-item> </a-col> <a-col :span="8"> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> <a-input-number v-model="model.maintenancePeriod" :min="1" :precision="0" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="鐐规浜�"> + <j-dict-select-tag v-model="model.operator" placeholder="璇烽�夋嫨鐢ㄦ埛" dictCode="sys_user,realname,username,username!='admin' order by create_time"/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-model-item label="鐐规鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionDate"> + <j-date placeholder="璇烽�夋嫨鐐规鏃ユ湡" v-model="model.inspectionDate" @change="expirationTimeFrom(model.inspectionDate)" style="width: 100%" /> </a-form-model-item> </a-col> <a-col :span="8"> @@ -58,10 +71,10 @@ <j-vxe-table ref="editableDetailTable" :rowNumber="true" - :rowSelection="false" + :rowSelection="true" :bordered="true" :alwaysEdit="true" - :toolbar="false" + :toolbar="true" keep-source :height="300" :loading="detail.loading" @@ -79,6 +92,7 @@ import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' import { JVXETypes } from '@/components/jeecg/JVxeTable' import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect' +import moment from 'dayjs' export default { name: 'EamMaintenanceStandardModal', @@ -116,14 +130,16 @@ ], equipmentId: [ { required: true, message: '璇烽�夋嫨璁惧!' } - ] + ], }, url: { - add: '/eam/maintenanceStandard/add', - edit: '/eam/maintenanceStandard/edit', - detail: '/eam/eamMaintenanceStandardDetail/queryList' + add: '/eam/eamInspectionOrder/add', + edit: '/eam/eamInspectionOrder/edit', + detail: '/eam/eamMaintenanceStandardDetail/queryList', + detailOrder: '/eam/eamInspectionOrderDetail/queryList' }, maintenanceCategory: 'POINT_INSPECTION', + standardId:"", detail: { loading: false, dataSource: [], @@ -131,21 +147,33 @@ { title: '搴忓彿', key: 'itemCode', + type: JVXETypes.inputNumber, width: '10%', - align: 'center' + align:"center", + validateRules: [ + {required : true, unique: true, message: '搴忓彿涓嶈兘閲嶅'} + ] }, { title: '淇濆吇椤�', key: 'itemName', + type: JVXETypes.textarea, width: '20%', - align: 'center' + align:"center", + validateRules: [ + {required : true, message: '淇濆吇椤逛笉鑳戒负绌猴紒'} + ] }, { title: '淇濆吇瑕佹眰', key: 'itemDemand', + type: JVXETypes.textarea, width: '30%', - align: 'center' - } + align:"center", + validateRules: [ + {required : true, message: "淇濆吇瑕佹眰涓嶈兘涓虹┖锛�"} + ] + }, ] } } @@ -155,11 +183,14 @@ methods: { add() { this.model = {} + this.detail.dataSource = []; this.visible = true this.editable = false }, edit(record) { + console.log(record) this.model = Object.assign({}, record) + this.standardId=record.standardId this.visible = true this.editable = true if (record && record.referenceFile) { @@ -168,7 +199,7 @@ } else { this.model.fieldList = [] } - this.loadDetail(record.id) + this.loadDetailOrder(record.id) }, close() { this.$emit('close') @@ -200,6 +231,7 @@ httpurl += this.url.edit method = 'put' } + this.model.standardId=this.standardId httpAction(httpurl, this.model, method).then((res) => { if (res.success) { that.$message.success(res.message) @@ -222,6 +254,22 @@ autocompleteForm(selectObj) { this.model.standardName = selectObj.standardName this.model.maintenancePeriod=selectObj.maintenancePeriod + this.model.standardCode=selectObj.standardCode + if (this.standardId===undefined || this.standardId==="") { + this.standardId=selectObj.id + this.loadDetail(selectObj.id) + } + }, + expirationTimeFrom(date) { + //杩囨湡鏃堕棿鏄垵濮嬫椂闂�+淇濆吇鍛ㄦ湡 + if (date && this.model.maintenancePeriod) { + // 杞崲涓烘椂闂存埑瀛楃涓诧紙鎴栨寚瀹氭牸寮忥級 + this.model.expirationTime = moment(date) + .add(this.model.maintenancePeriod, 'days') + .format('YYYY-MM-DD') + } else { + this.model.expirationTime = null; // 娓呯┖鏃犳晥鍊� + } }, //鍔犺浇璇︽儏鏁版嵁 loadDetail(standardId) { @@ -233,8 +281,17 @@ } }) } + }, + loadDetailOrder(orderId){ + this.detail.dataSource = [] + if (orderId) { + getAction(this.url.detailOrder, { orderId: orderId }).then(res => { + if (res.success) { + this.detail.dataSource = [...res.result] + } + }) + } } - } } </script> diff --git a/src/views/eam/maintenance/modules/EamInspectionOrderModalXq.vue b/src/views/eam/maintenance/modules/EamInspectionOrderModalXq.vue new file mode 100644 index 0000000..4d6a887 --- /dev/null +++ b/src/views/eam/maintenance/modules/EamInspectionOrderModalXq.vue @@ -0,0 +1,343 @@ +<template> + <j-modal + :title="title" + :width="1200" + :visible="visible" + :confirmLoading="false" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + cancelText="鍏抽棴"> + + <a-spin :spinning="false"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="宸ュ崟鍙�"> + <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栧彿"> + <MaintenanceEquipmentSelect placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId" + :maintenanceCategory="maintenanceCategory" :disabled="editable" + @autocompleteForm="autocompleteForm"></MaintenanceEquipmentSelect> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗗悕绉�" disabled v-model="model.standardName" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗙紪鐮�" disabled v-model="model.standardCode" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> + <a-input-number v-model="model.maintenancePeriod" :min="1" :precision="0" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="鐐规浜�"> + <j-dict-select-tag v-model="model.operator" placeholder="璇烽�夋嫨鐢ㄦ埛" disabled dictCode="sys_user,realname,username,username!='admin' order by create_time"/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-model-item label="鐐规鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionDate"> + <j-date placeholder="璇烽�夋嫨鐐规鏃ユ湡" v-model="model.inspectionDate" disabled @change="expirationTimeFrom(model.inspectionDate)" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="鐐规杩囨湡鏃堕棿" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="expirationTime"> + <j-date placeholder="璇烽�夋嫨鐐规杩囨湡鏃堕棿" v-model="model.expirationTime" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="8" v-if="model.inspectionStatus === '3' || model.inspectionStatus === '4'"> + <a-form-model-item label="鐐规鏃堕棿" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="operateTime"> + <j-date placeholder="璇烽�夋嫨鐐规鏃堕棿" v-model="model.operateTime" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + </a-row> + + <a-row :gutter="24"> + <a-col :span="8"> + <a-form-model-item label="鐐规鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionStatus"> + <j-dict-select-tag v-model="model.inspectionStatus" placeholder="璇烽�夋嫨鐐规鐘舵��" disabled dictCode="inspection_status"/> + + </a-form-model-item> + </a-col> + <a-col :span="8" v-if="model.inspectionStatus === '4'"> + <a-form-model-item label="鐝粍闀跨‘璁�" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="confirmUser"> + <j-dict-select-tag v-model="model.confirmUser" placeholder="璇烽�夋嫨鐢ㄦ埛" disabled dictCode="sys_user,realname,username,username!='admin' order by create_time"/> + </a-form-model-item> + </a-col> + <a-col :span="8" v-if="model.inspectionStatus === '4'"> + <a-form-model-item label="纭鏃堕棿" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="confirmTime"> + <j-date placeholder="璇烽�夋嫨纭鏃堕棿" v-model="model.confirmTime" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-model-item label="澶囨敞" :labelCol="{span:1}" :wrapperCol="{span:22}" prop="remark"> + <a-textarea v-model="model.remark" rows="3" placeholder="璇疯緭鍏ュ娉�" disabled/> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <j-vxe-table + ref="editableDetailTable" + :rowNumber="false" + :rowSelection="false" + :bordered="true" + :alwaysEdit="true" + :toolbar="false" + :disabled="true" + keep-source + :height="300" + :loading="detail.loading" + :dataSource="detail.dataSource" + :columns="detail.columns" + style="margin-top: 8px;" /> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> +import { getAction, httpAction } from '@/api/manage' +import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' +import { JVXETypes } from '@/components/jeecg/JVxeTable' +import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect' +import moment from 'dayjs' + +export default { + name: 'EamMaintenanceStandardModal', + mixins: [JVxeTableModelMixin], + components: { + MaintenanceEquipmentSelect + }, + data() { + return { + title: '鎿嶄綔', + visible: false, + model: {}, + editable: false, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + confirmLoading: false, + validatorRules: { + standardName: [ + { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�!' } + ], + maintenanceCategory: [ + { required: true, message: '璇烽�夋嫨淇濆吇鍒嗙被!' } + ], + initialDate: [ + { required: true, message: '璇烽�夋嫨鍒濆鏃ユ湡!' } + ], + maintenancePeriod: [ + { required: true, message: '璇疯緭鍏ヤ繚鍏诲懆鏈燂紝鍗曚綅锛氬ぉ!' } + ], + equipmentId: [ + { required: true, message: '璇烽�夋嫨璁惧!' } + ], + operator: [ + { required: true, message: '璇烽�夋嫨鐐规浜�!' } + ] + }, + url: { + add: '/eam/eamInspectionOrder/add', + edit: '/eam/eamInspectionOrder/edit', + detail: '/eam/eamMaintenanceStandardDetail/queryList', + detailOrder: '/eam/eamInspectionOrderDetail/queryList' + }, + maintenanceCategory: 'POINT_INSPECTION', + standardId:"", + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: '10%', + align:"center", + }, + { + title: '淇濆吇椤�', + key: 'itemName', + type: JVXETypes.normal, + width: '20%', + align:"center", + }, + { + title: '淇濆吇瑕佹眰', + key: 'itemDemand', + type: JVXETypes.normal, + width: '30%', + align:"center", + }, + { + title: "鐐规缁撴灉" + ,key: 'inspectionResult' + ,type: JVXETypes.selectSearch + ,dictCode:'eam_inspection_result' + ,width: '20%' + ,align:"center" + }, + { + title: '寮傚父鎻忚堪', + key: 'exceptionDescription', + type: JVXETypes.normal, + width: '30%', + align:"center", + }, + { + title: '寮傚父鏄惁鎶ヤ慨', + key: 'selectSearch', + type: JVXETypes.selectSearch, + dictCode:'yn', + width: '20%', + align:"center", + } + ] + } + } + }, + created() { + }, + methods: { + add() { + this.model = {} + this.detail.dataSource = []; + this.visible = true + this.editable = false + }, + edit(record) { + this.model = Object.assign({}, record) + this.standardId=record.standardId + this.visible = true + this.editable = true + if (record && record.referenceFile) { + let obj = JSON.parse(record.referenceFile) + this.model.fileList = [obj] + } else { + this.model.fieldList = [] + } + this.loadDetailOrder(record.id) + }, + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + }, + async handleOk() { + const that = this + let errMap = await that.$refs.editableDetailTable.validateTable() + if (errMap) { + this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') + return + } + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + let tableData = that.$refs.editableDetailTable.getTableData() + let removeData = that.$refs.editableDetailTable.getDeleteData() + that.model.tableDetailList = [...tableData] + that.model.removeDetailList = [...removeData] + + that.confirmLoading = false + let httpurl = '' + let method = '' + if (!this.model.id) { + httpurl += this.url.add + method = 'post' + } else { + httpurl += this.url.edit + method = 'put' + } + this.model.standardId=this.standardId + httpAction(httpurl, this.model, method).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.$emit('ok') + that.close() + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = false + }) + } else { + return false + } + }) + }, + handleCancel() { + this.close() + }, + autocompleteForm(selectObj) { + this.model.standardName = selectObj.standardName + this.model.maintenancePeriod=selectObj.maintenancePeriod + this.model.standardCode=selectObj.standardCode + if (this.standardId===undefined || this.standardId==="") { + this.standardId=selectObj.id + this.loadDetail(selectObj.id) + } + }, + expirationTimeFrom(date) { + //杩囨湡鏃堕棿鏄垵濮嬫椂闂�+淇濆吇鍛ㄦ湡 + if (date && this.model.maintenancePeriod) { + // 杞崲涓烘椂闂存埑瀛楃涓诧紙鎴栨寚瀹氭牸寮忥級 + this.model.expirationTime = moment(date) + .add(this.model.maintenancePeriod, 'days') + .format('YYYY-MM-DD') + } else { + this.model.expirationTime = null; // 娓呯┖鏃犳晥鍊� + } + }, + //鍔犺浇璇︽儏鏁版嵁 + loadDetail(standardId) { + this.detail.dataSource = [] + if (standardId) { + getAction(this.url.detail, { standardId: standardId }).then(res => { + if (res.success) { + this.detail.dataSource = [...res.result] + } + }) + } + }, + loadDetailOrder(orderId){ + this.detail.dataSource = [] + if (orderId) { + getAction(this.url.detailOrder, { orderId: orderId }).then(res => { + if (res.success) { + this.detail.dataSource = [...res.result] + } + }) + } + } + } +} +</script> + +<style lang="less" scoped> + +</style> \ No newline at end of file diff --git a/src/views/flowable/workflow/FlowCompleted.vue b/src/views/flowable/workflow/FlowCompleted.vue index eecaeb1..ba2a883 100644 --- a/src/views/flowable/workflow/FlowCompleted.vue +++ b/src/views/flowable/workflow/FlowCompleted.vue @@ -79,6 +79,8 @@ <DispatchFileXq ref="modalFormDispatchFileXq" :selectShenpiData="selectDispatchFileXqData"></DispatchFileXq> + <InspectionOrderXq ref="modalFormInspectionOrderXq" :selectShenpiData="selectInspectionOrderXqData"></InspectionOrderXq> + </a-card> </template> @@ -90,11 +92,13 @@ import JDictSelectTag from '@/components/dict/JDictSelectTag.vue' import AssignFileStreamXq from '@views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue' import DispatchFileXq from '@views/flowable/workflow/dispatchFile/DispatchFileXq.vue' +import InspectionOrderXq from '@views/flowable/workflow/InspectionOrder/InspectionOrderXq.vue' export default { name: 'NcDeviceCharactersList', mixins:[JeecgListMixin, mixinDevice], components: { + InspectionOrderXq, DispatchFileXq, AssignFileStreamXq: AssignFileStreamXq, JDictSelectTag, @@ -147,7 +151,7 @@ { title: '鎿嶄綔鏃堕棿', align: "center", - dataIndex: 'createTime', + dataIndex: 'finishTime', width:300 }, { @@ -164,7 +168,8 @@ }, dictOptions:{}, selectShenpiData: {}, - selectDispatchFileXqData:{} + selectDispatchFileXqData:{}, + selectInspectionOrderXqData:{} } }, created() { @@ -179,17 +184,20 @@ console.log('鐐瑰嚮浜嗚鎯�') console.log('item----->', item) console.log('index----->', index) - let approcesstype = this.splitAprocessType(item.category_dictText) + let approcesstype = this.splitAprocessType(item.category) console.log('approcesstype--->', approcesstype) switch (approcesstype) { - case '鎸囨淳NC鏂囨。鍒拌澶囨祦绋�': + case 'drApproval': this.handDrDetial(item) break - case 'NC绋嬪簭绛炬淳': + case 'ggApproval': this.handDispatchFileDetial(item) break + case 'sbdjApproval': + this.handInspectionOrder(item) + break default: - alert('娌℃壘鍒拌瀹℃壒') + alert('娌℃壘鍒拌娴佺▼') } }, splitAprocessType(title) { @@ -211,6 +219,16 @@ this.selectDispatchFileXqData.title=item.description this.$refs.modalFormDispatchFileXq.clearTableSource() this.$refs.modalFormDispatchFileXq.getAllApproveData(item) + }, + handInspectionOrder(item) { + console.log('item----->', item) + this.selectInspectionOrderXqData = item + this.selectInspectionOrderXqData.assignee_dictText=item.todoUsers_dictText + this.selectInspectionOrderXqData.procInstId=item.procInsId + this.selectInspectionOrderXqData.processInstanceId=item.procInsId + this.selectInspectionOrderXqData.title=item.description + this.$refs.modalFormInspectionOrderXq.clearTableSource() + this.$refs.modalFormInspectionOrderXq.getAllApproveData(item) } } } diff --git a/src/views/flowable/workflow/FlowLedger.vue b/src/views/flowable/workflow/FlowLedger.vue index 2974c83..20eed95 100644 --- a/src/views/flowable/workflow/FlowLedger.vue +++ b/src/views/flowable/workflow/FlowLedger.vue @@ -90,6 +90,8 @@ <AssignFileStreamXq ref="modalFormApproval" :selectShenpiData="selectShenpiData"></AssignFileStreamXq> <DispatchFileXq ref="modalFormDispatchFileXq" :selectShenpiData="selectDispatchFileXqData"></DispatchFileXq> + + <InspectionOrderXq ref="modalFormInspectionOrderXq" :selectShenpiData="selectInspectionOrderXqData"></InspectionOrderXq> </a-card> </template> @@ -101,6 +103,7 @@ import JDictSelectTag from '@/components/dict/JDictSelectTag.vue' import AssignFileStreamXq from '@views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue' import DispatchFileXq from '@views/flowable/workflow/dispatchFile/DispatchFileXq.vue' +import InspectionOrderXq from '@views/flowable/workflow/InspectionOrder/InspectionOrderXq.vue' export default { name: 'NcDeviceCharactersList', @@ -109,6 +112,7 @@ DispatchFileXq, AssignFileStreamXq: AssignFileStreamXq, JDictSelectTag, + InspectionOrderXq }, data () { return { @@ -194,7 +198,8 @@ }, dictOptions:{}, selectShenpiData: {}, - selectDispatchFileXqData:{} + selectDispatchFileXqData:{}, + selectInspectionOrderXqData:{} } }, created() { @@ -209,19 +214,23 @@ console.log('鐐瑰嚮浜嗚鎯�') console.log('item----->', item) console.log('index----->', index) - let approcesstype = this.splitAprocessType(item.category_dictText) + let approcesstype = this.splitAprocessType(item.category) console.log('approcesstype--->', approcesstype) switch (approcesstype) { - case '鎸囨淳NC鏂囨。鍒拌澶囨祦绋�': + case 'drApproval': item.description=item.title this.handDrDetial(item) break - case 'NC绋嬪簭绛炬淳': + case 'ggApproval': item.description=item.title this.handDispatchFileDetial(item) break + case 'sbdjApproval': + item.description=item.title + this.handInspectionOrderDetial(item) + break default: - alert('娌℃壘鍒拌瀹℃壒') + alert('娌℃壘鍒拌娴佺▼') } }, splitAprocessType(title) { @@ -241,6 +250,14 @@ this.selectDispatchFileXqData.procInstId=item.processInstanceId this.$refs.modalFormDispatchFileXq.clearTableSource() this.$refs.modalFormDispatchFileXq.getAllApproveData(item) + }, + handInspectionOrderDetial(item){ + this.selectInspectionOrderXqData = item + this.selectInspectionOrderXqData.assignee_dictText=item.todoUsers_dictText + this.selectInspectionOrderXqData.createTime=item.startTime + this.selectInspectionOrderXqData.procInstId=item.processInstanceId + this.$refs.modalFormInspectionOrderXq.clearTableSource() + this.$refs.modalFormInspectionOrderXq.getAllApproveData(item) } } } diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index f46a3be..510cacd 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -103,6 +103,8 @@ <AssignFileStreamHandle ref="modalFormApproval" :selectShenpiData="selectShenpiData"></AssignFileStreamHandle> <DispatchFileHandle ref="modalFormDispatchFileXq" :selectShenpiData="selectDispatchFileXqData" @searchReset="searchReset"></DispatchFileHandle> <DispatchFileBachHandleStyle ref="modalFormDispatchFileBatch" @searchReset="searchReset" @ok="modalFormOk"></DispatchFileBachHandleStyle> + <InspectionOrderHandle ref="modalFormInspectionOrder" :selectShenpiData="selectInspectionOrderData" @searchReset="searchReset"></InspectionOrderHandle> + <InspectionOrderHandleBzz ref="modalFormInspectionOrderBzz" :selectShenpiData="selectInspectionOrderDataBzz" @searchReset="searchReset"></InspectionOrderHandleBzz> <week-maintenance-approval-modal ref = "weekMaintenanceApprovalModal" :maintenanceId="dataId"></week-maintenance-approval-modal> </a-card> </template> @@ -116,6 +118,8 @@ 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 InspectionOrderHandle from '@views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue' +import InspectionOrderHandleBzz from '@views/flowable/workflow/InspectionOrder/InspectionOrderHandleBzz.vue' import WeekMaintenanceApprovalModal from '@views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal'; import { getAction } from '@api/manage' @@ -127,6 +131,8 @@ JDictSelectTag, DispatchFileHandle, DispatchFileBachHandleStyle, + InspectionOrderHandle, + InspectionOrderHandleBzz, WeekMaintenanceApprovalModal }, data () { @@ -202,6 +208,8 @@ dictOptions:{}, selectShenpiData: {}, selectDispatchFileXqData:{}, + selectInspectionOrderData:{}, + selectInspectionOrderDataBzz:{}, selectBachData:{}, //涓氬姟淇℃伅ID dataId: undefined, @@ -228,11 +236,14 @@ case 'ggApproval': this.handDispatchFileDetial(item) break + case 'sbdjApproval': + this.handInspectionOrder(item) + break case 'WEEK_MAINTENANCE': this.handleWeekMaintenance(item) break default: - alert('娌℃壘鍒拌瀹℃壒') + alert('娌℃壘鍒拌娴佺▼') } }, splitAprocessType(title) { @@ -255,6 +266,18 @@ this.$refs.modalFormDispatchFileXq.clearTableSource() this.$refs.modalFormDispatchFileXq.getAllApproveData(item) }, + handInspectionOrder(item) { + console.log('item----->', item) + if (item.taskDefKey ==='Confirmed_completed'){ + this.selectInspectionOrderDataBzz = item + this.$refs.modalFormInspectionOrderBzz .clearTableSource() + this.$refs.modalFormInspectionOrderBzz .getAllApproveData(item) + }else { + this.selectInspectionOrderData = item + this.$refs.modalFormInspectionOrder.clearTableSource() + this.$refs.modalFormInspectionOrder.getAllApproveData(item) + } + }, batchHandle() { if (this.selectedRowKeys.length <= 0) { this.$notification.warning({ diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue new file mode 100644 index 0000000..4105cc7 --- /dev/null +++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue @@ -0,0 +1,446 @@ +<!-- + Description: 宸ヤ綔娴�-璁惧鐐规澶勭悊椤甸潰 List + Author: 浣滆�� liuyh + Date: 2025-02-27 +--> +<template> + <a-modal + :title="title" + :width="width" + :visible="visible" + :footer="null" + @cancel="handCancel" + > + <a-card :bordered="false"> + <div> + <b>{{ selectShenpiData.title }}</b> + <br> + <br> + <a-tag color="blue"> + 褰撳墠澶勭悊浜� {{ selectShenpiData.assignee_dictText }} + </a-tag> + <a-tag color="blue"> + 浠诲姟鍒涘缓鏃堕棿 {{ selectShenpiData.createTime }} + </a-tag> + <br> + <br> + <button @click="fetchAndShowBmp" class="btn-custom">鎵撳紑娴佺▼鍥�</button> + <div v-if="imageSrc"> + <img :src="imageSrc" alt="Fetched Image" /> + </div> + <hr class="shallow-hr"> + </div> + <div> + <b>鐐规宸ュ崟璇︽儏</b> + <br> + <a-form :form='form'> + <a-spin :spinning="spinning"> + <a-tabs default-active-key='1' @change='callback'> + <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> + <a-form-model ref='form' :model='tableRowRecord' :rules='validatorRules'> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="宸ュ崟鍙�"> + <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" :disabled="true" v-model="tableRowRecord.orderNum" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栧彿"> + <MaintenanceEquipmentSelect placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="tableRowRecord.equipmentId" + :maintenanceCategory="maintenanceCategory" :disabled="true" + @autocompleteForm="autocompleteForm"></MaintenanceEquipmentSelect> + </a-form-model-item> + </a-col> + + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗗悕绉�" disabled v-model="this.standardName" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗙紪鐮�" disabled v-model="this.standardCode" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> + <a-input-number v-model="this.maintenancePeriod" :min="1" :precision="0" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="鐐规浜�"> + <j-dict-select-tag v-model="tableRowRecord.operator" placeholder="璇烽�夋嫨鐢ㄦ埛" disabled dictCode="sys_user,realname,username,username!='admin' order by create_time"/> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="鐐规鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionDate"> + <j-date placeholder="璇烽�夋嫨鐐规鏃ユ湡" v-model="tableRowRecord.inspectionDate" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="鐐规杩囨湡鏃堕棿" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="expirationTime"> + <j-date placeholder="璇烽�夋嫨鐐规杩囨湡鏃堕棿" v-model="tableRowRecord.expirationTime" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row > + <a-col :span="24"> + <a-form-model-item label="澶囨敞" :labelCol="{span:1}" :wrapperCol="{span:22}" prop="remark"> + <a-textarea v-model="tableRowRecord.remark" rows="3" placeholder="璇疯緭鍏ュ娉�" disabled /> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-tab-pane> + <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> + <a-card> + <a-timeline style="padding:0 1% 0 12%" > + <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> + <div class="bottom"> + <p>澶勭悊浜猴細{{item.assignee_dictText}}</p> + <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p> + <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p> + <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p> + <div class="left_qiu"><span>{{item.taskName}}</span></div> + </div> + </a-timeline-item> + </a-timeline> + </a-card> + </a-tab-pane> + </a-tabs> + </a-spin> + </a-form> + </div> + <div> + <hr class="shallow-hr"> + <br> + <b>淇濆吇椤规槑缁�</b> + <br> + <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail"> + <a-row :gutter="24"> + <j-vxe-table + ref="editableDetailTable" + :rowNumber="false" + :rowSelection="false" + :bordered="true" + :alwaysEdit="true" + :toolbar="false" + keep-source + :height="300" + :loading="detail.loading" + :dataSource="detail.dataSource" + :columns="detail.columns" + style="margin-top: 8px;" /> + </a-row> + <div class="table-operator" style="text-align: right;"> + <a-button @click="handleQueXiaoTask" type="primary" icon="close">鍙栨秷</a-button> + <a-button @click="submitForm">鎻� 浜�</a-button> + </div> + </a-form-model> + </div> + </a-card> + + + </a-modal> +</template> + +<script> + +import '@assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage' +import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' +import { JVXETypes } from '@comp/jeecg/JVxeTable' +export default { + name: 'FlowShenPi', + components: { MaintenanceEquipmentSelect }, + mixins: [mixinDevice], + props: { + selectShenpiData: { + type: Object, + required: true + } + }, + + data() { + return { + form: this.$form.createForm(this), + span: 12, + span1: 8, + coldisabled: true, + spinning: false, + tableRowRecord: {}, + assignFileStream:{}, + tableDataSource: [], + usageDataSource: [], + hitaskDataSource:[], + bomForm: {}, + approveContent:"", + imageSrc: null, + drawerVisible: true, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 30 }, + sm: { span: 16 } + }, + validatorRules: { + status: { + rules: [ + { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!'}, + ] + }, + }, + approveData: {}, + flowData: {}, + title: '璇︽儏椤甸潰', + width: 1000, + visible: false, + // 琛ㄥご + url: { + queryBomDataById: '/eam/eamInspectionOrder/selectVoById', + diagramView: '/assign/flow/diagramView', + queryHisTaskList:'/dncFlow/dispatchFile/queryHisTaskList', + approve:"/eam/eamInspectionOrder/approval", + saveDispatchFile:"/dncFlow/dispatchFile/saveDispatchFile" + }, + dictOptions: {}, + superFieldList: [], + workflowSource: [], + maintenanceCategory: 'POINT_INSPECTION', + standardName:"", + maintenancePeriod:"", + standardCode:"", + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: '10%', + align:"center", + }, + { + title: '淇濆吇椤�', + key: 'itemName', + type: JVXETypes.normal, + width: '20%', + align:"center", + }, + { + title: '淇濆吇瑕佹眰', + key: 'itemDemand', + type: JVXETypes.normal, + width: '30%', + align:"center", + }, + { + title: "鐐规缁撴灉" + ,key: 'inspectionResult' + ,type: JVXETypes.selectSearch + ,dictCode:'eam_inspection_result' + ,width: '20%' + ,align:"center" + }, + { + title: '寮傚父鎻忚堪', + key: 'exceptionDescription', + type: JVXETypes.textarea, + width: '30%', + align:"center", + }, + { + title: '寮傚父鏄惁鎶ヤ慨', + key: 'reportFlag', + type: JVXETypes.selectSearch, + dictCode:'yn', + width: '20%', + align:"center", + } + ] + } + } + }, + created() { + }, + computed: {}, + methods: { + callback() { + }, + handCancel() { + this.visible = false + }, + clearTableSource() { + this.tableDataSource = [] + this.usageDataSource = [] + }, + fetchAndShowBmp() { + console.log('flowData----->', this.flowData) + try { + let parm = { + processDefinitionId: this.flowData.processDefinitionId, + processInstanceId:this.flowData.processInstanceId, + TaskDefinitionKey:this.flowData.processDefinitionKey + } + downFile(this.url.diagramView,parm,'get').then((res=>{ + console.log('Pica------>',res) + const urlObject = window.URL.createObjectURL(new Blob([res])) + this.imageSrc = urlObject + })) + } catch (error) { + console.error('Error fetching image blob:', error) + alert('鏃犳硶鍔犺浇鍥剧墖锛岃绋嶅悗鍐嶈瘯銆�') + } + }, + handleQueXiaoTask(){ + this.visible = false + this.routeReload() + }, + autocompleteForm(selectObj) { + this.standardName = selectObj.standardName + this.maintenancePeriod=selectObj.maintenancePeriod + this.standardCode=selectObj.standardCode + }, + submitForm () { + const that = this; + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.form.validateFields((err, values) => { + if (!err) { + that.confirmLoading = true; + let url=this.url.approve + let method = 'post'; + let flowTaskVo = {} + let tableData = that.$refs.editableDetailTable.getTableData() + flowTaskVo.comment =that.assignFileStream.approveContent; + flowTaskVo.dataId = this.selectShenpiData.dataId + flowTaskVo.taskId = this.selectShenpiData.id + flowTaskVo.userId = this.selectShenpiData.assignee + flowTaskVo.instanceId = this.selectShenpiData.procInstId + flowTaskVo.values = this.selectShenpiData.variables + flowTaskVo.tableDetailList=tableData + console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo) + httpAction(url,flowTaskVo,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.visible = false + //鍒锋柊琛ㄦ牸 + that.$emit('searchReset') + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + }) + } + }) + }, + getAllApproveData(item) { + console.log('selectShenpiData----->', this.selectShenpiData) + this.flowData = item + let param = { + 'id': item.dataId + } + let parmhis={ + 'procInstId': item.procInstId + } + getAction(this.url.queryHisTaskList,parmhis).then(res=>{ + this.hitaskDataSource=res.result + getAction(this.url.queryBomDataById, param).then((res => { + if (res.success) { + this.tableRowRecord = res.result[0] + this.detail.dataSource=res.result[0].tableDetailList + console.log('this.tableRowRecord----->', this.tableRowRecord[0]) + } + })) + }).finally( + this.visible = true, + console.log('this.approveData---->', this.approveData) + ) + } + } +} +</script> +<style scoped> +.shallow-hr { + border: 0; + height: 1px; /* 鍒嗙晫绾跨殑楂樺害 */ + background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */ + margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */ +} +.btn-custom { + background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */ + color: white; /* 鐧借壊鏂囧瓧 */ + border: none; /* 鏃犺竟妗� */ + padding: 5px 15px; /* 鍐呰竟璺� */ + text-align: center; /* 鏂囧瓧灞呬腑 */ + text-decoration: none; /* 鏃犱笅鍒掔嚎 */ + display: inline-block; /* 琛屽唴鍧楀厓绱� */ + font-size: 12px; /* 瀛椾綋澶у皬 */ + margin: 4px 2px; /* 澶栬竟璺� */ + cursor: pointer; /* 榧犳爣鎮仠鏃舵樉绀烘墜鍨� */ + border-radius: 4px; /* 鍦嗚杈规 */ +} + +.bold-large-label { + font-weight: bold; + font-size: 20px; /* 鎴栦綘闇�瑕佺殑浠讳綍澶у皬 */ +} +.left_qiu{ + position: absolute; + left: -74px; + top: 0; + width:54px; + border-radius: 50%; + height:54px; + font-size: 13px; + margin: auto; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + background: #0099ff; + transform: translate(0, 0); +} +/deep/ .ant-timeline-item-tail{ + left: -29px !important; +} +.left_qiu span{ + width: 3em; + display: block; + color: #fff; + text-align: center; +} +.img{ + width: 75%; +} + +.wrap{ + clear: both; + width: 100%; + display: flex; + height: 50px; + border: 1px solid #ccc; + /* background-color: aqua; */ +} +.box{ + width:21%; + height:50px; + border-right: 1px solid #ccc; + line-height: 50px; + /* background: red; */ + text-align:center; + margin: auto; +} + +@import '~@assets/less/common.less'; +</style> \ No newline at end of file diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandleBzz.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandleBzz.vue new file mode 100644 index 0000000..4e9fc1a --- /dev/null +++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandleBzz.vue @@ -0,0 +1,468 @@ +<!-- + Description: 宸ヤ綔娴�-璁惧鐐规澶勭悊椤甸潰 List + Author: 浣滆�� liuyh + Date: 2025-02-27 +--> +<template> + <a-modal + :title="title" + :width="width" + :visible="visible" + :footer="null" + @cancel="handCancel" + > + <a-card :bordered="false"> + <div> + <b>{{ selectShenpiData.title }}</b> + <br> + <br> + <a-tag color="blue"> + 褰撳墠澶勭悊浜� {{ selectShenpiData.assignee_dictText }} + </a-tag> + <a-tag color="blue"> + 浠诲姟鍒涘缓鏃堕棿 {{ selectShenpiData.createTime }} + </a-tag> + <br> + <br> + <button @click="fetchAndShowBmp" class="btn-custom">鎵撳紑娴佺▼鍥�</button> + <div v-if="imageSrc"> + <img :src="imageSrc" alt="Fetched Image" /> + </div> + <hr class="shallow-hr"> + </div> + <div> + <b>鐐规宸ュ崟璇︽儏</b> + <br> + <a-form :form='form'> + <a-spin :spinning="spinning"> + <a-tabs default-active-key='1' @change='callback'> + <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> + <a-form-model ref='form' :model='tableRowRecord' :rules='validatorRules'> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="宸ュ崟鍙�"> + <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" :disabled="true" v-model="tableRowRecord.orderNum" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栧彿"> + <MaintenanceEquipmentSelect placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="tableRowRecord.equipmentId" + :maintenanceCategory="maintenanceCategory" :disabled="true" + @autocompleteForm="autocompleteForm"></MaintenanceEquipmentSelect> + </a-form-model-item> + </a-col> + + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗗悕绉�" disabled v-model="this.standardName" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗙紪鐮�" disabled v-model="this.standardCode" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> + <a-input-number v-model="this.maintenancePeriod" :min="1" :precision="0" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="鐐规浜�"> + <j-dict-select-tag v-model="tableRowRecord.operator" placeholder="璇烽�夋嫨鐢ㄦ埛" disabled dictCode="sys_user,realname,username,username!='admin' order by create_time"/> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="鐐规鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionDate"> + <j-date placeholder="璇烽�夋嫨鐐规鏃ユ湡" v-model="tableRowRecord.inspectionDate" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="鐐规杩囨湡鏃堕棿" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="expirationTime"> + <j-date placeholder="璇烽�夋嫨鐐规杩囨湡鏃堕棿" v-model="tableRowRecord.expirationTime" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row > + <a-col :span="24"> + <a-form-model-item label="澶囨敞" :labelCol="{span:1}" :wrapperCol="{span:22}" prop="remark"> + <a-textarea v-model="tableRowRecord.remark" rows="3" placeholder="璇疯緭鍏ュ娉�" disabled /> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-tab-pane> + <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> + <a-card> + <a-timeline style="padding:0 1% 0 12%" > + <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> + <div class="bottom"> + <p>澶勭悊浜猴細{{item.assignee_dictText}}</p> + <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p> + <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p> + <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p> + <div class="left_qiu"><span>{{item.taskName}}</span></div> + </div> + </a-timeline-item> + </a-timeline> + </a-card> + </a-tab-pane> + </a-tabs> + </a-spin> + </a-form> + </div> + <div> + <hr class="shallow-hr"> + <br> + <b>淇濆吇椤规槑缁�</b> + <br> + <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail"> + <a-row :gutter="24"> + <j-vxe-table + ref="editableDetailTable" + :rowNumber="false" + :rowSelection="false" + :bordered="true" + :alwaysEdit="true" + :toolbar="false" + keep-source + :height="300" + :loading="detail.loading" + :dataSource="detail.dataSource" + :columns="detail.columns" + :disabled="true" + style="margin-top: 8px;" /> + </a-row> + </a-form-model> + </div> + <div> + <hr class="shallow-hr"> + <br> + <b>鐝粍闀跨‘璁�</b> + <br> + <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail"> + <a-row> + <a-col ::span='span' class="btxx"> + <a-form-model-item label="澶勭悊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='dealType'> + <j-dict-select-tag type='list' v-model='assignFileStream.dealType' dictCode='approved_rejected' 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="assignFileStream.dealSuggestion" rows="4" placeholder="璇疯緭鍏ュ鐞嗘剰瑙�"/> + </a-form-model-item > + </a-col> + </a-row> + <div class="table-operator" style="text-align: right;"> + <a-button @click="handleQueXiaoTask" type="primary" icon="close">鍙栨秷</a-button> + <a-button @click="submitForm">鎻� 浜�</a-button> + </div> + </a-form-model> + </div> + </a-card> + + + </a-modal> +</template> + +<script> + +import '@assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage' +import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' +import { JVXETypes } from '@comp/jeecg/JVxeTable' +export default { + name: 'FlowShenPi', + components: { MaintenanceEquipmentSelect }, + mixins: [mixinDevice], + props: { + selectShenpiData: { + type: Object, + required: true + } + }, + + data() { + return { + form: this.$form.createForm(this), + span: 12, + span1: 8, + coldisabled: true, + spinning: false, + tableRowRecord: {}, + assignFileStream:{}, + tableDataSource: [], + usageDataSource: [], + hitaskDataSource:[], + bomForm: {}, + approveContent:"", + imageSrc: null, + drawerVisible: true, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 30 }, + sm: { span: 16 } + }, + validatorRules: { + status: { + rules: [ + { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!'}, + ] + }, + }, + approveData: {}, + flowData: {}, + title: '璇︽儏椤甸潰', + width: 1000, + visible: false, + // 琛ㄥご + url: { + queryBomDataById: '/eam/eamInspectionOrder/selectVoById', + diagramView: '/assign/flow/diagramView', + queryHisTaskList:'/dncFlow/dispatchFile/queryHisTaskList', + approve:"/eam/eamInspectionOrder/approval", + saveDispatchFile:"/dncFlow/dispatchFile/saveDispatchFile" + }, + dictOptions: {}, + superFieldList: [], + workflowSource: [], + maintenanceCategory: 'POINT_INSPECTION', + standardName:"", + maintenancePeriod:"", + standardCode:"", + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: '10%', + align:"center", + }, + { + title: '淇濆吇椤�', + key: 'itemName', + type: JVXETypes.normal, + width: '20%', + align:"center", + }, + { + title: '淇濆吇瑕佹眰', + key: 'itemDemand', + type: JVXETypes.normal, + width: '30%', + align:"center", + }, + { + title: "鐐规缁撴灉" + ,key: 'inspectionResult' + ,type: JVXETypes.selectSearch + ,dictCode:'eam_inspection_result' + ,width: '20%' + ,align:"center" + }, + { + title: '寮傚父鎻忚堪', + key: 'exceptionDescription', + type: JVXETypes.normal, + width: '30%', + align:"center", + }, + { + title: '寮傚父鏄惁鎶ヤ慨', + key: 'reportFlag', + type: JVXETypes.selectSearch, + dictCode:'yn', + width: '20%', + align:"center", + } + ] + } + } + }, + created() { + }, + computed: {}, + methods: { + callback() { + }, + handCancel() { + this.visible = false + }, + clearTableSource() { + this.tableDataSource = [] + this.usageDataSource = [] + }, + fetchAndShowBmp() { + console.log('flowData----->', this.flowData) + try { + let parm = { + processDefinitionId: this.flowData.processDefinitionId, + processInstanceId:this.flowData.processInstanceId, + TaskDefinitionKey:this.flowData.processDefinitionKey + } + downFile(this.url.diagramView,parm,'get').then((res=>{ + console.log('Pica------>',res) + const urlObject = window.URL.createObjectURL(new Blob([res])) + this.imageSrc = urlObject + })) + } catch (error) { + console.error('Error fetching image blob:', error) + alert('鏃犳硶鍔犺浇鍥剧墖锛岃绋嶅悗鍐嶈瘯銆�') + } + }, + handleQueXiaoTask(){ + this.visible = false + this.routeReload() + }, + autocompleteForm(selectObj) { + this.standardName = selectObj.standardName + this.maintenancePeriod=selectObj.maintenancePeriod + this.standardCode=selectObj.standardCode + }, + submitForm () { + const that = this; + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.form.validateFields((err, values) => { + if (!err) { + that.confirmLoading = true; + let url=this.url.approve + let method = 'post'; + let flowTaskVo = {} + let tableData = that.$refs.editableDetailTable.getTableData() + flowTaskVo.dealType=that.assignFileStream.dealType + flowTaskVo.dealSuggestion=that.assignFileStream.dealSuggestion + flowTaskVo.dataId = this.selectShenpiData.dataId + flowTaskVo.taskId = this.selectShenpiData.id + flowTaskVo.userId = this.selectShenpiData.assignee + flowTaskVo.instanceId = this.selectShenpiData.procInstId + flowTaskVo.values = this.selectShenpiData.variables + flowTaskVo.tableDetailList=tableData + console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo) + httpAction(url,flowTaskVo,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.visible = false + //鍒锋柊琛ㄦ牸 + that.$emit('searchReset') + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + }) + } + }) + }, + getAllApproveData(item) { + console.log('selectShenpiData----->', this.selectShenpiData) + this.flowData = item + let param = { + 'id': item.dataId + } + let parmhis={ + 'procInstId': item.procInstId + } + getAction(this.url.queryHisTaskList,parmhis).then(res=>{ + this.hitaskDataSource=res.result + getAction(this.url.queryBomDataById, param).then((res => { + if (res.success) { + this.tableRowRecord = res.result[0] + this.detail.dataSource=res.result[0].tableDetailList + console.log('this.tableRowRecord----->', this.tableRowRecord[0]) + } + })) + }).finally( + this.visible = true, + console.log('this.approveData---->', this.approveData) + ) + } + } +} +</script> +<style scoped> +.shallow-hr { + border: 0; + height: 1px; /* 鍒嗙晫绾跨殑楂樺害 */ + background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */ + margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */ +} +.btn-custom { + background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */ + color: white; /* 鐧借壊鏂囧瓧 */ + border: none; /* 鏃犺竟妗� */ + padding: 5px 15px; /* 鍐呰竟璺� */ + text-align: center; /* 鏂囧瓧灞呬腑 */ + text-decoration: none; /* 鏃犱笅鍒掔嚎 */ + display: inline-block; /* 琛屽唴鍧楀厓绱� */ + font-size: 12px; /* 瀛椾綋澶у皬 */ + margin: 4px 2px; /* 澶栬竟璺� */ + cursor: pointer; /* 榧犳爣鎮仠鏃舵樉绀烘墜鍨� */ + border-radius: 4px; /* 鍦嗚杈规 */ +} + +.bold-large-label { + font-weight: bold; + font-size: 20px; /* 鎴栦綘闇�瑕佺殑浠讳綍澶у皬 */ +} +.left_qiu{ + position: absolute; + left: -74px; + top: 0; + width:54px; + border-radius: 50%; + height:54px; + font-size: 13px; + margin: auto; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + background: #0099ff; + transform: translate(0, 0); +} +/deep/ .ant-timeline-item-tail{ + left: -29px !important; +} +.left_qiu span{ + width: 3em; + display: block; + color: #fff; + text-align: center; +} +.img{ + width: 75%; +} + +.wrap{ + clear: both; + width: 100%; + display: flex; + height: 50px; + border: 1px solid #ccc; + /* background-color: aqua; */ +} +.box{ + width:21%; + height:50px; + border-right: 1px solid #ccc; + line-height: 50px; + /* background: red; */ + text-align:center; + margin: auto; +} + +@import '~@assets/less/common.less'; +</style> \ No newline at end of file diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderXq.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderXq.vue new file mode 100644 index 0000000..498e570 --- /dev/null +++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderXq.vue @@ -0,0 +1,443 @@ +<!-- + Description: 宸ヤ綔娴�-璁惧鐐规澶勭悊椤甸潰 List + Author: 浣滆�� liuyh + Date: 2025-02-27 +--> +<template> + <a-modal + :title="title" + :width="width" + :visible="visible" + :footer="null" + @cancel="handCancel" + > + <a-card :bordered="false"> + <div> + <b>{{ selectShenpiData.title }}</b> + <br> + <br> + <a-tag color="blue"> + 褰撳墠澶勭悊浜� {{ selectShenpiData.assignee_dictText }} + </a-tag> + <a-tag color="blue"> + 浠诲姟鍒涘缓鏃堕棿 {{ selectShenpiData.createTime }} + </a-tag> + <br> + <br> + <button @click="fetchAndShowBmp" class="btn-custom">鎵撳紑娴佺▼鍥�</button> + <div v-if="imageSrc"> + <img :src="imageSrc" alt="Fetched Image" /> + </div> + <hr class="shallow-hr"> + </div> + <div> + <b>鐐规宸ュ崟璇︽儏</b> + <br> + <a-form :form='form'> + <a-spin :spinning="spinning"> + <a-tabs default-active-key='1' @change='callback'> + <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> + <a-form-model ref='form' :model='tableRowRecord' :rules='validatorRules'> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="宸ュ崟鍙�"> + <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" :disabled="true" v-model="tableRowRecord.orderNum" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栧彿"> + <MaintenanceEquipmentSelect placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="tableRowRecord.equipmentId" + :maintenanceCategory="maintenanceCategory" :disabled="true" + @autocompleteForm="autocompleteForm"></MaintenanceEquipmentSelect> + </a-form-model-item> + </a-col> + + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗗悕绉�" disabled v-model="this.standardName" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜"> + <a-input placeholder="璇疯緭鍏ユ爣鍑嗙紪鐮�" disabled v-model="this.standardCode" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> + <a-input-number v-model="this.maintenancePeriod" :min="1" :precision="0" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="鐐规浜�"> + <j-dict-select-tag v-model="tableRowRecord.operator" placeholder="璇烽�夋嫨鐢ㄦ埛" disabled dictCode="sys_user,realname,username,username!='admin' order by create_time"/> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span='span'> + <a-form-model-item label="鐐规鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionDate"> + <j-date placeholder="璇烽�夋嫨鐐规鏃ユ湡" v-model="tableRowRecord.inspectionDate" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span='span'> + <a-form-model-item label="鐐规杩囨湡鏃堕棿" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="expirationTime"> + <j-date placeholder="璇烽�夋嫨鐐规杩囨湡鏃堕棿" v-model="tableRowRecord.expirationTime" disabled style="width: 100%" /> + </a-form-model-item> + </a-col> + </a-row> + <a-row > + <a-col :span="24"> + <a-form-model-item label="澶囨敞" :labelCol="{span:1}" :wrapperCol="{span:22}" prop="remark"> + <a-textarea v-model="tableRowRecord.remark" rows="3" placeholder="璇疯緭鍏ュ娉�" disabled /> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </a-tab-pane> + <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> + <a-card> + <a-timeline style="padding:0 1% 0 12%" > + <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> + <div class="bottom"> + <p>澶勭悊浜猴細{{item.assignee_dictText}}</p> + <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p> + <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p> + <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p> + <div class="left_qiu"><span>{{item.taskName}}</span></div> + </div> + </a-timeline-item> + </a-timeline> + </a-card> + </a-tab-pane> + </a-tabs> + </a-spin> + </a-form> + </div> + <div> + <hr class="shallow-hr"> + <br> + <b>淇濆吇椤规槑缁�</b> + <br> + <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail"> + <a-row :gutter="24"> + <j-vxe-table + ref="editableDetailTable" + :rowNumber="false" + :rowSelection="false" + :bordered="true" + :alwaysEdit="true" + :toolbar="false" + :disabled="true" + keep-source + :height="300" + :loading="detail.loading" + :dataSource="detail.dataSource" + :columns="detail.columns" + style="margin-top: 8px;" /> + </a-row> + </a-form-model> + </div> + </a-card> + + + </a-modal> +</template> + +<script> + +import '@assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage' +import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' +import { JVXETypes } from '@comp/jeecg/JVxeTable' +export default { + name: 'FlowShenPi', + components: { MaintenanceEquipmentSelect }, + mixins: [mixinDevice], + props: { + selectShenpiData: { + type: Object, + required: true + } + }, + + data() { + return { + form: this.$form.createForm(this), + span: 12, + span1: 8, + coldisabled: true, + spinning: false, + tableRowRecord: {}, + assignFileStream:{}, + tableDataSource: [], + usageDataSource: [], + hitaskDataSource:[], + bomForm: {}, + approveContent:"", + imageSrc: null, + drawerVisible: true, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 30 }, + sm: { span: 16 } + }, + validatorRules: { + status: { + rules: [ + { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!'}, + ] + }, + }, + approveData: {}, + flowData: {}, + title: '璇︽儏椤甸潰', + width: 1000, + visible: false, + // 琛ㄥご + url: { + queryBomDataById: '/eam/eamInspectionOrder/selectVoById', + diagramView: '/assign/flow/diagramView', + queryHisTaskList:'/dncFlow/dispatchFile/queryHisTaskList', + approve:"/eam/eamInspectionOrder/approval", + saveDispatchFile:"/dncFlow/dispatchFile/saveDispatchFile" + }, + dictOptions: {}, + superFieldList: [], + workflowSource: [], + maintenanceCategory: 'POINT_INSPECTION', + standardName:"", + maintenancePeriod:"", + standardCode:"", + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: '10%', + align:"center", + }, + { + title: '淇濆吇椤�', + key: 'itemName', + type: JVXETypes.normal, + width: '20%', + align:"center", + }, + { + title: '淇濆吇瑕佹眰', + key: 'itemDemand', + type: JVXETypes.normal, + width: '30%', + align:"center", + }, + { + title: "鐐规缁撴灉" + ,key: 'inspectionResult' + ,type: JVXETypes.selectSearch + ,dictCode:'eam_inspection_result' + ,width: '20%' + ,align:"center" + }, + { + title: '寮傚父鎻忚堪', + key: 'exceptionDescription', + type: JVXETypes.normal, + width: '30%', + align:"center", + }, + { + title: '寮傚父鏄惁鎶ヤ慨', + key: 'selectSearch', + type: JVXETypes.selectSearch, + dictCode:'yn', + width: '20%', + align:"center", + } + ] + } + } + }, + created() { + }, + computed: {}, + methods: { + callback() { + }, + handCancel() { + this.visible = false + }, + clearTableSource() { + this.tableDataSource = [] + this.usageDataSource = [] + }, + fetchAndShowBmp() { + console.log('flowData----->', this.flowData) + try { + let parm = { + processDefinitionId: this.flowData.processDefinitionId, + processInstanceId:this.flowData.processInstanceId, + TaskDefinitionKey:this.flowData.processDefinitionKey + } + downFile(this.url.diagramView,parm,'get').then((res=>{ + console.log('Pica------>',res) + const urlObject = window.URL.createObjectURL(new Blob([res])) + this.imageSrc = urlObject + })) + } catch (error) { + console.error('Error fetching image blob:', error) + alert('鏃犳硶鍔犺浇鍥剧墖锛岃绋嶅悗鍐嶈瘯銆�') + } + }, + handleQueXiaoTask(){ + this.visible = false + this.routeReload() + }, + autocompleteForm(selectObj) { + this.standardName = selectObj.standardName + this.maintenancePeriod=selectObj.maintenancePeriod + this.standardCode=selectObj.standardCode + }, + submitForm () { + const that = this; + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.form.validateFields((err, values) => { + if (!err) { + that.confirmLoading = true; + let url=this.url.approve + let method = 'post'; + let flowTaskVo = {} + let tableData = that.$refs.editableDetailTable.getTableData() + flowTaskVo.comment =that.assignFileStream.approveContent; + flowTaskVo.dataId = this.selectShenpiData.dataId + flowTaskVo.taskId = this.selectShenpiData.id + flowTaskVo.userId = this.selectShenpiData.assignee + flowTaskVo.instanceId = this.selectShenpiData.procInstId + flowTaskVo.values = this.selectShenpiData.variables + flowTaskVo.tableDetailList=tableData + console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo) + httpAction(url,flowTaskVo,method).then((res)=>{ + if(res.success){ + that.$message.success(res.message); + that.visible = false + //鍒锋柊琛ㄦ牸 + that.$emit('searchReset') + }else{ + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + }) + } + }) + }, + getAllApproveData(item) { + console.log('selectShenpiData----->', this.selectShenpiData) + this.flowData = item + let param = { + 'id': item.dataId + } + let parmhis={ + 'procInstId': item.procInstId + } + getAction(this.url.queryHisTaskList,parmhis).then(res=>{ + this.hitaskDataSource=res.result + getAction(this.url.queryBomDataById, param).then((res => { + if (res.success) { + this.tableRowRecord = res.result[0] + this.detail.dataSource=res.result[0].tableDetailList + console.log('this.tableRowRecord----->', this.tableRowRecord[0]) + } + })) + }).finally( + this.visible = true, + console.log('this.approveData---->', this.approveData) + ) + } + } +} +</script> +<style scoped> +.shallow-hr { + border: 0; + height: 1px; /* 鍒嗙晫绾跨殑楂樺害 */ + background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */ + margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */ +} +.btn-custom { + background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */ + color: white; /* 鐧借壊鏂囧瓧 */ + border: none; /* 鏃犺竟妗� */ + padding: 5px 15px; /* 鍐呰竟璺� */ + text-align: center; /* 鏂囧瓧灞呬腑 */ + text-decoration: none; /* 鏃犱笅鍒掔嚎 */ + display: inline-block; /* 琛屽唴鍧楀厓绱� */ + font-size: 12px; /* 瀛椾綋澶у皬 */ + margin: 4px 2px; /* 澶栬竟璺� */ + cursor: pointer; /* 榧犳爣鎮仠鏃舵樉绀烘墜鍨� */ + border-radius: 4px; /* 鍦嗚杈规 */ +} + +.bold-large-label { + font-weight: bold; + font-size: 20px; /* 鎴栦綘闇�瑕佺殑浠讳綍澶у皬 */ +} +.left_qiu{ + position: absolute; + left: -74px; + top: 0; + width:54px; + border-radius: 50%; + height:54px; + font-size: 13px; + margin: auto; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + background: #0099ff; + transform: translate(0, 0); +} +/deep/ .ant-timeline-item-tail{ + left: -29px !important; +} +.left_qiu span{ + width: 3em; + display: block; + color: #fff; + text-align: center; +} +.img{ + width: 75%; +} + +.wrap{ + clear: both; + width: 100%; + display: flex; + height: 50px; + border: 1px solid #ccc; + /* background-color: aqua; */ +} +.box{ + width:21%; + height:50px; + border-right: 1px solid #ccc; + line-height: 50px; + /* background: red; */ + text-align:center; + margin: auto; +} + +@import '~@assets/less/common.less'; +</style> \ No newline at end of file diff --git a/src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue b/src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue index 6fbbb4f..c52df86 100644 --- a/src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue +++ b/src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue @@ -105,13 +105,11 @@ <a-timeline style="padding:0 1% 0 12%" > <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> <div class="bottom"> - <p>寮�濮嬫椂闂达細{{item.startTime}}</p> - <p>缁撴潫鏃堕棿锛歿{item.endTime}}</p> - <p>澶勭悊浜猴細{{item.assignee}}</p> - <p>鍔炵悊绫诲瀷锛歿{item.bllx_dictText}}</p> - <p v-if="item.name == '鎻愪氦鐢宠'">鎸囨淳鍘熷洜锛歿{item.cause}}</p> - <p v-else >澶勭悊鎰忚锛歿{item.cause}}</p> - <div class="left_qiu"><span>{{item.name}}</span></div> + <p>澶勭悊浜猴細{{item.assignee_dictText}}</p> + <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p> + <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p> + <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p> + <div class="left_qiu"><span>{{item.taskName}}</span></div> </div> </a-timeline-item> </a-timeline> @@ -246,8 +244,8 @@ url: { queryBomDataById: '/nc/activit/selectVoById', diagramView: '/assign/flow/diagramView', - queryHisTaskList:'/assign/flow/queryHisTaskList', - approve:"/activit/assign/file/approve", + queryHisTaskList:'/dncFlow/dispatchFile/queryHisTaskList', + approve:"/nc/activit/assign/file/approve", }, dictOptions: {}, superFieldList: [], @@ -340,7 +338,7 @@ 'id': item.dataId } let parmhis={ - 'procInstId': item.dataId + 'procInstId': item.procInstId } getAction(this.url.queryHisTaskList,parmhis).then(res=>{ this.hitaskDataSource=res.result diff --git a/src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue b/src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue index c9ba525..5f41f0f 100644 --- a/src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue +++ b/src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue @@ -105,13 +105,11 @@ <a-timeline style="padding:0 1% 0 12%" > <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> <div class="bottom"> - <p>寮�濮嬫椂闂达細{{item.startTime}}</p> - <p>缁撴潫鏃堕棿锛歿{item.endTime}}</p> - <p>澶勭悊浜猴細{{item.assignee}}</p> - <p v-if="item.name !== '鎻愪氦鐢宠'">鍔炵悊绫诲瀷锛歿{item.status_dictText}}</p> - <p v-if="item.name === '鎻愪氦鐢宠'">鎸囨淳鍘熷洜锛歿{item.cause}}</p> - <p v-else >澶勭悊鎰忚锛歿{item.cause}}</p> - <div class="left_qiu"><span>{{item.name}}</span></div> + <p>澶勭悊浜猴細{{item.assignee_dictText}}</p> + <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p> + <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p> + <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p> + <div class="left_qiu"><span>{{item.taskName}}</span></div> </div> </a-timeline-item> </a-timeline> @@ -202,7 +200,7 @@ url: { queryBomDataById: '/nc/activit/selectVoById', diagramView: '/assign/flow/diagramView', - queryHisTaskList:'/assign/flow/queryHisTaskList', + queryHisTaskList:'/dncFlow/dispatchFile/queryHisTaskList', approve:"/activit/assign/file/approve", }, dictOptions: {}, @@ -291,12 +289,13 @@ }, getAllApproveData(item) { console.log('selectShenpiData----->', this.selectShenpiData) + console.log('item----->', item) this.flowData = item let param = { 'id': item.dataId } let parmhis={ - 'drapprovedataId': item.dataId + 'procInstId': item.processInstanceId } getAction(this.url.queryHisTaskList,parmhis).then(res=>{ this.hitaskDataSource=res.result diff --git a/src/views/flowable/workflow/dispatchFile/DispatchFileHandle.vue b/src/views/flowable/workflow/dispatchFile/DispatchFileHandle.vue index 4d153bb..037cc6d 100644 --- a/src/views/flowable/workflow/dispatchFile/DispatchFileHandle.vue +++ b/src/views/flowable/workflow/dispatchFile/DispatchFileHandle.vue @@ -84,8 +84,7 @@ <p>澶勭悊浜猴細{{item.assignee_dictText}}</p> <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p> <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p> - <p v-if="index1 ===0">鐢宠鍘熷洜锛歿{item.description}}</p> - <p v-else >澶勭悊鎰忚锛歿{item.description}}</p> + <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p> <div class="left_qiu"><span>{{item.taskName}}</span></div> </div> </a-timeline-item> diff --git a/src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue b/src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue index 2e20803..3e0c806 100644 --- a/src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue +++ b/src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue @@ -84,7 +84,7 @@ <p>澶勭悊浜猴細{{item.assignee_dictText}}</p> <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p> <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p> - <p v-if="index1 !==0">澶勭悊鎰忚锛歿{item.description}}</p> + <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p> <div class="left_qiu"><span>{{item.taskName}}</span></div> </div> </a-timeline-item> -- Gitblit v1.9.3