From 19aff1ac87030b21d2b01cdca5d5604c840ba7c0 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期一, 21 七月 2025 21:36:31 +0800
Subject: [PATCH] 维修工单

---
 src/views/system/modules/UserModal.vue |  122 +++++++++++++++++++++++++++++++---------
 1 files changed, 93 insertions(+), 29 deletions(-)

diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue
index 76bd7f1..8761b63 100644
--- a/src/views/system/modules/UserModal.vue
+++ b/src/views/system/modules/UserModal.vue
@@ -74,17 +74,17 @@
           <a-input-search :readOnly="true" v-model="model.equipmentIds" @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧" :disabled="!model.selectedProduction"/>
         </a-form-model-item>
 
-        <a-form-model-item label="EAM涓績鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="areaId">
-          <j-multi-select-tag :triggerChange="true" v-model="model.eamFactoryIds" dictCode="mom_base_area,name,id,del_flag = 0 and type = 1" placeholder="璇风淮鎶や腑蹇�"/>
+        <a-form-model-item label="EAM涓績鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eamFactoryIds">
+          <JSelectBaseFactory v-model="model.selectedBaseFactory" :multi="true" @back="backBaseFactoryInfo" :backProduction="true" :treeProductOpera="true"/>
         </a-form-model-item>
 
         <a-form-model-item label="EAM璁惧鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!productionDisabled">
-          <a-input-search :readOnly="true" v-model="model.eamEquipmentIds" @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧" :disabled="!model.selectedProduction"/>
+          <a-input-search :readOnly="true" v-model="model.eamEquipmentIds" @search="eamDeviceSearch" enter-button placeholder="璇烽�夋嫨EAM璁惧" :disabled="!model.selectedBaseFactory"/>
         </a-form-model-item>
 
-        <a-form-model-item label="缁翠慨閮ㄩ棬/鐝粍鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!repairDepartDisabled">
-          <j-select-repair-depart v-model="model.selectedRepairDeparts" :multi="true" @back="backRepairDepartInfo" :backRepairDepart="true" :treeRepairDepartOpera="true"/>
-        </a-form-model-item>
+<!--        <a-form-model-item label="缁翠慨閮ㄩ棬/鐝粍鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!repairDepartDisabled">-->
+<!--          <j-select-repair-depart v-model="model.selectedRepairDeparts" :multi="true" @back="backRepairDepartInfo" :backRepairDepart="true" :treeRepairDepartOpera="true"/>-->
+<!--        </a-form-model-item>-->
 
         <a-form-model-item label="璐熻矗閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="departIdShow==true">
           <j-multi-select-tag :disabled="disableSubmit" v-model="model.departIds" :options="nextDepartOptions" placeholder="璇烽�夋嫨璐熻矗閮ㄩ棬"/>
@@ -100,6 +100,9 @@
     </div>
 
     <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+
+    <select-eam-device-modal ref="selectEamDeviceModal" @selectFinished="selectEamOK" :title="'閫夋嫨EAM璁惧'"/>
+
   </a-drawer>
 </template>
 
@@ -112,24 +115,28 @@
   import { disabledAuthFilter } from '@/utils/authFilter'
   import { duplicateCheck } from '@/api/api'
   import JSelectProduction from '../../../components/jeecgbiz/JSelectProduction'
-  import JSelectRepairDepart from '../../../components/jeecgbiz/JSelectRepairDepart'
+  // import JSelectRepairDepart from '../../../components/jeecgbiz/JSelectRepairDepart'
   import { mapActions } from 'vuex'
   import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
   import SelectDeviceModal from './SelectDeviceModal'
