Kaynağa Gözat

设置角色/使用期限优化

lzw 2 ay önce
ebeveyn
işleme
f43f6e34af
3 değiştirilmiş dosya ile 175 ekleme ve 33 silme
  1. 86 6
      src/components/list.vue
  2. 43 16
      src/components/organList.vue
  3. 46 11
      src/components/schoolList.vue

+ 86 - 6
src/components/list.vue

@@ -62,7 +62,7 @@
                   <!-- 学校名称,显示 school.name -->
                   <a>{{ school.name }}</a>
                   <a style="color: gray;font-size: 13px;margin: 0px">&nbsp;-&nbsp;{{ school.orgName ? school.orgName :
-                    '暂无组织'}}</a>
+                    '暂无组织' }}</a>
                 </label>
                 <!-- 单选框,使用 v-model 绑定到一个变量 -->
                 <input type="radio" class="checkbox_input_org" name="school_selection" :value="school.id"
@@ -309,6 +309,32 @@
         <el-button type="primary" @click="ajax_add_org">确认</el-button>
       </div>
     </el-dialog>
+    <!-- 设置角色弹窗 -->
+    <el-dialog title="设置角色" class="table" :visible.sync="set_role_dialog" :before-close="close_set_role" width="700px">
+      <div class="el_dialog_org_content" style="height: none;">
+        <form class="el-form">
+          <div class="el-form-item">
+            <label class="el-form-item__label" style="width: 100px">角色</label>
+            <div class="el-form-item__content" style="margin-left: 5px">
+              <span>
+                <div class="add_input el-input el-input--suffix">
+                  <el-select v-model="roleVal" placeholder="请选择角色" class="custom-select" filterable>
+                    <el-option v-for="(role, index) in roleArray" :key="index" :label="role.label" :value="role.label">
+                      {{ role.label }}
+                    </el-option>
+                  </el-select>
+                </div>
+              </span>
+            </div>
+          </div>
+        </form>
+      </div>
+      <!-- 按钮区域 -->
+      <div slot="footer" class="el-dialog__footer">
+        <el-button @click="close_set_role">取 消</el-button>
+        <el-button type="primary" @click="roleConfirm">确认</el-button>
+      </div>
+    </el-dialog>
     <!-- 内容区域 -->
     <div class="content">
       <!-- 按钮区域 -->
@@ -355,10 +381,11 @@
                 v-if="row.state == 0">启用</el-button>
 
               <!-- 管理员操作按钮,只有当 row.type === 1 时才显示 -->
-              <el-button v-if="row.type === 1 && row.state == 1" link type="text" size="small"
+              <!-- <el-button v-if="row.type === 1 && row.state == 1" link type="text" size="small"
                 @click="ajax_admin(row.userid, row.role, row.type)">
                 {{ row.role === 1 ? "取消管理员" : "设置管理员" }}
