From bc35d48bada733a0a4677cce54f3aa5ce3080be6 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期四, 20 六月 2024 17:33:35 +0800
Subject: [PATCH] 提交

---
 src/views/onlineEducation/systemManage/user/components/userDialog.vue |  224 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 150 insertions(+), 74 deletions(-)

diff --git a/src/views/onlineEducation/systemManage/user/components/userDialog.vue b/src/views/onlineEducation/systemManage/user/components/userDialog.vue
index 2c8a5a8..71dd1e2 100644
--- a/src/views/onlineEducation/systemManage/user/components/userDialog.vue
+++ b/src/views/onlineEducation/systemManage/user/components/userDialog.vue
@@ -11,7 +11,13 @@
           <el-input v-model.trim="state.form.username" :disabled="state.title =='编辑' || state.title =='查看'" placeholder="请输入用户名" ></el-input>
         </el-form-item>
         <el-form-item label="名称:"  prop="name" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.name" :disabled="state.title =='编辑' || state.title =='查看'" placeholder="请输入公司、部门或者车间岗位名"></el-input>
+          <el-input v-model.trim="state.form.name" :disabled="disabled" placeholder="请输入公司、部门或者车间岗位名"></el-input>
+        </el-form-item>
+        <el-form-item label="性别:"  prop="sex" v-if="state.title !== '修改密码'">
+          <el-radio-group v-model="state.form.sex"  :disabled="disabled">
+            <el-radio :label="0">男</el-radio>
+            <el-radio :label="1">女</el-radio>
+          </el-radio-group>
         </el-form-item>
         <el-form-item label="密码:" prop="password" v-if="state.title == '新增' || state.title == '修改密码'">
           <el-input v-model.trim="state.form.password" type="password" show-password placeholder="请输入密码"></el-input>
@@ -23,47 +29,46 @@
           <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">
-            <el-radio :label="0">管理员</el-radio>
+          <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">企业级</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="companyId" v-if="state.title !== '修改密码'">
-          <el-select
-               v-model="state.form.companyName"
-               @change="selectValue"
-               style="width: 45%"
-               v-loadMore="loadMore"
-               class="m-2"
-               placeholder="请选择所属企业"
-               popper-class="more_select_dropdown"
-          >
-            <el-option
-                v-for="item in state.companyList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
-          <el-select
-              v-if="state.form.userType === 2 || state.form.userType === 3 "
-              v-model="state.form.userName"
-              @change="selectValueUser"
-              style="width: 45%;margin-left: 10px"
-              class="m-2"
-              placeholder="请选择所属上级账号"
-              popper-class="more_select_dropdown"
-          >
-            <el-option
-                v-for="item in state.userList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
+        <el-form-item label="选择所属父级账号:" prop="companyId" v-if="state.title !== '修改密码' && state.form.userType !== 0">
+            <el-select
+                v-if="state.isAdmin"
+                v-model="state.form.companyName"
+                @change="selectValue"
+                style="width: 45%"
+                v-loadMore="loadMore"
+                class="m-2"
+                placeholder="请选择所属企业"
+                popper-class="more_select_dropdown"
+            >
+              <el-option
+                  v-for="item in state.companyList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.name"
+              />
+            </el-select>
+          <el-input v-else disabled style="width: 45%" v-model="state.form.companyName"></el-input>
+            <scorllSelect
+                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>
       <template #footer v-if="state.title !='查看'">
@@ -76,22 +81,27 @@
   </div>
 </template>
 <script setup>
-import {reactive, ref, toRefs, defineEmits, nextTick} from 'vue'
+import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
 import { View } from "@element-plus/icons-vue";
+import scorllSelect from '@/components/scrollSelect/index.vue'
 import {ElMessage} from "element-plus";
 import {verifyPhone, verifyPwd, verifyUsername} from "../../../../../utils/validate";
 import { checkUserName, checkPhone } from "@/api/login"
-import {getUserById} from "@/api/onlineEducation/user"
+import {addUser, editUser, getUserById, resetPwd} from "@/api/onlineEducation/user"
 import {Base64} from "js-base64"
 import {resetUserPwd} from "../../../../../api/sysUsers";
 import {getInstitutionDetail} from "@/api/backManage/insitution";
 import {getCompany} from "@/api/onlineEducation/company";
 import {get} from "@vueuse/core";
-import {getUser} from "@/api/system/user";
+import {getUser} from "@/api/onlineEducation/user";
+import {debounce} from "@/utils";
+import Cookies from "js-cookie";
 
 const emit = defineEmits(["getList"]);
 const dialogVisible = ref(false)
 const superRef = ref(null)
+const scrollRef = ref(null)
+
 
 const equalToPassword = (rule, value, callback) => {
   if (state.form.password !== value) {
@@ -135,6 +145,7 @@
     confirmPassword: '',
     username: '',
     userType: 0,
+    sex: 0,
     companyId: null,
     parentId: null
   },
@@ -146,16 +157,40 @@
     phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }],
   },
   companyList: [],
