| | |
| | | switchFullscreen |
| | | @ok="handleOk" |
| | | @cancel="handleCancel" |
| | | centered |
| | | cancelText="关闭"> |
| | | |
| | | <a-spin :spinning="confirmLoading"> |
| | | <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-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 保养项信息 |
| | | </a-divider> |
| | | <a-row :gutter="24"> |
| | | <a-tabs> |
| | | <a-tabs v-model="activeTabKey"> |
| | | <a-tab-pane key="1" tab="保养项明细"> |
| | | <j-vxe-table |
| | | ref="editableDetailTable" |
| | |
| | | </template> |
| | | </j-vxe-table> |
| | | </a-tab-pane> |
| | | <a-tab-pane v-if="!disableSubmit" key='2' tab='流程节点'> |
| | | <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"> |
| | |
| | | </a-timeline> |
| | | </a-card> |
| | | </a-tab-pane> |
| | | <a-button v-if="!disableSubmit || selectedRowKeys.length > 0" slot="tabBarExtraContent" type="primary" |
| | | @click="handleSelectAllInspectionResult">保养正常 |
| | | <a-tab-pane key='3' tab='流程图'> |
| | | <img :src="imageSrc" alt="Fetched Image"/>--> |
| | | </a-tab-pane> |
| | | </template> |
| | | <a-button v-if="!disableSubmit &&!confirmDisable&& selectedRowKeys.length > 0" slot="tabBarExtraContent" |
| | | type="primary" @click="handleSelectAllInspectionResult">保养正常 |
| | | </a-button> |
| | | </a-tabs> |
| | | </a-row> |
| | |
| | | <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 || initialAcceptanceDisable" /> |
| | | <j-dict-select-tag type='radio' v-model='model.confirmDealType' dictCode='approved_rejected' |
| | | placeholder="请选择处理类型" :disabled="disableSubmit || initialAcceptanceDisable"/> |
| | | </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 || initialAcceptanceDisable" /> |
| | | <a-textarea placeholder="请输入意见" v-model="model.confirmComment" |
| | | :disabled="disableSubmit || initialAcceptanceDisable"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | </a-divider> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="12"> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="initialAcceptanceComment" label="初验收意见"> |
| | | <a-textarea placeholder="请输入意见" v-model="model.initialAcceptanceComment" :disabled="disableSubmit || finalAcceptanceDisable" /> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="initialAcceptanceComment" |
| | | label="初验收意见"> |
| | | <a-textarea placeholder="请输入意见" v-model="model.initialAcceptanceComment" |
| | | :disabled="disableSubmit || finalAcceptanceDisable"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="initialAcceptanceFilesResult" label="初验收附件"> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="initialAcceptanceFilesResult" |
| | | label="初验收附件"> |
| | | <lx-upload :returnUrl="false" |
| | | :isMultiple="true" |
| | | :disabled="disableSubmit || finalAcceptanceDisable" |
| | |
| | | </a-divider> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="12"> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="finalAcceptanceComment" label="终验收意见"> |
| | | <a-textarea placeholder="请输入意见" v-model="model.finalAcceptanceComment" :disabled="disableSubmit || completionDisable" /> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="finalAcceptanceComment" |
| | | label="终验收意见"> |
| | | <a-textarea placeholder="请输入意见" v-model="model.finalAcceptanceComment" |
| | | :disabled="disableSubmit || completionDisable"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="finalAcceptanceFilesResult" label="终验收附件"> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="finalAcceptanceFilesResult" |
| | | label="终验收附件"> |
| | | <lx-upload :returnUrl="false" |
| | | :isMultiple="true" |
| | | :disabled="disableSubmit || completionDisable" |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getAction, httpAction } from '@/api/manage' |
| | | import { downFile, getAction, httpAction } from '@/api/manage' |
| | | import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' |
| | | import { JVXETypes } from '@comp/jeecg/JVxeTable' |
| | | import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect' |
| | |
| | | mixins: [JVxeTableModelMixin], |
| | | components: { |
| | | MaintenanceEquipmentSelect |
| | | }, |
| | | props: { |
| | | selectShenpiData: { |
| | | type: Object |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | sm: { span: 21 } |
| | | }, |
| | | confirmLoading: false, |
| | | spinning: false, |
| | | imageSrc: null, |
| | | activeTabKey: '1', |
| | | validatorRules: { |
| | | confirmDealType: [ |
| | | { required: true, message: '请选择通过或驳回!' } |
| | |
| | | ], |
| | | finalAcceptanceComment: [ |
| | | { required: true, message: '请输入终验收意见!' } |
| | | ], |
| | | ] |
| | | }, |
| | | url: { |
| | | queryById: '/eam/weekMaintenanceOrder/queryById', |
| | |
| | | approval: '/eam/weekMaintenanceOrder/approval', |
| | | userSelect: '/eam/user_select/list', |
| | | queryHisTaskList: '/assign/flow/queryHisTaskList', |
| | | diagramView: '/assign/flow/diagramView' |
| | | }, |
| | | disableSubmit: false, |
| | | taskData: [], |
| | |
| | | width: '20%', |
| | | align: 'center', |
| | | slotName: 'exceptionDescription', |
| | | validateRules: [ |
| | | { handler: this.customValidator } |
| | | ] |
| | | }, |
| | | { |
| | | title: '是否报修', |
| | |
| | | width: '10%', |
| | | align: 'center', |
| | | slotName: 'reportFlag', |
| | | validateRules: [ |
| | | { handler: this.customValidator } |
| | | ] |
| | | } |
| | | ], |
| | | toolbarConfig: { |
| | |
| | | }, |
| | | computed: { |
| | | confirmDisable: function(){ |
| | | return ['WAIT_CONFIRM', 'WAIT_INITIAL_ACCEPTANCE', 'WAIT_FINAL_ACCEPTANCE', 'COMPLETE'].includes(this.model.maintenanceStatus); |
| | | return ['WAIT_CONFIRM', 'WAIT_INITIAL_ACCEPTANCE', 'WAIT_FINAL_ACCEPTANCE', 'COMPLETE'].includes(this.model.maintenanceStatus) |
| | | }, |
| | | initialAcceptanceDisable: function() { |
| | | return ['WAIT_INITIAL_ACCEPTANCE', 'WAIT_FINAL_ACCEPTANCE', 'COMPLETE'].includes(this.model.maintenanceStatus); |
| | | return ['WAIT_INITIAL_ACCEPTANCE', 'WAIT_FINAL_ACCEPTANCE', 'COMPLETE'].includes(this.model.maintenanceStatus) |
| | | }, |
| | | finalAcceptanceDisable: function() { |
| | | return ['WAIT_FINAL_ACCEPTANCE', 'COMPLETE'].includes(this.model.maintenanceStatus); |
| | | return ['WAIT_FINAL_ACCEPTANCE', 'COMPLETE'].includes(this.model.maintenanceStatus) |
| | | }, |
| | | completionDisable: function() { |
| | | return ['COMPLETE', 'ABOLISH'].includes(this.model.maintenanceStatus); |
| | | return ['COMPLETE', 'ABOLISH'].includes(this.model.maintenanceStatus) |
| | | } |
| | | }, |
| | | methods: { |
| | | async handleDetail(item) { |
| | | this.loading = true |
| | | this.visible = true |
| | | this.detail.dataSource = [] |
| | | let taskDataList = await getAction(this.url.queryHisTaskList, { procInstId: item.procInstId }); |
| | | this.taskData = [...taskDataList.result]; |
| | | 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] |
| | | |
| | | downFile(this.url.diagramView, { |
| | | processDefinitionId, |
| | | processInstanceId, |
| | | TaskDefinitionKey: processDefinitionKey |
| | | }, 'get') |
| | | .then((res => { |
| | | const urlObject = window.URL.createObjectURL(new Blob([res])) |
| | | this.imageSrc = urlObject |
| | | })) |
| | | .catch(err => { |
| | | this.$notification.error({ |
| | | message: '消息', |
| | | description: res.message |
| | | }) |
| | | }) |
| | | } |
| | | 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]; |
| | | let obj = JSON.parse(this.model.imageFiles) |
| | | this.model.imageFilesResult = [...obj] |
| | | } |
| | | if(this.model.initialAcceptanceFiles) { |
| | | let obj = JSON.parse(this.model.initialAcceptanceFiles); |
| | | this.model.initialAcceptanceFilesResult = [...obj]; |
| | | let obj = JSON.parse(this.model.initialAcceptanceFiles) |
| | | this.model.initialAcceptanceFilesResult = [...obj] |
| | | } |
| | | if(this.model.finalAcceptanceFiles) { |
| | | let obj = JSON.parse(this.model.finalAcceptanceFiles); |
| | | this.model.finalAcceptanceFilesResult = [...obj]; |
| | | let obj = JSON.parse(this.model.finalAcceptanceFiles) |
| | | this.model.finalAcceptanceFilesResult = [...obj] |
| | | } |
| | | this.model.dataId = item.dataId |
| | | this.model.taskId = item.id |
| | |
| | | this.model.instanceId = item.procInstId |
| | | this.model.values = item.variables |
| | | await this.loadDetail(item.dataId) |
| | | this.loading = false |
| | | }, |
| | | |
| | | recordDetail(record) { |
| | | this.loading = true |
| | | this.visible = true |
| | | this.detail.dataSource = [] |
| | | this.initParams() |
| | | this.model = Object.assign({}, record) |
| | | if(this.model.imageFiles) { |
| | | let obj = JSON.parse(this.model.imageFiles); |
| | | this.model.imageFilesResult = [...obj]; |
| | | let obj = JSON.parse(this.model.imageFiles) |
| | | this.model.imageFilesResult = [...obj] |
| | | } |
| | | if(this.model.initialAcceptanceFiles) { |
| | | let obj = JSON.parse(this.model.initialAcceptanceFiles); |
| | | this.model.initialAcceptanceFilesResult = [...obj]; |
| | | let obj = JSON.parse(this.model.initialAcceptanceFiles) |
| | | this.model.initialAcceptanceFilesResult = [...obj] |
| | | } |
| | | if(this.model.finalAcceptanceFiles) { |
| | | let obj = JSON.parse(this.model.finalAcceptanceFiles); |
| | | this.model.finalAcceptanceFilesResult = [...obj]; |
| | | let obj = JSON.parse(this.model.finalAcceptanceFiles) |
| | | this.model.finalAcceptanceFilesResult = [...obj] |
| | | } |
| | | this.loadDetail(record.id) |
| | | this.loading = false |
| | | }, |
| | | close() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | this.$refs.form.clearValidate() |
| | | |
| | | initParams() { |
| | | this.detail.dataSource = [] |
| | | this.visible = true |
| | | this.activeTabKey = '1' |
| | | this.spinning = true |
| | | }, |
| | | |
| | | async handleOk() { |
| | | const that = this |
| | | let errMap = await that.$refs.editableDetailTable.validateTable() |
| | |
| | | // 触发表单验证 |
| | | this.$refs.form.validate(valid => { |
| | | if (valid) { |
| | | let tableData = that.$refs.editableDetailTable.getTableData(); |
| | | |
| | | let checkMsg = null; |
| | | tableData.some(row => { |
| | | if(!row.maintenanceResult) { |
| | | checkMsg = '保养结果不能为空!'; |
| | | return true; |
| | | } |
| | | if(row.maintenanceResult === '2' && (!row.exceptionDescription || !row.reportFlag)) { |
| | | checkMsg = '保养结果为异常,需要填写异常原因及是否报修!'; |
| | | return true; |
| | | } |
| | | }) |
| | | if(checkMsg) { |
| | | that.$message.warning(checkMsg); |
| | | return; |
| | | } |
| | | let tableData = that.$refs.editableDetailTable.getTableData() |
| | | |
| | | that.model.tableDetailList = [...tableData] |
| | | |
| | | that.confirmLoading = true |
| | | that.confirmLoading = spinnning = true |
| | | let httpurl = this.url.approval |
| | | let method = 'put' |
| | | |
| | |
| | | that.$message.warning(res.message) |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false |
| | | that.confirmLoading = spinning = false |
| | | }) |
| | | } else { |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.close() |
| | | }, |
| | | |
| | | autocompleteForm(selectObj) { |
| | | this.$set(this.model, 'standardName', selectObj.standardName) |
| | | this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod) |
| | |
| | | } |
| | | this.loadMaintenanceOperatorList(this.model.equipmentId) |
| | | }, |
| | | |
| | | //标准选择变化 |
| | | loadDetail(orderId) { |
| | | if (orderId) { |
| | | getAction(this.url.detail, { orderId: orderId }).then(res => { |
| | | getAction(this.url.detail, { orderId: orderId }) |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.detail.dataSource = [...res.result] |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.spinning = false |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | loadMaintenanceOperatorList(equipmentId) { |
| | | this.maintenanceOperatorOptions = [] |
| | | let params = { positionCode: 'PCR0001' } |
| | |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | handleInspectionResultSelectChange(value, record) { |
| | | if (record.exceptionDescription) delete record.exceptionDescription |
| | | if (record.reportFlag) delete record.reportFlag |
| | | }, |
| | | |
| | | // 批量选择所有点检结果 |
| | | handleSelectAllInspectionResult() { |
| | | this.selectedRowKeys.forEach(key => { |
| | |
| | | this.$refs.editableDetailTable.clearCheckboxRow() |
| | | this.selectedRowKeys = [] |
| | | }, |
| | | |
| | | /** |
| | | * 表格多选框发生改变时触发 |
| | | * @param {selectedRowIds} 表格中已选择的ID列表 |
| | |
| | | handleTableSelectRowChange({ selectedRowIds }) { |
| | | this.selectedRowKeys = selectedRowIds |
| | | }, |
| | | |
| | | customValidator({ cellValue, row }, callback) { |
| | | if (row.maintenanceResult === '2') { |
| | | if (!cellValue) { |
| | | callback(false, '${title}不能为空!') // false = 未通过,可以跟自定义提示 |
| | | } else { |
| | | callback(true) // true = 通过验证 |
| | | } |
| | | } else { |
| | | callback(true) |
| | | } |
| | | }, |
| | | |
| | | handleCancel() { |
| | | this.close() |
| | | }, |
| | | |
| | | close() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | this.$refs.form.clearValidate() |
| | | } |
| | | } |
| | | } |
| | | </script> |