From 246f7b6fd81cf2ba620b8f9bf7cf24b61d7cf521 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期三, 17 七月 2024 16:38:54 +0800
Subject: [PATCH] bug修改

---
 src/views/onlineEducation/systemManage/user/components/userDialog.vue |  161 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 113 insertions(+), 48 deletions(-)

diff --git a/src/views/onlineEducation/systemManage/user/components/userDialog.vue b/src/views/onlineEducation/systemManage/user/components/userDialog.vue
index aa3512e..ec226fe 100644
--- a/src/views/onlineEducation/systemManage/user/components/userDialog.vue
+++ b/src/views/onlineEducation/systemManage/user/components/userDialog.vue
@@ -5,6 +5,8 @@
         :title="state.title"
         width="700px"
         :before-close="handleClose"
+        :close-on-press-escape="false"
+        :close-on-click-modal="false"
     >
       <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px" >
         <el-form-item label="用户名:"  prop="username" v-if="state.title !== '修改密码'">
@@ -28,20 +30,30 @@
         <el-form-item label="手机号:" prop="phone" v-if="state.title !== '修改密码'" >
           <el-input v-model.trim="state.form.phone" :maxlength="11" :disabled="disabled" placeholder="请输入手机号"></el-input>
         </el-form-item>
-        <el-form-item label="用户类型:" v-if="state.title !== '修改密码'">
-          <el-radio-group v-model="state.form.userType"  :disabled="disabled" @change="changeType">
-            <el-radio :label="0" v-if="state.isAdmin">管理员</el-radio>
-            <el-radio :label="1" v-if="state.isAdmin">企业级</el-radio>
-            <el-radio :label="2" v-if="!state.isAdmin">部门级</el-radio>
+        <el-form-item label="用户类型:" v-if="state.title !== '修改密码'" prop="userType">
+          <el-radio-group v-model="state.form.userType"  :disabled="disabled" @change="changeType" v-if="state.title == '新增'">
+            <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio>
+            <el-radio :label="1" v-if="state.currentUserType == 0 ">企业级</el-radio>
+            <el-radio :label="2" v-if="state.currentUserType == 1 ">部门级</el-radio>
             <el-radio :label="3" v-if="!state.isAdmin">车间(岗位)级</el-radio>
-            <el-radio :label="4" v-if="state.isAdmin">其他</el-radio>
+            <el-radio :label="4" v-if="state.currentUserType == 0">其他</el-radio>
           </el-radio-group>
+          <span v-else-if="state.title == '查看'">{{state.currentUserType === 0 ? '管理员' : state.currentUserType === 1 ? '企业级' : state.currentUserType === 2 ? '部门级' : state.currentUserType === 3 ? '车间级' :'其他'}}</span>
+          <span v-else-if="state.title == '编辑'">{{state.form.userType === 0 ? '管理员' : state.form.userType === 1 ? '企业级' : state.form.userType === 2 ? '部门级' : state.form.userType === 3 ? '车间级' :'其他'}}</span>
+          <!--          <el-radio-group v-model="state.form.userType"  :disabled="disabled" @change="changeType" v-else-if="state.title == '编辑'">-->
+<!--            <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio>-->
+<!--            <el-radio :label="1" >企业级</el-radio>-->
+<!--            <el-radio :label="2" >部门级</el-radio>-->
+<!--            <el-radio :label="3" >车间(岗位)级</el-radio>-->
+<!--            <el-radio :label="4" >其他</el-radio>-->
+<!--          </el-radio-group>-->
         </el-form-item>
-        <el-form-item label="选择上级企业:" prop="companyName" v-if="state.title !== '修改密码' && state.form.userType !== 0">
+        <el-form-item label="所属企业:" prop="companyName" v-if="state.title !== '修改密码' && showCompany">
           <el-select
               v-if="state.isAdmin"
               v-model="state.form.companyName"
               filterable
+              :disabled="disabled || state.title =='编辑'"
               remote
               @change="selectValue"
               reserve-keyword
@@ -58,6 +70,7 @@
                 :value="item.name"
             />
           </el-select>
+          <el-input v-else disabled style="width: 45%" v-model="state.form.companyName"></el-input>
 <!--            <el-select-->
 <!--                v-if="state.isAdmin"-->
 <!--                v-model="state.form.companyName"-->
@@ -75,21 +88,23 @@
 <!--                  :value="item.name"-->
 <!--              />-->
 <!--            </el-select>-->
-          <el-input v-else disabled style="width: 45%" v-model="state.form.companyName"></el-input>
-            <scorllSelect
-                :disabled="disabled"
-                ref="scrollRef"
-                v-if="UisMounted && (state.form.userType === 2 || state.form.userType === 3)"
-                v-model="state.form.parentName"
-                @getval = "getSelectUser"
-                placeholder="请选择"
-                clearable
-                style="width: 45%;margin-left: 10px"
-                filterable
-                remote
-                searchKey="name"
-                :methods="getUser">
-            </scorllSelect>
+
+
+        </el-form-item>
+        <el-form-item label="所属上级账号:" prop="companyName" v-if="showChild">
+          <scorllSelect
+              :disabled="disabled || state.title =='编辑'"
+              ref="scrollRef"
+              v-model="state.form.parentName"
+              @getval = "getSelectUser"
+              placeholder="请选择"
+              clearable
+              style="width: 45%;"
+              filterable
+              remote
+              searchKey="name"
+              :methods="getUser">
+          </scorllSelect>
         </el-form-item>
       </el-form>
       <template #footer v-if="state.title !='查看'">
