From d286265fcefa1ab2233742cf1e30b38ae6c9215f Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期六, 12 七月 2025 14:38:36 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue | 419 ++++++++++++++++++++++++++--------------------------------- 1 files changed, 183 insertions(+), 236 deletions(-) diff --git a/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue b/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue index 997590b..a84d56e 100644 --- a/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue +++ b/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue @@ -1,171 +1,178 @@ <template> - <j-modal - :title="title" - :width="1200" - :visible="visible" - :confirmLoading="confirmLoading" - :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" - switchFullscreen - @ok="handleOk" - @cancel="handleCancel" - centered - cancelText="鍏抽棴"> - + <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" fullscreen @ok="handleOk" + @cancel="handleCancel" centered cancelText="鍏抽棴"> <a-spin :spinning="spinning"> - <a-form-model ref="form" :model="model" :rules="validatorRules"> - <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 淇濆吇鍩虹淇℃伅 - </a-divider> + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-row :gutter="24"> <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNum" 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="璁惧缂栫爜"> - <maintenance-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId" - :maintenanceCategory="maintenanceCategory" - @autocompleteForm="autocompleteForm" - disabled></maintenance-equipment-select> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О"> - <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled/> - </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="maintenanceDate" label="淇濆吇鏃ユ湡"> - <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD" - 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-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨淇濆吇浜�" disabled - :dictOptions="maintenanceOperatorOptions"/> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> - <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled/> - </a-form-model-item> - </a-col> - </a-row> - <a-row :gutter="24"> - <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="澶囨敞"> - <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" disabled/> - </a-form-model-item> - </a-row> - <a-row :gutter="24"> - <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="淇濆吇鍥剧墖"> - <lx-upload :returnUrl="false" - :isMultiple="true" - file-type="image" - :disabled="confirmDisable" - :number="3" - v-model="model.imageFilesResult"/> - </a-form-model-item> - </a-row> - <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 淇濆吇椤逛俊鎭� - </a-divider> - <a-row :gutter="24"> - <a-tabs v-model="activeTabKey"> - <a-tab-pane key="1" tab="淇濆吇椤规槑缁�"> - <j-vxe-table - ref="editableDetailTable" - :rowNumber="false" - :rowSelection="true" - :bordered="true" - :alwaysEdit="true" - :toolbar="false" - keep-source - :height="300" - :loading="detail.loading" - :dataSource="detail.dataSource" - :columns="detail.columns" - @selectRowChange="handleTableSelectRowChange" - > - <template v-slot:maintenanceResult="props"> - <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="eam_inspection_result" - placeholder="璇烽�夋嫨淇濆吇缁撴灉" - :disabled="disableSubmit || confirmDisable" - @change="handleInspectionResultSelectChange($event,props.row)" - style="width: 100%"/> - </template> + <a-tabs> + <a-tab-pane tab="鍩虹淇℃伅"> + <a-row> + <a-col :span="12"> + <a-form-model-item label="宸ュ崟鍙�"> + <a-input v-model="model.orderNum" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="璁惧缂栫爜"> + <maintenance-equipment-select v-model="model.equipmentId" maintenanceCategory="SECOND_MAINTENANCE" + @autocompleteForm="autocompleteForm" disabled/> + </a-form-model-item> + </a-col> + </a-row> - <template v-slot:exceptionDescription="props"> - <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" - :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'"/> - </template> + <a-row> + <a-col :span="12"> + <a-form-model-item label="瑙勮寖鍚嶇О"> + <a-input v-model="model.standardName" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="淇濆吇鏃ユ湡"> + <a-input v-model="model.maintenanceDate" readOnly/> + </a-form-model-item> + </a-col> + </a-row> - <template v-slot:reportFlag="props"> - <j-dict-select-tag v-model="props.row.reportFlag" - :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'" - dictCode="yn" - style="width: 100%"/> - </template> - </j-vxe-table> - </a-tab-pane> - <template v-if="selectShenpiData.procInstId"> - <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> - <a-card :bordered="false"> - <a-timeline> - <a-timeline-item v-for="(item,index) in taskData" :key="index"> - <div> - <h3 style="font-weight: bold;">{{item.taskName}}</h3> - <div>澶勭悊浜猴細{{item.assignee_dictText}}</div> - <div v-if="index !==0">澶勭悊鏃堕暱锛歿{item.duration}}</div> - <div v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</div> - <div v-if="item.description">澶勭悊鎰忚锛歿{item.description}}</div> - </div> - </a-timeline-item> - </a-timeline> - </a-card> + <a-row> + <a-col :span="12"> + <a-form-model-item label="鎿嶄綔宸�"> + <a-input v-model="model.operator_dicText" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="缁翠慨宸�"> + <a-input v-model="model.repairer_dicText" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="12"> + <a-form-model-item prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> + <a-input v-model="model.maintenancePeriod" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="澶囨敞"> + <a-textarea v-model="model.remark" readOnly/> + </a-form-model-item> + </a-row> </a-tab-pane> - <a-tab-pane key='3' tab='娴佺▼鍥�'> - <img :src="imageSrc" alt="Fetched Image"/> + </a-tabs> + </a-col> + + <a-col + :span="model.maintenanceStatus!='WAIT_MAINTENANCE'&&model.maintenanceStatus!='UNDER_MAINTENANCE'?10:16"> + <a-tabs v-model="activeTabKey"> + <a-tab-pane key="1" tab="鎿嶄綔宸�"> + <j-vxe-table ref="editableDetailTable1" :rowNumber="false" rowSelection bordered + alwaysEdit keep-source :height="300" + :dataSource="detail.operatorMaintenanceList" :columns="detail.columns" + @selectRowChange="handleTableSelectRowChange"> + <template v-slot:maintenanceResult="props"> + <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="eam_inspection_result" + placeholder="璇烽�夋嫨淇濆吇缁撴灉" :disabled="disableSubmit || confirmDisable" + @change="handleInspectionResultSelectChange($event,props.row)" + style="width: 100%"/> + </template> + + <template v-slot:exceptionDescription="props"> + <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" + :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'"/> + </template> + + <template v-slot:reportFlag="props"> + <j-dict-select-tag v-model="props.row.reportFlag" + :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'" + dictCode="yn" + style="width: 100%"/> + </template> + </j-vxe-table> </a-tab-pane> - </template> - <a-button v-if="!disableSubmit &&!confirmDisable&& selectedRowKeys.length > 0" slot="tabBarExtraContent" - type="primary" @click="handleSelectAllInspectionResult">淇濆吇姝e父 - </a-button> - </a-tabs> + + <a-tab-pane key="2" tab="缁翠慨宸�"> + <j-vxe-table ref="editableDetailTable2" :rowNumber="false" rowSelection bordered + alwaysEdit kee-source :height="300" + :dataSource="detail.repairerMaintenanceList" :columns="detail.columns" + @selectRowChange="handleTableSelectRowChange"> + <template v-slot:maintenanceResult="props"> + <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="eam_inspection_result" + placeholder="璇烽�夋嫨淇濆吇缁撴灉" :disabled="disableSubmit || confirmDisable" + @change="handleInspectionResultSelectChange($event,props.row)" + style="width: 100%"/> + </template> + + <template v-slot:exceptionDescription="props"> + <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" + :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'"/> + </template> + + <template v-slot:reportFlag="props"> + <j-dict-select-tag v-model="props.row.reportFlag" + :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'" + dictCode="yn" + style="width: 100%"/> + </template> + </j-vxe-table> + </a-tab-pane> + + <template v-if="selectShenpiData.procInstId"> + <a-tab-pane key='3' tab='娴佺▼鍥�'> + <img :src="imageSrc" alt="Fetched Image"/> + </a-tab-pane> + </template> + + <a-button :disabled="disableSubmit ||confirmDisable||selectedRowKeys.length > 0" slot="tabBarExtraContent" + type="primary" @click="handleSelectAllInspectionResult">鎵归噺淇濆吇姝e父 + </a-button> + </a-tabs> + </a-col> + + <a-col :span="6" + v-if="model.maintenanceStatus!='WAIT_MAINTENANCE'&&model.maintenanceStatus!='UNDER_MAINTENANCE'"> + <a-tabs> + <a-tab-pane tab="绠$悊鍛樼‘璁�" v-if="confirmDisable"> + <a-row> + <a-col :span="24"> + <a-form-model-item prop="confirmDealType" label="纭绫诲瀷"> + <j-dict-select-tag type='radio' v-model='model.confirmDealType' dictCode='approve_reject' + placeholder="璇烽�夋嫨纭绫诲瀷" :disabled="disableSubmit || inspectorConfirmDisable"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item prop="confirmComment" label="纭鎰忚"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.confirmComment" + :disabled="disableSubmit || inspectorConfirmDisable"/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + + <a-tabs> + <a-tab-pane tab="妫�鏌ヤ汉纭" v-if="inspectorConfirmDisable"> + <a-row> + <a-col :span="24"> + <a-form-model-item prop="confirmDealType" label="纭绫诲瀷"> + <j-dict-select-tag type='radio' v-model='model.confirmDealType' dictCode='approve_reject' + placeholder="璇烽�夋嫨纭绫诲瀷" :disabled="disableSubmit || inspectorConfirmDisable"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item prop="leaderConfirmComment" label="纭鎰忚"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.leaderConfirmComment" + :disabled="disableSubmit || completionDisable"/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + </a-col> </a-row> - <div v-if="confirmDisable"> - <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 绠$悊鍛樼‘璁や俊鎭� - </a-divider> - <a-row :gutter="24"> - <a-col :span="12"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmDealType" label="纭绫诲瀷"> - <j-dict-select-tag type='radio' v-model='model.confirmDealType' dictCode='approved_rejected' - placeholder="璇烽�夋嫨澶勭悊绫诲瀷" :disabled="disableSubmit || leaderConfirmDisable"/> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmComment" label="纭鎰忚"> - <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.confirmComment" - :disabled="disableSubmit || leaderConfirmDisable"/> - </a-form-model-item> - </a-col> - </a-row> - </div> - <div v-if="leaderConfirmDisable"> - <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 棰嗗纭淇℃伅 - </a-divider> - <a-row :gutter="24"> - <a-col :span="24"> - <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="leaderConfirmComment" - label="棰嗗鎰忚"> - <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.leaderConfirmComment" - :disabled="disableSubmit || completionDisable"/> - </a-form-model-item> - </a-col> - </a-row> - </div> </a-form-model> </a-spin> </j-modal> @@ -192,15 +199,7 @@ return { title: '鎿嶄綔', visible: false, - //鐘舵�佹帶鍒� - //淇濆吇涓� 涓嶅彲缂栬緫 - // confirmDisable: false, - // initialAcceptanceDisable: false, - // finalAcceptanceDisable: false, - editable: false, model: {}, - maintenanceCategory: 'SECOND_MAINTENANCE', - maintenanceOperatorOptions: [], labelCol: { xs: { span: 24 }, sm: { span: 6 } @@ -211,11 +210,11 @@ }, labelColLong: { xs: { span: 24 }, - sm: { span: 2 } + sm: { span: 3 } }, wrapperColLong: { xs: { span: 24 }, - sm: { span: 21 } + sm: { span: 20 } }, confirmLoading: false, spinning: false, @@ -230,7 +229,7 @@ ], leaderConfirmComment: [ { required: true, message: '璇疯緭鍏ュ垵楠屾敹鎰忚!' } - ], + ] }, url: { queryById: '/eam/secondMaintenanceOrder/queryById', @@ -242,12 +241,10 @@ }, disableSubmit: false, taskData: [], - isDisplayBmp: false, - showBmpButtonLoading: false, selectedRowKeys: [], detail: { - loading: false, - dataSource: [], + operatorMaintenanceList: [], + repairerMaintenanceList: [], columns: [ { title: 'ID', @@ -263,28 +260,19 @@ title: '搴忓彿', key: 'itemCode', type: JVXETypes.normal, - width: '5%', + width: 60, align: 'center' }, { title: '淇濆吇椤�', key: 'itemName', type: JVXETypes.normal, - width: '10%', - align: 'center' - }, - { - title: '淇濆吇瑕佹眰', - key: 'itemDemand', - type: JVXETypes.normal, - width: '20%', align: 'center' }, { title: '淇濆吇缁撴灉', key: 'maintenanceResult', type: JVXETypes.slot, - width: '10%', align: 'center', slotName: 'maintenanceResult', validateRules: [ @@ -295,7 +283,6 @@ title: '寮傚父鎻忚堪', key: 'exceptionDescription', type: JVXETypes.slot, - width: '20%', align: 'center', slotName: 'exceptionDescription', validateRules: [ @@ -306,34 +293,25 @@ title: '鏄惁鎶ヤ慨', key: 'reportFlag', type: JVXETypes.slot, - width: '10%', align: 'center', slotName: 'reportFlag', validateRules: [ { handler: this.customValidator } ] } - ], - toolbarConfig: { - // prefix 鍓嶇紑锛泂uffix 鍚庣紑 - slot: ['prefix', 'suffix'], - // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 - btn: ['clearSelection'] - } + ] } } }, - created() { - }, computed: { confirmDisable: function() { - return ['WAIT_CONFIRM', 'WAIT_LEADER_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus) + return ['WAIT_ADMIN_CONFIRM', 'WAIT_INSPECTOR_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus) }, - leaderConfirmDisable: function() { - return ['WAIT_LEADER_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus) + inspectorConfirmDisable: function() { + return ['WAIT_INSPECTOR_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus) }, completionDisable: function() { - return ['COMPLETE', 'ABOLISH'].includes(this.model.maintenanceStatus) + return ['COMPLETE'].includes(this.model.maintenanceStatus) } }, methods: { @@ -341,10 +319,7 @@ this.initParams() this.model = {} if (item.procInstId) { - const { processDefinitionId, processInstanceId, processDefinitionKey, procInstId } = item - - let taskDataList = await getAction(this.url.queryHisTaskList, { procInstId }) - this.taskData = [...taskDataList.result] + const { processDefinitionId, processInstanceId, processDefinitionKey } = item downFile(this.url.diagramView, { processDefinitionId, @@ -364,10 +339,6 @@ } let res = await getAction(this.url.queryById, { id: item.dataId }) this.model = Object.assign({}, res.result) - if (this.model.imageFiles) { - let obj = JSON.parse(this.model.imageFiles) - this.model.imageFilesResult = [...obj] - } this.model.dataId = item.dataId this.model.taskId = item.id this.model.userId = item.assignee @@ -380,10 +351,6 @@ console.log('record', record) this.initParams() this.model = Object.assign({}, record) - if (this.model.imageFiles) { - let obj = JSON.parse(this.model.imageFiles) - this.model.imageFilesResult = [...obj] - } this.loadDetail(record.id) }, @@ -432,43 +399,23 @@ this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod) this.$set(this.model, 'standardId', selectObj.id) this.$set(this.model, 'equipmentId', selectObj.equipmentId) - // console.log('model', this.model) - if (!this.model.id) { - this.loadStandardDetail(selectObj.id) - } - this.loadMaintenanceOperatorList(this.model.equipmentId) + if (!this.model.id) this.loadStandardDetail(selectObj.id) }, - //鏍囧噯閫夋嫨鍙樺寲 + //瑙勮寖閫夋嫨鍙樺寲 loadDetail(orderId) { if (orderId) { - getAction(this.url.detail, { orderId: orderId }) + getAction(this.url.detail, { orderId }) .then(res => { if (res.success) { - this.detail.dataSource = [...res.result] + this.detail.operatorMaintenanceList = res.result.filter(item => item.itemCategory == 'OPERATOR_MAINTENANCE') + this.detail.repairerMaintenanceList = res.result.filter(item => item.itemCategory == 'REPAIRER_MAINTENANCE') } }) .finally(() => { this.spinning = false }) } - }, - - loadMaintenanceOperatorList(equipmentId) { - this.maintenanceOperatorOptions = [] - let params = { positionCode: 'PCR0001' } - if (equipmentId) { - params.equipmentId = equipmentId - } - getAction(this.url.userSelect, params).then(res => { - if (res.success) { - this.maintenanceOperatorOptions = res.result.map(item => ({ - key: item.id, - value: item.username, - text: item.realname - })) - } - }) }, handleInspectionResultSelectChange(value, record) { -- Gitblit v1.9.3