+  import SelectEamDeviceModal from './SelectEamDeviceModal'
+  import JSelectBaseFactory from "@comp/jeecgbiz/JSelectBaseFactory.vue";
 
   export default {
     name: 'UserModal',
     components: {
+      JSelectBaseFactory,
       SelectDeviceModal,
       JSelectProduction,
-      JSelectRepairDepart
+      // JSelectRepairDepart,
+      SelectEamDeviceModal
     },
     data() {
       return {
         departDisabled: false, //鏄惁鏄垜鐨勯儴闂ㄨ皟鐢ㄨ椤甸潰
         productionDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰
         roleDisabled: false, //鏄惁鏄鑹茬淮鎶よ皟鐢ㄨ椤甸潰
-        repairDepartDisabled: false, //鏄惁鏄垜鐨勭淮淇儴闂ㄧ彮缁勮皟鐢ㄨ椤甸潰
+        // repairDepartDisabled: false, //鏄惁鏄垜鐨勭淮淇儴闂ㄧ彮缁勮皟鐢ㄨ椤甸潰
         modalWidth: 800,
         drawerWidth: 700,
         modaltoggleFlag: true,
@@ -140,12 +147,12 @@
         validatorRules: {
           username: [{ required: true, message: '璇疯緭鍏ョ敤鎴疯处鍙�!' },
             { validator: this.validateUsername }],
-          password: [{
-            required: true,
-            pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
-            message: '瀵嗙爜鐢�8浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!'
-          },
-            { validator: this.validateToNextPassword, trigger: 'change' }],
+          // password: [{
+          //   required: true,
+          //   pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
+          //   message: '瀵嗙爜鐢�8浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!'
+          // },
+          //   { validator: this.validateToNextPassword, trigger: 'change' }],
           confirmpassword: [{ required: true, message: '璇烽噸鏂拌緭鍏ョ櫥褰曞瘑鐮�!' },
             { validator: this.compareToFirstPassword }],
           realname: [{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕绉�!' }],
@@ -181,17 +188,20 @@
           syncUserByUserName: '/act/process/extActProcess/doSyncUserByUserName',//鍚屾鐢ㄦ埛鍒板伐浣滄祦
           queryTenantList: '/sys/tenant/queryList',
           userRepairDepartList: '/sys/user/userRepairDepartList',
+          userBaseFactoryList: '/sys/user/userBaseFactoryList',
           repairDepartTreeList: '/eam/eamBaseRepairDepart/queryTreeList'
         },
         tenantsOptions: [],
         rolesOptions: [],
         nextDepartOptions: [],
         nextProductionOptions: [],
+        nextBaseFactoryOptions:[],
         nextRepairDepartOptions: [],
         isDepartType: '',
         model: {
           selectedProduction: '',
-          selectedRepairDeparts: ''
+          // selectedRepairDeparts: '',
+          selectedBaseFactory:'',
         }
       }
     },
@@ -210,6 +220,17 @@
           }
           // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧
           if (newVal === '') this.model.equipmentIds = ''
+        }
+      },
+      'model.selectedBaseFactory': {
+        handler(newVal, oldVal) {
+          if (newVal && this.$refs.selectEamDeviceModal) {
+            // 濡傛灉杞﹂棿閫夋嫨鍓嶅悗涓嶄竴鑷村垯閲嶇疆閫夋嫨璁惧
+            if ((oldVal && newVal !== oldVal)) this.model.eamEquipmentIds = ''
+            this.$refs.selectEamDeviceModal.queryTreeData(newVal)
+          }
+          // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧
+          if (newVal === '') this.model.eamEquipmentIds = ''
         }
       }
     },
@@ -265,7 +286,8 @@
           selectedroles: '',
           selecteddeparts: '',
           selectedProduction: '',
-          selectedRepairDeparts: ''
+          selectedBaseFactory:'',
+          // selectedRepairDeparts: ''
         })
       },
       edit(record) {
@@ -288,6 +310,7 @@
           that.getUserDeparts(record.id)
           that.getUserProductions(record.id)
           that.getUserRepairDeparts(record.id)
+          this.getUserBaseFactorys(record.id)
         }
       },
       isDisabledAuth(code) {
@@ -382,24 +405,45 @@
           }
         })
       },
