From 186022d0c99061dd3886e6ee995b335cf43fe10d Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期四, 10 七月 2025 21:56:35 +0800 Subject: [PATCH] 1、保养规范页面列表新增测试删除功能(菜单权限分配,现网初期导入用) 2、保养规范弹窗新增区分保养项分类标签 --- src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue | 232 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 126 insertions(+), 106 deletions(-) diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue index b302f37..4a6b56f 100644 --- a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue +++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue @@ -1,6 +1,6 @@ <template> <j-modal :title="title" :width="1200" :visible="visible" - :okButtonProps="{ class:{'jee-hidden': disableSubmit||!hasInspectionDateArrived} }" @ok="submitForm" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="submitForm" @cancel="handleCancel" :mask-closable="false" :confirmLoading="confirmLoading" fullscreen> <a-spin :spinning="spinning"> <a-form-model ref='form' :model='tableRowRecord' :labelCol="labelCol" :wrapperCol="wrapperCol" @@ -76,15 +76,15 @@ </a-tabs> </a-col> - <a-col :span="disableSubmit||tableRowRecord.inspectionStatus=='UNDER_INSPECTION'?16:10"> - <a-tabs v-model="activeTabKey"> + <a-col :span="!isDisplayConfirm?16:10"> + <a-tabs :active-key="activeTabKey" @change="handleTabChange"> <a-tab-pane key="1" tab="鏃ョ偣妫�"> - <j-vxe-table ref="editableDetailTable" :rowNumber="false" rowSelection bordered + <j-vxe-table ref="editableDetailTable1" :rowNumber="false" rowSelection bordered alwaysEdit :toolbar="false" keep-source :height="300" :loading="detail.loading" - :dataSource="detail.dataSource" :columns="detail.columns" - @selectRowChange="handleTableSelectRowChange"> + :dataSource="detail.dayInspectionList" :columns="detail.columns" + @selectRowChange="handleTableSelectRowChange($event,'Day')"> <template v-slot:inspectionResult="props"> - <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="eam_inspection_result" + <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="inspection_project_result" :disabled="isDisableOperation" placeholder="璇烽�夋嫨鐐规缁撴灉" @change="handleInspectionResultSelectChange($event,props.row)" style="width: 100%"/> @@ -92,77 +92,63 @@ <template v-slot:exceptionDescription="props"> <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" - :placeholder="props.row.inspectionResult==='2'?'璇疯緭鍏ュ紓甯告弿杩�':''" - :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"/> + :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'璇疯緭鍏ュ紓甯告弿杩�':''" + :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'"/> </template> <template v-slot:reportFlag="props"> <j-dict-select-tag v-model="props.row.reportFlag" - :placeholder="props.row.inspectionResult==='2'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''" - :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'" + :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''" + :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'" dictCode="yn" style="width: 100%"/> </template> </j-vxe-table> </a-tab-pane> - <a-tab-pane key="2" tab="鍛ㄧ偣妫�"> - <j-vxe-table ref="editableDetailTable" :rowNumber="false" rowSelection bordered + <a-tab-pane key="2" tab="鍛ㄧ偣妫�" forceRender> + <j-vxe-table ref="editableDetailTable2" :rowNumber="false" rowSelection bordered alwaysEdit :toolbar="false" keep-source :height="300" :loading="detail.loading" :dataSource="detail.weekInspectionList" :columns="detail.columns" - @selectRowChange="handleTableSelectRowChange"> + @selectRowChange="handleTableSelectRowChange($event,'Week')"> <template v-slot:inspectionResult="props"> - <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="eam_inspection_result" - :disabled="isDisableOperation" placeholder="璇烽�夋嫨鐐规缁撴灉" + <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="inspection_project_result" + :disabled="isDisableOperation||detail.weekInspectionFinishedFlag" + placeholder="璇烽�夋嫨鐐规缁撴灉" @change="handleInspectionResultSelectChange($event,props.row)" style="width: 100%"/> </template> <template v-slot:exceptionDescription="props"> <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" - :placeholder="props.row.inspectionResult==='2'?'璇疯緭鍏ュ紓甯告弿杩�':''" - :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"/> + :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'璇疯緭鍏ュ紓甯告弿杩�':''" + :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'"/> </template> <template v-slot:reportFlag="props"> <j-dict-select-tag v-model="props.row.reportFlag" - :placeholder="props.row.inspectionResult==='2'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''" - :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'" + :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''" + :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'" dictCode="yn" style="width: 100%"/> </template> </j-vxe-table> </a-tab-pane> <template v-if="selectShenpiData.procInstId"> - <a-tab-pane key='3' 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='4' tab='娴佺▼鍥�'> - <img :src="imageSrc" width="100%" v-if="imageSrc"/> + <a-tab-pane key='3' tab='娴佺▼鍥�'> + <img :src="imageSrc" v-if="imageSrc"/> </a-tab-pane> </template> <a-button - v-if="selectedRowKeys.length>0&&!isDisableOperation&&hasInspectionDateArrived&&activeTabKey==='1'&&activeTabKey==='2'" + v-if="activeTabKey=='1'||activeTabKey=='2'" + :disabled="(activeTabKey=='1'&&selectedDayInspectionRowKeys.length==0)||(activeTabKey=='2'&&selectedWeekInspectionRowKeys.length==0)||(activeTabKey=='2'&&detail.weekInspectionFinishedFlag)||isDisableOperation" slot="tabBarExtraContent" type="primary" @click="handleSelectAllInspectionResult">鎵归噺鐐规姝e父 </a-button> </a-tabs> </a-col> - <a-col v-if="!disableSubmit&&isDisplayConfirm" :span="6"> + <a-col v-if="isDisplayConfirm" :span="6"> <a-tabs> <a-tab-pane tab="缁翠慨宸ョ‘璁�"> <a-row> @@ -211,7 +197,6 @@ confirmLoading: false, spinning: false, tableRowRecord: {}, - hitaskDataSource: [], validatorRules: { confirmDealType: [ { required: true, message: '璇烽�夋嫨澶勭悊绫诲瀷' } @@ -240,8 +225,6 @@ weekInspectionOrderList: '/eam/eamWeekInspectionDetail/queryStandardList' }, detail: { - loading: false, - dataSource: [], columns: [ { title: '搴忓彿', @@ -296,18 +279,18 @@ ] } ], - weekInspectionList: [] + dayInspectionList: [], + weekInspectionList: [], + weekInspectionFinishedFlag: false }, - selectedRowKeys: [], + selectedDayInspectionRowKeys: [], + selectedWeekInspectionRowKeys: [], disableSubmit: false, activeTabKey: '1', title: '' } }, computed: { - hasInspectionDateArrived() { - return moment(this.tableRowRecord.inspectionDate).diff(moment(), 'hours') <= 0 - }, isDisplayConfirm() { return ['WAIT_CONFIRM', 'COMPLETE'].includes(this.tableRowRecord.inspectionStatus) }, @@ -326,11 +309,6 @@ const param = { procInstId } const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey } const that = this - - getAction(this.url.queryHisTaskList, param) - .then(res => { - that.hitaskDataSource = res.result - }) downFile(this.url.diagramView, imageParam, 'get') .then((res => { @@ -352,20 +330,70 @@ */ async getBasicInformation(record) { this.activeTabKey = '1' - this.detail.dataSource = [] + this.detail.dayInspectionList = this.detail.weekInspectionList = [] this.spinning = true const param = { id: record.dataId } let res = await getAction(this.url.queryById, param) this.tableRowRecord = Object.assign({}, res.result) - this.loadDetail(record.dataId) + this.getDayInspectionOrderListByApi(record.dataId) console.log('record', record) this.getWeekInspectionOrderListByApi(this.tableRowRecord.standardId) }, + /** + * 鑾峰彇鐐规宸ュ崟涓殑鏃ョ偣妫�鍒楄〃 + * @param orderId 宸ュ崟鍙� + */ + getDayInspectionOrderListByApi(orderId) { + if (orderId) { + getAction(this.url.detailList, { orderId }) + .then(res => { + if (res.success) { + this.detail.dayInspectionList = [...res.result] + } + }) + .finally(() => { + this.spinning = false + }) + } + }, + + /** + * 鑾峰彇鐐规宸ュ崟涓殑鍛ㄧ偣妫�鍒楄〃 + * @param standardId 瑙勮寖id + */ + getWeekInspectionOrderListByApi(standardId) { + console.log('standardId-------------------------', standardId) + getAction(this.url.weekInspectionOrderList, { standardId, inspectionDate: this.tableRowRecord.inspectionDate }) + .then(res => { + if (res.success) { + this.detail.weekInspectionList = res.result.list + this.detail.weekInspectionFinishedFlag = res.result.weekInsFlag + } + }) + .finally(() => { + this.spinning = false + }) + }, + + handleTabChange(tabKey) { + if (this.activeTabKey == '1') this.$refs.editableDetailTable1.clearValidate() + this.activeTabKey = tabKey + }, + + // 鎻愪氦浜嬩欢 async submitForm() { - let errMap = await this.$refs.editableDetailTable.validateTable() + let errMap = await this.$refs.editableDetailTable1.validateTable() if (errMap) { - console.log('err', errMap) + if (this.activeTabKey != '1') { + this.activeTabKey = '1' + // 鍐呴儴鏍¢獙鎻愮ず鍥爐ab鍒囨崲鏃跺畾浣嶅嚭鐜伴棶棰樺洜姝ゅ湪姝ゅ娓呮鍐呴儴鏍¢獙鎻愮ず锛屽鍔爊otification鎻愮ず + this.$refs.editableDetailTable1.clearValidate() + this.$notification.warning({ + message: '娑堟伅', + description: '鏃ョ偣妫�缁撴灉涓嶈兘涓虹┖' + }) + } return } @@ -377,20 +405,26 @@ flowTaskVo.taskId = this.selectShenpiData.id flowTaskVo.userId = this.selectShenpiData.assignee flowTaskVo.instanceId = this.selectShenpiData.procInstId - flowTaskVo.values = this.selectShenpiData.variables flowTaskVo.confirmDealType = this.tableRowRecord.confirmDealType flowTaskVo.confirmComment = this.tableRowRecord.confirmComment - flowTaskVo.tableDetailList = this.$refs.editableDetailTable.getTableData() + flowTaskVo.tableDetailList = this.$refs.editableDetailTable1.getTableData() + if (!this.detail.weekInspectionFinishedFlag) flowTaskVo.tableWeekDetailList = this.$refs.editableDetailTable2.getTableData() const that = this postAction(this.url.approve, flowTaskVo) .then((res) => { if (res.success) { - that.$message.success(res.message) + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) //鍒锋柊琛ㄦ牸 - that.$emit('searchReset') + that.$emit('modalFormOk') that.handleCancel() } else { - that.$message.warning(res.message) + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) } }) .finally(() => { @@ -410,24 +444,37 @@ // 鎵归噺閫夋嫨鎵�鏈夌偣妫�缁撴灉 handleSelectAllInspectionResult() { - this.selectedRowKeys.forEach(key => { - const dataItem = this.detail.dataSource.find(item => item.id === key) - if (dataItem && dataItem.inspectionResult !== '1') { + let selectedRowKeys, prefix + if (this.activeTabKey == '1') { + selectedRowKeys = this.selectedDayInspectionRowKeys + prefix = 'day' + } + else if (this.activeTabKey == '2') { + selectedRowKeys = this.selectedWeekInspectionRowKeys + prefix = 'week' + } + else selectedRowKeys = [] + if (selectedRowKeys.length == 0) return + + selectedRowKeys.forEach(key => { + const dataItem = this.detail[prefix + 'InspectionList'].find(item => item.id === key) + if (dataItem && dataItem.inspectionResult !== 'NORMAL') { delete dataItem.exceptionDescription delete dataItem.reportFlag - dataItem.inspectionResult = '1' + dataItem.inspectionResult = 'NORMAL' } }) - this.$refs.editableDetailTable.clearCheckboxRow() - this.selectedRowKeys = [] + this.$refs['editableDetailTable' + this.activeTabKey].clearCheckboxRow() + this['selected' + prefix.charAt(0).toUpperCase() + prefix.slice(1) + 'InspectionRowKeys'] = [] }, /** * 琛ㄦ牸澶氶�夋鍙戠敓鏀瑰彉鏃惰Е鍙� * @param {selectedRowIds} 琛ㄦ牸涓凡閫夋嫨鐨処D鍒楄〃 + * @param key 鐐规鍖哄垎key */ - handleTableSelectRowChange({ selectedRowIds }) { - this.selectedRowKeys = selectedRowIds + handleTableSelectRowChange({ selectedRowIds }, key) { + this['selected' + key + 'InspectionRowKeys'] = selectedRowIds }, /** @@ -440,10 +487,16 @@ if (record.reportFlag) delete record.reportFlag }, + /** + * 寮傚父鎻忚堪涓庡紓甯告槸鍚︿繚淇瓧娈佃嚜瀹氫箟鏍¢獙鏂规硶 + * @param cellValue 鍗曞厓鏍煎唴鐨勫�� + * @param row 褰撳墠琛岃褰� + * @param callback 缁撴灉鍥炶皟鍑芥暟 + */ customValidator({ cellValue, row }, callback) { - if (row.inspectionResult === '2') { + if (this.activeTabKey == '1' && row.inspectionResult != 'NORMAL') { if (!cellValue) { - callback(false, '${title}涓嶈兘涓虹┖锛�') // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀� + callback(false, '璇疯緭鍏�${title}') // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀� } else { callback(true) // true = 閫氳繃楠岃瘉 } @@ -453,41 +506,8 @@ }, handleCancel() { - this.selectedRowKeys = [] + this.selectedDayInspectionRowKeys = this.selectedWeekInspectionRowKeys = [] this.visible = false - }, - - /** - * 鑾峰彇鏃ョ偣妫�鏄庣粏 - * @param orderId - */ - loadDetail(orderId) { - if (orderId) { - getAction(this.url.detailList, { orderId }) - .then(res => { - if (res.success) { - this.detail.dataSource = [...res.result] - } - }) - .finally(() => { - this.spinning = false - }) - } - }, - - /** - * 鑾峰彇鐐规宸ュ崟涓殑鍛ㄧ偣妫�鍒楄〃 - * @param standardId 瑙勮寖id - */ - getWeekInspectionOrderListByApi(standardId) { - console.log('standardId-------------------------', standardId) - getAction(this.url.weekInspectionOrderList, { standardId, inspectionDate: this.tableRowRecord.inspectionDate }) - .then(res => { - if (res.success) this.detail.weekInspectionList = res.result - }) - .finally(() => { - this.spinning = false - }) } } } -- Gitblit v1.9.3