-  userList: [],
+  userList: [
+
+  ],
+  keyword:'',
+
   pageNum: 1,
-  pageSize: 10
+  pageSize: 10,
+  cloading:false,
+  totlePage: 0,
+  userParam: {},
+  isAdmin: false
 
 })
+const UisMounted = ref(false);
+onMounted(() => {
+  UisMounted.value = true;
+
+});
 
 const disabled = ref(false);
 const openDialog = async (type, value) => {
+  const userInfo = JSON.parse(Cookies.get('userInfo'))
+  console.log("userInfo",userInfo)
+  if(userInfo.userType === 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;
+  }
+
   await getCompanyList('open')
-  await getUserList()
   state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ;
   if(type === 'edit' || type === 'view') {
     if( type === 'view'){
@@ -164,12 +199,23 @@
     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.parentId){
+          state.form.parentId = ''
+          state.form.parentName = '无上级账号'
+        }
+      }
     }
   }
   if(type == 'pwd'){
     state.form.id = value.id
   }
   dialogVisible.value = true
+  if(type === 'edit' && state.form && (state.form.userType === 2||state.form.userType === 3)){
+    await nextTick(() => {
+      doGetUser()
+    })
+  }
 }
 
 const finshed = ref(false)
@@ -199,31 +245,21 @@
     console.log("state.companyList",state.companyList)
   }
 }
-const getUserList = async () => {
-  const queryParams = {
-    userType: state.form.userType
-  }
-  const res = await getUser(queryParams)
-  if (res.code == 200) {
-    debugger
-  } else {
-    ElMessage.warning(res.message)
-  }
-}
-
 const onSubmit = async () => {
   const valid = await superRef.value.validate();
   if(valid){
+    if((state.form.userType ===1 && state.form.companyId ===null) || ((state.form.userType ===2 ||state.form.userType ===3) && (state.form.parentId ===null ||state.form.companyId===null))){
+      ElMessage.warning('请选择所属父级账号')
+      return;
+    }
     if(state.title == '新增'){
       const {confirmPassword,id,...data} = state.form
       data.password = Base64.encode(data.password)
-      const res = await addMonitor(data)
+      const res = await addUser(data)
       if(res.code == 200){
         ElMessage.success(res.message)
         emit('getList')
-        state.form.userType = 0
-        superRef.value.clearValidate();
-        superRef.value.resetFields();
+        handleClose()
         dialogVisible.value = false;
       }else{
         ElMessage.warning(res.message)
@@ -231,14 +267,11 @@
     }else if(state.title == '编辑'){
       const {confirmPassword,...data} = state.form
       data.password = Base64.encode(data.password)
-      const res = await editMonitor(data)
+      const res = await editUser(data)
       if(res.code == 200){
         ElMessage.success(res.message)
         emit('getList')
-        state.form.userType = 0
-        superRef.value.clearValidate();
-        superRef.value.resetFields();
-        dialogVisible.value = false;
+        handleClose()
       }else{
         ElMessage.warning(res.message)
       }
@@ -246,22 +279,57 @@
       const {id,password} = state.form
       const data = {id,password}
       data.password = Base64.encode(data.password)
-      const res = await resetUserPwd(data)
+      const res = await resetPwd(data)
       if(res.code == 200){
         ElMessage.success(res.message)
         emit('getList')
-        superRef.value.clearValidate();
-        superRef.value.resetFields();
-        dialogVisible.value = false;
+        handleClose()
       }else{
         ElMessage.warning(res.message)
       }
     }
   }
 }
+const doGetUser = () => {
+  const param = {
+    userType: state.form.userType-1,
+    companyId: state.form.companyId,
+  }
+  scrollRef.value.getList(param,'change');
+}
+const changeType = () => {
+  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 = () => {
-  state.form.userType = 0
+  state.form = {
+    id: null,
+    name: '',
+    phone: '',
+    password: '',
+    confirmPassword: '',
+    username: '',
+    userType: 0,
+    sex: 0,
+    companyId: null,
+    parentId: null
+  }
+  state.userList = [];
+  state.companyList = [];
+  state.pageNum = 1;
+  state.pageSize = 10;
   superRef.value.clearValidate();
   superRef.value.resetFields()
   dialogVisible.value = false;
@@ -276,24 +344,32 @@
     getCompanyList('')
   }, 500)
 }
+
 const selectValue = (val) => {
+  state.form.parentId = null;
+  state.form.parentName = null;
   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');
+      }
     }
   })
 }
-const selectValueUser = (val) => {
-  state.userList.forEach(item => {
-    if(item.name === val){
-      state.form.parentId = item.id
-    }
-  })
+const getSelectUser = (val) => {
+  console.log("valllllllll",val)
+  state.form.parentId = val;
 }
 
 
 
 
+
 defineExpose({
   openDialog
 });

--
Gitblit v1.9.2