-              </el-button>
+              </el-button> -->
+              <el-button link type="text" size="small" @click="setRole(row)">设置角色</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -400,6 +427,8 @@ export default {
       isTableUseVisible: false,
       //新增组织
       add_org_dialog: false,
+      //设置角色
+      set_role_dialog: false,
       //新增组织的变量定义
       orgName: "", // 组织名称
       u_create: "", // 创建人
@@ -476,10 +505,12 @@ export default {
       s_name: "",
       s_username: "",
       checkRole: "",
+      roleVal: "",
       roleArray: [
         { value: "1", label: "老师" },
         { value: "2", label: "学生" },
         { value: "3", label: "管理员" },
+        { value: "4", label: "集团管理员" },
       ],
       opUser: {},
       person: {
@@ -499,7 +530,13 @@ export default {
         if (row.type == 2) {
           return "学生";
         } else if (row.type == 1) {
-          return row.role == 1 ? "管理员" : "老师";
+          if (row.role == 0 && row.rrole == 0) {
+            return "老师";
+          } else if (row.role == 1 && row.rrole == 0) {
+            return "管理员";
+          } else if (row.role == 1 && row.rrole == 1) {
+            return "集团管理员";
+          }
         }
       };
     },
@@ -570,6 +607,36 @@ export default {
       this.add_org_dialog = false;
       this.add_school_dialog = false;
     },
+    //设置角色关闭
+    close_set_role() {
+      this.set_role_dialog = false;
+    },
+    roleConfirm() {
+      // 发送 AJAX 请求
+      let params = [
+        {
+          functionName: "setRole", // 调用存储过程的名称
+          id: this.check_user_id, // 将传入的userid设置为 u_id
+          u_role: this.roleVal,
+        },
+      ];
+      this.$ajax
+        .post(API_CONFIG.baseUrl, params)
+        .then(() => {
+          // 提示操作成功
+          this.$message({
+            type: "success",
+            message: "设置成功!",
+          });
+          this.set_role_dialog = false; // 关闭对话框
+          this.getData();
+        })
+        .catch((err) => {
+          // 处理失败的响应
+          this.$message.error("设置失败");
+          console.error("请求失败,错误信息:", err); // 打印详细错误信息
+        });
+    },
     showType(type) {
       this.type = type;
       this.currentPage = 1;
@@ -606,6 +673,7 @@ export default {
         .post(API_CONFIG.baseUrl, params)
         .then((res) => {
           // 假设 res.data[0] 是返回的用户数据数组
+          console.log("you", res.data)
           const users = res.data[0].map((user) => ({
             company_name: user.org_name || "暂无", // 组织名称
             company_number: user.school_name || "暂无", // 学校名称
@@ -613,6 +681,7 @@ export default {
             account: user.account_name || "暂无", // 账户
             userid: user.user_id,
             role: user.admin_role || 0, // 角色,假设 1 为管理员,0 为普通用户
+            rrole: user.rrole || 0, // 角色,假设 1 为集团管理员,0 为普通用户
             school: user.s_id,
             org: user.org,
             type: user.usertype,
@@ -624,11 +693,12 @@ export default {
 
           // this.tableData = Array(this.pageSize * (this.currentPage - 1)).fill(null).concat(users);
           this.tableData = users;
+          console.log("you", res.data);
           this.total = res.data[0][0].total_count;
           this.tableData_stop = res.data[2][0].num;
           this.tableData_start = res.data[1][0].num;
           this.tableLoading = false;
-          console.log("you", res.data);
+          
 
         })
         .catch((err) => {
@@ -688,6 +758,14 @@ export default {
           });
         });
     },
+    setRole(row) {
+      // 弹出设置角色的对话框
+      this.set_role_dialog = true;
+      this.roleVal = this.roleType(row)
+      this.check_user_id = row.userid; // 将选中的用户ID存储到check_user_id中
+      console.log(row);
+      
+    },
     //设置管理员
     ajax_admin(userid, role) {
       // 判断用户的角色,弹出相应的提示
@@ -1638,9 +1716,11 @@ export default {
   position: relative;
   font-size: 14px;
 }
-.input_tip{
+
+.input_tip {
   margin: 0 49px;
 }
+
 .el-dialog {
   position: relative;
   margin: 0;

+ 43 - 16
src/components/organList.vue

@@ -30,18 +30,20 @@
                 <el-table-column show-overflow-tooltip prop="ctime" label="创建时间" min-width="45"></el-table-column>
                 <el-table-column label="是否禁用/使用期限" min-width="45">
                     <template #default="scope">
-                        <span v-if="scope.row.isLogin === '1'">启用</span>
+                        <span v-if="scope.row.isLogin === '1' || scope.row.isLogin === 'null' || scope.row.isLogin === ''">启用</span>
                         <span v-else-if="scope.row.isLogin === '2'">禁用</span>
                         <span v-else>{{ scope.row.isLogin }}</span>
                     </template>
                 </el-table-column>
-                <el-table-column label="操作" width="220px">
+                <el-table-column label="操作" width="300px">
                     <template slot-scope="scope">
                         <div class="operate">
                             <button @click="update(scope.row)">编辑</button>
-                            <button @click="enable(scope.row)">
+                            <button @click="enable(scope.row, 'enable')">
                                 {{ scope.row.isLogin === '2' ? '启用' : '禁用' }}
                             </button>
+                            <button v-if="scope.row.isLogin !== '2'"
+                                @click="open_enable_organ(scope.row, 'useDate')">/&nbsp;使用期限</button>
                             <button @click="toPage(scope.row)">批量创建</button>
                             <button @click="permissionSetting(scope.row)"
                                 v-show="!unShowJurUser.includes(userid)">权限设置</button>
@@ -152,8 +154,8 @@
                             </span>
                         </div>
                     </div>
-                     <!-- 描述 -->
-                     <div class="el-form-item">
+                    <!-- 描述 -->
+                    <div class="el-form-item">
                         <label class="el-form-item__label" style="width: 100px">描述</label>
                         <div class="el-form-item__content" style="margin-left: 5px">
                             <span>
@@ -189,8 +191,8 @@
             </div>
         </el-dialog>
         <!-- 启用弹窗 -->
-        <el-dialog title="启用组织" class="table" :visible.sync="enable_organ_dialog" :before-close="close_enable_organ"
-            width="700px">
+        <el-dialog :title="enableDiaTitle" class="table" :visible.sync="enable_organ_dialog"
+            :before-close="close_enable_organ" width="700px">
             <div class="el_dialog_org_content">
                 <form class="el-form">
                     <!-- 使用期限 -->
@@ -234,6 +236,7 @@ export default {
             add_organ_dialog: false,
             add_organ_dialog2: false,
             enable_organ_dialog: false,
+            dialogAction: "",
             useDate: "",
             orgName: "",
             randomCode: "",
@@ -254,6 +257,9 @@ export default {
     },
     computed: {
         ...mapGetters(['userid']),
+        enableDiaTitle() {
+            return this.dialogAction === 'enable' ? '启用组织' : '设置使用期限'
+        }
     },
     // created() {
     //     this.formatDate();
@@ -285,7 +291,7 @@ export default {
             this.$ajax
                 .post(API_CONFIG.baseUrl, params)
                 .then((res) => {
-                    // console.log("返回的数据为:", res.data);  // 检查返回的数据
+                    console.log("返回的数据为:", res.data);  // 检查返回的数据
                     if (res.data && Array.isArray(res.data[0])) {
                         // 使用 map() 提取所有组织名称
                         this.organizations = res.data[0]
@@ -341,6 +347,7 @@ export default {
         },
         close_enable_organ() {
             this.enable_organ_dialog = false;
+            this.useDate = "";
         },
         //新增组织
         ajax_add_org() {
@@ -464,16 +471,27 @@ export default {
 
             this.useDate = `${year}-${month}-${day}`; // 返回格式化后的日期字符串
         },
-        enable(row) {
+        enable(row, action) {
             if (row.isLogin === '2') {
                 this.enable_organ_dialog = true;
                 this.nid = row.id;
+                this.dialogAction = action;
+                this.formatDate();
+                console.log(row);
             }
             else {
                 this.disableOrgan(row);
             }
-
-
+        },
+        open_enable_organ(row) {
+            this.enable_organ_dialog = true;
+            this.nid = row.id;
+            this.dialogAction = 'useDate';
+            if (row.isLogin === '1' || row.isLogin === 'null' || row.isLogin === '') {
+                this.formatDate();
+            } else {
+                this.useDate = row.isLogin;
+            }
         },
         enable_organ() {
             let params = [
@@ -489,12 +507,21 @@ export default {
                     console.log("👉", res.data);
                     this.enable_organ_dialog = false;
                     this.useDate = "";
-                    this.$message({
-                        message: '启用成功',
-                        type: 'success'
-                    });
+                    if (this.dialogAction === 'enable') {
+                        this.$message({
+                            message: '启用成功',
+                            type: 'success'
+                        });
+                    } else if (this.dialogAction === 'useDate') {
+                        this.$message({
+                            message: '设置成功',
+                            type: 'success'
+                        });
+                    }
                     // this.formatDate();
                     this.getOrgan();
+                    console.log(11111);
+
                     await addOp({
                         uid: this.userid,
                         cid: "",
@@ -639,7 +666,7 @@ export default {
 
 .operate {
     display: flex;
-    gap: 3px;
+    gap: 5px;
 }
 
 /* 新增组织的内容容器 */

+ 46 - 11
src/components/schoolList.vue

@@ -39,25 +39,27 @@
 				</el-table-column>
 				<el-table-column show-overflow-tooltip prop="detail" label="描述" min-width="45">
 					<template slot-scope="scope">
-                        {{ scope.row.detail || '-' }} <!-- 如果 org 为空,显示 '-' -->
-                    </template>
+						{{ scope.row.detail || '-' }} <!-- 如果 org 为空,显示 '-' -->
+					</template>
 				</el-table-column>
 				<el-table-column show-overflow-tooltip prop="area" label="区域" min-width="45"></el-table-column>
 				<el-table-column show-overflow-tooltip prop="ctime" label="创建时间" min-width="45"></el-table-column>
 				<el-table-column label="是否禁用/使用期限" min-width="45">
 					<template #default="scope">
-						<span v-if="scope.row.isLogin === '1'">启用</span>
+						<span v-if="scope.row.isLogin === '1' || scope.row.isLogin === 'null' || scope.row.isLogin === ''">启用</span>
 						<span v-else-if="scope.row.isLogin === '2'">禁用</span>
 						<span v-else>{{ scope.row.isLogin }}</span>
 					</template>
 				</el-table-column>
-				<el-table-column label="操作" width="220px">
+				<el-table-column label="操作" width="300px">
 					<template slot-scope="scope">
 						<div class="operate">
 							<button @click="update(scope.row)">编辑</button>
-							<button @click="enable(scope.row)">
+							<button @click="enable(scope.row,'enable')">
 								{{ scope.row.isLogin === '2' ? '启用' : '禁用' }}
 							</button>
+							<button v-if="scope.row.isLogin !== '2'"
+								@click="open_enable_school(scope.row, 'useDate')">/&nbsp;使用期限</button>
 							<button @click="toPage(scope.row)">批量创建</button>
 							<button @click="permissionSetting(scope.row)"
 								v-show="!unShowJurUser.includes(userid)">权限设置</button>
@@ -264,7 +266,7 @@
 			</div>
 		</el-dialog>
 		<!-- 启用弹窗 -->
-		<el-dialog title="启用学校" class="table" :visible.sync="enable_school_dialog" :before-close="close_enable_school"
+		<el-dialog :title="enableDiaTitle" class="table" :visible.sync="enable_school_dialog" :before-close="close_enable_school"
 			width="700px">
 			<div class="el_dialog_org_content">
 				<form class="el-form">
@@ -311,6 +313,7 @@ export default {
 			add_school_dialog: false,
 			add_school_dialog2: false,
 			enable_school_dialog: false,
+			dialogAction: '',
 			useDate: "",
 			sch_name: "", //学校名称
 			form: {
@@ -446,6 +449,7 @@ export default {
 		},
 		close_enable_school() {
 			this.enable_school_dialog = false;
+			this.useDate = "";
 		},
 		//组织查询
 		ajax_org() {
@@ -582,15 +586,36 @@ export default {
 					console.log(err);
 				});
 		},
-		enable(row) {
+		formatDate() {
+            // 使用示例
+            const today = new Date(); // 获取当前日期
+            const year = today.getFullYear(); // 获取年份
+            const month = String(today.getMonth() + 1).padStart(2, '0'); // 获取月份,注意月份从0开始,所以要加1,并确保是两位数
+            const day = String(today.getDate()).padStart(2, '0'); // 获取日期,并确保是两位数
+
+            this.useDate = `${year}-${month}-${day}`; // 返回格式化后的日期字符串
+        },
+		enable(row,action) {
 			if (row.isLogin === '2') {
 				this.enable_school_dialog = true;
 				this.nid = row.id;
+				this.dialogAction = action;
+				this.formatDate();
 			}
 			else {
 				this.disableSchool(row);
 			}
 
+		},
+		open_enable_school(row) {
+			this.enable_school_dialog = true;
+			this.nid = row.id;
+			this.dialogAction = 'useDate';
+			if (row.isLogin === '1' || row.isLogin === 'null' || row.isLogin === '') {
+                this.formatDate();
+            } else {
+                this.useDate = row.isLogin;
+            }
 		},
 		enable_school() {
 			let params = [
@@ -606,10 +631,17 @@ export default {
 					console.log("👉", res.data);
 					this.enable_school_dialog = false;
 					this.useDate = "";
-					this.$message({
-						message: '启用成功',
-						type: 'success'
+					if (this.dialogAction === 'enable') {
+						this.$message({
+							message: '启用成功',
+							type: 'success'
 					});
+					} else if (this.dialogAction === 'useDate') {
+						this.$message({
+							message: '设置成功',
+							type: 'success'
+						});
+					}
 					// this.formatDate();
 					this.getSchool();
 					await addOp({
@@ -743,6 +775,9 @@ export default {
 	},
 	computed: {
 		...mapGetters(["userid"]),
+		enableDiaTitle() {
+			return this.dialogAction === 'enable' ? '启用学校' : '设置使用期限'
+		}
 	},
 };
 </script>
@@ -798,7 +833,7 @@ export default {
 
 .operate {
 	display: flex;
-	gap: 3px;
+	gap: 5px;
 }
 
 .operate button {