<!-- * @Author: zwq * @Date: 2021-11-18 14:16:25 * @LastEditors: DY * @LastEditTime: 2023-11-25 16:23:13 * @Description: --> <template> <el-form ref="form" :model="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmit()" label-width="128px" v-loading="formLoading" label-position="top"> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="巡检单名称" prop="name"> <el-input v-model="dataForm.name" placeholder="请输入巡检单名称" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="巡检单编码" prop="code"> <el-input v-model="dataForm.code" placeholder="请输入巡检单编码" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="计划巡检时间" prop="planCheckTime"> <el-date-picker v-model="dataForm.planCheckTime" type="datetime" :placeholder="`请选择计划巡检时间`" value-format="timestamp" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="巡检频率(天/次)" prop="checkPeriod"> <el-input v-model="dataForm.checkPeriod" placeholder="请输入巡检频率(天/次)" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="部门" prop="departmentId"> <el-select v-model="dataForm.departmentId" :placeholder="`请选择部门`"> <el-option v-for="opt in departmentOptions" :key="opt.value" :label="opt.label" :value="opt.value" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="班次" prop="groupClass"> <el-select v-model="dataForm.groupClass" filterable clearable multiple style="width: 100%" placeholder="请选择班次"> <el-option v-for="d in groupOptions" :key="d.value" :label="d.label" :value="d.label" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="确认时限 (时)" prop="confirmTimeLimit"> <el-input v-model="dataForm.confirmTimeLimit" :placeholder="`请输入确认时限`" /> <!-- <el-date-picker v-model="dataForm.confirmTimeLimit" type="datetime" :placeholder="`请选择确认时限`" value-format="timestamp" /> --> </el-form-item> </el-col> <el-col> <el-form-item label="备注" prop="remark"> <el-input v-model="dataForm.remark" placeholder="请输入备注" /> </el-form-item> </el-col> </el-row> </el-form> </template> <script> import { groupConnectWorkshop } from '@/utils/equipment-module'; export default { data() { return { formLoading: false, dataForm: { id: null, code: null, name: null, departmentId: null, planCheckTime: null, confirmTimeLimit: null, groupClass: null, remark: null, // special: true, }, dataRule: { confirmTimeLimit: [ { required: true, message: '确认时限不能为空', trigger: 'blur' }, { type: 'number', message: '请输入正确的数字类型', trigger: 'blur', transform: (val) => Number(val), }, ], code: [ { required: true, message: '巡检单编码不能为空', trigger: 'blur' }, ], name: [ { required: true, message: '巡检单名称不能为空', trigger: 'blur' }, ], planCheckTime: [ { required: true, message: '计划巡检时间不能为空', trigger: 'blur' }, ], checkPeriod: [ { required: true, message: '巡检频率不能为空', trigger: 'blur' }, { type: 'number', message: '请输入正确的数字类型', trigger: 'blur', transform: (val) => Number(val), }, ], }, equipmentOptions: [], groupOptions: [], departmentOptions: [], }; }, mounted() { this.initOptions(); }, methods: { reset() { this.dataForm = { id: null, code: null, name: null, departmentId: null, planCheckTime: null, confirmTimeLimit: null, groupClass: null, remark: null, checkPeriod: null // special: true, }; }, async initOptions() { this.formLoading = true; const urls = [ '/base/core-department/listAll', '/base/group-classes/listAll', '/base/equipment-check-order/getCode', ]; try { const [dpt, grp, code] = await Promise.all( urls.map((url) => this.$axios(url)) ); if (dpt.code == 0) { this.departmentOptions = dpt.data.map((item) => ({ label: item.name, value: item.id, })); } if (grp.code == 0) { this.groupOptions = grp.data.map((item) => ({ label: groupConnectWorkshop(item.name, item.roomNameDict), value: item.id, })); } if (code.code == 0) { this.dataForm.code = code.data; } this.formLoading = false; } catch (err) { this.formLoading = false; console.error(err); } }, async init(row) { if (!row || !row.id) { this.dataForm.planCheckTime = new Date().setHours(8, 0, 0, 0); return; } const res = await this.$axios({ url: '/base/equipment-check-order/get?id=' + row.id, }); if (res.code == 0) { Object.keys(this.dataForm).forEach((key) => { this.dataForm[key] = res.data[key]; if (key == 'groupClass') { this.dataForm.groupClass = res.data.groupClass && res.data.groupClass.trim() != '' && res.data.groupClass.split(','); } }); } }, async dataFormSubmit() { let valid = false; try { valid = await this.$refs.form.validate(); } catch (err) {} if (!valid) return; const res = await this.$axios({ url: '/base/equipment-check-order' + (this.dataForm.id ? '/update' : '/create'), method: this.dataForm.id ? 'put' : 'post', data: { ...this.dataForm, special: true, status: 0, groupClass: this.dataForm.groupClass?.join(','), }, }); if (res.code == 0) { this.$emit('refreshDataList'); this.$message.success(this.dataForm.id ? '更新成功' : '创建成功'); } }, }, }; </script> <style scoped lang="scss"> .el-date-editor, .el-select { width: 100%; } </style>