From 19aff1ac87030b21d2b01cdca5d5604c840ba7c0 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期一, 21 七月 2025 21:36:31 +0800 Subject: [PATCH] 维修工单 --- src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue | 364 +++++++++++++++++++++++++++++++-------------------- 1 files changed, 218 insertions(+), 146 deletions(-) diff --git a/src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue b/src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue index cd3bea5..183bbde 100644 --- a/src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue +++ b/src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue @@ -1,62 +1,62 @@ <template> - <j-modal - :title="title" - fullscreen - :visible="visible" - centered - :confirmLoading="confirmLoading" - :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> + <j-modal :title="title" fullscreen :visible="visible" :confirmLoading="confirmLoading" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="handleOk" @cancel="handleCancel" + cancelText="鍏抽棴"> <a-spin :spinning="confirmLoading"> <j-form-container :disabled="disableSubmit"> <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol" slot="detail"> <a-row> <a-col :span="customSpan"> - <a-form-model-item prop="equipmentId" label="璁惧缂栧彿"> - <lx-search-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId"/> - </a-form-model-item> - </a-col> - <a-col :span="customSpan"> - <a-form-model-item label="鏄惁鍔犲伐"> - <j-dict-select-tag dict-code="is_processed" type="radio" v-model="model.isProcessed" - @change="handleRadioChange($event,'faultStartTime,breakdownFlag,' + - 'faultDescription,batchNumber,processingPart,quantity')"/> - </a-form-model-item> - </a-col> - <a-col :span="customSpan"> - <a-form-model-item label="鏁呴殰寮�濮嬫椂闂�"> - <a-date-picker :disabled="!Boolean(+model.isProcessed)" v-model="model.faultStartTime" value-format="YYYY-MM-DD" style="width:100%"/> - </a-form-model-item> - </a-col> - <a-col :span="customSpan"> - <a-form-model-item label="鏄惁鍋滄満"> - <j-dict-select-tag :disabled="!Boolean(+model.isProcessed)" dict-code="yn" placeholder="璇烽�夋嫨鏄惁鍋滄満" v-model="model.breakdownFlag"/> + <a-form-model-item prop="equipmentId" label="缁熶竴缂栫爜"> + <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" :allowClear="false"/> </a-form-model-item> </a-col> </a-row> <a-row> <a-col :span="customSpan"> - <a-form-model-item label="鏁呴殰鐜拌薄"> - <a-input :disabled="!Boolean(+model.isProcessed)" placeholder="璇疯緭鍏ユ晠闅滅幇璞�" v-model="model.faultDescription"/> + <a-form-model-item label="鏄惁鍋滄満"> + <j-dict-select-tag type="radio" dict-code="yn" placeholder="璇烽�夋嫨鏄惁鍋滄満" v-model="model.breakdownFlag"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> - <a-form-model-item label="鎵规鍙�"> - <a-input :disabled="!Boolean(+model.isProcessed)" placeholder="璇疯緭鍏ユ壒娆″彿" v-model="model.batchNumber"/> + <a-form-model-item label="鏁呴殰寮�濮嬫椂闂�" prop="faultStartTime"> + <a-date-picker v-model="model.faultStartTime" :allowClear="false" value-format="YYYY-MM-DD" + style="width:100%"/> + </a-form-model-item> + </a-col> + + <a-col :span="12"> + <a-form-model-item label="鏁呴殰鐜拌薄" prop="faultDescription" :labelCol="labelColLong" + :wrapperCol="wrapperColLong"> + <a-textarea placeholder="璇疯緭鍏ユ晠闅滅幇璞�" v-model="model.faultDescription"/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="customSpan"> + <a-form-model-item label="鏄惁鍔犲伐"> + <j-dict-select-tag dict-code="yn" type="radio" v-model="model.isProcessed" + @change="handleRadioChange($event,'batchNumber,processingPart,quantity')"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> - <a-form-model-item label="鍔犲伐闆朵欢鍙�"> - <a-input :disabled="!Boolean(+model.isProcessed)" placeholder="璇疯緭鍏ュ姞宸ラ浂浠跺彿" v-model="model.processingPart"/> + <a-form-model-item label="鎵规鍙�" prop="batchNumber"> + <a-input :disabled="!Boolean(+model.isProcessed)" placeholder="璇疯緭鍏ユ壒娆″彿" v-model="model.batchNumber"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> - <a-form-model-item label="浠舵暟"> - <a-input-number :disabled="!Boolean(+model.isProcessed)" placeholder="璇疯緭鍏ヤ欢鏁�" v-model="model.quantity" :min="0" style="width: 100%"/> + <a-form-model-item label="鍔犲伐闆朵欢鍙�" prop="processingPart"> + <a-input :disabled="!Boolean(+model.isProcessed)" placeholder="璇疯緭鍏ュ姞宸ラ浂浠跺彿" + v-model="model.processingPart"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item label="浠舵暟" prop="quantity"> + <a-input-number :disabled="!Boolean(+model.isProcessed)" placeholder="璇疯緭鍏ヤ欢鏁�" v-model="model.quantity" + :min="0" style="width: 100%"/> </a-form-model-item> </a-col> </a-row> @@ -64,22 +64,28 @@ <a-row> <a-col :span="customSpan"> <a-form-model-item label="璁惧浜嬫晠"> - <j-dict-select-tag dict-code="yn" placeholder="璇烽�夋嫨璁惧浜嬫晠" v-model="model.isAccidentsRegister"/> + <j-dict-select-tag dict-code="yn" type="radio" placeholder="璇烽�夋嫨璁惧浜嬫晠" + v-model="model.isAccidentsRegister" @change="handleRadioChange($event,'scrapPartNumber,scrapPartQuantity,' + + 'scrapPartValue,operationCertificate,powerOffRestart,batchFirstPiece,variableFactors,variableFactorsValue,'+ + 'executeNc,accidentPhenomenon,measure,causingResults')"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> - <a-form-model-item label="搴熷搧浠跺彿"> - <a-input placeholder="璇疯緭鍏ュ簾鍝佷欢鍙�" v-model="model.scrapPartNumber"/> + <a-form-model-item label="搴熷搧浠跺彿" prop="scrapPartNumber"> + <a-input placeholder="璇疯緭鍏ュ簾鍝佷欢鍙�" :disabled="!Boolean(+model.isAccidentsRegister)" + v-model="model.scrapPartNumber"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> - <a-form-model-item label="搴熷搧浠舵暟"> - <a-input-number placeholder="璇疯緭鍏ュ簾鍝佷欢鏁�" v-model="model.scrapPartQuantity" :min="0" style="width: 100%"/> + <a-form-model-item label="搴熷搧浠舵暟" prop="scrapPartQuantity"> + <a-input-number placeholder="璇疯緭鍏ュ簾鍝佷欢鏁�" :disabled="!Boolean(+model.isAccidentsRegister)" + v-model="model.scrapPartQuantity" :min="0" style="width: 100%"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> - <a-form-model-item label="搴熷搧浠峰��"> - <a-input placeholder="璇疯緭鍏ュ簾鍝佷环鍊�" v-model="model.scrapPartValue"/> + <a-form-model-item label="搴熷搧浠峰��" prop="scrapPartValue"> + <a-input-number placeholder="璇疯緭鍏ュ簾鍝佷环鍊�" :disabled="!Boolean(+model.isAccidentsRegister)" + v-model="model.scrapPartValue" style="width: 100%"/> </a-form-model-item> </a-col> </a-row> @@ -87,63 +93,79 @@ <a-row> <a-col :span="customSpan"> <a-form-model-item label="鏄惁鏈夎澶囨搷浣滆瘉"> - <j-dict-select-tag dict-code="yn" placeholder="璇烽�夋嫨鏄惁鏈夎澶囨搷浣滆瘉" v-model="model.operationCertificate"/> + <j-dict-select-tag dict-code="yn" type="radio" :disabled="!Boolean(+model.isAccidentsRegister)" + placeholder="璇烽�夋嫨鏄惁鏈夎澶囨搷浣滆瘉" + v-model="model.operationCertificate"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> <a-form-model-item label="鏄惁鏂數閲嶅惎"> - <j-dict-select-tag dict-code="yn" placeholder="璇烽�夋嫨鏄惁鏂數閲嶅惎" v-model="model.powerOffRestart"/> + <j-dict-select-tag dict-code="yn" type="radio" :disabled="!Boolean(+model.isAccidentsRegister)" + placeholder="璇烽�夋嫨鏄惁鏂數閲嶅惎" v-model="model.powerOffRestart"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> <a-form-model-item label="鏄惁涓烘壒娆¢浠�"> - <j-dict-select-tag dict-code="yn" placeholder="璇烽�夋嫨鏄惁涓烘壒娆¢浠�" v-model="model.batchFirstPiece"/> + <j-dict-select-tag dict-code="yn" type="radio" :disabled="!Boolean(+model.isAccidentsRegister)" + placeholder="璇烽�夋嫨鏄惁涓烘壒娆¢浠�" + v-model="model.batchFirstPiece"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> - <a-form-model-item label="鍙樺姩鍥犵礌"> - <j-dict-select-tag dict-code="yn" placeholder="璇烽�夋嫨鍙樺姩鍥犵礌" v-model="model.variableFactors"/> + <a-form-model-item label="鍙樺姩鍥犵礌" prop="variableFactors"> + <j-dict-select-tag type="radio" dict-code="yn" :disabled="!Boolean(+model.isAccidentsRegister)" + placeholder="璇烽�夋嫨鍙樺姩鍥犵礌" v-model="model.variableFactors" + @change="handleRadioChange($event,'variableFactorsValue')"/> </a-form-model-item> </a-col> </a-row> <a-row> <a-col :span="customSpan"> - <a-form-model-item label="鍙樺姩鍥犵礌鍐呭"> - <j-dict-select-tag dict-code="variable_factors_value" placeholder="璇烽�夋嫨鍙樺姩鍥犵礌鍐呭" v-model="model.variableFactorsValue"/> + <a-form-model-item label="鍙樺姩鍥犵礌鍐呭" prop="variableFactorsValue"> + <j-dict-select-tag dict-code="variable_factors_value" :disabled="!Boolean(+model.variableFactors)" + placeholder="璇烽�夋嫨鍙樺姩鍥犵礌鍐呭" + v-model="model.variableFactorsValue"/> </a-form-model-item> </a-col> <a-col :span="customSpan"> <a-form-model-item label="鎵ц绋嬪簭"> - <a-input placeholder="璇疯緭鍏ユ墽琛岀▼搴�" v-model="model.executeNc"/> + <a-input placeholder="璇疯緭鍏ユ墽琛岀▼搴�" v-model="model.executeNc" + :disabled="!Boolean(+model.isAccidentsRegister)"/> </a-form-model-item> </a-col> - <a-col :span="customSpan"> - <a-form-model-item label="浜嬫晠鐜拌薄"> - <a-input placeholder="璇疯緭鍏ヤ簨鏁呯幇璞�" v-model="model.accidentPhenomenon"/> - </a-form-model-item> - </a-col> - <a-col :span="customSpan"> - <a-form-model-item label="閲囧彇鎺柦"> - <a-input placeholder="璇疯緭鍏ラ噰鍙栨帾鏂�" v-model="model.measure"/> + <a-col :span="12"> + <a-form-model-item label="浜嬫晠鐜拌薄" prop="accidentPhenomenon" :labelCol="labelColLong" + :wrapperCol="wrapperColLong"> + <a-textarea placeholder="璇疯緭鍏ヤ簨鏁呯幇璞�" v-model="model.accidentPhenomenon" + :disabled="!Boolean(+model.isAccidentsRegister)"/> </a-form-model-item> </a-col> </a-row> <a-row> - <a-col :span="customSpan"> - <a-form-model-item label="閫犳垚缁撴灉"> - <a-input placeholder="璇疯緭鍏ラ�犳垚缁撴灉" v-model="model.causingResults"/> + <a-col :span="12"> + <a-form-model-item label="閲囧彇鎺柦" prop="measure" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> + <a-textarea placeholder="璇疯緭鍏ラ噰鍙栨帾鏂�" v-model="model.measure" + :disabled="!Boolean(+model.isAccidentsRegister)"/> </a-form-model-item> </a-col> - - <a-col :span="customSpan"> - <a-form-model-item label="澶囨敞"> - <a-input placeholder="璇疯緭鍏ュ娉�" v-model="model.measure"/> + <a-col :span="12"> + <a-form-model-item label="閫犳垚缁撴灉" prop="causingResults" :labelCol="labelColLong" + :wrapperCol="wrapperColLong"> + <a-textarea placeholder="璇疯緭鍏ラ�犳垚缁撴灉" v-model="model.causingResults" + :disabled="!Boolean(+model.isAccidentsRegister)"/> </a-form-model-item> </a-col> </a-row> + <a-row> + <a-col :span="12"> + <a-form-model-item label="澶囨敞" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> + <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/> + </a-form-model-item> + </a-col> + </a-row> </a-form-model> </j-form-container> </a-spin> @@ -153,19 +175,10 @@ <script> import { httpAction } from '@/api/manage' import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' - import moment from 'moment' export default { name: 'EamReportRepairModal', components: { LxSearchEquipmentSelect }, - props: { - breakdownFlagList: { - type: Array - }, - faultReasonList: { - type: Array - } - }, data() { return { title: '鎿嶄綔', @@ -192,21 +205,60 @@ }, confirmLoading: false, validatorRules: { - faultStartTime: [ - { required: true, message: '璇烽�夋嫨鏁呴殰寮�濮嬫椂闂�' } - ], - breakdownFlag: [ - { required: true, message: '璇烽�夋嫨鏄惁鍋滄満' } - ], - equipmentId: [ - { required: true, message: '璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储' } - ], - faultName: [ - { required: true, message: '璇烽�夋嫨鏁呴殰绠�绉�' } - ], - faultDescription: [ - { required: true, message: '璇疯緭鍏ユ晠闅滄弿杩�' } - ] + equipmentId: [{ required: true, message: '璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�', trigger: 'change' }], + faultStartTime: [{ required: true, message: '璇烽�夋嫨鏁呴殰寮�濮嬫椂闂�', trigger: 'change' }], + faultDescription: [{ required: true, message: '璇疯緭鍏ユ晠闅滅幇璞�', trigger: 'change' }], + batchNumber: [{ + validator: this.isProcessedRelatedValidator, + message: '璇疯緭鍏ユ壒娆″彿', + trigger: 'change' + }], + processingPart: [{ + validator: this.isProcessedRelatedValidator, + message: '璇疯緭鍏ュ姞宸ラ浂浠跺彿', + trigger: 'change' + }], + quantity: [{ + validator: this.isProcessedRelatedValidator, + message: '璇疯緭鍏ヤ欢鏁�', + trigger: 'change' + }], + scrapPartNumber: [{ + validator: this.isAccidentsRegisterRelatedValidator, + message: '璇疯緭鍏ュ簾鍝佷欢鍙�', + trigger: 'change' + }], + scrapPartQuantity: [{ + validator: this.isAccidentsRegisterRelatedValidator, + message: '璇疯緭鍏ュ簾鍝佷欢鏁�', + trigger: 'change' + }], + scrapPartValue: [{ + validator: this.isAccidentsRegisterRelatedValidator, + message: '璇疯緭鍏ュ簾鍝佷环鍊�', + trigger: 'change' + }], + variableFactors: [{ + validator: this.isAccidentsRegisterRelatedValidator, + message: '璇烽�夋嫨鍙樺姩鍥犵礌', + trigger: 'change' + }], + variableFactorsValue: [{ + validator: this.variableFactorsValueValidator, + message: '璇烽�夋嫨鍙樺姩鍥犵礌鍐呭', + trigger: 'change' + }], + accidentPhenomenon: [{ + validator: this.isAccidentsRegisterRelatedValidator, + message: '璇疯緭鍏ヤ簨鏁呯幇璞�', + trigger: 'change' + }], + measure: [{ validator: this.isAccidentsRegisterRelatedValidator, message: '璇疯緭鍏ラ噰鍙栨帾鏂�', trigger: 'change' }], + causingResults: [{ + validator: this.isAccidentsRegisterRelatedValidator, + message: '璇疯緭鍏ラ�犳垚缁撴灉', + trigger: 'change' + }] }, url: { add: '/eam/eamReportRepair/add', @@ -219,21 +271,16 @@ this.editable = true //鍒濆鍖栭粯璁ゅ�� this.model = { - isProcessed: 0, + breakdownFlag: '1', + isProcessed: '0', + isAccidentsRegister: '0' } this.visible = true }, edit(record) { - this.model = Object.assign({}, record, { imageFilesResult: record.imageFiles && this.isJSON(record.imageFiles) ? JSON.parse(record.imageFiles) : null }) + this.model = Object.assign({}, record) this.visible = true - }, - - handleFaultNameChange(value) { - const faultReasonItem = this.faultReasonList.find(item => item.faultName === value) - this.model.faultType = faultReasonItem.faultCategory - this.model.faultType_dictText = faultReasonItem.faultCategory_dictText - this.model.faultDescription = faultReasonItem.faultDescription }, handleOk() { @@ -252,31 +299,29 @@ httpUrl += this.url.edit method = 'put' } - httpAction(httpUrl, this.model, method).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() - }) + httpAction(httpUrl, this.model, method) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.$emit('ok') + that.close() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + that.confirmLoading = false + }) } else { return false } }) - }, - - // 鍒ゆ柇鏄笉鏄疛SON瀛楃涓� - isJSON(str) { - try { - JSON.parse(str) - return true // 濡傛灉杩欓噷娌℃湁鎶涘嚭寮傚父锛岃鏄庢槸JSON鏍煎紡鐨勫瓧绗︿覆 - } catch (e) { - return false // 濡傛灉鎶涘嚭寮傚父锛岃鏄庝笉鏄疛SON鏍煎紡鐨勫瓧绗︿覆 - } }, /**\ @@ -289,39 +334,66 @@ if (key.includes(',')) { const keys = key.split(',') keys.forEach(key => { - if (value === '0') delete this.model[key] + if (value != '1') delete this.model[key] + this.$refs.form.clearValidate(key) }) - }else { - if (value === '0') delete this.model[key] + } else { + if (value != '1') delete this.model[key] + this.$refs.form.clearValidate(key) } }, /** - * 绂佺敤鏃ユ湡 - * @params current 琚鐢ㄧ殑鏃堕棿 + * 鏍规嵁鏄惁鍔犲伐瀛楁鏍¢獙鐩稿叧瀛楁 + * @param rule + * @param value 鐩稿叧瀛楁鍊� + * @param callback 缁撴灉鍥炶皟鍑芥暟 */ - disabledDate(current) { - // Can not select days after today - return current > moment().endOf('day') - }, - - /** - * 绂佺敤鏃ユ湡涓殑鏃堕棿 - * @returns {{disabledHours: (function(): Array), disabledMinutes: (function(): Array)}} - */ - disabledTime() { - function range(start, end) { - const result = [] - for (let i = start; i < end; i++) { - result.push(i) + isProcessedRelatedValidator(rule, value, callback) { + if (this.model.isProcessed == '1') { + if (!value) { + callback(new Error()) + } else { + callback() } - return result + } else { + callback() } + }, - return { - disabledHours: () => range(moment().hour() + 1, 24), - disabledMinutes: () => range(moment().minute() + 1, 60), - disabledSeconds: () => range(moment().second() + 1, 60) + /** + * 鏍规嵁璁惧浜嬫晠瀛楁鏍¢獙鐩稿叧瀛楁 + * @param rule + * @param value 鐩稿叧瀛楁鍊� + * @param callback 缁撴灉鍥炶皟鍑芥暟 + */ + isAccidentsRegisterRelatedValidator(rule, value, callback) { + if (this.model.isAccidentsRegister == '1') { + if (!value) { + callback(new Error()) + } else { + callback() + } + } else { + callback() + } + }, + + /** + * 鍙樺姩鍥犵礌鍐呭鏍¢獙 + * @param rule + * @param value 鍙樺姩鍥犵礌鍐呭瀛楁鍊� + * @param callback 缁撴灉鍥炶皟鍑芥暟 + */ + variableFactorsValueValidator(rule, value, callback) { + if (this.model.variableFactors == '1') { + if (!value) { + callback(new Error()) + } else { + callback() + } + } else { + callback() } }, @@ -332,7 +404,7 @@ }, handleCancel() { this.close() - }, + } } } </script> -- Gitblit v1.9.3