Browse Source

新增黑名单管理界面 其他界面新增了的部门筛选

hzj18279462576@163.com 1 year ago
parent
commit
d392d704d0

BIN
src/assets/icons/blackList.png


BIN
src/assets/icons/blackListS.png


+ 29 - 3
src/layout/sidebar/SidevarItem.vue

@@ -76,7 +76,7 @@
             v-else
             src="@/assets/icons/order.png"
             alt=""
-            style="width: 22px; height: 22px; margin: 0 18px"
+            style="width: 24px; height: 22px; margin: 0 18px"
           />
           <span>订单管理</span>
         </el-menu-item>
@@ -111,7 +111,7 @@
             v-if="activeIndex == '/hotel/statement'"
             src="@/assets/icons/statementS.png"
             alt=""
-            style="width: 24px; height: 22px; margin: 0 18px"
+            style="width: 22px; height: 22px; margin: 0 18px"
           />
           <img
             v-else
@@ -121,6 +121,25 @@
           />
           <span>统计报表</span>
         </el-menu-item>
+        <!-- 黑名单管理 -->
+        <el-menu-item
+          v-if="item.name=='blackList'"
+          index="/hotel/blackList"
+        >
+          <img
+            v-if="activeIndex == '/hotel/blackList'"
+            src="@/assets/icons/blackListS.png"
+            alt=""
+            style="width: 22px; height: 22px; margin: 0 18px"
+          />
+          <img
+            v-else
+            src="@/assets/icons/blackList.png"
+            alt=""
+            style="width: 22px; height: 22px; margin: 0 18px"
+          />
+          <span>黑名单管理</span>
+        </el-menu-item>
         <!-- 设备管理 -->
         <el-sub-menu index="doorLocks" v-if="item.name == 'doorLocks'">
           <template #title>
@@ -197,7 +216,7 @@
             v-if="activeIndex == '/hotel/system'"
             src="@/assets/icons/systemS.png"
             alt=""
-            style="width: 24px; height: 22px; margin: 0 18px"
+            style="width: 22px; height: 22px; margin: 0 18px"
           />
           <img
             v-else
@@ -364,6 +383,13 @@ onBeforeMount(() => {
         meta: { isAuth: true, title: "统计报表" },
       });
     }
