<!-- filename: dialogForm.vue author: liubin date: 2023-09-11 15:55:13 description: DialogForm for equipmentBindSection only --> <template> <el-form ref="form" :model="dataForm" label-width="128px" v-loading="formLoading"> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="产线" prop="productionLineId" :rules="[ { required: true, message: '产线不能为空', trigger: 'blur' }, ]"> <el-select v-model="dataForm.productionLineId" placeholder="请选择产线" filterable clearable @change="handleProductlineChange"> <el-option v-for="opt in productionLineList" :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="workshopSectionId" :rules="[ { required: true, message: '工段不能为空', trigger: 'blur' }, ]"> <el-select v-model="dataForm.workshopSectionId" filterable clearable placeholder="请选择工段" @change="$emit('update', dataForm)"> <el-option v-for="opt in worksectionList" :key="opt.value" :label="opt.label" :value="opt.value" /> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="设备" prop="equipmentId" clearable filterable :rules="[ { required: true, message: '设备不能为空', trigger: 'blur' }, ]"> <el-select v-model="dataForm.equipmentId" filterable placeholder="请选择设备" @change="$emit('update', dataForm)"> <el-option v-for="opt in equipmentList" :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="sort"> <el-input-number v-model="dataForm.sort" clearable controls-position="right" @change="$emit('update', dataForm)" placeholder="请输入工段排序" style="width: 100%" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="产线统计类型" prop="lineDataType" :rules="[ { required: true, message: '产线统计类型不能为空', trigger: 'change', }, ]"> <el-select v-model="dataForm.lineDataType" placeholder="请选择产线统计类型" clearable filterable @change="$emit('update', dataForm)"> <el-option v-for="opt in [ { label: '无类型', value: 0 }, { label: '进口统计', value: 1 }, { label: '出口统计', value: 2 }, ]" :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="sectionDataType" :rules="[ { required: true, message: '工段统计类型不能为空', trigger: 'change', }, ]"> <el-select v-model="dataForm.sectionDataType" placeholder="请选择工段统计类型" clearable filterable @change="$emit('update', dataForm)"> <el-option v-for="opt in [ { label: '无类型', value: 0 }, { label: '进口统计', value: 1 }, { label: '出口统计', value: 2 }, ]" :key="opt.value" :label="opt.label" :value="opt.value" /> </el-select> </el-form-item> </el-col> </el-row> </el-form> </template> <script> export default { name: 'DialogForm', model: { prop: 'dataForm', event: 'update', }, emits: ['update'], components: {}, props: { dataForm: { type: Object, default: () => ({}), }, }, data() { return { formLoading: true, productionLineList: [], equipmentList: [], worksectionList: [], dataFormCache: null, }; }, mounted() { Promise.all([this.getProductLineList(), this.getEquipmentList()]).then( () => { this.formLoading = false; } ); }, watch: { 'dataForm.productionLineId': { handler: async function (plId) { if (plId) await this.getWorksectionList(plId); }, immediate: true, }, }, methods: { /** 模拟透传 ref */ validate(cb) { return this.$refs.form.validate(cb); }, resetFields(args) { return this.$refs.form.resetFields(args); }, async handleProductlineChange(id) { await this.getWorksectionList(id); this.dataForm.workshopSectionId = null; this.$emit('update', this.dataForm); }, // getCode async getCode(url) { const response = await this.$axios(url); return response.data; }, // 获取产线列表 async getProductLineList() { const response = await this.$axios('/base/core-production-line/listAll'); this.productionLineList = response.data.map((item) => ({ label: item.name, value: item.id, })); }, // 获取设备列表 async getEquipmentList() { const response = await this.$axios( // '/base/core-equipment/page?pageNo=1&pageSize=100' '/base/core-equipment/listAll' ); this.equipmentList = response.data.map((item) => ({ label: item.name, value: item.id, })); }, // 获取工段列表 async getWorksectionList(plId) { const response = await this.$axios( '/base/core-workshop-section/listByParentId', { params: { id: plId, }, } ); this.worksectionList = response.data.map((item) => ({ label: item.name, value: item.id, })); }, }, }; </script> <style scoped lang="scss"> .el-date-editor, .el-select { width: 100%; } </style>