From e4faae7013473a55ed9fef7c5f4359365e2958ff Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期一, 21 四月 2025 11:24:32 +0800 Subject: [PATCH] 1、我的待办页面 设备点检 分类审批新增添加点检照片功能 2、我的待办页面 设备周保流程 分类审批弹窗功能逻辑开发并复用至我的已办页面 3、我的待办页面 设备维修 分类审批弹窗样式与其他保持一致 4、故障保修调整保修图片上传逻辑 5、保养标准页面 调整导入对应的方法名 --- src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue | 302 +++++++++++++++++++++++++++---------------------- 1 files changed, 166 insertions(+), 136 deletions(-) diff --git a/src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue b/src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue index 76c6210..f158743 100644 --- a/src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue +++ b/src/views/flowable/workflow/repairOrder/RepairOrderApprovalModal.vue @@ -1,118 +1,147 @@ <template> <a-modal - :width="1000" + :width="1200" :visible="visible" + :title="title" @cancel="handCancel" @ok="submitForm" :mask-closable="false" centered > - <a-card :bordered="false"> - <div> - <b>{{ selectShenpiData.title }}</b> - <br/> - <br/> - <a-tag color="blue"> - 澶勭悊浜� {{ selectShenpiData.assignee }} - </a-tag> - <a-tag color="blue"> - 鍒涘缓鏃堕棿 {{ selectShenpiData.createTime }} - </a-tag> - <br> - <br> - <a-button @click="fetchAndShowBmp" :loading="showBmpButtonLoading" class="btn-custom">娴佺▼鍥�</a-button> - <div v-if="imageSrc&&isDisplayBmp"> - <img :src="imageSrc" alt="Fetched Image"/> - </div> - <!--<hr class="shallow-hr"/>--> - </div> + <a-spin :spinning="spinning"> + <a-form-model :model='tableRowRecord' :rules='validatorRules' :labelCol='labelCol' + :wrapperCol='wrapperCol'> + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">鎶ヤ慨鍩虹淇℃伅</a-divider> - <div> - <a-spin :spinning="spinning"> - <a-tabs default-active-key='1'> - <a-tab-pane key='1' tab='鍩烘湰淇℃伅'> - <a-form-model :model='tableRowRecord' :rules='validatorRules' :labelCol='labelCol' - :wrapperCol='wrapperCol'> - <a-row> - <a-col :span='span'> - <a-form-model-item label='宸ュ崟缂栧彿'> - <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairCode'/> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item label='璁惧缂栧彿'> - <lx-search-equipment-select disabled v-model='tableRowRecord.equipmentId'/> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item label='鍗曟嵁鐘舵��'> - <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairStatus_dictText'/> - </a-form-model-item> - </a-col> - <a-col :span='span'> - <a-form-model-item label='缁翠慨璐熻矗浜�'> - <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairer'/> - </a-form-model-item> - </a-col> - </a-row> - </a-form-model> - </a-tab-pane> + <a-row> + <a-col :span='threeColSpan'> + <a-form-model-item label='宸ュ崟缂栧彿'> + <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairCode'/> + </a-form-model-item> + </a-col> + <a-col :span='threeColSpan'> + <a-form-model-item label='璁惧缂栧彿'> + <lx-search-equipment-select disabled v-model='tableRowRecord.equipmentId'/> + </a-form-model-item> + </a-col> + <a-col :span='threeColSpan'> + <a-form-model-item label='鍗曟嵁鐘舵��'> + <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairStatus_dictText'/> + </a-form-model-item> + </a-col> + </a-row> - <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> - <a-card :bordered="false"> - <a-timeline> - <a-timeline-item v-for="(item,index) in hitaskDataSource" :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-tab-pane> - </a-tabs> - </a-spin> - </div> + <a-row> + <a-col :span='threeColSpan'> + <a-form-model-item label='缁翠慨璐熻矗浜�'> + <a-input :readOnly='inputReadOnly' v-model='tableRowRecord.repairer'/> + </a-form-model-item> + </a-col> + <a-col :span="threeColSpan"> + <a-form-model-item label="鏁呴殰寮�濮嬫椂闂�"> + <a-input :readOnly='inputReadOnly' v-model="tableRowRecord.faultStartTime"/> + </a-form-model-item> + </a-col> - <a-tabs default-active-key='1'> - <a-tab-pane key="1" tab="瀹℃壒璇︽儏"> - <a-form-model ref="form" :model="approveData" :rules="validatorRules" :labelCol='labelCol' - :wrapperCol='wrapperCol'> - <a-row> - <a-col :span="24"> - <a-form-model-item label="鏄惁闇�瑕侀鐢ㄥ浠�" prop="status"> - <a-radio-group v-model="approveData.status"> - <a-radio :value="1">鏄�</a-radio> - <a-radio :value="0">鍚�</a-radio> - </a-radio-group> - </a-form-model-item> - </a-col> + <a-col :span="threeColSpan"> + <a-form-model-item label="鏄惁鍋滄満"> + <j-dict-select-tag type='radio' v-model='tableRowRecord.breakdownFlag' dictCode='breakdown_flag' + disabled/> + </a-form-model-item> + </a-col> + </a-row> - <template v-if="approveData.status===0"> - <a-col :span="24"> - <a-form-model-item label="鏁呴殰鍘熷洜" prop="faultReason"> - <a-input v-model="approveData.faultReason" rows="4" placeholder="璇疯緭鍏ユ晠闅滃師鍥�"/> + <a-row> + <a-col :span='threeColSpan*3'> + <a-form-model-item label='鎶ヤ慨鍥剧墖' :labelCol='labelColLong' :wrapperCol='wrapperColLong'> + <j-image-upload v-model="tableRowRecord.imageFiles" disabled :is-multiple="true" :number="3"/> + </a-form-model-item> + </a-col> + </a-row> + + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">鏄惁闇�瑕侀鐢ㄥ浠�</a-divider> + + <a-tabs v-model="activeTabKey"> + <a-tab-pane key="1" tab="棰嗙敤澶囦欢"> + <a-form-model ref="form" :model="approveData" :rules="validatorRules" :labelCol='labelCol' + :wrapperCol='wrapperCol'> + <a-row> + <a-col :span="twoColSpan*2"> + <a-form-model-item label="鏄惁闇�瑕侀鐢ㄥ浠�" prop="status"> + <a-radio-group v-model="approveData.status"> + <a-radio :value="1">鏄�</a-radio> + <a-radio :value="0">鍚�</a-radio> + </a-radio-group> </a-form-model-item> </a-col> - <a-col :span="24"> - <a-form-model-item label="缁翠慨缁撴灉鎻忚堪" prop="repairResultDescription"> - <a-textarea v-model="approveData.repairResultDescription" placeholder="璇疯緭鍏ョ淮淇粨鏋滄弿杩�"/> - </a-form-model-item> - </a-col> - <a-col :span="24"> - <a-form-model-item label="缁翠慨鍥剧墖"> - <j-image-upload v-model="approveData.imageFiles" :is-multiple="true" :number="3"/> - </a-form-model-item> - </a-col> - </template> - </a-row> - </a-form-model> - </a-tab-pane> - </a-tabs> - </a-card> + + <template v-if="approveData.status===0"> + <a-col :span="twoColSpan*2"> + <a-form-model-item label="鏁呴殰鍘熷洜" prop="faultReason"> + <a-input v-model="approveData.faultReason" rows="4" placeholder="璇疯緭鍏ユ晠闅滃師鍥�"/> + </a-form-model-item> + </a-col> + <a-col :span="twoColSpan*2"> + <a-form-model-item label="缁翠慨缁撴灉鎻忚堪" prop="repairResultDescription"> + <a-textarea v-model="approveData.repairResultDescription" placeholder="璇疯緭鍏ョ淮淇粨鏋滄弿杩�"/> + </a-form-model-item> + </a-col> + <a-col :span="twoColSpan*2"> + <a-form-model-item label="缁翠慨鍥剧墖"> + <j-image-upload v-model="approveData.imageFiles" :is-multiple="true" :number="3"/> + </a-form-model-item> + </a-col> + </template> + </a-row> + </a-form-model> + </a-tab-pane> + + <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> + <a-card :bordered="false"> + <a-timeline> + <a-timeline-item v-for="(item,index) in hitaskDataSource" :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-tab-pane> + + <a-tab-pane key='3' tab='娴佺▼鍥�'> + <img :src="imageSrc" alt="Fetched Image"/>--> + </a-tab-pane> + </a-tabs> + + <template> + <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">绠$悊鍛橀鐢ㄥ浠� + </a-divider> + + <a-row> + <a-col :span="twoColSpan"> + <a-form-model-item prop="confirmDealType" label="澶勭悊绫诲瀷"> + <j-dict-select-tag type='radio' v-model='tableRowRecord.confirmDealType' dictCode='approved_rejected' + :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'" + placeholder="璇烽�夋嫨澶勭悊绫诲瀷"/> + </a-form-model-item> + </a-col> + + <a-col :span="twoColSpan"> + <a-form-model-item prop="confirmComment" label="澶勭悊鎰忚"> + <a-textarea placeholder="璇疯緭鍏ュ鐞嗘剰瑙�" + :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'" + v-model="tableRowRecord.confirmComment"/> + </a-form-model-item> + </a-col> + </a-row> + </template> + + </a-form-model> + </a-spin> </a-modal> </template> @@ -132,13 +161,17 @@ }, data() { return { + title: '', form: this.$form.createForm(this), - span: 12, + threeColSpan: 8, + twoColSpan: 12, inputReadOnly: true, + disableSubmit: false, spinning: false, tableRowRecord: {}, hitaskDataSource: [], imageSrc: null, + activeTabKey: '1', labelCol: { xs: { span: 24 }, sm: { span: 6 } @@ -146,6 +179,14 @@ wrapperCol: { xs: { span: 24 }, sm: { span: 16 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 2 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 20 } }, validatorRules: { status: [ @@ -166,22 +207,36 @@ diagramView: '/assign/flow/diagramView', queryHisTaskList: '/assign/flow/queryHisTaskList', approve: '/activit/assign/file/approve' - }, - isDisplayBmp: false, - showBmpButtonLoading: false + } } }, methods: { /** - * 鑾峰彇娴佺▼鑺傜偣 + * 鑾峰彇娴佺▼鑺傜偣鍜屾祦绋嬪浘 * @param record 寰呭姙璁板綍淇℃伅 */ getAllApproveData(record) { - console.log('selectShenpiData----->', this.selectShenpiData) - const param = { 'procInstId': record.dataId } + console.log('record----->', record) + const { procInstId, processDefinitionId, processInstanceId, processDefinitionKey } = record + const param = { procInstId } + const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey } + const that = this + getAction(this.url.queryHisTaskList, param) .then(res => { - this.hitaskDataSource = res.result + that.hitaskDataSource = res.result + }) + + downFile(this.url.diagramView, imageParam, 'get') + .then((res => { + const urlObject = window.URL.createObjectURL(new Blob([res])) + that.imageSrc = urlObject + })) + .catch(err => { + that.$notification.error({ + message: '娑堟伅', + description: res.message + }) }) }, @@ -195,6 +250,7 @@ const param = { id: record.dataId } this.tableRowRecord = {} this.approveData = { status: 0 } + this.activeTabKey = '1' getAction(this.url.queryBomDataById, param) .then((res => { if (res.success) { @@ -205,31 +261,6 @@ .finally(() => { that.spinning = false }) - }, - - // 鑾峰彇骞跺睍寮�娴佺▼鍥� - fetchAndShowBmp() { - this.isDisplayBmp = !this.isDisplayBmp - if (!this.imageSrc) { - const { processDefinitionId, processInstanceId, processDefinitionKey } = this.selectShenpiData - let param = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey } - this.showBmpButtonLoading = true - const that = this - downFile(this.url.diagramView, param, 'get') - .then((res => { - const urlObject = window.URL.createObjectURL(new Blob([res])) - this.imageSrc = urlObject - })) - .catch(err => { - that.$notification.error({ - message: '娑堟伅', - description: res.message - }) - }) - .finally(() => { - this.showBmpButtonLoading = false - }) - } }, submitForm() { @@ -267,8 +298,7 @@ handCancel() { this.visible = false - this.isDisplayBmp = false - this.imageSrc = null + this.$refs.form.clearValidate() } } } -- Gitblit v1.9.3