-      getUserRepairDeparts(userid) {
+      // getUserRepairDeparts(userid) {
+      //   let that = this
+      //   // 鑾峰彇缁翠慨閮ㄩ棬/鐝粍鍒嗛厤
+      //   getAction(that.url.userRepairDepartList, { userId: userid }).then((res) => {
+      //     if (res.success) {
+      //       let repairDepartOptions = []
+      //       let selectedRepairDepartKeys = []
+      //       for (let i = 0; i < res.result.length; i++) {
+      //         selectedRepairDepartKeys.push(res.result[i].key)
+      //         //鏂板璐熻矗缁翠慨閮ㄩ棬/鐝粍閫夋嫨涓嬫媺妗�
+      //         repairDepartOptions.push({
+      //           value: res.result[i].key,
+      //           label: res.result[i].title
+      //         })
+      //       }
+      //
+      //       this.$set(this.model, 'selectedRepairDeparts', selectedRepairDepartKeys.join(','))
+      //       that.nextRepairDepartOptions = repairDepartOptions
+      //     }
+      //   })
+      // },
+      getUserBaseFactorys(userid) {
         let that = this
-        // 鑾峰彇缁翠慨閮ㄩ棬/鐝粍鍒嗛厤
-        getAction(that.url.userRepairDepartList, { userId: userid }).then((res) => {
+        // 鑾峰彇EAM涓績/宸ュ尯/宸ユ鍒嗛厤
+        getAction(that.url.userBaseFactoryList, { userId: userid }).then((res) => {
           if (res.success) {
-            let repairDepartOptions = []
-            let selectedRepairDepartKeys = []
+            let BaseFactoryOptions = []
+            let selectedBaseFactoryOptionsKeys = []
             for (let i = 0; i < res.result.length; i++) {
-              selectedRepairDepartKeys.push(res.result[i].key)
+              selectedBaseFactoryOptionsKeys.push(res.result[i].key)
               //鏂板璐熻矗缁翠慨閮ㄩ棬/鐝粍閫夋嫨涓嬫媺妗�
-              repairDepartOptions.push({
+              BaseFactoryOptions.push({
                 value: res.result[i].key,
                 label: res.result[i].title
               })
             }
 
-            this.$set(this.model, 'selectedRepairDeparts', selectedRepairDepartKeys.join(','))
-            that.nextRepairDepartOptions = repairDepartOptions
+            this.$set(this.model, 'selectedBaseFactory', selectedBaseFactoryOptionsKeys.join(','))
+            that.nextBaseFactoryOptions = BaseFactoryOptions
           }
         })
       },
@@ -417,18 +461,26 @@
           return c
         })
       },
-      backRepairDepartInfo(info) {
-        this.model.repairDepartIds = this.model.selectedRepairDeparts
-        this.nextRepairDepartOptions = info.map((item, index, arr) => {
+      backBaseFactoryInfo(info) {
+        this.model.eamFactoryIds = this.model.selectedBaseFactory
+        this.nextBaseFactoryOptions = info.map((item, index, arr) => {
           let c = { label: item.text, value: item.value + '' }
           return c
         })
       },
+      // backRepairDepartInfo(info) {
+      //   this.model.repairDepartIds = this.model.selectedRepairDeparts
+      //   this.nextRepairDepartOptions = info.map((item, index, arr) => {
+      //     let c = { label: item.text, value: item.value + '' }
+      //     return c
+      //   })
+      // },
 
       refresh() {
         this.userId = ''
         this.nextDepartOptions = []
         this.nextProductionOptions = []
+        this.nextBaseFactoryOptions = []
         this.nextRepairDepartOptions = []
         this.departIdShow = false
       },
@@ -437,6 +489,7 @@
         this.visible = false
         this.disableSubmit = false
         this.nextDepartOptions = []
+        this.nextProductionOptions = []
         this.nextProductionOptions = []
         this.nextRepairDepartOptions = []
         this.departIdShow = false
@@ -615,6 +668,13 @@
         this.$refs.selectDeviceModal.checkedKeys = this.model.equipmentIds ? this.model.equipmentIds.split(',') : []
       },
 
+      eamDeviceSearch(){
+        this.$refs.selectEamDeviceModal.visible = true
+        this.$refs.selectEamDeviceModal.selectedRowKeys = []
+        this.$refs.selectEamDeviceModal.selectedRows = []
+        this.$refs.selectEamDeviceModal.checkedKeys = this.model.eamEquipmentIds ? this.model.eamEquipmentIds.split(',') : []
+      },
+
       /**
        * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂
        * @param data 宸查�夋嫨鐨勮澶囨暟缁�
@@ -622,6 +682,10 @@
       selectOK(data) {
         console.log('data=', data)
         this.$set(this.model, 'equipmentIds', data.join(','))
+      },
+      selectEamOK(data) {
+        console.log('data=', data)
+        this.$set(this.model, 'eamEquipmentIds', data.join(','))
       }
     }
   }

--
Gitblit v1.9.3