From 85e935b85bbae57e4ec1fab28d7027b867998ec2 Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: 星期二, 29 七月 2025 16:14:11 +0800
Subject: [PATCH] 修改新增

---
 src/views/build/conpanyFunctionConsult/staffManage/staffRegister/index.vue                  |   22 ++++++++++
 src/views/menuPage.vue                                                                      |    4 +-
 src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue |   53 ++++++++++++++++++++++----
 3 files changed, 68 insertions(+), 11 deletions(-)

diff --git a/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue b/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue
index bb793d3..7bba3b4 100644
--- a/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue
+++ b/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue
@@ -164,6 +164,24 @@
         <el-form-item label="专业:" prop="post" v-if="state.title !== '修改密码' && state.form.userType !== 0">
           <el-input v-model.trim="state.form.post" :disabled="disabled" placeholder="请输入专业"></el-input>
         </el-form-item>
+        <el-form-item label="角色:" prop="roles" v-if="state.title !== '修改密码'">
+          <el-select
+              clearable
+              v-model="state.form.roles"
+              filterable
+              :disabled="disabled"
+              placeholder="请选择角色"
+              multiple
+              style="width: 100%"
+          >
+            <el-option
+                v-for="item in state.roleList"
+                :key="item.roleId"
+                :label="item.roleName"
+                :value="item.roleId"
+            />
+          </el-select>
+        </el-form-item>
       </el-form>
       <template #footer v-if="state.title !='查看'">
         <span class="dialog-footer">
@@ -295,7 +313,8 @@
     post: '',
     age: null,
     personType: null,
-    positional: ''
+    positional: '',
+    roles: []
   },
   formRules:{
     name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
@@ -310,10 +329,12 @@
     entryTime: [{ required: true, message: '请选择入职时间', trigger: 'blur' }],
     age: [{ required: true, message: '请输入年龄', trigger: 'blur' }],
     personType: [{ required: true, message: '请选择人员类别', trigger: 'blur' }],
-    positional: [{ required: true, message: '请输入职称', trigger: 'blur' }]
+    positional: [{ required: true, message: '请输入职称', trigger: 'blur' }],
+    roles: [{ required: true, message: '请选择角色', trigger: 'blur' }]
   },
   companyList: [],
   userList: [],
+  roleList: [],
   keyword:'',
   pageNum: 1,
   pageSize: 10,
@@ -331,10 +352,11 @@
 });
 const disabled = ref(false);
 const userInfo = ref()
-const openDialog = async (type, value, companyId) => {
+const openDialog = async (type, value, companyId, roleList) => {
   userInfo.value = JSON.parse(Cookies.get('userInfo'))
   await getCompanyList()
   state.currentUserType = userInfo.value.userType
+  state.roleList = roleList
   if(state.currentUserType === 0){
     state.isAdmin = true;
     state.form.companyId = null;
@@ -362,6 +384,7 @@
     if(res.code === 200){
       state.form = res.data
     }
+    state.form.roles = value.roles.map(i=>i.roleId)
   }
   if(type == 'pwd'){
     state.form.id = value.id
@@ -413,8 +436,14 @@
       return;
     }
     if(state.title == '新增'){
-      const {confirmPassword,id,...data} = state.form
+      const {confirmPassword,id,...data} = JSON.parse(JSON.stringify(state.form))
       data.password = Base64.encode(data.password)
+      data.roles = data.roles.map((item)=>{
+        return {
+          roleId: item,
+          roleName: state.roleList.find(i=>i.roleId == item)?.roleName
+        }
+      })
       const res = await addUser(data)
       if(res.code == 200){
         ElMessage.success(res.message)
@@ -422,11 +451,18 @@
         handleClose()
         dialogVisible.value = false;
       }else{
+
         ElMessage.warning(res.message)
       }
     }else if(state.title == '编辑'){
-      const {confirmPassword,...data} = state.form
+      const {confirmPassword,...data} = JSON.parse(JSON.stringify(state.form))
       data.password = Base64.encode(data.password)
+      data.roles = data.roles.map((item)=>{
+        return {
+          roleId: item,
+          roleName: state.roleList.find(i=>i.roleId == item)?.roleName
+        }
+      })
       const param = {
         name: data.name,
         sex:data.sex,
@@ -446,7 +482,8 @@
         companyName: data.companyName,
         age: data.age,
         personType: data.personType,
-        positional: data.positional
+        positional: data.positional,
+        roles: data.roles
       }
 
       const res = await editUser(param)
@@ -551,7 +588,8 @@
     post: '',
     age: null,
     personType: null,
-    positional: ''
+    positional: '',
+    roles: []
   }
   state.userList = [];
   state.companyList = [];
@@ -592,7 +630,6 @@
   })
 }
 const getSelectUser = (val) => {
-  console.log("valllllllll",val)
   state.form.parentId = val;
 }
 
diff --git a/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/index.vue b/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/index.vue
index 35b800c..2dc2697 100644
--- a/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/index.vue
+++ b/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/index.vue
@@ -78,6 +78,11 @@
       <el-table-column label="联系方式" prop="phone" align="center"/>
       <el-table-column label="专业" prop="post" align="center"/>
       <el-table-column label="用户类型" prop="userTypeName" align="center"/>
+      <el-table-column label="角色" prop="userTypeName" align="center">
+        <template #default="scope">
+          {{ scope.row.roles?.map(i=>i.roleName).join('、') }}
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
         <template #default="scope">
           <el-button link type="primary" @click="openDialog('view',scope.row)">查看</el-button>
@@ -107,6 +112,7 @@
 import {delUser, getUser} from "@/api/onlineEducation/user";
 import Cookies from "js-cookie";
 import useUserStore from "@/store/modules/user";
+import {listRole} from "@/api/system/role";
 const userStore = useUserStore()
 
 const { proxy } = getCurrentInstance();
@@ -124,6 +130,7 @@
   dataList: [],
   isAdmin: false,
   companyList: [],
+  roleList: [],
   expertData: [],
   userTypeList: [
     {
@@ -173,6 +180,7 @@
     data.queryParams.companyId = userStore.companyId
   }
   await getList()
+  await getRoleList()
 })
 
 onUnmounted(()=>{
@@ -196,6 +204,18 @@
   }
   loading.value = false
   await getAllList()
+}
+
+const getRoleList = () => {
+  listRole(proxy.addDateRange({
+    pageNum: 1,
+    pageSize: 999,
+    roleName: undefined,
+    roleKey: undefined,
+    status: undefined
+  }, [])).then(response => {
+    data.roleList = response.data.list
+  });
 }
 
 const getCompanyList = async ()=>{
@@ -239,7 +259,7 @@
     ElMessage.warning('非管理员身份不可操作')
     return;
   }
-  dialogRef.value.openDialog(type, value, data.queryParams.companyId);
+  dialogRef.value.openDialog(type, value, data.queryParams.companyId,data.roleList);
 }
 
 /** 重置新增的表单以及其他数据  */
diff --git a/src/views/menuPage.vue b/src/views/menuPage.vue
index 5944604..09dd2d3 100644
--- a/src/views/menuPage.vue
+++ b/src/views/menuPage.vue
@@ -51,7 +51,7 @@
         </div>
       </div>
     </div>
-    <user-dialog ref="reviewRef" ></user-dialog>
+    <user-dialog ref="reviewRef"></user-dialog>
   </div>
 </template>
 
@@ -407,4 +407,4 @@
 .system-card:hover p {
   transform: translateZ(20px);
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.2