+     // 黑名单管理
+     if (i.path == "blackList") {
+      roles.push({
+        name: "blackList",
+        meta: { isAuth: true, title: "黑名单管理" },
+      });
+    }
     // 设备管理
     else if (i.path == "doorLock" || i.path == "meter") {
       let flag=roles.some(item=>{

+ 5 - 5
src/router/index.js

@@ -24,10 +24,10 @@ const routes = [
     component: Layout,
     children: [
       // {
-      //   path: "building",
-      //   name: "building",
-      //   meta: { isAuth: true, title: "楼栋单元管理" },
-      //   component: () => import("@/views/building/building.vue"),
+      //   path: "blacklist",
+      //   name: "blacklist",
+      //   meta: { isAuth: true, title: "黑名单管理" },
+      //   component: () => import("@/views/blacklist/blacklist.vue"),
       // },
       // {
       //   path: "roomList",
@@ -124,7 +124,7 @@ const routes = [
 ];
 const router = createRouter({
   // history: createWebHashHistory("/business"), // 线上地址
-  history: createWebHashHistory("/hotel/testManage"), // 测试环境发布地址
+  history: createWebHashHistory("/hotel/iHotelStudentManage"), // 测试环境发布地址
   // history: createWebHashHistory("/hotelReservation/pc3/"), // 测试环境发布地址
   routes: routes,
 });

+ 41 - 0
src/store/modules/user.js

@@ -525,6 +525,24 @@ const mutations = {
         });
         arrFlag.statement = statement;
         // sessionStorage.setItem("statement", JSON.stringify(statement));
+      } else if (i.name == "黑名单管理") {
+        let blackList = {};
+        i.functionPoints.forEach((j) => {
+          if (j.functionPoint == "移除") {
+            blackList.yichu = j.status;
+          } else if (j.functionPoint == "查看界面") {
+            blackList.chakanjiemian = j.status;
+            if (j.status == 1) {
+              roleList.push({
+                name: "黑名单管理",
+                path: "blackList",
+                route: "/hotel/blackList",
+              });
+            }
+          }
+        });
+        arrFlag.blackList = blackList;
+        // sessionStorage.setItem("statement", JSON.stringify(statement));
       } else if (i.name == "门锁管理") {
         let doorLock = {};
         i.functionPoints.forEach((j) => {
@@ -680,6 +698,8 @@ const mutations = {
             system.cuijiaoshezhi = j.status;
           } else if (j.functionPoint == "设施服务设置") {
             system.sheshifuwushezhi = j.status;
+          } else if (j.functionPoint == "黑名单设施设置") {
+            system.heimingdanshezhi = j.status;
           } else if (j.functionPoint == "查看界面") {
             system.chakanjiemian = j.status;
             if (j.status == 1) {
@@ -741,6 +761,7 @@ const actions = {
           res.data.data.permissionSettingId
         );
         sessionStorage.setItem("username", res.data.data.userName);
+        sessionStorage.setItem("organizations", JSON.stringify(res.data.data.organizations));
         console.log(res.data.data.userName, "名字账号");
         let datas = {
           permissionSettingId: res.data.data.permissionSettingId,
@@ -992,6 +1013,24 @@ const actions = {
             });
             arrFlag.statement = statement;
             // sessionStorage.setItem("statement", JSON.stringify(statement));
+          } else if (i.name == "黑名单管理") {
+            let blackList = {};
+            i.functionPoints.forEach((j) => {
+              if (j.functionPoint == "移除") {
+                blackList.yichu = j.status;
+              } else if (j.functionPoint == "查看界面") {
+                blackList.chakanjiemian = j.status;
+                if (j.status == 1) {
+                  roleList.push({
+                    name: "黑名单管理",
+                    path: "blackList",
+                    route: "/hotel/blackList",
+                  });
+                }
+              }
+            });
+            arrFlag.blackList = blackList;
+            // sessionStorage.setItem("statement", JSON.stringify(statement));
           } else if (i.name == "门锁管理") {
             let doorLock = {};
             i.functionPoints.forEach((j) => {
@@ -1147,6 +1186,8 @@ const actions = {
                 system.cuijiaoshezhi = j.status;
               } else if (j.functionPoint == "设施服务设置") {
                 system.sheshifuwushezhi = j.status;
+              } else if (j.functionPoint == "黑名单设施设置") {
+                system.heimingdanshezhi = j.status;
               } else if (j.functionPoint == "查看界面") {
                 system.chakanjiemian = j.status;
                 if (j.status == 1) {

+ 122 - 51
src/views/account/account.vue

@@ -58,7 +58,11 @@
         </div>
         <!-- 按钮列表 -->
         <div class="gongneng">
-          <el-button type="primary" v-if="flagBtn.tianjia==1" color="rgba(0, 97, 255, 1)" @click="addlist"
+          <el-button
+            type="primary"
+            v-if="flagBtn.tianjia == 1"
+            color="rgba(0, 97, 255, 1)"
+            @click="addlist"
             >添加</el-button
           >
         </div>
@@ -89,6 +93,19 @@
               <span>{{ row.adminMenuName }}</span>
             </template>
           </el-table-column>
+          <el-table-column align="center" prop="adminName" label="可管理部门" width="230">
+            <template #default="{ row }">
+              <div class="ul" style="display:flex;flex-wrap:wrap;">
+                <el-tag
+                  v-for="i in row.checkOrg"
+                  style="margin: 5px"
+                  type="primary"
+                  >{{ i.name }}</el-tag
+                >
+              </div>
+              <!-- <el-tag v-for="i in row.checkOrg" type="primary">{{i.name}}</el-tag> -->
+            </template>
+          </el-table-column>
           <el-table-column align="center" prop="name" label="真实姓名" />
           <el-table-column align="center" prop="phoneNumber" label="手机号码" />
           <el-table-column align="center" prop="department" label="身份">
@@ -97,6 +114,8 @@
               <span v-if="row.department == 1">学生</span>
               <span v-if="row.department == 4">教职工</span>
               <span v-if="row.department == 5">校友</span>
+              <span v-if="row.department == 6">访客应用身份</span>
+              <span v-if="row.department == 7">临时人员</span>
             </template>
           </el-table-column>
           <el-table-column align="center" prop="createTime" label="创建时间" />
@@ -104,9 +123,15 @@
           <el-table-column align="center" label="操作" width="180">
             <template #default="scope">
               <div class="options">
-                <div v-if="flagBtn.bianji==1" class="look" @click="edit(scope.row)">编辑</div>
+                <div
+                  v-if="flagBtn.bianji == 1"
+                  class="look"
+                  @click="edit(scope.row)"
+                >
+                  编辑
+                </div>
                 <el-popconfirm
-                  v-if="flagBtn.shanchu==1"
+                  v-if="flagBtn.shanchu == 1"
                   width="220"
                   confirm-button-text="确认"
                   cancel-button-text="取消"
@@ -158,12 +183,6 @@
             status-icon
           >
             <el-form-item label="微校卡号 :" prop="cardNum">
-              <!-- <el-input
-              v-model="ruleForm.cardNum"
-              placeholder="请输入微校卡号"
-              clearable
-              :disabled="dialongTitle == '编辑信息'"
-            /> -->
               <el-select
                 v-model="ruleForm.cardNum"
                 popper-class="more-tag-data"
@@ -171,7 +190,7 @@
                 remote
                 :remote-method="conteactMethod"
                 placeholder="请选择微校卡号"
-                style="width: 200px"
+                style="width: 400px"
                 @change="schoolCardChange"
               >
                 <el-option
@@ -181,9 +200,13 @@
                   :value="item.cardNumber"
                 >
                   <div style="float: left">
-                    <span style="display:inline-block;width: 80px;">{{ item.userName }}</span>
-                    <span style="display:inline-block;width: 120px;">部门 : {{ item.departmentName }}</span>
-                    <span >微校卡号 : {{ item.cardNumber }}</span>
+                    <span style="display: inline-block; width: 80px">{{
+                      item.userName
+                    }}</span>
+                    <span style="display: inline-block; width: 120px"
+                      >部门 : {{ item.departmentName }}</span
+                    >
+                    <span>微校卡号 : {{ item.cardNumber }}</span>
                   </div>
                 </el-option>
                 <template #footer>
@@ -205,28 +228,24 @@
                 v-model.trim="ruleForm.corpnName"
                 placeholder="请输入姓名"
                 clearable
+                style="width: 400px"
                 :disabled="true"
               />
             </el-form-item>
             <el-form-item label="身份 :" prop="department">
-              <!-- <el-input
-              v-model="ruleForm.department"
-              placeholder="请输入部门"
-              clearable
-            /> -->
               <el-select
-                style="width: 200px"
+                style="width: 400px"
                 v-model="ruleForm.department"
                 class="m-2"
                 placeholder="请选择身份"
                 :disabled="true"
               >
-              <el-option label="学生" value="1" />
-              <el-option label="教职工" value="4" />
-              <el-option label="校友" value="5" />
-              <el-option label="访客应用身份" value="6" />
-              <el-option label="临时人员" value="7" />
-              <el-option label="其他" value="0" />
+                <el-option label="学生" value="1" />
+                <el-option label="教职工" value="4" />
+                <el-option label="校友" value="5" />
+                <el-option label="访客应用身份" value="6" />
+                <el-option label="临时人员" value="7" />
+                <el-option label="其他" value="0" />
               </el-select>
             </el-form-item>
             <el-form-item label="手机号码 :" prop="corpnPhone">
@@ -234,6 +253,7 @@
                 v-model.trim="ruleForm.corpnPhone"
                 placeholder="请输入手机号码"
                 clearable
+                style="width: 400px"
                 :disabled="true"
               />
             </el-form-item>
@@ -242,6 +262,7 @@
                 v-model.trim="ruleForm.adminName"
                 placeholder="请输入用户名"
                 clearable
+                style="width: 400px"
               />
             </el-form-item>
             <el-form-item label="密码 :" prop="password">
@@ -249,18 +270,12 @@
                 v-model.trim="ruleForm.password"
                 placeholder="请输入密码"
                 clearable
+                style="width: 400px"
               />
             </el-form-item>
-            <!-- <el-form-item label="确认密码 :" prop="againPass">
-            <el-input
-              v-model="ruleForm.againPass"
-              placeholder="请再一次输入密码"
-              clearable
-            />
-          </el-form-item> -->
             <el-form-item label="角色 :" prop="adminMenuId">
               <el-tree
-                style="max-width: 600px"
+                style="max-width: 600px; width: 400px"
                 :data="roleData"
                 ref="editMemberTree"
                 show-checkbox
@@ -271,7 +286,23 @@
                 @check="editMemberCheckChange"
               />
             </el-form-item>
-           
+            <el-form-item label="部门 :" prop="icCard">
+              <el-select
+                style="width: 400px"
+                v-model="ruleForm.icCard"
+                class="m-2"
+                placeholder="请选择部门"
+                multiple
+                :clearable="true"
+              >
+                <el-option
+                  v-for="i in departmentList"
+                  :label="i.name"
+                  :key="i.id"
+                  :value="i.id"
+                />
+              </el-select>
+            </el-form-item>
 
             <el-form-item class="options">
               <el-button
@@ -323,6 +354,7 @@ const searchInput = reactive({
   createTime: "",
 }); // 搜索按钮数据
 const flagBtn = ref(); // 按钮权限
+const departmentList = ref(); // 部门
 
 watch(
   () => searchInput.createTime,
@@ -363,6 +395,7 @@ const ruleForm = reactive({
   adminName: "",
   password: "",
   department: "",
+  icCard: "",
   id: "",
 });
 var checkUserName = (rule, value, callback) => {
@@ -467,7 +500,7 @@ const rules = reactive({
     },
     // { validator: checkPhone, trigger: "blur" },
   ],
-
+  icCard: [{ required: true, message: "部门不能为空", trigger: "blur" }],
   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
 });
 
@@ -522,9 +555,33 @@ const getList = async () => {
     });
   }
 };
+
+// 部门数据
+const departmentData = async () => {
+  let res = await axios({
+    method: "post",
+    url: api.value + "/organization/queryAll",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+  });
+  console.log(res, "部门数据");
+  if (res.data.code == 200) {
+    departmentList.value = res.data.data;
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
+
 // 微校卡号数据
 const schoolData = async () => {
-  schoolCardPage.value=1
+  schoolCardPage.value = 1;
   let data = {
     permissionSettingId: sessionStorage.getItem("permissionSettingId"),
     page: schoolCardPage.value,
@@ -600,7 +657,7 @@ const addschoolCardListMore = async () => {
   }
 };
 // 改变微校卡号
-const schoolCardChange =async (value) => {
+const schoolCardChange = async (value) => {
   console.log(value);
   let data = {
     permissionSettingId: sessionStorage.getItem("permissionSettingId"),
@@ -619,10 +676,10 @@ const schoolCardChange =async (value) => {
   });
   console.log(res, "微校卡号人");
   if (res.data.code == 200) {
-    let resdata=res;
-    ruleForm.corpnName=res.data.data.records[0].userName
-    ruleForm.corpnPhone=res.data.data.records[0].phone
-    ruleForm.department=res.data.data.records[0].department
+    let resdata = res;
+    ruleForm.corpnName = res.data.data.records[0].userName;
+    ruleForm.corpnPhone = res.data.data.records[0].phone;
+    ruleForm.department = res.data.data.records[0].department;
   } else {
     ElMessage({
       type: "error",
@@ -671,6 +728,7 @@ const addlist = () => {
   ruleForm.adminMenuId = "";
   ruleForm.password = "";
   ruleForm.department = "";
+  ruleForm.icCard = "";
   ruleForm.id = "";
   nextTick(() => {
     editMemberTree.value.setCheckedKeys([]);
@@ -692,18 +750,28 @@ const cancelAdd = () => {
 };
 //编辑按钮
 const edit = (row) => {
+  console.log(row);
   dialongTitle.value = "编辑信息";
   addDialogVisible.value = true;
+  ruleForm.id = row.id;
   ruleForm.corpnPhone = row.phoneNumber;
   ruleForm.corpnName = row.name;
   ruleForm.adminName = row.userNumber;
   ruleForm.cardNum = row.cardNumber;
-  ruleForm.adminMenuId = row.usersId;
+  ruleForm.adminMenuId = row.adminMenu.id;
   ruleForm.password = row.passWord;
   ruleForm.department = row.department;
-  ruleForm.id = row.id;
+  if (row.checkOrg) {
+    let arr = [];
+    row.checkOrg.forEach((i) => {
+      arr.push(i.id);
+    });
+    ruleForm.icCard = arr;
+  }
   nextTick(() => {
-    editMemberTree.value.setCheckedKeys([row.adminMenu.id]);
+    if(row.adminMenu){
+      editMemberTree.value.setCheckedKeys([row.adminMenu.id]);
+    }
   });
 };
 // 确认添加员工
@@ -723,6 +791,7 @@ const submitAdd = lodash.debounce(async (formEl) => {
             passWord: ruleForm.password,
             phoneNumber: ruleForm.corpnPhone,
             department: ruleForm.department,
+            checkOrg: ruleForm.icCard.join(","),
             id: ruleForm.id,
           },
         };
@@ -764,6 +833,7 @@ const submitAdd = lodash.debounce(async (formEl) => {
           passWord: ruleForm.password,
           phoneNumber: ruleForm.corpnPhone,
           department: ruleForm.department,
+          checkOrg: ruleForm.icCard.join(","),
         };
         let res = await axios({
           method: "post",
@@ -910,6 +980,7 @@ onBeforeMount(() => {
   getList();
   roleList();
   schoolData();
+  departmentData();
 });
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);
@@ -942,11 +1013,11 @@ onUnmounted(() => {
       color: #4392f7;
     }
   }
-  .scroll{
-    width:calc(100% );
+  .scroll {
+    width: calc(100%);
     height: calc(100% - 61px);
-    display:flex;
-    flex-direction:column;
+    display: flex;
+    flex-direction: column;
   }
   .middle {
     width: calc(100% - 60px);
@@ -958,7 +1029,7 @@ onUnmounted(() => {
       display: flex;
       flex-wrap: wrap;
       align-items: center;
-        // margin: 10px 0 0 0;
+      // margin: 10px 0 0 0;
       .search {
         margin-left: 0 !important;
         color: #fff;
@@ -1012,7 +1083,7 @@ onUnmounted(() => {
   }
   .footer {
     width: calc(100% - 60px);
-    flex:1;
+    flex: 1;
     margin: 0 auto;
     overflow: auto;
     .el-table--fit {
@@ -1107,7 +1178,7 @@ onUnmounted(() => {
     align-items: center;
     justify-content: space-between;
     margin: 0 30px;
-    height:60px;
+    height: 60px;
 
     span {
       color: #000;

File diff suppressed because it is too large
+ 1069 - 0
src/views/blackList/blackList.vue


+ 5 - 5
src/views/doorLock/doorLock.vue

@@ -41,7 +41,7 @@
               <el-select
                 v-model="searchInput.buildingId"
                 placeholder="请选择楼栋单元"
-                style="width: 200px;margin-left: 20px"
+                style="width: 200px;margin-left:10px"
                 @change="searchBtn"
                 :clearable="true"
               >
@@ -53,10 +53,10 @@
                 />
               </el-select>
             </div>
-            <div class="condition">
+            <div class="condition" style="margin-left:30px">
               <span>房间类型</span>
               <el-select
-                style="width: 180px; margin-left: 20px"
+                style="width: 180px;margin-left:10px"
                 v-model="searchInput.houseType"
                 class="m-2"
                 placeholder="请选择类型"
@@ -3636,13 +3636,13 @@ onUnmounted(() => {
       .condition {
         display: flex;
         align-items: center;
-        margin: 0 0 10px 0;
+        // margin: 0 0 10px 0;
       }
     }
     .changeItems {
       display: flex;
       flex-wrap: wrap;
-      margin:0;
+      margin:10px 0 0 0;
       .changeItem {
         padding: 0 15px;
         height: 30px;

+ 1 - 1
src/views/meter/meter.vue

@@ -142,7 +142,7 @@
         >
           <!-- <el-table-column align="center" type="selection" width="80" /> -->
           <el-table-column
-            width="150"
+            width="100"
             align="center "
             type="index"
             label="序号"

+ 94 - 39
src/views/order/order.vue

@@ -18,6 +18,23 @@
             />
           </div>
           <div class="condition">
+            <span>部门 : </span>
+            <el-select
+              v-model="searchInput.orgId"
+              placeholder="请选择部门"
+              style="width: 200px"
+              @change="searchBtn"
+              :clearable="true"
+            >
+              <el-option
+                v-for="item in departmentList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              />
+            </el-select>
+          </div>
+          <div class="condition">
             <span>楼栋单元 : </span>
             <el-select
               v-model="searchInput.buildingId"
@@ -263,11 +280,7 @@
               >
             </template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            width="140"
-            label="钥匙类型"
-          >
+          <el-table-column align="center" width="140" label="钥匙类型">
             <template #default="{ row }">
               <div v-if="row.lockStatus == 1">
                 <span style="display: inline-block; transform: translateY(-4px)"
@@ -388,6 +401,18 @@
           />
           <el-table-column
             align="center"
+            prop="orgName"
+            label="部门"
+            width="100"
+          />
+          <el-table-column
+            align="center"
+            prop="cardNumber"
+            label="部门职工号"
+            width="150"
+          />
+          <el-table-column
+            align="center"
             prop="orderNumber"
             show-overflow-tooltip
             width="190"
@@ -535,10 +560,7 @@
               <div class="edit">
                 <!-- 取消订单 -->
                 <el-popconfirm
-                  v-if="
-                    scope.row.orderStart == 1 &&
-                    flagBtn.quxiao == 1
-                  "
+                  v-if="scope.row.orderStart == 1 && flagBtn.quxiao == 1"
                   width="220"
                   confirm-button-text="确认"
                   cancel-button-text="取消"
@@ -552,7 +574,10 @@
                   </template>
                 </el-popconfirm>
                 <el-popconfirm
-                  v-if="(scope.row.orderStart == 2 || scope.row.orderStart == 3) && flagBtn.quxiao == 1"
+                  v-if="
+                    (scope.row.orderStart == 2 || scope.row.orderStart == 3) &&
+                    flagBtn.quxiao == 1
+                  "
                   width="220"
                   confirm-button-text="确认"
                   cancel-button-text="取消"
@@ -1088,7 +1113,9 @@
               >
                 入住
               </el-button>
-              <span style="color:#e8a849" v-if="checkAdvanceTime">( 提示:当前未到入住时间,是否前提办理入住?)&nbsp;&nbsp;</span>
+              <span style="color: #e8a849" v-if="checkAdvanceTime"
+                >( 提示:当前未到入住时间,是否前提办理入住?)&nbsp;&nbsp;</span
+              >
             </div>
           </div>
         </el-dialog>
@@ -1564,9 +1591,11 @@ const tableData = reactive({
 
 const roomTypeData = ref(); // 房型数据
 const buildData = ref(); // 楼栋数据
+const departmentList = ref(); // 部门数据
 
 const searchInput = reactive({
   keyWord: "",
+  department: "", // 部门
   buildingId: "", // 楼栋单元
   houseType: "", // 房间类型
   houseId: "", // 房型名称
@@ -1578,6 +1607,7 @@ const searchInput = reactive({
   cancelTime: "",
   liveTime: "",
   leaveTime: "",
+  orgId: "",
 }); // 搜索按钮数据
 
 const currentPage = ref(1); // 当前页
@@ -1649,7 +1679,7 @@ const remarkForm = reactive({
 // 入住(---------------------------------------------------------)
 const orderDialogVisible = ref(false); // 控制添加员工弹窗
 const changeIndex = ref(1);
-const checkAdvanceTime=ref(false); // 判断当前房间的入住时间和现在时间作对比,提前入住要提示
+const checkAdvanceTime = ref(false); // 判断当前房间的入住时间和现在时间作对比,提前入住要提示
 const checkInIndex = ref(3);
 const checkInRef = ref();
 const lockShow = ref(false);
@@ -1821,7 +1851,7 @@ const payPriceRuleForm = reactive({
 });
 // 表单验证
 var priceRules = (rule, value, callback) => {
-  let reg=/^(0|[1-9]\d*)(\.\d{1,2})?$/
+  let reg = /^(0|[1-9]\d*)(\.\d{1,2})?$/;
   if (reg.test(value)) {
     callback();
   } else {
@@ -1918,7 +1948,7 @@ const roomTypeList = async () => {
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("user_head"),
     },
-    params:data
+    params: data,
   });
   console.log(res, "房型列表数据");
   if (res.data.code == 200) {
@@ -1932,6 +1962,28 @@ const roomTypeList = async () => {
     });
   }
 };
+// 部门数据
+const departmentData = async () => {
+  let res = await axios({
+    method: "post",
+    url: api.value + "/organization/queryAll",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+  });
+  console.log(res, "部门数据");
+  if (res.data.code == 200) {
+    departmentList.value = res.data.data;
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
 
 // 查看员工列表
 const getList = async () => {
@@ -1947,6 +1999,7 @@ const getList = async () => {
     orderStatus: searchInput.status,
     keyType: searchInput.lockType,
     giveBack: searchInput.lockStatus,
+    orgId: searchInput.orgId,
   };
   if (searchInput.payTime) {
     data.payPriceStartTime = searchInput.payTime[0];
@@ -2082,7 +2135,7 @@ const orderInfoClose = () => {
 // 入住弹窗 (----------------------------------------------)
 const orderliveRoom = async (row) => {
   console.log(row);
-  checkAdvanceTime.value = false;// 重置判断是否前提办理入住
+  checkAdvanceTime.value = false; // 重置判断是否前提办理入住
   // 判断有没有绑定门锁 没有的话只能用钥匙
   {
     let data = {
@@ -2141,12 +2194,12 @@ const orderliveRoom = async (row) => {
     checkInRuleForm.houseNumberId = data.houseNumberId;
     checkInRuleForm.orderNumber = data.orderNumber;
     checkInRuleForm.forecastTime = data.reserveLiveTime;
-    let nowTime=dayjs().format('YYYY-MM-DD HH:mm:ss')
-    if(nowTime < checkInRuleForm.forecastTime){
-      checkAdvanceTime.value=true;
+    let nowTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
+    if (nowTime < checkInRuleForm.forecastTime) {
+      checkAdvanceTime.value = true;
     }
-    console.log(nowTime,'现在时间');
-    console.log(checkInRuleForm.forecastTime,'预抵日期');
+    console.log(nowTime, "现在时间");
+    console.log(checkInRuleForm.forecastTime, "预抵日期");
     console.log(nowTime < checkInRuleForm.forecastTime);
 
     checkInRuleForm.preionizationTime = data.reserveLeaveTime;
@@ -2209,17 +2262,17 @@ const readFingerprint = () => {
     let data = JSON.parse(evt.data);
     if (data.type == 0) {
       console.log(data.data.portNames);
-      let num=0
-      if(data.data.portNames){
-        num=data.data.portNames.length
-        console.log(JSON.parse(evt.data).data.portNames[num-1]);
+      let num = 0;
+      if (data.data.portNames) {
+        num = data.data.portNames.length;
+        console.log(JSON.parse(evt.data).data.portNames[num - 1]);
       }
       // console.log(JSON.parse(evt.data).data.portNames[1]); // 获取到 USB接口
       let params1 = {
         type: 1,
         data: {
           type: 0,
-          portName: JSON.parse(evt.data).data.portNames[num-1],
+          portName: JSON.parse(evt.data).data.portNames[num - 1],
           baudRate: 115200,
         },
       };
@@ -2429,7 +2482,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
         checkInRuleForm.orderStatus == 2 ||
         checkInRuleForm.orderStatus == 3
       ) {
-        let liveTime=dayjs().format('YYYY-MM-DD HH:mm:ss')
+        let liveTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
         let data = {
           adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
           adminId: sessionStorage.getItem("id"), //用户id
@@ -2521,7 +2574,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
           data: datassss,
         });
         if (resssss.data.code == 200) {
-          let liveTime=dayjs().format('YYYY-MM-DD HH:mm:ss')
+          let liveTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
           let data = {
             adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
             adminId: sessionStorage.getItem("id"), //用户id
@@ -2684,7 +2737,7 @@ const paymentCodeClick = async () => {
         if (ress.data.code == 200) {
           if (ress.data.data.tradeState == "SUCCESS") {
             successPay.value = true;
-            let liveTime=dayjs().format('YYYY-MM-DD HH:mm:ss')
+            let liveTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
             let livedata = {
               adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
               adminId: sessionStorage.getItem("id"), //用户id
@@ -2790,10 +2843,10 @@ const lookPassword = (i) => {
   console.log(i);
   passVisible.value = true;
   passForm.pass = i.keyPassWord;
-  if(i.orderStart==4){
+  if (i.orderStart == 4) {
     passForm.reserveLiveTime = i.liveTime;
     passForm.reserveLeaveTime = i.reserveLeaveTime;
-  }else if(i.orderStart==8){
+  } else if (i.orderStart == 8) {
     passForm.reserveLiveTime = i.liveTime;
     passForm.reserveLeaveTime = i.leaveTime;
   }
@@ -3078,18 +3131,18 @@ const searchBtn = lodash.debounce(async () => {
 }, 300);
 
 // 改变房间类型改变房间名称
-const houseTypeChange=(val)=>{
-  searchInput.houseId=""
-  roomTypeList().then(res=>{
-    searchBtn()
-  })
-}
+const houseTypeChange = (val) => {
+  searchInput.houseId = "";
+  roomTypeList().then((res) => {
+    searchBtn();
+  });
+};
 
 // 取消订单 (------------------------------------------------------)
 const orderCancel = async (row) => {
   console.log(row, "取消预定");
   // 待支付订单
-  if(row.orderStart==1){
+  if (row.orderStart == 1) {
     let data = {
       orderNumber: row.orderNumber,
       houseNumberId: row.houseNumberId,
@@ -3123,7 +3176,7 @@ const orderCancel = async (row) => {
     }
   }
   // 已支付 未入住 订单
-  else if(row.orderStart==2 || row.orderStart==3){
+  else if (row.orderStart == 2 || row.orderStart == 3) {
     let data = {
       orderNumber: row.orderNumber,
       houseNumberId: row.houseNumberId,
@@ -3178,6 +3231,7 @@ const importExcel = lodash.debounce(async () => {
     keyType: searchInput.lockType,
     giveBack: searchInput.lockStatus,
     buildingId: searchInput.buildingId,
+    orgId: searchInput.orgId,
   };
   if (searchInput.payTime) {
     data.payPriceStartTime = searchInput.payTime[0];
@@ -3266,6 +3320,7 @@ onBeforeMount(async () => {
   getList();
   roomTypeList();
   schoolData();
+  departmentData();
 });
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);
@@ -3685,7 +3740,7 @@ onUnmounted(() => {
       }
       .el-dialog__body {
         padding: 0 38px;
-        height: 750px;
+        height: 810px;
         overflow: auto;
 
         .userinfo {

+ 21 - 16
src/views/process/process.vue

@@ -136,23 +136,24 @@
               <el-option label="临时人员流程" :value="2" />
             </el-select>
           </div>
-          <!-- <div class="condition">
+          <div class="condition">
             <span>部门 : </span>
             <el-select
               :clearable="true"
-              v-model="searchInput.department"
+              v-model="searchInput.orgId"
               class="m-2"
               placeholder="请选择部门"
-              style="width: 150px"
+              multiple
+              style="width: 400px"
               @change="searchBtn"
             >
               <el-option
-                v-for="i in departmentData"
+                v-for="i in organizations"
                 :label="i.name"
                 :value="i.id"
               />
             </el-select>
-          </div> -->
+          </div>
         </div>
         <div class="inputSearch">
           <el-input
@@ -208,14 +209,16 @@
               label="提交时间"
               width="180"
             />
+            <el-table-column align="center" prop="houseCount" width="150" label="申请房间数量" />
+            <el-table-column align="center" prop="usersName" label="提交人" />
+            <el-table-column align="center" prop="orgName" width="120" label="部门" />
             <el-table-column
               align="center"
               prop="reasonApplication"
               label="申请原因"
               show-overflow-tooltip
-              width="150"
+              width="200"
             />
-            <!-- <el-table-column align="center" prop="houseName" label="审批类型" /> -->
             <el-table-column
               align="center"
               prop="examineAndApproveTime"
@@ -227,15 +230,9 @@
               prop="examineAndApproveRemark"
               label="审批备注"
               show-overflow-tooltip
-              width="150"
+              width="200"
             />
-            <el-table-column align="center" prop="usersName" label="提交人" />
-            <!-- <el-table-column
-              align="center"
-              width="120"
-              prop="changeUsersName"
-              label="替课老师"
-            /> -->
+
             <el-table-column
               align="center"
               prop="secondaryExamineAndApproveTime"
@@ -445,6 +442,9 @@ import { useStore } from "vuex";
 const store = useStore();
 const api = ref("");
 const router = useRouter();
+
+const organizations=ref();// 部门数据
+
 const flagBtn = ref(); // 按钮权限
 const adminMenuParentId = ref(); // 判断是 T0级 还是 T1级
 const destinatio = ref(); // 判断是什么规则审批 (1最上级审批) (2依次审批)
@@ -456,7 +456,7 @@ const searchInput = reactive({
   approvalTime: "", // 审批时间
   status: 10, // 审批状态
   flowType: 2, // 审批流程类型
-  // department: "", // 部门
+  orgId: [], // 部门
 }); // 搜索按钮数据
 
 const nowDay = ref(dayjs().format("YYYY-MM-DD HH:mm:ss"));
@@ -573,6 +573,7 @@ const getList = async () => {
     key: searchInput.keyWord,
     department: searchInput.department,
     adminMenuId: sessionStorage.getItem("permissionSettingId"),
+    OrgIds:searchInput.orgId.join(',')
   };
   if (searchInput.submitTime) {
     data.submissionStartTime = searchInput.submitTime[0];
@@ -746,6 +747,10 @@ const handleCurrentChange = (value) => {
 
 onBeforeMount(async () => {
   api.value = store.state.user.api;
+  organizations.value = JSON.parse(sessionStorage.getItem("organizations"));
+  organizations.value.forEach(i=>{
+    searchInput.orgId.push(i.id)
+  })
   const btnflag = JSON.parse(sessionStorage.getItem("btnflag"));
   adminMenuParentId.value = JSON.parse(
     sessionStorage.getItem("adminMenuParentId")

+ 1 - 1
src/views/roomType/roomType.vue

@@ -582,7 +582,7 @@ const rules = reactive({
   roomName: [{ required: true, message: "房型名称不能为空", trigger: "blur" }],
   roomPrice: [
     { required: true, message: "房费不能为空", trigger: "blur" },
-    { validator: validatePrice, trigger: "blur" },
+    // { validator: validatePrice, trigger: "blur" },
   ],
   number: [
     { required: true, message: "数量不能为空", trigger: "blur" },

+ 10 - 6
src/views/statement/statement.vue

@@ -88,7 +88,7 @@
         >
           <!-- <el-table-column align="center" type="selection" width="80" /> -->
           <el-table-column
-            width="150"
+            width="100"
             align="center "
             type="index"
             label="序号"
@@ -96,7 +96,7 @@
           <el-table-column
             align="center"
             prop="orderNumber"
-            width="180"
+            width="190"
             label="订单编号"
           >
             <template #default="{ row }">
@@ -104,30 +104,34 @@
             </template>
           </el-table-column>
           <el-table-column align="center" prop="reserveName" label="入住人" />
-          <el-table-column align="center" prop="houseName" label="房型">
+          <el-table-column align="center" prop="orgName" label="部门" />
+          <el-table-column align="center" prop="cardNumber" width="150" label="部门职工卡号" />
+          <el-table-column align="center" prop="houseName" label="房型" width="150">
             <template #default="{ row }">
              <span>{{ row.roomName }}</span> <span style="color:rgba(30, 125, 251,1)">( {{ row.roomType==1?'全':'钟' }} )</span>
             </template>
           </el-table-column>
-          <el-table-column align="center" prop="roomNumber" label="房号" />
+          <el-table-column align="center" prop="roomNumber" width="120" label="房号" />
           <el-table-column
             align="center"
             prop="payPrice"
+            width="120"
             v-if="changeIndex == 1"
             label="订单金额(元)"
           />
           <el-table-column
             align="center"
             prop="payPrice"
+            width="130" 
             v-if="changeIndex == 2"
             label="待结账(元)"
           />
           <el-table-column
             align="center"
             prop="payTime"
+            width="200"
             v-if="changeIndex == 1"
             label="支付时间"
-            width="180"
           />
           <el-table-column
             align="center"
@@ -171,8 +175,8 @@
           <el-table-column
             align="center"
             prop="createTime"
+            width="200"
             label="创建时间"
-            width="180"
           />
           <el-table-column
             align="center"

+ 98 - 4
src/views/system/system.vue

@@ -408,7 +408,7 @@
               </template>
             </el-table-column>
           </el-table>
-          <div class="titles">
+          <!-- <div class="titles">
             <div class="set">退房设置</div>
           </div>
           <div class="system">
@@ -471,7 +471,7 @@
               >{{ checkOutData.preDay }}</span
             >
             <span>天</span>
-          </div>
+          </div> -->
           <div class="titles">
             <div class="set">
               补助设置<span style="font-size: 14px; padding: 0 15px"
@@ -540,6 +540,36 @@
             >
             <span>度</span>
           </div>
+          <div class="titles">
+            <div class="set">黑名单设置</div>
+          </div>
+          <div class="system">
+            <span>预订未入住超 </span>
+            <el-input
+              v-if="flagBtn.heimingdanshezhi == 1"
+              clearable
+              v-model.trim="blackListData.num"
+              style="width: 150px; margin: 0 8px"
+              placeholder="请输入天数"
+              @blur="blackListDataUpdate"
+            >
+            </el-input>
+            <span
+              v-else
+              style="
+                display: inline-block;
+                width: 150px;
+                border: 1px solid #ccc;
+                border-radius: 3px;
+                height: 30px;
+                line-height: 30px;
+                padding-left: 8px;
+                margin: 0 8px;
+              "
+              >{{ blackListData.num }}</span
+            >
+            <span>次,进入黑名单,不可免费预订</span>
+          </div>
           <!-- <div class="titles">
             <div class="set">催缴设置</div>
           </div>
@@ -747,6 +777,11 @@ const callSystemData = reactive({
   id: "",
   askForPayment: "",
 });
+// 黑名单设置
+const blackListData = reactive({
+  id: "",
+  num: "",
+});
 
 // 添加员工弹窗数据 (------------------------------------)
 const addDialogVisible = ref(false); // 控制添加员工弹窗
@@ -949,6 +984,29 @@ const callSystem = async () => {
     });
   }
 };
+// 黑名单设置
+const blackList = async () => {
+  let resss = await axios({
+    method: "get",
+    url: api.value + "/blacklist-setting/list",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+  });
+  console.log(resss, "黑名单设置");
+  if (resss.data.code == 200) {
+    blackListData.num = resss.data.data.count;
+    blackListData.id = resss.data.data.id;
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: resss.data.message,
+      center: true,
+    });
+  }
+};
 // 系统设置信息修改 (===============================================================)
 const systemChange = async () => {
   let arr = [];
@@ -1021,9 +1079,10 @@ const systemChange = async () => {
 const richtextClick = lodash.debounce((data) => {
   console.log(data, "富文本传过来的数据");
   systemData.introductory = data.html;
-  //fatherMessage.value.data = data.text;
   fatherMessage.value.data = data.html;
-  systemChange();
+  if (flagBtn.value.gongyushezhi == 1) {
+    systemChange();
+  }
 }, 500);
 
 // 查看设施服务添加 (===============================================================)
@@ -1299,6 +1358,40 @@ const callSystemDataUpdate = async () => {
   }
 };
 
+// 黑名单设置修改 (================================================================)
+const blackListDataUpdate = async () => {
+  let data = {
+    id: blackListData.id, //催缴设置id(不带id时是添加,带id时是修改)
+    count: blackListData.num,
+  };
+  let resss = await axios({
+    method: "post",
+    url: api.value + "/blacklist-setting/update",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+    data: data,
+  });
+  console.log(resss, "催缴设置修改");
+  if (resss.data.code == 200) {
+    blackList();
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: resss.data.message,
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: resss.data.message,
+      center: true,
+    });
+  }
+};
+
 // 左右切换走马灯
 const infoImgClick2 = (val) => {
   if (val == "right") {
@@ -1437,6 +1530,7 @@ onBeforeMount(async () => {
   checkOutSetting();
   subsidySetup();
   callSystem();
+  blackList();
 });
 onMounted(() => {
   setTimeout(() => {

+ 207 - 115
src/views/userRoles/userRoles.vue

@@ -377,10 +377,11 @@
                   />
                 </td>
               </tr>
-              <!-- 门锁管理 10 -->
+
+              <!-- 黑名单管理 10 -->
               <tr align="center">
-                <td rowspan="2">设备管理</td>
-                <td>门锁管理</td>
+                <td>黑名单管理</td>
+                <td>/</td>
                 <td>
                   <el-tree
                     ref="addRolesData10"
@@ -392,14 +393,15 @@
                     default-expand-all
                     @check="
                       (data, nodes) =>
-                        editMemberCheckChange(data, nodes, addRolesList10.two)
+                        editMemberCheckChange(data, nodes, addRolesList10.one)
                     "
                   />
                 </td>
               </tr>
-              <!-- 水电表管理 11 -->
+              <!-- 门锁管理 11 -->
               <tr align="center">
-                <td>水电表管理</td>
+                <td rowspan="2">设备管理</td>
+                <td>门锁管理</td>
                 <td>
                   <el-tree
                     ref="addRolesData11"
@@ -416,10 +418,9 @@
                   />
                 </td>
               </tr>
-              <!-- 角色管理 12 -->
+              <!-- 水电表管理 12 -->
               <tr align="center">
-                <td rowspan="4">账号管理</td>
-                <td>角色管理</td>
+                <td>水电表管理</td>
                 <td>
                   <el-tree
                     ref="addRolesData12"
@@ -436,9 +437,10 @@
                   />
                 </td>
               </tr>
-              <!-- 账号管理 13 -->
+              <!-- 角色管理 13 -->
               <tr align="center">
-                <td>账号管理</td>
+                <td rowspan="4">账号管理</td>
+                <td>角色管理</td>
                 <td>
                   <el-tree
                     ref="addRolesData13"
@@ -455,9 +457,9 @@
                   />
                 </td>
               </tr>
-              <!-- 员工管理 14 -->
+              <!-- 账号管理 14 -->
               <tr align="center">
-                <td>员工管理</td>
+                <td>账号管理</td>
                 <td>
                   <el-tree
                     ref="addRolesData14"
@@ -474,9 +476,9 @@
                   />
                 </td>
               </tr>
-              <!-- 用户管理 15 -->
+              <!-- 员工管理 15 -->
               <tr align="center">
-                <td>用户管理</td>
+                <td>员工管理</td>
                 <td>
                   <el-tree
                     ref="addRolesData15"
@@ -493,10 +495,9 @@
                   />
                 </td>
               </tr>
-              <!-- 系统设置 16 -->
+              <!-- 用户管理 16 -->
               <tr align="center">
-                <td>系统设置</td>
-                <td>/</td>
+                <td>用户管理</td>
                 <td>
                   <el-tree
                     ref="addRolesData16"
@@ -508,7 +509,27 @@
                     default-expand-all
                     @check="
                       (data, nodes) =>
-                        editMemberCheckChange(data, nodes, addRolesList16.one)
+                        editMemberCheckChange(data, nodes, addRolesList16.two)
+                    "
+                  />
+                </td>
+              </tr>
+              <!-- 系统设置 17 -->
+              <tr align="center">
+                <td>系统设置</td>
+                <td>/</td>
+                <td>
+                  <el-tree
+                    ref="addRolesData17"
+                    style="max-width: 600px"
+                    :data="addRolesList17.three"
+                    show-checkbox
+                    node-key="id"
+                    :props="defaultProps"
+                    default-expand-all
+                    @check="
+                      (data, nodes) =>
+                        editMemberCheckChange(data, nodes, addRolesList17.one)
                     "
                   />
                 </td>
@@ -672,15 +693,17 @@ const addRoles = reactive({
 
   reportManagement: [], //统计报表 9
 
-  doorLockManagement: [], //门锁管理 10
-  hydropowerManagement: [], //水电表管理 11
+  blacklistManagement: [], //黑名单管理 10
 
-  roleManagement: [], //角色管理 12
-  accountManagement: [], //账号管理 13
-  staffManagement: [], // 员工管理 14
-  userManagement: [], //用户管理 15
+  doorLockManagement: [], //门锁管理 11
+  hydropowerManagement: [], //水电表管理 12
 
-  systemManagement: [], //系统设置 16
+  roleManagement: [], //角色管理 13
+  accountManagement: [], //账号管理 14
+  staffManagement: [], // 员工管理 15
+  userManagement: [], //用户管理 16
+
+  systemManagement: [], //系统设置 17
 });
 
 const addRolesData1 = ref(); // 房态管理
@@ -888,8 +911,26 @@ const addRolesList9 = reactive({
   checkedSel: [],
 });
 
-const addRolesData10 = ref(); // 门锁管理
+const addRolesData10 = ref(); // 黑名单管理
 const addRolesList10 = reactive({
+  one: "黑名单管理",
+  two: "/",
+  three: [
+    {
+      name: "全部",
+      id: 0,
+      children: [
+        { name: "移出", id: 1 },
+        { name: "查看界面", id: 2 },
+      ],
+    },
+  ],
+  four: "10",
+  checkedSel: [],
+});
+
+const addRolesData11 = ref(); // 门锁管理
+const addRolesList11 = reactive({
   one: "设备管理",
   two: "门锁管理",
   three: [
@@ -915,12 +956,12 @@ const addRolesList10 = reactive({
       ],
     },
   ],
-  four: "10",
+  four: "11",
   checkedSel: [],
 });
 
-const addRolesData11 = ref(); // 水电表管理
-const addRolesList11 = reactive({
+const addRolesData12 = ref(); // 水电表管理
+const addRolesList12 = reactive({
   one: "设备管理",
   two: "水电表管理",
   three: [
@@ -937,12 +978,12 @@ const addRolesList11 = reactive({
       ],
     },
   ],
-  four: "11",
+  four: "12",
   checkedSel: [],
 });
 
-const addRolesData12 = ref(); // 角色管理
-const addRolesList12 = reactive({
+const addRolesData13 = ref(); // 角色管理
+const addRolesList13 = reactive({
   one: "账号管理",
   two: "角色管理",
   three: [
@@ -959,12 +1000,12 @@ const addRolesList12 = reactive({
       ],
     },
   ],
-  four: "12",
+  four: "13",
   checkedSel: [],
 });
 
-const addRolesData13 = ref(); // 账号管理
-const addRolesList13 = reactive({
+const addRolesData14 = ref(); // 账号管理
+const addRolesList14 = reactive({
   one: "账号管理",
   two: "账号管理",
   three: [
@@ -981,12 +1022,12 @@ const addRolesList13 = reactive({
       ],
     },
   ],
-  four: "13",
+  four: "14",
   checkedSel: [],
 });
 
-const addRolesData14 = ref(); // 员工管理
-const addRolesList14 = reactive({
+const addRolesData15 = ref(); // 员工管理
+const addRolesList15 = reactive({
   one: "账号管理",
   two: "员工管理",
   three: [
@@ -1003,12 +1044,12 @@ const addRolesList14 = reactive({
       ],
     },
   ],
-  four: "14",
+  four: "15",
   checkedSel: [],
 });
 
-const addRolesData15 = ref(); // 用户管理
-const addRolesList15 = reactive({
+const addRolesData16 = ref(); // 用户管理
+const addRolesList16 = reactive({
   one: "账号管理",
   two: "用户管理",
   three: [
@@ -1025,12 +1066,12 @@ const addRolesList15 = reactive({
       ],
     },
   ],
-  four: "15",
+  four: "16",
   checkedSel: [],
 });
 
-const addRolesData16 = ref(); // 系统设置
-const addRolesList16 = reactive({
+const addRolesData17 = ref(); // 系统设置
+const addRolesList17 = reactive({
   one: "系统设置",
   two: "/",
   three: [
@@ -1038,16 +1079,17 @@ const addRolesList16 = reactive({
       name: "全部",
       id: 0,
       children: [
-        { name: "退房设置", id: 1 },
+        // { name: "退房设置", id: 1 },
         { name: "公寓设置", id: 2 },
         { name: "补助设置", id: 3 },
         // { name: "催缴设置", id: 4 },
         { name: "设施服务设置", id: 5 },
         { name: "查看界面", id: 6 },
+        { name: "黑名单设置", id: 7 },
       ],
     },
   ],
-  four: "16",
+  four: "17",
   checkedSel: [],
 });
 // const addRolesData = reactive({
@@ -1558,7 +1600,7 @@ const addRolesClick = () => {
   parentId.value = "";
   addRoles.name = "";
   addRoles.id = "";
-  addRoles.adminMenuId=""
+  addRoles.adminMenuId = "";
   addRolesVisible.value = true;
   if (addRolesData1.value) {
     addRolesData1.value.setCheckedKeys([]);
@@ -1608,13 +1650,16 @@ const addRolesClick = () => {
   if (addRolesData16.value) {
     addRolesData16.value.setCheckedKeys([]);
   }
+  if (addRolesData17.value) {
+    addRolesData17.value.setCheckedKeys([]);
+  }
 };
 const addRolesClicks = (row) => {
   addRolesTitle.value = "添加二级角色";
   parentId.value = row.id;
   addRoles.name = "";
   addRoles.id = "";
-  addRoles.adminMenuId=""
+  addRoles.adminMenuId = "";
   addRolesVisible.value = true;
   if (addRolesData1.value) {
     addRolesData1.value.setCheckedKeys([]);
@@ -1664,6 +1709,9 @@ const addRolesClicks = (row) => {
   if (addRolesData16.value) {
     addRolesData16.value.setCheckedKeys([]);
   }
+  if (addRolesData17.value) {
+    addRolesData17.value.setCheckedKeys([]);
+  }
 };
 const cancelAddRoles = () => {
   addRolesVisible.value = false;
@@ -1694,11 +1742,13 @@ const editClick = async (row) => {
     addRoles.id = res.data.data.id;
     addRoles.adminMenuId = res.data.data.adminMenuId;
     // 房态管理 1
-    addRoles.houseStatusManagement =
-      res.data.data.houseStatusManagement.split(",");
-    addRolesData1.value.setCheckedKeys(
-      res.data.data.houseStatusManagement.split(",")
-    );
+    if (res.data.data.houseStatusManagement) {
+      addRoles.houseStatusManagement =
+        res.data.data.houseStatusManagement.split(",");
+      addRolesData1.value.setCheckedKeys(
+        res.data.data.houseStatusManagement.split(",")
+      );
+    }
 
     // 楼栋单元管理 2
     if (res.data.data.buildingManagement) {
@@ -1709,10 +1759,13 @@ const editClick = async (row) => {
     }
 
     // 房型管理 3
-    addRoles.houseTypeManagement = res.data.data.houseTypeManagement.split(",");
-    addRolesData3.value.setCheckedKeys(
-      res.data.data.houseTypeManagement.split(",")
-    );
+    if (res.data.data.houseTypeManagement) {
+      addRoles.houseTypeManagement =
+        res.data.data.houseTypeManagement.split(",");
+      addRolesData3.value.setCheckedKeys(
+        res.data.data.houseTypeManagement.split(",")
+      );
+    }
     // 房间列表 4
     if (res.data.data.houseNumberManagement) {
       addRoles.houseNumberManagement =
@@ -1723,75 +1776,108 @@ const editClick = async (row) => {
     }
 
     // 房价管理 5
-    addRoles.housePriceManagement =
-      res.data.data.housePriceManagement.split(",");
-    addRolesData5.value.setCheckedKeys(
-      res.data.data.housePriceManagement.split(",")
-    );
+    if (res.data.data.housePriceManagement) {
+      addRoles.housePriceManagement =
+        res.data.data.housePriceManagement.split(",");
+      addRolesData5.value.setCheckedKeys(
+        res.data.data.housePriceManagement.split(",")
+      );
+    }
 
     // 订单管理 6
-    addRoles.houseOrderManagement =
-      res.data.data.houseOrderManagement.split(",");
-    addRolesData6.value.setCheckedKeys(
-      res.data.data.houseOrderManagement.split(",")
-    );
+    if (res.data.data.houseOrderManagement) {
+      addRoles.houseOrderManagement =
+        res.data.data.houseOrderManagement.split(",");
+      addRolesData6.value.setCheckedKeys(
+        res.data.data.houseOrderManagement.split(",")
+      );
+    }
 
     // 值班管理 7
-    addRoles.dutyManagement = res.data.data.dutyManagement.split(",");
-    addRolesData7.value.setCheckedKeys(res.data.data.dutyManagement.split(","));
+    if (res.data.data.dutyManagement) {
+      addRoles.dutyManagement = res.data.data.dutyManagement.split(",");
+      addRolesData7.value.setCheckedKeys(
+        res.data.data.dutyManagement.split(",")
+      );
+    }
     // 流程管理 8
-    addRoles.processManagement = res.data.data.processManagement.split(",");
-    addRolesData8.value.setCheckedKeys(
-      res.data.data.processManagement.split(",")
-    );
+    if (res.data.data.processManagement) {
+      addRoles.processManagement = res.data.data.processManagement.split(",");
+      addRolesData8.value.setCheckedKeys(
+        res.data.data.processManagement.split(",")
+      );
+    }
 
     // 统计报表 9
-    addRoles.reportManagement = res.data.data.reportManagement.split(",");
-    addRolesData9.value.setCheckedKeys(
-      res.data.data.reportManagement.split(",")
-    );
-
-    // 门锁管理 10
-    addRoles.doorLockManagement = res.data.data.doorLockManagement.split(",");
-    addRolesData10.value.setCheckedKeys(
-      res.data.data.doorLockManagement.split(",")
-    );
-    // 水电表管理 11
-    addRoles.hydropowerManagement =
-      res.data.data.hydropowerManagement.split(",");
-    addRolesData11.value.setCheckedKeys(
-      res.data.data.hydropowerManagement.split(",")
-    );
-
-    // 角色管理
-    addRoles.roleManagement = res.data.data.roleManagement.split(",");
-    addRolesData12.value.setCheckedKeys(
-      res.data.data.roleManagement.split(",")
-    );
-
-    // 账号管理 13
-    addRoles.accountManagement = res.data.data.accountManagement.split(",");
-    addRolesData13.value.setCheckedKeys(
-      res.data.data.accountManagement.split(",")
-    );
-    // 员工管理 14
+    if (res.data.data.reportManagement) {
+      addRoles.reportManagement = res.data.data.reportManagement.split(",");
+      addRolesData9.value.setCheckedKeys(
+        res.data.data.reportManagement.split(",")
+      );
+    }
+
+    // 黑名单管理 10
+    if (res.data.data.blacklistManagement) {
+      addRoles.blacklistManagement =
+        res.data.data.blacklistManagement.split(",");
+      addRolesData10.value.setCheckedKeys(
+        res.data.data.blacklistManagement.split(",")
+      );
+    }
+
+    // 门锁管理 11
+    if (res.data.data.doorLockManagement) {
+      addRoles.doorLockManagement = res.data.data.doorLockManagement.split(",");
+      addRolesData11.value.setCheckedKeys(
+        res.data.data.doorLockManagement.split(",")
+      );
+    }
+    // 水电表管理 12
+    if (res.data.data.hydropowerManagement) {
+      addRoles.hydropowerManagement =
+        res.data.data.hydropowerManagement.split(",");
+      addRolesData12.value.setCheckedKeys(
+        res.data.data.hydropowerManagement.split(",")
+      );
+    }
+
+    // 角色管理 13
+    if (res.data.data.roleManagement) {
+      addRoles.roleManagement = res.data.data.roleManagement.split(",");
+      addRolesData13.value.setCheckedKeys(
+        res.data.data.roleManagement.split(",")
+      );
+    }
+
+    // 账号管理 14
+    if (res.data.data.accountManagement) {
+      addRoles.accountManagement = res.data.data.accountManagement.split(",");
+      addRolesData14.value.setCheckedKeys(
+        res.data.data.accountManagement.split(",")
+      );
+    }
+    // 员工管理 15
     if (res.data.data.staffManagement) {
       addRoles.staffManagement = res.data.data.staffManagement.split(",");
-      addRolesData14.value.setCheckedKeys(
+      addRolesData15.value.setCheckedKeys(
         res.data.data.staffManagement.split(",")
       );
     }
 
-    // 用户管理 15
-    addRoles.userManagement = res.data.data.userManagement.split(",");
-    addRolesData15.value.setCheckedKeys(
-      res.data.data.userManagement.split(",")
-    );
-    // 系统设置
-    addRoles.systemManagement = res.data.data.systemManagement.split(",");
-    addRolesData16.value.setCheckedKeys(
-      res.data.data.systemManagement.split(",")
-    );
+    // 用户管理 16
+    if (res.data.data.userManagement) {
+      addRoles.userManagement = res.data.data.userManagement.split(",");
+      addRolesData16.value.setCheckedKeys(
+        res.data.data.userManagement.split(",")
+      );
+    }
+    // 系统设置 17
+    if (res.data.data.systemManagement) {
+      addRoles.systemManagement = res.data.data.systemManagement.split(",");
+      addRolesData17.value.setCheckedKeys(
+        res.data.data.systemManagement.split(",")
+      );
+    }
   } else {
     ElMessage({
       type: "error",
@@ -1830,6 +1916,8 @@ const editMemberCheckChange = (data, nodes, name) => {
     addRoles.processManagement = nodes.checkedKeys;
   } else if (name == "统计报表") {
     addRoles.reportManagement = nodes.checkedKeys;
+  } else if (name == "黑名单管理") {
+    addRoles.blacklistManagement = nodes.checkedKeys;
   } else if (name == "门锁管理") {
     addRoles.doorLockManagement = nodes.checkedKeys;
   } else if (name == "水电表管理") {
@@ -1873,6 +1961,8 @@ const confirmEdit = async () => {
 
       reportManagement: addRoles.reportManagement.join(","),
 
+      blacklistManagement: addRoles.blacklistManagement.join(","),
+
       doorLockManagement: addRoles.doorLockManagement.join(","),
       hydropowerManagement: addRoles.hydropowerManagement.join(","),
 
@@ -1944,6 +2034,8 @@ const confirmEdit = async () => {
 
       reportManagement: addRoles.reportManagement.join(","),
 
+      blacklistManagement: addRoles.blacklistManagement.join(","),
+
       doorLockManagement: addRoles.doorLockManagement.join(","),
       hydropowerManagement: addRoles.hydropowerManagement.join(","),
 
@@ -1976,7 +2068,7 @@ const confirmEdit = async () => {
       });
       console.log(res, "添加T1角色");
       if (res.data.code == 200) {
-        getList()
+        getList();
         // if (addRoles.id == sessionStorage.getItem("permissionSettingId")) {
         //   store.commit("ROLELIST", addRoles.id);
         //   setTimeout(() => {

+ 8 - 1
vite.config.js

@@ -31,7 +31,14 @@ export default defineConfig({
     },
     // proxy: {
     //   "/ihotel/auto": {
-    //     target: "http://192.168.161.190:8090/ihotel/auto", // 测试环境
+    //     target: "http://192.168.161.190:8090/ihotel/auto", // 刘子麟测试环境
+    //     changeOrigin: true,
+    //     rewrite: (path) => path.replace(/^\/ihotel\/auto/, ""),
+    //   },
+    // },
+    // proxy: {
+    //   "/ihotel/auto": {
+    //     target: "http://192.168.161.225:8090/ihotel/auto", // 万新亮测试环境
     //     changeOrigin: true,
     //     rewrite: (path) => path.replace(/^\/ihotel\/auto/, ""),
     //   },