Browse Source

完成学期管理和学科管理

hzj18279462576@163.com 2 years ago
parent
commit
e8018b5741

+ 1 - 1
src/api/admin.js

@@ -1,5 +1,5 @@
 import request from "@/utils/request";
-const requests = '/api'// 线上
+const requests = '/ihotel/auto'// 线上
 // const requests = '/video/transcoding/transcoding'//线下
 export default {
     // 登录账号

+ 87 - 0
src/api/userRoles.js

@@ -0,0 +1,87 @@
+import request from "@/utils/request";
+const requests = '/ihotel/auto'// 线上
+// const requests = '/video/transcoding/transcoding'//线下
+export default {
+    // 用户角色分页列表
+    async usersMenuList(data) {
+        let requestData = await request({
+            url: `${requests}/users-menu/userListPage`,
+            method: "GET",
+            // headers: { "Content-Type": "application/json;charset=utf-8" },
+            params: data,
+        });
+        return requestData;
+    },
+
+    // 账号列表
+    // async adminList(params) {
+    //     let requestData = await request({
+    //         url: `${requests}/carBook/adminlist.action`,
+    //         method: "GET",
+    //         headers: { "Content-Type": "multipart/form-data" },
+    //         params,
+    //     });
+    //     return requestData;
+    // },
+
+    // 新增管理员
+    async adminAdd(data) {
+        let requestData = await request({
+            url: `${requests}/carBook/admininsert.action`,
+            method: "POST",
+            data,
+        });
+        return requestData;
+    },
+    // 修改管理员
+    async adminUpdate(data) {
+        let requestData = await request({
+            url: `${requests}/carBook/adminupdate.action`,
+            method: "POST",
+            data,
+        });
+        return requestData;
+    },
+    // 修改密码
+    // async updatePassword(data) {
+    //     let requestData = await request({
+    //         url: `${requests}/videoAdmin/updatePassword`,
+    //         method: "PUT",
+    //         data,
+    //     });
+    //     return requestData;
+    // },
+    // 删除管理员
+    async adminDel(data) {
+        let requestData = await request({
+            url: `${requests}/carBook/admindel.action`,
+            method: "POST",
+            data,
+        });
+        return requestData;
+    },
+
+    // 导出管理员信息
+    async download(params) {
+        let requestData = await request({
+            url: `${requests}/carBook/admintoExcel.action`,
+            method: "GET",
+            headers: { "Content-Type": "application/x-www-form-urlencoded;charset=utf-8" },
+            responseType: "blob",
+            params,
+        });
+        return requestData;
+    },
+
+    // 导入监控信息
+    // async importByExcel(data) {
+    //     let requestData = await request({
+    //         // url: "/api/video/videoAdmin/importByExcel",
+    //         url: `${requests}/camera/importByExcel`,
+    //         method: "POST",
+    //         headers: { "Content-Type": "multipart/form-data" },
+    //         data: data,
+    //     });
+    //     return requestData;
+    // },
+};

+ 3 - 3
src/layout/index.vue

@@ -42,9 +42,9 @@ onBeforeMount(async () => {
   display: flex;
 
   .content {
-    // min-width: 1740px;
-    max-width: calc(100vw - 81px);
-    min-width: calc(100vw - 220px);
+    // min-width: 800px;
+    // max-width: calc(100vw - 81px);
+    // min-width: calc(100vw - 220px);
     width: 100%;
     height: calc(100vh);
     background-color: rgba(238, 238, 238, 1);

+ 10 - 7
src/layout/sidebar/Navbar.vue

@@ -334,13 +334,16 @@ const loginOut = () => {
     type: "warning",
   })
     .then(() => {
-      localStorage.removeItem("token");
+      sessionStorage.removeItem("token");
+      sessionStorage.removeItem("id");
+      sessionStorage.removeItem("adminMenuId");
+      sessionStorage.removeItem("username");
       router.push({
         path: `/login`,
       });
       ElMessage({
         type: "success",
-        message: "退出成功",
+        message: "退出",
       });
     })
     .catch(() => {
@@ -351,7 +354,7 @@ const loginOut = () => {
     });
 };
 
-onMounted(() => {
+onBeforeMount(() => {
   api.value = store.state.user.api;
   activeIndex.value = store.state.user.navbar;
   username.value = sessionStorage.getItem("username");
@@ -453,8 +456,8 @@ onMounted(() => {
     }
 
     :deep(.queding) {
-      background-color: rgba(9, 101, 98, 1) !important;
-      border: 0.5px solid rgba(9, 101, 98, 1) !important;
+      background-color: rgba(41, 109, 227, 1) !important;
+      border: 0.5px solid rgba(41, 109, 227, 1) !important;
     }
   }
 }
@@ -463,8 +466,8 @@ onMounted(() => {
 .el-overlay {
   .el-message-box__btns {
     .el-button--primary {
-      background-color: rgba(9, 101, 98, 1) !important;
-      border: 0.5px solid rgba(9, 101, 98, 1) !important;
+      background-color: rgba(41, 109, 227, 1) !important;
+      border: 0.5px solid rgba(41, 109, 227, 1) !important;
     }
   }
 

+ 1 - 1
src/layout/sidebar/SidevarItem.vue

@@ -325,7 +325,7 @@ onBeforeMount(() => {
   height: calc(100vh);
 }
 .el-menu {
-  // width: 100%;
+  width: 220px;
   height: 100%;
   background: rgba(24, 51, 82, 1);
   box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.16);

+ 6 - 4
src/store/modules/user.js

@@ -10,7 +10,7 @@ const state = {
   username: "",
   password: "",
   // api: "/carstop/carbook", // 线上
-  api: "/auto", // 测试
+  api: "/ihotel/auto", // 测试
   islogin: 1,
   hasRoutes: false,
   level: 1,
@@ -268,7 +268,7 @@ const actions = {
     sessionStorage.setItem("newsNum", res.data.u_count);
     console.log("vuex", res.data.u_count);
   },
-  // 系统扫码时间
+  // 登录
   login: async ({ commit, state }, data) => {
     return new Promise(async (resolve, reject) => {
       let res = await axios({
@@ -282,8 +282,10 @@ const actions = {
         // sessionStorage.setItem("name", data.userName);
         sessionStorage.setItem("token", res.data.data.token);
         sessionStorage.setItem("id", res.data.data.id);
-        sessionStorage.setItem("adminMenuId", res.data.data.adminMenuId);
-        sessionStorage.setItem("username", res.data.data.adminName);
+        sessionStorage.setItem("adminMenuId", res.data.data.permissionSettingId);
+        sessionStorage.setItem("username", res.data.data.userName);
+        console.log(res.data.data.userName,"名字账号");
+        
         // commit("LEVEL", res.data.data.level);
 
         // commit("userName", data.user);

+ 2 - 2
src/views/login/index.vue

@@ -135,7 +135,7 @@ const handleLogin = (formEl) => {
       if (res == "success") {
         router.push({ path: `/hotel/roomStatus` });
         // store.commit("indexUp", "/seniorCelebrity/order");
-        sessionStorage.setItem("username", ruleForm.user);
+        // sessionStorage.setItem("username", ruleForm.user);
         // sessionStorage.setItem("sidevarItem", "/hotel/roomStatus");
         ElMessage({
           type: "success",
@@ -161,7 +161,7 @@ const handleLogin = (formEl) => {
 const Enters = (e) => {
   // console.log("按键:", e.key);
   if (e.key == "Enter") {
-    submitForm(ruleFormRef.value);
+    handleLogin(ruleFormRef.value);
   }
 };
 onMounted(() => {

+ 42 - 35
src/views/roomPrice/roomPrice.vue

@@ -20,11 +20,12 @@
                   :prefix-icon="Calendar"
                   placeholder="请选择日期"
                 /> -->
+             
               <el-date-picker
                 v-model="searchInput.createTime"
                 type="date"
-                format="YYYY-MM-DD"
-                value-format="YYYY-MM-DD"
+                format="YYYY-MM-DD HH:mm:ss"
+                value-format="YYYY-MM-DD HH:mm:ss"
                 :prefix-icon="Calendar"
                 :clearable="false"
                 placeholder="请选择日期"
@@ -41,12 +42,13 @@
                 @clear="searchData"
                 clearable
               >
-                <el-option
+                <!-- <el-option
                   :label="i.hName"
                   :value="i.id"
                   v-for="i in changePriceSelect"
                   :key="i.id"
-                />
+                /> -->
+                <el-option label="标准房" value="标准房" />
               </el-select>
             </div>
           </div>
@@ -81,14 +83,14 @@
         >
           <el-table-column align="center" prop="houseName" label="本地房型" />
           <el-table-column
-            v-for="(i, index) in tableHead"
+            v-for="(item, index) in tableHead"
             align="center"
             :key="index"
-            :label="i.dateStr"
-            width="130"
+            :label="item.dateTime"
+            width="220"
           >
             <template #default="{ row }">
-              <span>¥{{ row[i.dateStr] }}</span>
+              <span>¥{{ row.housePriceVos[index].price }}</span>
             </template>
           </el-table-column>
         </el-table>
@@ -492,7 +494,7 @@ const changePriceSelect = ref();
 // 搜索按钮数据
 const searchInput = reactive({
   changePriceSelId: "",
-  createTime: dayjs().format("YYYY-MM-DD"),
+  createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
 });
 
 const addDialogVisible = ref(false); // 控制添加员工弹窗
@@ -566,22 +568,21 @@ watch(
   }
 );
 
-// 查看员工列表
+// 房价管理分页
 const getList = async () => {
   loading.value = true;
   let data = {
     page: currentPage.value,
-    rows: pageSize.value,
-    // setDate: searchInput.createTime, // 关键字查询
-    managerId: sessionStorage.getItem("token"),
-    houseId: searchInput.changePriceSelId, //  房型id
+    size: pageSize.value,
+    houseName: searchInput.changePriceSelId, //  房型
+    // managerId: sessionStorage.getItem("token"),
   };
   if (searchInput.createTime) {
-    data.setDate = searchInput.createTime;
+    data.date = searchInput.createTime;
   }
   let res = await axios({
     method: "get",
-    url: api.value + "/mhotel/house/price/queryPage.action",
+    url: api.value + "/house-price/housePricePage",
     headers: {
       // token: sessionStorage.getItem("token"),
       // user_head: sessionStorage.getItem("userhead"),
@@ -590,9 +591,15 @@ const getList = async () => {
   });
   console.log(res, "房价管理");
   if (res.data.code == 200) {
-    tableData.list = res.data.data.pageList;
-    tableHead.value = res.data.data.dateTimes;
-    total.value = res.data.data.total;
+    tableData.list = res.data.data.page.records;
+    let arr=[]
+    res.data.data.dateTime.forEach(item=>{
+arr.push({
+  dateTime:item
+})
+    })
+    tableHead.value = arr;
+    // total.value = res.data.data.total;
     loading.value = false;
   } else {
     loading.value = false;
@@ -926,22 +933,22 @@ const handleCurrentChange2 = (value) => {
 
 onBeforeMount(async () => {
   api.value = store.state.user.api;
-  const data = {
-    managerId: sessionStorage.getItem("token"),
-  };
-  let res = await axios({
-    method: "get",
-    url: api.value + "/mhotel/house/price/queryHouseListByManagerId.action",
-    headers: {
-      token: sessionStorage.getItem("token"),
-      user_head: sessionStorage.getItem("userhead"),
-    },
-    params: data,
-  });
-  console.log(res, "改价下拉框数据");
-  changePriceSelect.value = res.data.data;
-  recordRoomType.value = res.data.data;
-  changePirceRoomType.value = res.data.data;
+  // const data = {
+  //   managerId: sessionStorage.getItem("token"),
+  // };
+  // let res = await axios({
+  //   method: "get",
+  //   url: api.value + "/mhotel/house/price/queryHouseListByManagerId.action",
+  //   headers: {
+  //     token: sessionStorage.getItem("token"),
+  //     user_head: sessionStorage.getItem("userhead"),
+  //   },
+  //   params: data,
+  // });
+  // console.log(res, "改价下拉框数据");
+  // changePriceSelect.value = res.data.data;
+  // recordRoomType.value = res.data.data;
+  // changePirceRoomType.value = res.data.data;
   // searchInput.changePriceSelId = changePriceSelect.value[0].id;
   getList();
 });

+ 275 - 177
src/views/roomType/roomType.vue

@@ -13,7 +13,7 @@
               @clear="searchBtn"
               v-model="searchInput.keyWord"
               class="w-50 m-2"
-              placeholder="请输入房"
+              placeholder="请输入房"
               style="width: 180px"
             />
           </div>
@@ -30,8 +30,8 @@
           <div class="condition" style="margin-left: 50px">
             <span>房间类型</span>
             <el-select
-              :clearable="true"
-              v-model="searchInput.keyWord"
+              :clearable="false"
+              v-model="searchInput.type"
               @change="getList"
               class="m-2"
               placeholder="请选择房间类型"
@@ -71,9 +71,23 @@
             type="index"
             label="序号"
           />
-          <el-table-column align="center" prop="hName" label="房型" />
+          <el-table-column
+            v-if="searchInput.type == 2"
+            align="center"
+            prop="time"
+            label="终点时长"
+          />
+          <el-table-column align="center" prop="name" label="房型" />
+          <el-table-column align="center" prop="roomId" label="房号" />
           <el-table-column align="center" prop="price" label="房费(元)" />
-          <el-table-column align="center" prop="number" label="数量" />
+          <el-table-column align="center" prop="visibleName" label="可见范围" />
+          <el-table-column align="center" prop="count" label="数量" />
+          <el-table-column align="center" prop="count" label="类型">
+            <template #default="scope">
+              <span v-if="scope.row.type == 1">全日房</span>
+              <span v-if="scope.row.type == 2">钟点房</span>
+            </template>
+          </el-table-column>
 
           <el-table-column align="center" label="操作" width="150">
             <template #default="scope">
@@ -121,24 +135,10 @@
               :inline="true"
             >
               <div class="titles"><span>房型信息</span></div>
-              <div class="form_item">
-                <div class="items">
-                  <el-form-item label="类型 :" prop="type">
-                    <el-select
-                      v-model="ruleForm.type"
-                      class="m-2"
-                      placeholder="请选择类型"
-                    >
-                      <el-option label="全日房" value="1" />
-                      <el-option label="钟点房" value="2" />
-                    </el-select>
-                  </el-form-item>
-                </div>
-              </div>
               <div class="form_item tag">
                 <div class="items">
                   <!-- prop="fileListJson" -->
-                  <el-form-item label="民宿图片 :" prop="fileListJson">
+                  <el-form-item label="房间图片 :" prop="roomPicture">
                     <div class="tooltips">
                       <div class="img img1">
                         <div class="updateImg">
@@ -200,13 +200,13 @@
               </div>
               <div class="form_item">
                 <div class="items">
-                  <el-form-item label="房型名称 :" prop="hName">
-                    <!-- <el-input
-                        v-model="ruleForm.hName"
-                        placeholder="请输入房型名称"
-                        clearable
-                      /> -->
-                    <el-select
+                  <el-form-item label="房型名称 :" prop="roomName">
+                    <el-input
+                      v-model="ruleForm.roomName"
+                      placeholder="请输入房型名称"
+                      clearable
+                    />
+                    <!-- <el-select
                       v-model="ruleForm.hName"
                       class="m-2"
                       placeholder="请选择民宿类型"
@@ -216,13 +216,13 @@
                         :label="i.name"
                         :value="i.name"
                       />
-                    </el-select>
+                    </el-select> -->
                   </el-form-item>
                 </div>
                 <div class="items">
-                  <el-form-item label="房费 :" prop="price">
+                  <el-form-item label="房费 :" prop="roomPrice">
                     <el-input
-                      v-model="ruleForm.price"
+                      v-model="ruleForm.roomPrice"
                       placeholder="请输入房费"
                       clearable
                     />
@@ -240,9 +240,9 @@
                   </el-form-item>
                 </div>
                 <div class="items">
-                  <el-form-item label="面积 :" prop="hAreas">
+                  <el-form-item label="面积 :" prop="roomArea">
                     <el-input
-                      v-model="ruleForm.hAreas"
+                      v-model="ruleForm.roomArea"
                       placeholder="请输入面积大小"
                       clearable
                     ></el-input>
@@ -266,7 +266,7 @@
                       <div class="li">
                         <div
                           class="li_items"
-                          v-for="i in ruleForm.houseNumbers"
+                          v-for="i in ruleForm.roomNumbers"
                           :key="i.id"
                         >
                           <!-- <span>{{ i.numberName }}</span> -->
@@ -296,23 +296,41 @@
               </div>
               <div class="form_item">
                 <div class="items">
-                  <el-form-item label="可见范围 :" prop="scope">
+                  <el-form-item label="可见范围 :" prop="visible">
                     <el-select
-                      v-model="ruleForm.scope"
+                      v-model="ruleForm.visible"
                       multiple
                       placeholder="选择可见范围"
                     >
-                      <el-option label="领导" value="1" />
-                      <el-option label="员工" value="2" />
+                      <el-option label="全部" value="0" />
+                      <el-option label="学生" value="1" />
+                      <el-option label="教职工" value="2" />
+                      <el-option label="校友" value="3" />
+                      <el-option label="访客" value="4" />
+                      <el-option label="临时人员" value="5" />
+                      <el-option label="其他" value="6" />
+                      <el-option label="领导" value="7" />
+                    </el-select>
+                  </el-form-item>
+                </div>
+                <div class="items">
+                  <el-form-item label="类型 :" prop="roomType">
+                    <el-select
+                      v-model="ruleForm.roomType"
+                      class="m-2"
+                      placeholder="请选择类型"
+                    >
+                      <el-option label="全日房" value="1" />
+                      <el-option label="钟点房" value="2" />
                     </el-select>
                   </el-form-item>
                 </div>
               </div>
               <div class="form_item">
                 <div class="items">
-                  <el-form-item label="钟点时长 :" prop="hourTime">
+                  <el-form-item label="钟点时长 :" prop="roomLiveTime">
                     <el-select
-                      v-model="ruleForm.hourTime"
+                      v-model="ruleForm.roomLiveTime"
                       class="m-2"
                       placeholder="请选择类型"
                     >
@@ -324,11 +342,13 @@
                   </el-form-item>
                 </div>
                 <div class="items">
-                  <el-form-item label="使用时间 :" prop="useTime">
+                  <el-form-item label="使用时间 :" prop="receivingTime">
                     <el-time-picker
-                      v-model="ruleForm.useTime"
+                      v-model="ruleForm.receivingTime"
                       is-range
                       range-separator="-"
+                      format="HH:ss"
+                      value-format="HH:ss"
                       start-placeholder="开始时间"
                       end-placeholder="结束时间"
                     />
@@ -341,10 +361,10 @@
               </div>
               <div class="form_item">
                 <div class="items">
-                  <el-form-item label="选择配置 :" prop="hConfig">
-                    <el-checkbox-group
+                  <el-form-item label="选择配置 :" prop="roomConfig">
+                    <!-- <el-checkbox-group
                       @change="checkHouse"
-                      v-model="checkedCities"
+                      v-model="ruleForm.roomConfig"
                       :max="5"
                     >
                       <el-checkbox
@@ -353,6 +373,17 @@
                         :label="city.id"
                         >{{ city.name }}</el-checkbox
                       >
+                    </el-checkbox-group> -->
+                    <el-checkbox-group
+                      @change="checkHouse"
+                      v-model="roomConfig"
+                      :max="5"
+                    >
+                      <el-checkbox label="阳台">阳台</el-checkbox>
+                      <el-checkbox label="电视">电视</el-checkbox>
+                      <el-checkbox label="双人床">双人床</el-checkbox>
+                      <el-checkbox label="浴室">浴室</el-checkbox>
+                      <el-checkbox label="投影机">投影机</el-checkbox>
                     </el-checkbox-group>
                   </el-form-item>
                 </div>
@@ -462,14 +493,12 @@ const cities = ref([
   "无早餐",
   "无停车场",
 ]); // 名宿配置数据
-const checkedCities = ref([]); // 名宿配置选中数据
 const fileList = reactive({ list: [] }); // 添加多张图片的文件
 const houseType = ref(); // 房型选择
 
 const searchInput = reactive({
   keyWord: "",
-  teamId: "",
-  schoolId: "",
+  type: 1,
 }); // 搜索按钮数据
 
 // 查看图片按钮
@@ -486,20 +515,20 @@ const addDialogVisible = ref(false); // 控制添加员工弹窗
 // 添加员工表单数据
 const ruleFormRef = ref();
 const ruleForm = reactive({
-  fileListJson: [],
-  hName: "", // 房型名称
-  hAreas: "", //房型面积
-  price: "", //单价
+  roomName: "", // 房型名称
+  roomArea: "", //房型面积
+  roomPrice: "", //单价
   number: "", //数量
-  scope: "", // 可见范围
-  type: "", // 类型
-  hourTime: "", // 钟点时长
-  useTime: "", // 使用时间
-  hConfig: "", //房型配置
-  remark: "", //备注
-  houseNumbers: [], // 房间号列表
+  visible: "", // 可见范围
+  roomType: "", // 类型
+  roomLiveTime: "", // 钟点时长
+  receivingTime: "", // 使用时间
+  roomConfig: "", //房型配置
+  roomNumbers: [], // 房间号列表
+  roomPicture: "", // 房间图片
   id: "",
 });
+const roomConfig=ref() //房型配置
 
 // 房费验证
 const validatePrice = (rule, value, callback) => {
@@ -531,8 +560,8 @@ const rules = reactive({
   fileListJson: [
     { required: true, message: "民宿图片不能为空", trigger: "blur" },
   ],
-  hName: [{ required: true, message: "房型名称不能为空", trigger: "blur" }],
-  price: [
+  roomName: [{ required: true, message: "房型名称不能为空", trigger: "blur" }],
+  roomPrice: [
     { required: true, message: "房费不能为空", trigger: "blur" },
     { validator: validatePrice, trigger: "blur" },
   ],
@@ -545,15 +574,21 @@ const rules = reactive({
     //   trigger: "blur",
     // },
   ],
-  scope: [{ required: true, message: "请选择可见范围", trigger: "blur" }],
-  type: [{ required: true, message: "类型不能为空", trigger: "blur" }],
-  hourTime: [{ required: true, message: "钟点时长不能为空", trigger: "blur" }],
-  useTime: [{ required: true, message: "使用时间不能为空", trigger: "blur" }],
-  hAreas: [
+  visible: [{ required: true, message: "请选择可见范围", trigger: "blur" }],
+  roomType: [{ required: true, message: "类型不能为空", trigger: "blur" }],
+  roomLiveTime: [
+    { required: true, message: "钟点时长不能为空", trigger: "blur" },
+  ],
+  receivingTime: [
+    { required: true, message: "使用时间不能为空", trigger: "blur" },
+  ],
+  roomArea: [
     { required: true, message: "房型面积不能为空", trigger: "blur" },
     { validator: area, trigger: "blur" },
   ],
-  hConfig: [{ required: true, message: "房型配置不能为空", trigger: "blur" }],
+  roomConfig: [
+    { required: true, message: "房型配置不能为空", trigger: "blur" },
+  ],
 });
 
 // 查看房型列表
@@ -561,13 +596,13 @@ const getList = async () => {
   loading.value = true;
   let data = {
     page: currentPage.value,
-    rows: pageSize.value,
-    hName: searchInput.keyWord, // 房型名称
-    managerId: sessionStorage.getItem("token"),
+    size: pageSize.value,
+    keyWord: searchInput.keyWord, // 房型名称
+    type: searchInput.type,
   };
   let res = await axios({
-    method: "post",
-    url: api.value + "/mhotel/housequeryPage.action",
+    method: "get",
+    url: api.value + "/house/list",
     headers: {
       // token: sessionStorage.getItem("token"),
       // user_head: sessionStorage.getItem("userhead"),
@@ -577,8 +612,32 @@ const getList = async () => {
   console.log(res, "房型管理");
   if (res.data.code == 200) {
     loading.value = false;
-    tableData.list = res.data.data.pageList;
-    total.value = res.data.data.total;
+
+    res.data.data.list.forEach((item) => {
+      let arr = [];
+      item.visible.split(",").forEach((i) => {
+        if (i == 0) {
+          arr.push("全部");
+        } else if (i == 1) {
+          arr.push("学生");
+        } else if (i == 2) {
+          arr.push("教职工");
+        } else if (i == 3) {
+          arr.push("校友");
+        } else if (i == 4) {
+          arr.push("访客");
+        } else if (i == 5) {
+          arr.push("临时人员");
+        } else if (i == 6) {
+          arr.push("其他");
+        } else if (i == 7) {
+          arr.push("领导");
+        }
+      });
+      item.visibleName = arr.join(",");
+    });
+    tableData.list = res.data.data.list;
+    total.value = res.data.data.totalCount;
     // ElMessage({
     //   type: "success",
     //   showClose: true,
@@ -606,7 +665,7 @@ const handleRemove = (uploadFile, uploadFiles) => {
   fileList.list = fileList.list.filter((item) => {
     return item.uid != uploadFile.uid;
   });
-  ruleForm.fileListJson = fileList.list;
+  ruleForm.roomPicture = fileList.list;
 };
 // 点击图片的查看按钮
 const handlePreview = (file) => {
@@ -628,7 +687,7 @@ const beforeAvatarUpload = (rawFile) => {
 };
 // 添加照片时往fileList列表中添加图片信息
 const handleChange = async (file, fileLists) => {
-  // console.log(file, "1111");
+  console.log(file, "1111");
   // fileList.list.push(file);
 };
 // 可以获取图片参数
@@ -639,63 +698,83 @@ const handleUpload = async (file) => {
   }
   console.log(file, "2222");
   let data = new FormData();
-  data.set("files", file.file);
-  let res = await axios({
-    method: "post",
-    url: api.value + "/file/cos/upload",
-    headers: {},
-    data: data,
-  });
-  console.log(res, "图片上传成功");
-  if (res.data.code == 1) {
-    // res.data.uid = file.file.uid;
-    fileList.list.push({ url: res.data.data, uid: file.file.uid });
-    ruleForm.fileListJson = fileList.list;
-  }
+  data.set("file", file.file);
+  // let res = await axios({
+  //   method: "post",
+  //   url: api.value + "/upload/save",
+  //   headers: {},
+  //   data: data,
+  // });
+  // console.log(res, "图片上传成功");
+  // if (res.data.code == 1) {
+  //   // res.data.uid = file.file.uid;
+  //   fileList.list.push({ url: res.data.data, uid: file.file.uid });
+  //   // ruleForm.roomPicture = fileList.list;
+  // }
 };
 
 //添加房型 (--------------------------------------)
 const addlist = async () => {
   dialongTitle.value = "添加房型";
   addDialogVisible.value = true;
-  ruleForm.fileListJson = "";
+  ruleForm.roomPicture = "1.jpg"; // 房间图片
   fileList.list = []; // 将选中的图片文件置为空
-  checkedCities.value = ""; // 将房型配选中的置为空
-  ruleForm.hName = ""; // 房型名称
-  ruleForm.hAreas = ""; //房型面积
-  ruleForm.price = ""; //单价
+  ruleForm.roomName = ""; // 房型名称
+  ruleForm.roomArea = ""; //房型面积
+  ruleForm.roomPrice = ""; //单价
   ruleForm.number = ""; //数量
-  ruleForm.hConfig = ""; //房型配置
-  ruleForm.remark = ""; //备注
-  ruleForm.id = ""; //id
-  ruleForm.houseNumbers = []; // 房间号列表
-  checkedCities.value = [];
+  ruleForm.roomType = ""; // 类型
+  ruleForm.visible = ""; // 可见范围
+  roomConfig.value = ""; //房型配置
+  ruleForm.roomConfig = ""; //房型配置
+  ruleForm.id = ""; // id
+  ruleForm.roomNumbers = []; // 房间号列表
+  ruleForm.roomLiveTime = ""; // 钟点时长
+  ruleForm.receivingTime = ""; // 使用时间
 };
 
 //编辑按钮  (-------------------------------------------)
 const edit = async (row) => {
   console.log(row);
+  dialongTitle.value = "编辑房型"
+  ruleForm.id=row.id
   let data = {
-    linkId: row.id,
+    houseId: row.id,
   };
   let res = await axios({
-    method: "post",
-    url: api.value + "/mhotel/uploadgetByLinkId.action",
+    method: "get",
+    url: api.value + "/house/details",
     headers: {},
     params: data,
   });
-  console.log(res, "编辑中查找图片");
+  console.log(res, "编辑详情");
   if (res.data.code == 200) {
-    // res.data.data.fileInfoList.forEach((item) => {
+    addDialogVisible.value = true;
+    ruleForm.roomName = res.data.data.roomName;
+    ruleForm.roomArea = res.data.data.roomArea;
+    ruleForm.roomPrice = res.data.data.roomPrice;
+    ruleForm.number = res.data.data.number;
+    ruleForm.visible = res.data.data.visible.split(",");
+    ruleForm.roomType = String(res.data.data.roomType);
+    ruleForm.roomLiveTime = res.data.data.roomLiveTime;
+    ruleForm.receivingTime = res.data.data.receivingTime.split("-");
+    ruleForm.roomConfig = res.data.data.roomConfiguration.split(",");
+    roomConfig.value = res.data.data.roomConfiguration.split(",");
+    
+    let arr = [];
+    res.data.data.roomIds.split(",").forEach((item, ind) => {
+      arr.push({
+        numberName: item,
+        id: ind,
+      });
+    });
+    ruleForm.roomNumbers = arr;
+    ruleForm.roomPicture = res.data.data.roomPicture;
+    // res.data.data.forEach((item) => {
     //   item.uid = item.id;
     // });
-    // fileList.list = res.data.data.fileInfoList;
+    // fileList.list = res.data.data;
     // ruleForm.fileListJson = fileList.list;
-    res.data.data.forEach((item) => {
-      item.uid = item.id;
-    });
-    fileList.list = res.data.data;
-    ruleForm.fileListJson = fileList.list;
     // ElMessage({
     //   type: "success",
     //   showClose: true,
@@ -710,19 +789,17 @@ const edit = async (row) => {
       center: true,
     });
   }
-  dialongTitle.value = "编辑房型";
-  addDialogVisible.value = true;
-  ruleForm.hName = row.hName; // 房型名称
-  ruleForm.hAreas = row.hAreas; //房型面积
-  ruleForm.price = row.price; //单价
-  ruleForm.number = row.number; //数量
-  checkedCities.value = row.hConfig.split(",").map((item) => {
-    return Number(item);
-  });
-  ruleForm.hConfig = row.hConfig; //房型配置
-  // ruleForm.remark = "备注"; //备注
-  ruleForm.houseNumbers = row.houseNumbers; // 房间号列表
-  ruleForm.id = row.id; //id
+  // dialongTitle.value = "编辑房型";
+  // addDialogVisible.value = true;
+  // ruleForm.hName = row.hName; // 房型名称
+  // ruleForm.hAreas = row.hAreas; //房型面积
+  // ruleForm.price = row.price; //单价
+  // ruleForm.number = row.number; //数量
+  //   return Number(item);
+  // });
+  // ruleForm.hConfig = row.hConfig; //房型配置
+  // ruleForm.houseNumbers = row.houseNumbers; // 房间号列表
+  // ruleForm.id = row.id; //id
 };
 // 取消添加房型
 const cancelAdd = () => {
@@ -732,7 +809,9 @@ const cancelAdd = () => {
 // 选择房型配置
 const checkHouse = (val) => {
   console.log(val);
-  ruleForm.hConfig = val.join(",");
+  ruleForm.roomConfig = val
+  roomConfig.value=val
+  // console.log(ruleForm.roomConfig);
 };
 
 // 监听房间数量
@@ -753,14 +832,14 @@ watch(
         }
       }
       arr.forEach((item, index) => {
-        ruleForm.houseNumbers.forEach((i, ind) => {
+        ruleForm.roomNumbers.forEach((i, ind) => {
           if (index == ind) {
             item.numberName = i.numberName;
             item.id = i.id;
           }
         });
       });
-      ruleForm.houseNumbers = arr;
+      ruleForm.roomNumbers = arr;
       console.log(arr, "根据数量添加空房间");
     } else {
       ElMessage({
@@ -777,28 +856,28 @@ watch(
 
 // 新增房间号
 const addRoom = () => {
-  console.log(ruleForm.houseNumbers);
+  console.log(ruleForm.roomNumbers);
   let arr = {
     numberName: "",
     id: Math.random().toString(36).substr(3, 6),
   };
-  ruleForm.houseNumbers.push(arr);
-  if (ruleForm.houseNumbers.length > 0) {
-    ruleForm.number = ruleForm.houseNumbers.length;
+  ruleForm.roomNumbers.push(arr);
+  if (ruleForm.roomNumbers.length > 0) {
+    ruleForm.number = ruleForm.roomNumbers.length;
   }
-  // console.log(ruleForm.houseNumbers.length, "房间数量");
+  // console.log(ruleForm.roomNumbers.length, "房间数量");
 };
 // 删除房间号
 const delRoom = (i) => {
-  ruleForm.houseNumbers = ruleForm.houseNumbers.filter((item) => {
+  ruleForm.roomNumbers = ruleForm.roomNumbers.filter((item) => {
     return i.id != item.id;
   });
-  if (ruleForm.houseNumbers.length > 0) {
-    ruleForm.number = ruleForm.houseNumbers.length;
+  if (ruleForm.roomNumbers.length > 0) {
+    ruleForm.number = ruleForm.roomNumbers.length;
   } else {
     ruleForm.number = "";
   }
-  // console.log(ruleForm.houseNumbers.length, "房间数量");
+  // console.log(ruleForm.roomNumbers.length, "房间数量");
 };
 
 // 确认添加房型
@@ -808,23 +887,32 @@ const submitAdd = lodash.debounce(async (formEl) => {
     if (valid) {
       if (dialongTitle.value == "添加房型") {
         const arr = [];
-        ruleForm.houseNumbers.forEach((item) => {
+        ruleForm.roomNumbers.forEach((item) => {
           arr.push(item.numberName);
+          console.log(item);
         });
-        let data = new FormData();
-        data.set("managerId", sessionStorage.getItem("token"));
-        data.set("hName", ruleForm.hName);
-        data.set("hAreas", ruleForm.hAreas);
-        data.set("price", ruleForm.price);
-        data.set("number", ruleForm.number);
-        data.set("hConfig", ruleForm.hConfig);
-        data.set("fileListJson", JSON.stringify(ruleForm.fileListJson));
-        // data.set("status", 1);
-        data.set("houseNumber", arr.join(","));
-        console.log(data);
+
+        let data = {
+          roomNumbers: arr, //房间号
+          house: {
+            roomName: ruleForm.roomName, //房间名字
+            roomType: ruleForm.roomType, //1:全日房,2:钟点房
+            roomPrice: ruleForm.roomPrice,
+            number: ruleForm.number,
+            roomArea: ruleForm.roomArea,
+            roomLiveTime: ruleForm.roomLiveTime,
+            receivingTime: `${ruleForm.receivingTime[0]}-${ruleForm.receivingTime[1]}`,
+            visible: ruleForm.visible.join(","), //可见类型(0:全部,1:学生,2:教职工,3:校友,4:访客,5:临时人员,6:其他,7:领导)
+            roomConfiguration: roomConfig.value.join(','),
+            roomPicture: ruleForm.roomPicture,
+          },
+          adminId: sessionStorage.getItem("adminMenuId"),
+        };
+        console.log(data, "添加房型参数");
+
         let res = await axios({
           method: "post",
-          url: api.value + "/mhotel/houseinsterHouser.action",
+          url: api.value + "/house/save",
           headers: {},
           data: data,
         });
@@ -849,27 +937,37 @@ const submitAdd = lodash.debounce(async (formEl) => {
         }
       } else {
         const arr = [];
-        ruleForm.houseNumbers.forEach((item) => {
+        ruleForm.roomNumbers.forEach((item) => {
           arr.push(item.numberName);
+          console.log(item);
         });
-        let data = new FormData();
-        data.set("managerId", sessionStorage.getItem("token"));
-        data.set("id", ruleForm.id);
-        data.set("hName", ruleForm.hName);
-        data.set("hAreas", ruleForm.hAreas);
-        data.set("price", ruleForm.price);
-        data.set("number", ruleForm.number);
-        data.set("hConfig", ruleForm.hConfig);
-        data.set("fileListJson", JSON.stringify(ruleForm.fileListJson));
-        data.set("houseNumber", arr.join(","));
-        console.log(data);
+
+        let data = {
+          roomNumbers: arr, //房间号
+          house: {
+            id:ruleForm.id,
+            roomName: ruleForm.roomName, //房间名字
+            roomType: ruleForm.roomType, //1:全日房,2:钟点房
+            roomPrice: ruleForm.roomPrice,
+            number: ruleForm.number,
+            roomArea: ruleForm.roomArea,
+            roomLiveTime: ruleForm.roomLiveTime,
+            receivingTime: `${ruleForm.receivingTime[0]}-${ruleForm.receivingTime[1]}`,
+            visible: ruleForm.visible.join(","), //可见类型(0:全部,1:学生,2:教职工,3:校友,4:访客,5:临时人员,6:其他,7:领导)
+            roomConfiguration: ruleForm.roomConfig.join(','),
+            roomPicture: ruleForm.roomPicture,
+          },
+          adminId: sessionStorage.getItem("adminMenuId"),
+        };
+        console.log(data, "添加房型参数");
+
         let res = await axios({
           method: "post",
-          url: api.value + "/mhotel/houseupdateHouser.action",
+          url: api.value + "/house/update",
           headers: {},
           data: data,
         });
-        console.log(res, "编辑员工");
+        console.log(res, "修改房型");
         if (res.data.code == 200) {
           getList();
           ElMessage({
@@ -1022,27 +1120,27 @@ onBeforeMount(async () => {
   let data = {
     code: 4,
   };
-  let res = await axios({
-    method: "get",
-    url: api.value + "/mhotel/hotelqueryList.action",
-    headers: {},
-    params: data,
-  });
-  console.log(res, "房型配置");
-  cities.value = res.data.data;
+  // let res = await axios({
+  //   method: "get",
+  //   url: api.value + "/mhotel/hotelqueryList.action",
+  //   headers: {},
+  //   params: data,
+  // });
+  // console.log(res, "房型配置");
+  // cities.value = res.data.data;
 
   // 查看房型
   let datas = {
     code: 3,
   };
-  let ress = await axios({
-    method: "get",
-    url: api.value + "/mhotel/hotelqueryList.action",
-    headers: {},
-    params: datas,
-  });
-  console.log(ress, "查看房型");
-  houseType.value = ress.data.data;
+  // let ress = await axios({
+  //   method: "get",
+  //   url: api.value + "/mhotel/hotelqueryList.action",
+  //   headers: {},
+  //   params: datas,
+  // });
+  // console.log(ress, "查看房型");
+  // houseType.value = ress.data.data;
 });
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);

+ 16 - 10
src/views/user/user.vue

@@ -4,7 +4,7 @@
       <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
       <span class="cameratxt">用户管理</span>
     </div>
-    <div>
+    <div class="btm">
       <div class="middle">
         <div class="filter">
           <div class="condition">
@@ -81,7 +81,7 @@
           <el-table-column align="center" prop="phone" label="手机号码" />
           <el-table-column align="center" prop="number" label="角色" />
           <el-table-column align="center" prop="department" label="部门" />
-          <el-table-column align="center" prop="createTime" label="创建时间" />
+          <el-table-column align="center" prop="createTime" width="180" label="创建时间" />
           <el-table-column align="center" label="操作" width="200">
             <template #default="scope">
               <div class="edit">
@@ -928,9 +928,11 @@ onUnmounted(() => {
 
 <style scoped lang="scss">
 .content-box {
-  width: 97.5%;
-  height: 89%;
+  min-width: 800px;
+  width: calc(100vw - 260px);
+  height: calc(100vh - 105px);
   margin: 20px auto;
+  border-radius: 8px;
   background-color: #fff;
   color: #fff;
   display: flex;
@@ -941,7 +943,6 @@ onUnmounted(() => {
     // width: calc(100wh - 40px);
     display: flex;
     align-items: center;
-    height: 60px;
     margin: 0 30px;
     border-bottom: 1px solid #ccc;
     color: rgb(0, 0, 0);
@@ -949,17 +950,22 @@ onUnmounted(() => {
     font-weight: 600;
 
     span {
+      display: block;
+      height: 60px;
+      line-height: 60px;
       margin-right: 20px;
-      cursor: pointer;
     }
 
     .is_active {
       color: rgba(111, 182, 184, 1);
     }
   }
-
+.btm{
+  width: 100%;
+  height: 100%;
+}
   .middle {
-    width: 96%;
+    width: calc(100% - 60px);
     margin: 0 auto;
 
     color: #000;
@@ -1035,8 +1041,8 @@ onUnmounted(() => {
   }
 
   .footer {
-    width: 96%;
-    height: 550px;
+    width:  calc(100% - 60px);
+    height: calc(100% - 210px);
     margin: 10px auto 30px;
 
     .el-table--fit {

File diff suppressed because it is too large
+ 1209 - 0
src/views/userRoles/userRoles copy.vue


+ 58 - 23
src/views/userRoles/userRoles.vue

@@ -4,7 +4,7 @@
       <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
       <span class="cameratxt">用户角色</span>
     </div>
-    <div>
+    <div class="btm">
       <div class="middle">
         <div class="filter">
           <div class="condition">
@@ -74,9 +74,14 @@
             type="index"
             label="序号"
           />
-          <el-table-column align="center" prop="hName" label="角色级别" />
-          <el-table-column align="center" prop="price" label="角色名称" />
-          <el-table-column align="center" prop="number" label="创建时间" />
+          <el-table-column align="center" label="角色级别">
+            <template #default="scope">
+              <span v-if="scope.row.parentId==0">T0</span>
+              <span v-else>T1</span>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="name" label="角色名称" />
+          <el-table-column align="center" prop="createTime" label="创建时间" />
           <el-table-column align="center" label="操作" width="200">
             <template #default="scope">
               <div class="edit">
@@ -113,7 +118,7 @@
         width="900"
         :before-close="cancelAddRoles"
       >
-        <div class="rolesName">
+        <div class="roleName">
           <span>角色名称: &nbsp;&nbsp;</span>
           <el-input
             :clearable="true"
@@ -126,7 +131,7 @@
         </div>
         <div class="rolesName">
           <div class="rolePermission">角色权限: &nbsp;&nbsp;</div>
-          <div>
+          <div class="rolesCont">
             <el-table
               :row-class-name="tableRowClassName"
               :data="addRolesData.list"
@@ -163,11 +168,11 @@
               color="rgba(41, 109, 227, 1)"
               class="queding"
               type="primary"
-              @click="confirmEdit(editRef)"
+              @click="confirmAddRoles"
             >
               确定
             </el-button>
-            <el-button @click="cancelEdit(editRef)">取消</el-button>
+            <el-button @click="cancelAddRoles">取消</el-button>
           </div>
         </div>
       </el-dialog>
@@ -522,22 +527,41 @@ const editRules = reactive({
     },
   ],
 });
-
-// 查看房型列表
+watch(
+  () => searchInput.createTime,
+  (newVal, oldVal) => {
+    console.log("监听时间:", newVal);
+    if (newVal == null) {
+      searchBtn();
+    }
+  }
+);
+// 查看角色列表
 const getList = async () => {
   loading.value = true;
+  let data={
+    page:currentPage.value,
+    size:pageSize.value,
+    adminMenuId:sessionStorage.getItem('adminMenuId'),
+    keyWord:searchInput.keyWord,
+  }
+  if (searchInput.createTime) {
+    data.startTime = searchInput.createTime[0];
+    data.endTime = searchInput.createTime[1];
+  }
   let res = await axios({
     method: "get",
-    url: api.value + "/users-menu/getUserRole",
+    url: api.value + "/users-menu/userListPage",
     headers: {
       // token: sessionStorage.getItem("token"),
       // user_head: sessionStorage.getItem("userhead"),
     },
-    // params: data,
+    params: data,
   });
   console.log(res, "角色列表");
   if (res.data.code == 200) {
-    tableData.list = res.data.data;
+    tableData.list = res.data.data.records;
+    total.value = res.data.data.total;
     loading.value = false;
     // ElMessage({
     //   type: "success",
@@ -784,9 +808,11 @@ onUnmounted(() => {
 
 <style scoped lang="scss">
 .content-box {
-  width: 97.5%;
-  height: 89%;
+  min-width: 800px;
+  width: calc(100vw - 260px);
+  height: calc(100vh - 105px);
   margin: 20px auto;
+  border-radius: 8px;
   background-color: #fff;
   color: #fff;
   display: flex;
@@ -797,7 +823,6 @@ onUnmounted(() => {
     // width: calc(100wh - 40px);
     display: flex;
     align-items: center;
-    height: 60px;
     margin: 0 30px;
     border-bottom: 1px solid #ccc;
     color: rgb(0, 0, 0);
@@ -805,17 +830,22 @@ onUnmounted(() => {
     font-weight: 600;
 
     span {
+      display: block;
+      height: 60px;
+      line-height: 60px;
       margin-right: 20px;
-      cursor: pointer;
     }
 
     .is_active {
       color: rgba(111, 182, 184, 1);
     }
   }
-
+  .btm{
+  width: 100%;
+  height: 100%;
+}
   .middle {
-    width: 96%;
+    width: calc(100% - 60px);
     margin: 0 auto;
 
     color: #000;
@@ -891,8 +921,8 @@ onUnmounted(() => {
   }
 
   .footer {
-    width: 96%;
-    height: 550px;
+    width:  calc(100% - 60px);
+    height: calc(100% - 210px);
     margin: 10px auto 30px;
 
     .el-table--fit {
@@ -966,7 +996,8 @@ onUnmounted(() => {
 
   // 添加角色
   :deep(.addRoles) {
-    //   height: 420px;
+      height: 820px;
+      overflow: auto;
     border-radius: 11px;
     .el-dialog__header {
       border-radius: 11px 11px 0 0;
@@ -979,13 +1010,17 @@ onUnmounted(() => {
     }
     .el-dialog__body {
       padding: 15px 30px 10px 30px;
-
+      height: calc(100% - 79px);
       .rolesName {
         margin: 15px 0;
         color: #000;
+        height:calc(100% - 115px);
         .rolePermission {
           margin: 10px 0;
         }
+        .rolesCont{
+          height: calc(100% - 41px);
+        }
       }
       .el-table--fit {
         height: 100%;

+ 2 - 2
vite.config.js

@@ -34,12 +34,12 @@ export default defineConfig({
 
     // // 测试地址
     proxy: {
-      "/auto": {
+      "/ihotel/auto": {
         // target: "https://chtech.ncjti.edu.cn/hotelReservation",
         target: "http://192.168.161.224:8089/ihotel/auto", // 测试环境
         // target: "https://www.jinganrenjiams.com/hotelReservation/", // 测试环境
         changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/auto/, ""),
+        rewrite: (path) => path.replace(/^\/ihotel\/auto/, ""),
       },
     },
   },