From 2a4216c13dde3634c1df8de5b2367c7f299c19b3 Mon Sep 17 00:00:00 2001 From: cuijian <cuijian@xalxzn.com> Date: 星期一, 16 十月 2023 09:37:48 +0800 Subject: [PATCH] 维修工单问题修改 --- src/views/eam/modules/repairorder/RepairOrderModal.vue | 22 + src/views/eam/RepairOrderList.vue | 20 + src/views/eam/MalfunctionRepair.vue | 5 src/views/eam/modules/dailyMaintenanceOrder/EquipmentCheckOrderModal.vue | 593 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue | 14 + 5 files changed, 652 insertions(+), 2 deletions(-) diff --git a/src/views/eam/MalfunctionRepair.vue b/src/views/eam/MalfunctionRepair.vue index b855dd3..52f383d 100644 --- a/src/views/eam/MalfunctionRepair.vue +++ b/src/views/eam/MalfunctionRepair.vue @@ -308,6 +308,11 @@ // scopedSlots: { customRender: 'imgSlot' } // }, { + title: '鏁呴殰鍘熷洜', + align: "center", + dataIndex: 'faultReason' + }, + { title: '鏁呴殰鏃堕棿', align: "center", dataIndex: 'faultTime' diff --git a/src/views/eam/RepairOrderList.vue b/src/views/eam/RepairOrderList.vue index e4c38fa..132e359 100644 --- a/src/views/eam/RepairOrderList.vue +++ b/src/views/eam/RepairOrderList.vue @@ -537,6 +537,26 @@ align: "center", dataIndex: 'faultDescription' }, + { + title: '鏁呴殰鍘熷洜', + align: "center", + dataIndex: 'faultReason' + }, + { + title: '鏁呴殰鐜拌薄', + align: "center", + dataIndex: 'faultPhenomenon' + }, + { + title: '鏁呴殰鎺掗櫎', + align: "center", + dataIndex: 'faultRemove' + }, + { + title: '棰勯槻鎺柦', + align: "center", + dataIndex: 'preventiveMeasure' + }, // { // title: '鏁呴殰鏃堕棿', // align: "center", diff --git a/src/views/eam/modules/dailyMaintenanceOrder/EquipmentCheckOrderModal.vue b/src/views/eam/modules/dailyMaintenanceOrder/EquipmentCheckOrderModal.vue new file mode 100644 index 0000000..e968aa2 --- /dev/null +++ b/src/views/eam/modules/dailyMaintenanceOrder/EquipmentCheckOrderModal.vue @@ -0,0 +1,593 @@ +<template> + <a-modal + :width="1250" + :visible="visible" + :maskClosable="false" + @ok="handleOk" + cancelText="鍏抽棴" + @cancel="handleCancel" + :confirmLoading="confirmLoading" + > + <!-- :title="title" --> + <a-spin :spinning="confirmLoading"> + <a-form :form="form"> + <a-divider + orientation="center" + style="font-size: large;font-style: normal;font-size: 30px;color: #66aeed;" + > 鐢熶骇璁惧涓夌骇淇濆吇楠屾敹鍗� </a-divider> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="璁惧绫诲埆" + > + <span v-if="this.model != null">{{ this.model.equipmentName }}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + <a-col :span="12"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="璁惧缂栧彿" + > + <span v-if="this.model != null">{{ this.model.equipmentNum }}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="璁惧鍚嶇О" + > + <span v-if="this.model != null">{{ this.model.equipmentName }}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + <a-col :span="12"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="璁惧鍨嬪彿" + > + <span v-if="this.model != null">{{ this.model.equipmentModel }}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + </a-row> + </a-form> + </a-spin> + <a-table + ref="table" + bordered + size="middle" + rowKey='id' + :columns="columns" + :dataSource="dataSource" + > + <template + v-for="col in columns" + :slot="col.dataIndex" + slot-scope='text, record, index' + > + <div :key="col.dataIndex"> + + <a-input + :value="text" + v-if="col.dataIndex == 'actualMeasure'" + auto-size + placeholder="璇疯緭鍏ュ疄娴嬪��" + @change="(e)=>handleChange(e, record.key, col, index)" + /> + </div> + </template> + </a-table> + <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}"> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="绮惧害妫�楠岃��" + > + <span v-if="this.model != null">{{ this.model.precisionInspectionUserName}}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + <a-col :span="12"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="缁翠慨瀹や富浠�" + > + <span v-if="this.model != null">{{ this.model.repairDirectorUserName }}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + </a-row> + </div> + <div :style="{height: '115px',float: 'left',width: '10%',border: '1px solid #e9e9e9',padding: '50px 20px',background: '#fff',}"> + <span + class="ant-descriptions-title" + style="font-size: large;font-style: normal;font-size: 15px;" + >绮惧害鐘舵��</span> + </div> + <div :style="{height: '115px',float: 'right',width: '90%',border: '1px solid #e9e9e9',padding: '10px 10px',background: '#fff',}"> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-item + :labelCol="{ span: 8 }" + :wrapperCol="{ span: 4 }" + label="鍚勯」绮惧害杈惧埌鍏佸樊瑕佹眰" + > + <a-switch + checked-children="鏄�" + un-checked-children="鍚�" + :checked="model.eachTolerance == '1'" + @change="handle2Switch(model.eachTolerance)" + /> + </a-form-item> + </a-col> + <a-col :span="12"> + <a-form-item + :labelCol="{ span: 8 }" + :wrapperCol="{ span: 4 }" + label="閮ㄥ垎绮惧害鏈揪鍒板厑宸姹�" + > + <a-switch + checked-children="鏄�" + un-checked-children="鍚�" + :checked="model.partTolerance == '1'" + @change="handle3Switch(model.partTolerance)" + /> + </a-form-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col + :style="{float: 'right'}" + :span="12" + > + <a-form-item + :labelCol="{ span: 8 }" + :wrapperCol="{ span: 4 }" + label="璁惧妫�楠屽憳" + > + <span v-if="this.model != null">{{ this.model.equipmentInspectorUserName }}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + </a-row> + </div> + <div :style="{height: '115px',float: 'left',width: '10%',border: '1px solid #e9e9e9',padding: '50px 20px',background: '#fff',}"> + <span + class="ant-descriptions-title" + style="font-size: large;font-style: normal;font-size: 15px;" + >闆朵欢鐘舵��</span> + </div> + <div :style="{height: '115px',float: 'right',width: '90%',border: '1px solid #e9e9e9',padding: '10px 10px',background: '#fff',}"> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-item + :labelCol="{ span: 8 }" + :wrapperCol="{ span: 4 }" + label="妫�娴嬭皟璇曞悗璇曞姞宸ラ浂浠跺彿锛�" + > + <a-switch + checked-children="鍚堟牸" + un-checked-children="涓嶅悎鏍�" + :checked="model.processPass == '1'" + @change="handle4Switch(model.processPass)" + /> + </a-form-item> + </a-col> + <a-col :span="12"> + <a-form-item + :labelCol="{ span: 8 }" + :wrapperCol="{ span: 4 }" + label="鑳藉惁婊¤冻鍔犲伐宸ヨ壓瑕佹眰" + > + <a-switch + checked-children="鑳�" + un-checked-children="涓嶈兘" + @change="handle5Switch(model.meetProcessRequire)" + :checked="model.meetProcessRequire == '1'" + /> + </a-form-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col + :style="{float: 'right'}" + :span="12" + > + <a-form-item + :labelCol="{ span: 8 }" + :wrapperCol="{ span: 4 }" + label="浣跨敤鍗曚綅鎶�鏈富绠�" + > + <span v-if="this.model != null">{{ this.model.useUnitDirectorUserName }}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + </a-row> + </div> + <div :style="{height: '115px',float: 'left',width: '10%',border: '1px solid #e9e9e9',padding: '50px 20px',background: '#fff',}"> + <span + class="ant-descriptions-title" + style="font-size: large;font-style: normal;font-size: 15px;" + >缁撹</span> + </div> + <div :style="{height: '115px',float: 'right',width: '90%',border: '1px solid #e9e9e9',padding: '10px 10px',background: '#fff',}"> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-item + :labelCol="{ span: 4 }" + :wrapperCol="{ span: 20 }" + label="璁惧鍒ゅ畾" + > + <a-radio-group + v-model="model.judgmentResult" + @change="onChangeJudgmentResult" + > + <a-radio value="qualified"> 鍚堟牸 </a-radio> + <a-radio value="limitedUse"> 闄愮敤 </a-radio> + <a-radio value="disabled"> 绂佺敤 </a-radio> + </a-radio-group> + </a-form-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col + :style="{float: 'right'}" + :span="12" + > + <a-form-item + :labelCol="{ span: 8 }" + :wrapperCol="{ span: 4 }" + label="璁惧妫�楠屽憳绛惧瓧" + > + <span v-if="this.model != null">{{ this.model.equipmentInspectorSignUserName }}</span> + <span v-else>-</span> + </a-form-item> + </a-col> + </a-row> + </div> + <div :style="{height: '115px',float: 'left',width: '10%',border: '1px solid #e9e9e9',padding: '50px 20px',background: '#fff',}"> + <span + class="ant-descriptions-title" + style="font-size: large;font-style: normal;font-size: 15px;" + >澶囨敞</span> + </div> + <div :style="{height: '115px',float: 'right',width: '90%',border: '1px solid #e9e9e9',padding: '10px 10px',background: '#fff',}"> + <a-textarea + allowClear + :placeholder="'璇疯緭鍏ュ娉ㄤ俊鎭�'" + v-model="model.remark " + rows="4" + /> + <!-- :disabled="true" --> + </div> + <template slot="footer"> + <a-button + :style="{marginRight: '8px'}" + @click="handleCancel()" + > + 鍏抽棴 + </a-button> + + <a-button + @click="handleOk()" + type="primary" + :loading="confirmLoading" + :disabled="disableSubmit || confirmLoading" + >纭畾</a-button> + </template> + </a-modal> + +</template> + +<script> +import { getAction, postAction, requestPut } from '@/api/manage' +import pick from 'lodash.pick' +import JMultiSelectTag from '@/components/dict/JMultiSelectTag' +import Tooltip from 'ant-design-vue/es/tooltip' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import { ACCESS_TOKEN } from '@/store/mutation-types' +import { getFileAccessHttpUrl } from '@/api/manage'; + +export default { + name: "EquipmentPrecisionCheckOrderModal", + mixins: [JeecgListMixin], + components: { + JMultiSelectTag, + Tooltip, + }, + data() { + return { + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + align: 'center', + customRender: function (t, r, index) { + return parseInt(index) + 1 + }, + width: 50, + }, + { + title: '妫�楠岄」鐩�', + align: 'center', + dataIndex: 'precisionParametersName', + width: 600, + }, + { + title: '鍏佸樊', + align: 'center', + dataIndex: 'tolerance' + }, + { + title: '瀹炴祴', + align: 'center', + dataIndex: 'actualMeasure', + width: 150, + scopedSlots: { customRender: 'actualMeasure' } + }, + + + ], + title: "鎿嶄綔", + visible: false, + disableSubmit: false, + codeDisable: true, + dataSource: [], + model: {}, + departs: [], + labelCol: { + xs: { span: 24 }, + sm: { span: 6 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 18 }, + }, + confirmLoading: false, + form: this.$form.createForm(this), + validatorRules: { + num: { + rules: [ + { required: true, message: '璇疯緭鍏ヤ繚鍏诲伐鍗曠紪鐮�!' }, + ] + }, + }, + url: { + add: "/eam/precisionInspection/precisionInspection", + getEquipmentPrecision: "/eam/equipmentPrecisionParameters/getByEquipmentId", + getPrecisionInspection: "/eam/precisionInspection/getPrecisionInspectionList", + list: "/eam/dailyMaintenanceOrder/getMaintenanceCycleByStandardId", + }, + + } + }, + + methods: { + + edit(record) { + let that = this; + + this.form.resetFields(); + // record.eachTolerance = '0' + // record.partTolerance = '0' + // record.processPass = '0' + // record.meetProcessRequire = '0' + // record.judgmentResult = "" + this.model = Object.assign({}, record); + this.getPrecisionInspection() + this.getEquipmentPrecision() + this.visible = true; + that.$nextTick(() => { + // that.form.setFieldsValue(pick(that.model, 'num', 'teamId', 'remark')); + }); + + }, + + + close() { + this.$emit('close'); + this.visible = false; + }, + + handleCancel() { + this.close(); + }, + + handleOk() { + + const that = this; + // 瑙﹀彂琛ㄥ崟楠岃瘉 + that.form.validateFields((err, values) => { + if (!err) { + this.$confirm({ + title: '鐢熶骇璁惧绮惧害妫�楠屽崟', + content: '鎻愮ず锛氳璋ㄦ厧鎿嶄綔锛�', + okText: '纭', + cancelText: '鍙栨秷', + onOk() { + let formData = Object.assign(that.model, values); + formData.precisionInspectionDetailList = that.dataSource + that.confirmLoading = true; + postAction(that.url.add, formData).then((res) => { + if (res.success) { + that.$message.success(res.message); + that.$emit('ok', new Date()); + } else { + that.$message.warning(res.message); + } + }).finally(() => { + that.confirmLoading = false; + that.close(); + }) + }, + }) + } + }) + }, + + + // handleOk() { + // const that = this; + // this.form.validateFields((err, values) => { + // if (!err) { + // that.confirmLoading = true; + // let formData = Object.assign(this.model, values); + // requestPut(this.url.add, formData, { id: this.model.id }).then((res) => { + // if (res.success) { + // that.$message.success(res.message); + // that.$emit('ok'); + // } else { + // that.$message.warning(res.message); + // } + // }).finally(() => { + // that.confirmLoading = false; + // that.close(); + // }) + // } + // }) + // }, + + handleDelete(text, record, index) { + this.dataSource.splice(index, 1); + }, + + + getEquipmentPrecision() { + getAction(this.url.getEquipmentPrecision, { equipmentId: this.model.equipmentId }).then((res) => { + if (res.success) { + this.dataSource = res.result.records + } + }) + }, + + getPrecisionInspection() { + getAction(this.url.getPrecisionInspection, { maintenanceOrderId: this.model.id }).then((res) => { + if (res.success) { + this.model = Object.assign({}, res.result[0]); + debugger + } + }) + }, + + handle2Switch(eachTolerance) { + if ('0' == eachTolerance) { + this.model.eachTolerance = '1' + } else { + this.model.eachTolerance = '0' + } + this.model = Object.assign({}, this.model); + }, + + handle3Switch(partTolerance) { + if ('0' == partTolerance) { + this.model.partTolerance = '1' + } else { + this.model.partTolerance = '0' + } + this.model = Object.assign({}, this.model); + }, + + handle4Switch(processPass) { + if ('0' == processPass) { + this.model.processPass = '1' + } else { + this.model.processPass = '0' + } + this.model = Object.assign({}, this.model); + }, + + handle5Switch(meetProcessRequire) { + if ('0' == meetProcessRequire) { + this.model.meetProcessRequire = '1' + } else { + this.model.meetProcessRequire = '0' + } + this.model = Object.assign({}, this.model); + }, + + onChangeJudgmentResult(e) { + this.model.judgmentResult = e.target.value + }, + + handleChange(value, key, column, index) { + let that = this; + const temp = [...that.dataSource]; + const target = temp.filter(item => key === item.key)[index]; + if (target) { + if ('actualMeasure' == column.dataIndex) { + target['actualMeasure'] = value.target.value; + } + //鏄剧ず甯﹁繃鏉ョ殑鏁版嵁 + that.dataSource = temp; + } + }, + + }, +} +</script> + +<style lang="less" scoped> +/deep/ .frozenRowClass { + color: #c9c9c9; +} +.fontweight { + font-weight: bold; +} +.ant-btn { + padding: 0 10px; + margin-left: 3px; +} + +.ant-form-item-control { + line-height: 0px; +} + +/** 涓昏〃鍗曡闂磋窛 */ +.ant-form .ant-form-item { + margin-bottom: 10px; +} + +/** Tab椤甸潰琛岄棿璺� */ +.ant-tabs-content .ant-form-item { + margin-bottom: 0px; +} +.hightColor { + height: 10%; + font-weight: bold; + font-size: 20px; + color: #1b1e1e; +} +.frozenRowClass { + color: #c9c9c9; +} +.fontweight { + font-weight: bold; +} +.hight { + color: #f5222d; +} +/deep/ .red { + color: red; +} + +.line { + width: 1px; + height: 300px; + background-color: #000; + border: none; + float: left; +} +</style> \ No newline at end of file diff --git a/src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue b/src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue index ba98bf4..94f2139 100644 --- a/src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue +++ b/src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue @@ -192,7 +192,19 @@ /> </a-form-item> </a-col> - + <a-col :span="24/2"> + <a-form-item + label="鏁呴殰鍘熷洜" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + > + <a-input + :disabled="disableSubmit" + enter-button + v-decorator="['faultReason', validatorRules.faultReason]" + /> + </a-form-item> + </a-col> </a-row> <a-row :gutter="24"> <a-col :span="24/2"> diff --git a/src/views/eam/modules/repairorder/RepairOrderModal.vue b/src/views/eam/modules/repairorder/RepairOrderModal.vue index 8449cfd..94c4563 100644 --- a/src/views/eam/modules/repairorder/RepairOrderModal.vue +++ b/src/views/eam/modules/repairorder/RepairOrderModal.vue @@ -239,6 +239,26 @@ <j-date placeholder="璇烽�夋嫨璁″垝缁撴潫鏃堕棿" v-decorator="['planEndTime', validatorRules.planEndTime ]" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" /> </a-form-item> </a-col> + <a-col :span="24/2" > + <a-form-item label="鏁呴殰鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input v-decorator="['faultReason', validatorRules.faultReason]" placeholder="璇疯緭鍏ヨ澶囧悕绉�" ></a-input> + </a-form-item> + </a-col> + <a-col :span="24/2" > + <a-form-item label="鏁呴殰鐜拌薄" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input :disabled="disableSubmit" v-decorator="['faultPhenomenon', validatorRules.faultPhenomenon]" placeholder="璇疯緭鍏ヨ澶囧瀷鍙�" ></a-input> + </a-form-item> + </a-col> + <a-col :span="24/2" > + <a-form-item label="鏁呴殰鎺掗櫎" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input :disabled="disableSubmit" v-decorator="['faultRemove', validatorRules.faultRemove]" placeholder="璇疯緭鍏ヨ澶囧悕绉�" ></a-input> + </a-form-item> + </a-col> + <a-col :span="24/2" > + <a-form-item label="棰勯槻鎺柦" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input :disabled="disableSubmit" v-decorator="['preventiveMeasure', validatorRules.preventiveMeasure]" placeholder="璇疯緭鍏ヨ澶囧瀷鍙�" ></a-input> + </a-form-item> + </a-col> <a-col :span="24"> <a-form-item label="鏁呴殰鎻忚堪" :labelCol="{span:3}" :wrapperCol="{span:21}" > <a-textarea rows="2" v-decorator="['faultDescription', validatorRules.faultDescription ]" placeholder="璇疯緭鍏ユ晠闅滄弿杩�" ></a-textarea> @@ -505,7 +525,7 @@ sendFaultReportRepairRecord(data) { let record = data.record; this.form.setFieldsValue({ reportRepairId:record.id,equipmentId: record.equipmentId,equipmentNum:record.equipmentNum,equipmentName: record.equipmentName,equipmentModel:record.equipmentModel,reportRepairNum:record.num, - urgency:record.urgency, departId: record.useDepartId,departName:record.useDepartId_dictText }); + urgency:record.urgency, departId: record.useDepartId,departName:record.useDepartId_dictText,faultReason:record.faultReason }); }, onProjectMaintenanceOrder() { this.$refs.ProjectMaintenanceOrder.list(); -- Gitblit v1.9.3