|
|
@@ -0,0 +1,320 @@
|
|
|
+<template>
|
|
|
+ <ele-modal
|
|
|
+ :visible="visible"
|
|
|
+ :append-to-body="true"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ custom-class="ele-dialog-form"
|
|
|
+ title="添加事项"
|
|
|
+ @update:visible="updateVisible"
|
|
|
+ :maxable="true"
|
|
|
+ :before-close="handleClose"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ :model="formData"
|
|
|
+ v-loading="dialogLoading"
|
|
|
+ ref="formRef"
|
|
|
+ label-width="180px"
|
|
|
+ :rules="rules"
|
|
|
+ style="width: 800px; margin: 0 auto"
|
|
|
+ >
|
|
|
+ <el-form-item label="类型" required prop="itemType">
|
|
|
+ <DictSelection
|
|
|
+ dictName="记录规则事项类型"
|
|
|
+ clearable
|
|
|
+ v-model="formData.itemType"
|
|
|
+ @change="itemTypeChange"
|
|
|
+ >
|
|
|
+ </DictSelection>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="执行方式" required prop="executeMethod">
|
|
|
+ <DictSelection
|
|
|
+ dictName="记录规则执行方式"
|
|
|
+ clearable
|
|
|
+ v-model="formData.executeMethod"
|
|
|
+ isProhibit
|
|
|
+ >
|
|
|
+ </DictSelection>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ v-if="formData.itemType == '1'"
|
|
|
+ label="选择设备"
|
|
|
+ required
|
|
|
+ prop="deviceName"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="formData.deviceName"
|
|
|
+ placeholder="请选择设备"
|
|
|
+ size="small"
|
|
|
+ :readonly="true"
|
|
|
+ >
|
|
|
+ <template #append>
|
|
|
+ <el-button size="small" @click="selectDeviceId">选择设备</el-button>
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item v-if="formData.itemType == '3'" label="关联任务">
|
|
|
+ <!-- 下拉选择 -->
|
|
|
+ <el-select
|
|
|
+ placeholder="请选择关联任务"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="formData.taskId"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="task in []"
|
|
|
+ :key="task.id"
|
|
|
+ :label="task.name"
|
|
|
+ :value="task.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ v-if="formData.itemType == '2'"
|
|
|
+ label="关联记录规则"
|
|
|
+ required
|
|
|
+ prop="rulesName"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="formData.rulesName"
|
|
|
+ placeholder="请选择记录规则名称"
|
|
|
+ size="small"
|
|
|
+ :readonly="true"
|
|
|
+ >
|
|
|
+ <template #append>
|
|
|
+ <el-button size="small" @click="selectReleaseId"
|
|
|
+ >选择规则</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ v-if="formData.itemType == '1'"
|
|
|
+ label="关联事项规则"
|
|
|
+ required
|
|
|
+ prop="rulesId"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="formData.rulesName"
|
|
|
+ placeholder="请选择设备有关计划规则,如保养规则,巡点检规则等"
|
|
|
+ size="small"
|
|
|
+ :readonly="true"
|
|
|
+ >
|
|
|
+ <template #append>
|
|
|
+ <el-button size="small" @click="selectRulesId">选择规则</el-button>
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ <template v-slot:footer>
|
|
|
+ <el-button type="primary" @click="confirm"> 确定 </el-button>
|
|
|
+
|
|
|
+ <el-button @click="handleClose">取消</el-button>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <material-add
|
|
|
+ ref="deviceSelectDialog"
|
|
|
+ selectType="single"
|
|
|
+ @chooseEquipment="chooseEquipment"
|
|
|
+ ></material-add>
|
|
|
+
|
|
|
+ <selectMatterRules
|
|
|
+ ref="selectMatterRulesRef"
|
|
|
+ @chooseRules="chooseRules"
|
|
|
+ ></selectMatterRules>
|
|
|
+
|
|
|
+ <selectReleaseRules
|
|
|
+ ref="selectReleaseRulesRef"
|
|
|
+ @chooseRules="chooseReleaseRules"
|
|
|
+ ></selectReleaseRules>
|
|
|
+ </ele-modal>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import { produceTaskRecordRules } from '@/api/producetaskrecordrules';
|
|
|
+ import tableColumnsMixin from '@/mixins/tableColumnsMixin';
|
|
|
+ import dictMixins from '@/mixins/dictMixins';
|
|
|
+ import rules from '@/components/bpmnProcessDesigner/src/modules/rules';
|
|
|
+ import MaterialAdd from '@/views/rulesManagement/components/MaterialAdd.vue';
|
|
|
+ import selectMatterRules from '@/components/selectMatterRules/select-matter-rules.vue';
|
|
|
+ import selectReleaseRules from '@/components/selectReleaseRules/select-release-rules.vue';
|
|
|
+
|
|
|
+ export default {
|
|
|
+ name: 'UserSettingMatter',
|
|
|
+ mixins: [dictMixins, tableColumnsMixin],
|
|
|
+ emits: ['addMatter', 'editMatter'],
|
|
|
+ components: {
|
|
|
+ MaterialAdd,
|
|
|
+ selectMatterRules,
|
|
|
+ selectReleaseRules
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ visible: false,
|
|
|
+ type: 'add', // add新增 edit编辑
|
|
|
+ formData: {
|
|
|
+ id: null,
|
|
|
+ // 设备id
|
|
|
+ deviceId: null,
|
|
|
+ //设备名称
|
|
|
+ deviceName: '',
|
|
|
+ // 记录规则执行方式,参考字典项:record_rules_execute_method
|
|
|
+ executeMethod: '1',
|
|
|
+ // 记录规则事项类型,参考字典项:record_rules_item_type
|
|
|
+ itemType: '1',
|
|
|
+ // 工序ID
|
|
|
+ produceTaskId: null,
|
|
|
+ // 记录规则报工类型,参考字典项:record_rules_report_work_type
|
|
|
+ reportWorkType: null,
|
|
|
+ // 规则id,包括事项规则id,记录规则id,根据事项类型区分
|
|
|
+ rulesId: null,
|
|
|
+ // 规则名称
|
|
|
+ rulesName: '',
|
|
|
+ // 任务id
|
|
|
+ taskId: null
|
|
|
+ },
|
|
|
+ // 表单验证规则
|
|
|
+ rules: {
|
|
|
+ // 验证类型、执行方式、设备、关联事项规则
|
|
|
+ executeMethod: [
|
|
|
+ { required: true, message: '请选择执行方式', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ itemType: [
|
|
|
+ { required: true, message: '请选择事项类型', trigger: 'change' },
|
|
|
+ { required: true, message: '请选择事项类型', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ deviceName: [
|
|
|
+ { required: true, message: '请选择设备', trigger: 'change' },
|
|
|
+ { required: true, message: '请选择设备', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ rulesName: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择关联事项规则',
|
|
|
+ trigger: 'change'
|
|
|
+ },
|
|
|
+ { required: true, message: '请选择关联事项规则', trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ // 记录规则报工类型
|
|
|
+ reportWorkTypeOptions: [],
|
|
|
+ // 记录规则执行方式,参考字典项:record_rules_execute_method
|
|
|
+ executeMethodOptions: [],
|
|
|
+ // 记录规则事项类型,参考字典项:record_rules_item_type
|
|
|
+ itemTypeOptions: [],
|
|
|
+ dialogLoading: false
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ itemTypeChange() {
|
|
|
+ this.formData.executeMethod = this.formData.itemType;
|
|
|
+ this.formData.rulesId = null;
|
|
|
+ this.formData.rulesName = '';
|
|
|
+ },
|
|
|
+ updateVisible(val) {
|
|
|
+ this.visible = val;
|
|
|
+ },
|
|
|
+ openAdd() {
|
|
|
+ this.type = 'add';
|
|
|
+ this.visible = true;
|
|
|
+ },
|
|
|
+ openEdit(row) {
|
|
|
+ console.log('row', row);
|
|
|
+ this.type = 'edit';
|
|
|
+ this.visible = true;
|
|
|
+ this.$util.assignObject(this.formData, row);
|
|
|
+ this.formData.executeMethod = row.executeMethod + '';
|
|
|
+ this.formData.itemType = row.itemType + '';
|
|
|
+ this.formData.reportWorkType = row.reportWorkType + '';
|
|
|
+ console.log('this.formData', this.formData);
|
|
|
+ },
|
|
|
+ // 去选择设备
|
|
|
+ selectDeviceId() {
|
|
|
+ this.$refs.deviceSelectDialog.open([]);
|
|
|
+ },
|
|
|
+ chooseEquipment(data, index, categoryId) {
|
|
|
+ console.log('data', data, index, categoryId);
|
|
|
+ this.formData.deviceId = data[0]?.id || null;
|
|
|
+ this.formData.deviceName = data[0]?.name || '';
|
|
|
+ if (this.rules && this.rules.length > 1) {
|
|
|
+ // 提示用户选择的规则有多个事项规则
|
|
|
+ this.$message.warning('所选设备包含多个设备,请注意选择');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 去选择事项规则
|
|
|
+ selectRulesId() {
|
|
|
+ this.$refs.selectMatterRulesRef.open();
|
|
|
+ },
|
|
|
+ confirm() {
|
|
|
+ console.log('this.formData', this.formData);
|
|
|
+ // 验证表单
|
|
|
+ this.$refs.formRef.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ if (this.type == 'add') {
|
|
|
+ this.$emit('addMatter', this.formData);
|
|
|
+ } else {
|
|
|
+ this.$emit('editMatter', this.formData);
|
|
|
+ }
|
|
|
+ this.handleClose();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 选择规则
|
|
|
+ chooseRules(rules) {
|
|
|
+ console.log('rules', rules);
|
|
|
+ this.formData.rulesId = rules[0]?.id || null;
|
|
|
+ this.formData.rulesName = rules[0]?.name || '';
|
|
|
+ },
|
|
|
+ // 关闭清空formData
|
|
|
+ handleClose() {
|
|
|
+ this.visible = false;
|
|
|
+ this.formData = {
|
|
|
+ id: null,
|
|
|
+ // 设备id
|
|
|
+ deviceId: null,
|
|
|
+ //设备名称
|
|
|
+ deviceName: '',
|
|
|
+ // 记录规则执行方式,参考字典项:record_rules_execute_method
|
|
|
+ executeMethod: '1',
|
|
|
+ // 记录规则事项类型,参考字典项:record_rules_item_type
|
|
|
+ itemType: '1',
|
|
|
+ // 工序ID
|
|
|
+ produceTaskId: null,
|
|
|
+ // 记录规则报工类型,参考字典项:record_rules_report_work_type
|
|
|
+ reportWorkType: null,
|
|
|
+ // 规则id,包括事项规则id,记录规则id,根据事项类型区分
|
|
|
+ rulesId: null,
|
|
|
+ // 规则名称
|
|
|
+ rulesName: '',
|
|
|
+ // 任务id
|
|
|
+ taskId: null
|
|
|
+ };
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.formRef.clearValidate();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 去选择记录规则
|
|
|
+ selectReleaseId() {
|
|
|
+ this.$refs.selectReleaseRulesRef.open();
|
|
|
+ },
|
|
|
+ // 选择记录规则
|
|
|
+ chooseReleaseRules(rules) {
|
|
|
+ console.log('rules', rules);
|
|
|
+ this.formData.rulesId = rules[0]?.id || null;
|
|
|
+ this.formData.rulesName = rules[0]?.name || '';
|
|
|
+ if (this.rules && this.rules.length > 1) {
|
|
|
+ // 提示用户选择的规则有多个事项规则
|
|
|
+ this.$message.warning('所选记录规则包含多个事项规则,请注意选择');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped></style>
|