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/EamRepairOrderList/EamRepairOrderModal.vue | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 202 insertions(+), 0 deletions(-) diff --git a/src/views/eam/repair/modules/EamRepairOrderList/EamRepairOrderModal.vue b/src/views/eam/repair/modules/EamRepairOrderList/EamRepairOrderModal.vue new file mode 100644 index 0000000..70eaaa5 --- /dev/null +++ b/src/views/eam/repair/modules/EamRepairOrderList/EamRepairOrderModal.vue @@ -0,0 +1,202 @@ +<template> + <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" @ok="handleOk" + @cancel="handleCancel" cancelText="鍏抽棴" centered> + <a-spin :spinning="spinning"> + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-row> + <a-col :span="customSpan"> + <a-form-model-item label="缁翠慨寮�濮嬫椂闂�" prop="actualStartTime" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-date-picker show-time v-model="model.actualStartTime" :allowClear="false" + value-format="YYYY-MM-DD HH:mm:ss" + style="width:100%"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item label="缁翠慨缁撴潫鏃堕棿" prop="actualEndTime" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-date-picker show-time v-model="model.actualEndTime" :allowClear="false" + value-format="YYYY-MM-DD HH:mm:ss" + style="width:100%"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item label="鏁呴殰鍘熷洜"> + <a-textarea placeholder="璇疯緭鍏ユ晠闅滃師鍥�" v-model="model.faultReason"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item label="鏁呴殰鍒嗘瀽"> + <a-textarea placeholder="璇疯緭鍏ユ晠闅滃垎鏋�" v-model="model.faultAnalysis"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item label="鎺掓晠杩囩▼"> + <a-textarea placeholder="璇疯緭鍏ユ帓鏁呰繃绋�" v-model="model.faultProcess"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item label="棰勯槻鎺柦"> + <a-textarea placeholder="璇疯緭鍏ラ闃叉帾鏂�" v-model="model.faultPrevent"/> + </a-form-model-item> + </a-col> + </a-row> + + <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit toolbar + :toolbarConfig="detail.toolbarConfig" keep-source :height="300" + :dataSource="detail.dataSource" :columns="detail.columns"> + + </j-vxe-table> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + import { postAction, getAction } from '@/api/manage' + import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' + import { JVXETypes } from '@comp/jeecg/JVxeTable' + + export default { + name: 'EamRepairOrderModal', + components: { LxSearchEquipmentSelect }, + data() { + return { + title: '鎿嶄綔', + visible: false, + model: {}, + customSpan: 12, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + confirmLoading: false, + spinning: false, + validatorRules: { + actualStartTime: [{ required: true, message: '璇烽�夋嫨缁翠慨寮�濮嬫椂闂�', trigger: 'change' }], + actualEndTime: [{ required: true, message: '璇烽�夋嫨缁翠慨缁撴潫鏃堕棿', trigger: 'change' }] + }, + detail: { + dataSource: [], + columns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: '缁翠慨浜�', + key: 'repairUser', + align: 'center', + placeholder: '璇疯緭鍏�${title}', + type: JVXETypes.input, + validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }] + }, + { + title: '鏄惁鏄富缁翠慨浜�', + key: 'repairPrimary', + align: 'center', + type: JVXETypes.select, + placeholder: '璇烽�夋嫨${title}', + dictCode: 'yn', + validateRules: [{ required: true, message: '璇烽�夋嫨${title}' }] + }, + { + title: '缁翠慨鏃堕暱', + key: 'repairDuration', + align: 'center', + placeholder: '璇疯緭鍏�${title}', + type: JVXETypes.inputNumber, + validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }] + }, + { + title: '澶囨敞', + key: 'remark', + align: 'center', + type: JVXETypes.textarea, + placeholder: '璇疯緭鍏�${title}' + } + ], + toolbarConfig: { + // prefix 鍓嶇紑锛泂uffix 鍚庣紑 + slot: ['prefix', 'suffix'], + // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 + btn: ['add', 'remove', 'clearSelection'] + } + }, + url: { + report: '/eam/eamRepairOrder/report', + detail: '/eam/eamRepairPerson/list' + } + } + }, + methods: { + handleFillIn(record) { + this.visible = true + this.model = Object.assign({}, record) + this.getRepairDetailByApi(record.id) + }, + + getRepairDetailByApi(repairId) { + this.spinning = true + this.detail.dataSource = [] + getAction(this.url.detail, { repairId }) + .then(res => { + if (res.success) this.detail.dataSource = res.result + }) + .finally(() => { + this.spinning = false + }) + }, + + async handleOk() { + const errMap = await this.$refs.editableDetailTable.validateTable() + if (errMap) return + + const that = this + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = that.spinning = true + + that.model.eamRepairPersonList = that.$refs.editableDetailTable.getTableData() + + postAction(that.url.report, that.model) + .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 = that.spinning = false + }) + } else { + return false + } + }) + }, + + close() { + this.$emit('close') + this.visible = false + if (this.$refs.form) this.$refs.form.clearValidate() + }, + + handleCancel() { + this.close() + } + } + } +</script> \ No newline at end of file -- Gitblit v1.9.3