@@ -197,7 +212,7 @@
     password: '',
     confirmPassword: '',
     username: '',
-    userType: 0,
+    userType: null,
     sex: 0,
     companyId: null,
     parentId: null
@@ -209,6 +224,7 @@
     password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
     confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }],
     phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }],
+    userType: [{ required: true, message: '请选择用户类型', trigger: 'blur' }],
   },
   companyList: [],
   userList: [
@@ -221,7 +237,8 @@
   cloading:false,
   totlePage: 0,
   userParam: {},
-  isAdmin: false
+  isAdmin: false,
+  currentUserType: null
 
 })
 const UisMounted = ref(false);
@@ -229,19 +246,20 @@
   UisMounted.value = true;
 
 });
-
+const showCompany = ref(false)
+const showChild = ref(false)
 const disabled = ref(false);
+const userInfo = ref()
 const openDialog = async (type, value) => {
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
+  userInfo.value = JSON.parse(Cookies.get('userInfo'))
+  console.log("userInfo",userInfo.value)
+  state.currentUserType = userInfo.value.userType
+  if(state.currentUserType === 0){
     state.isAdmin = true;
-    state.form.userType = 0;
   }else {
     state.isAdmin = false;
-    state.form.companyId = userInfo.companyId;
-    state.form.companyName = userInfo.companyName;
-    state.form.userType = 1;
+    state.form.companyId = userInfo.value.companyId;
+    state.form.companyName = userInfo.value.companyName;
   }
 
   if(type !== 'view' && type !== 'pwd'){
@@ -258,7 +276,14 @@
     const res = await getUserById(value.id);
     if(res.code === 200){
       state.form = res.data
-      if(res.data.userType === 2|| res.data.userType === 3){
+      if(res.data.userType === 3){
+        showCompany.value = true;
+        showChild.value = true
+      }else if(res.data.userType === 2 || res.data.userType === 1 || res.data.userType === 4){
+        showCompany.value = true;
+        showChild.value = false;
+      }
+      if(res.data.userType === 3){
         if(!res.data.parentId){
           state.form.parentId = ''
           state.form.parentName = '无上级账号'
@@ -279,6 +304,7 @@
 
 const finshed = ref(false)
 const loading = ref(false)
+
 const getCompanyList = async (val)=>{
   if(val != ""){
     loading.value = true;
@@ -374,19 +400,63 @@
 }
 const changeType = () => {
   state.companyList = [];
-  if(state.isAdmin){
-    state.form.companyId = null;
-    state.form.companyName = '';
-  }
   state.form.parentId = null;
   state.form.parentName = '';
-  if(state.form.userType === 2 || state.form.userType === 3 ){
+  state.form.companyId = null;
+  state.form.companyName = '';
+  //当前是管理员级用户
+  if(state.currentUserType === 0){
+    if(state.form.userType === 0){
+      showCompany.value = false;
+      showChild.value = false;
+    }else {
+      showCompany.value = true;
+      showChild.value = false;
+    }
+  }
+  //当前是企业级/其他用户选择部门
+  if((state.currentUserType === 1 && state.form.userType === 2) || (state.currentUserType === 4 && state.form.userType === 2)){
+    state.form.parentId = userInfo.value.id;
+    state.form.companyName = userInfo.value.companyName
+    state.form.companyId = userInfo.value.companyId;
+    showChild.value = false;
+    showCompany.value = true;
+
+  } //当前是企业级/其他用户选择车间
+  else if((state.currentUserType === 1 && state.form.userType === 3) || (state.currentUserType === 4 && state.form.userType === 3)){
+    state.form.companyName = userInfo.value.companyName
+    state.form.companyId = userInfo.value.companyId;
+    showCompany.value = true;
+    showChild.value = true;
     const param = {
-      userType: state.form.userType-1,
+      userType: 2,
       companyId: state.form.companyId,
     }
-    scrollRef.value.getList(param,'change');
+    nextTick(() => {
+      scrollRef.value.getList(param,'change');
+    })
   }
+  //当前是部门级选择车间
+  if((state.currentUserType === 2 && state.form.userType === 3)){
+    state.form.parentId = userInfo.value.id;
+    state.form.companyName = userInfo.value.companyName
+    state.form.companyId = userInfo.value.companyId;
+    showCompany.value = true;
+    showChild.value = false;
+  }
+  // if(state.isAdmin){
+  //   state.form.companyId = null;
+  //   state.form.companyName = '';
+  // }
+  // state.form.parentId = null;
+  // state.form.parentName = '';
+  // if(state.form.userType === 2 || state.form.userType === 3 ){
+  //   const param = {
+  //     userType: state.form.userType-1,
+  //     companyId: state.form.companyId,
+  //   }
+  //   scrollRef.value.getList(param,'change');
+  // }
 }
 
 const handleClose = () => {
@@ -397,11 +467,13 @@
     password: '',
     confirmPassword: '',
     username: '',
-    userType: 0,
+    userType: null,
     sex: 0,
     companyId: null,
     parentId: null
   }
+  showCompany.value = false;
+  showChild.value = false;
   state.userList = [];
   state.companyList = [];
   state.pageNum = 1;
@@ -427,13 +499,6 @@
   state.companyList.forEach(item => {
     if(item.name === val){
       state.form.companyId = item.id
-      if(state.form.userType === 2 || state.form.userType === 3 ){
-        const param = {
-          userType: state.form.userType-1,
-          companyId: state.form.companyId,
-        }
-        scrollRef.value.getList(param,'change');
-      }
     }
   })
 }

--
Gitblit v1.9.2