Bläddra i källkod

门锁管理接口对接中

hzj18279462576@163.com 1 år sedan
förälder
incheckning
e8278ff99c

BIN
src/assets/icons/binding.png


+ 499 - 107
src/views/doorLock/doorLock.vue

@@ -31,11 +31,20 @@
         </div>
         </div>
         <div class="changeItems">
         <div class="changeItems">
           <div
           <div
+            class="changeItem"
+            :class="roomTypeIndex == '全部' ? 'changeItem_active' : ''"
+            @click="changeTypes('全部')"
+          >
+            全部
+          </div>
+          <div
             v-for="i in roomTypes"
             v-for="i in roomTypes"
             class="changeItem"
             class="changeItem"
             :class="roomTypeIndex == i ? 'changeItem_active' : ''"
             :class="roomTypeIndex == i ? 'changeItem_active' : ''"
             @click="changeTypes(i)"
             @click="changeTypes(i)"
-          >{{ i }}</div>
+          >
+            {{ i }}
+          </div>
         </div>
         </div>
         <div class="changeItems">
         <div class="changeItems">
           <el-button
           <el-button
@@ -75,11 +84,11 @@
       <div class="footer" v-loading="loading">
       <div class="footer" v-loading="loading">
         <div class="floor" v-for="item in roomList.list">
         <div class="floor" v-for="item in roomList.list">
           <div class="title">
           <div class="title">
-            <span class="t1">{{ item.title }}</span
-            ><span class="t2">{{ item.roomlength }}</span>
+            <span class="t1">{{ item.name }} <span style="color:#1e7dfb">( {{ item.roomType==1?'全':'钟' }} )</span></span>
+            <span class="t2"> / 共{{ item.total }}间</span>
           </div>
           </div>
           <div class="roomList">
           <div class="roomList">
-            <div class="room" v-for="i in item.children">
+            <div class="room" v-for="i in item.vos">
               <el-popover
               <el-popover
                 popper-class="roominfoPopper"
                 popper-class="roominfoPopper"
                 placement="bottom-start"
                 placement="bottom-start"
@@ -90,54 +99,53 @@
               >
               >
                 <template #reference>
                 <template #reference>
                   <div @click="itemClick(i)">
                   <div @click="itemClick(i)">
-                    <div class="roomNum">{{ i.roomNum }}</div>
+                    <div class="roomNum">{{ i.roomNumber }}</div>
                     <div class="rLock">房间锁</div>
                     <div class="rLock">房间锁</div>
                     <div class="wifi">
                     <div class="wifi">
-                      <img src="@/assets/icons/wifiOpen.png" alt="" />
-                      <img src="@/assets/icons/wifiClose.png" alt="" />
-                      {{ i.wifiMAC }}
+                      <img v-if="i.equipmentState==1" src="@/assets/icons/wifiOpen.png" alt="" />
+                      <img v-else src="@/assets/icons/wifiClose.png" alt="" />
+                      {{ i.equipmentType }}
                     </div>
                     </div>
                   </div>
                   </div>
                 </template>
                 </template>
                 <div class="roomInfo">
                 <div class="roomInfo">
-                  <div class="title">{{ item.title }} (房间锁)</div>
+                  <div class="close" @click="closeRoom(i)">
+                    <img src="@/assets/icons/close.png" alt="" />
+                  </div>
+                  <div class="title">{{ i.roomNumber }} (房间锁)</div>
                   <div class="content">
                   <div class="content">
                     <div class="lefts">
                     <div class="lefts">
                       <div>
                       <div>
                         <span>设备型号</span>
                         <span>设备型号</span>
-                        <span>{{ i.shebei }}</span>
+                        <span>{{ i.equipmentType }}</span>
                       </div>
                       </div>
                       <div>
                       <div>
                         <span>网络类型</span>
                         <span>网络类型</span>
-                        <span>{{ i.wangluo }}</span>
+                        <span>{{ i.networkType }}</span>
                       </div>
                       </div>
                       <div>
                       <div>
                         <span>WIFI MAC</span>
                         <span>WIFI MAC</span>
-                        <span>{{ i.wifiMAC }}</span>
-                      </div>
-                      <div>
-                        <span>蓝牙MAC</span>
-                        <span>{{ i.lanyaMAC }}</span>
+                        <span>{{ i.wifiMac }}</span>
                       </div>
                       </div>
                       <div>
                       <div>
                         <span>绑定时间</span>
                         <span>绑定时间</span>
-                        <span>{{ i.time }}</span>
+                        <span>{{ i.bindingTime }}</span>
                       </div>
                       </div>
                       <div>
                       <div>
                         <span>电量</span>
                         <span>电量</span>
-                        <span>{{ i.dianliang }}</span>
+                        <span v-if="electricQuantity">{{ electricQuantity }}%</span>
                       </div>
                       </div>
                       <div>
                       <div>
                         <span>网络状态</span>
                         <span>网络状态</span>
-                        <span>{{ i.statu }}</span>
+                        <span v-if="i.networkState==1">在线</span>
+                        <span v-if="i.networkState==0">离线</span>
+                        <span v-if="i.networkState==null"></span>
                       </div>
                       </div>
                       <div>
                       <div>
                         <span>设备状态</span>
                         <span>设备状态</span>
-                        <span>{{ i.shebeiStatu }}</span>
-                      </div>
-                      <div>
-                        <span>上一次开锁</span>
-                        <span>{{ i.lastLock }}</span>
+                        <span v-if="i.equipmentState==1">在线</span>
+                        <span v-if="i.equipmentState==0">离线</span>
+                        <span v-if="i.equipmentState==null"></span>
                       </div>
                       </div>
                     </div>
                     </div>
                     <div class="rigths">
                     <div class="rigths">
@@ -149,11 +157,11 @@
                         <img src="@/assets/icons/key.png" alt="" />
                         <img src="@/assets/icons/key.png" alt="" />
                         <span>钥匙管理</span>
                         <span>钥匙管理</span>
                       </div>
                       </div>
-                      <div @click="newsClick">
+                      <div @click="newsClick(i)">
                         <img src="@/assets/icons/news.png" alt="" />
                         <img src="@/assets/icons/news.png" alt="" />
                         <span>消息列表</span>
                         <span>消息列表</span>
                       </div>
                       </div>
-                      <div @click="unlockingClick">
+                      <div @click="unlockingClick(i)">
                         <img src="@/assets/icons/unlocking.png" alt="" />
                         <img src="@/assets/icons/unlocking.png" alt="" />
                         <span>远程开锁</span>
                         <span>远程开锁</span>
                       </div>
                       </div>
@@ -161,7 +169,15 @@
                         <img src="@/assets/icons/resetPass.png" alt="" />
                         <img src="@/assets/icons/resetPass.png" alt="" />
                         <span>重置管理员密码</span>
                         <span>重置管理员密码</span>
                       </div>
                       </div>
-                      <div @click="deblockingClick">
+                      <div @click="bindingClick(i)" v-if="i.equipmentState!=1">
+                        <img
+                          class="deblocking"
+                          src="@/assets/icons/binding.png"
+                          alt=""
+                        />
+                        <span>绑定设备</span>
+                      </div>
+                      <div @click="deblockingClick(i)" v-if="i.equipmentState==1">
                         <img
                         <img
                           class="deblocking"
                           class="deblocking"
                           src="@/assets/icons/deblocking.png"
                           src="@/assets/icons/deblocking.png"
@@ -185,7 +201,7 @@
         :close-on-press-escape="false"
         :close-on-press-escape="false"
         title="消息列表"
         title="消息列表"
         align-center
         align-center
-        width="800"
+        width="1000"
         :before-close="cancelNews"
         :before-close="cancelNews"
       >
       >
         <div class="middle">
         <div class="middle">
@@ -209,8 +225,8 @@
         <div v-if="newsIndex == 1">
         <div v-if="newsIndex == 1">
           <div class="footers" v-loading="loading">
           <div class="footers" v-loading="loading">
             <el-table
             <el-table
-              :row-class-name="tableRowClassName2"
-              :data="roomList.list"
+              :row-class-name="tableRowClassName"
+              :data="newTableList"
               @selection-change="handleSelectionChange"
               @selection-change="handleSelectionChange"
               style="width: 100%; height: 550px"
               style="width: 100%; height: 550px"
               :header-cell-style="{
               :header-cell-style="{
@@ -219,10 +235,10 @@
                 border: 0,
                 border: 0,
               }"
               }"
             >
             >
-              <el-table-column align="center" prop="houseName" label="姓名">
+              <el-table-column align="center" prop="roomNumber" label="房间号">
               </el-table-column>
               </el-table-column>
               <el-table-column align="center" prop="setDate" label="角色" />
               <el-table-column align="center" prop="setDate" label="角色" />
-              <el-table-column align="center" prop="price" label="解锁类型" />
+              <el-table-column align="center" prop="unlockType" label="解锁类型" />
               <el-table-column
               <el-table-column
                 align="center"
                 align="center"
                 prop="operationName"
                 prop="operationName"
@@ -230,7 +246,7 @@
               />
               />
               <el-table-column
               <el-table-column
                 align="center"
                 align="center"
-                prop="operationTime"
+                prop="updateTime"
                 label="消息时间"
                 label="消息时间"
               >
               >
               </el-table-column>
               </el-table-column>
@@ -251,8 +267,8 @@
         <div v-if="newsIndex == 2">
         <div v-if="newsIndex == 2">
           <div class="footers" v-loading="loading">
           <div class="footers" v-loading="loading">
             <el-table
             <el-table
-              :row-class-name="tableRowClassName2"
-              :data="roomList.list"
+              :row-class-name="tableRowClassName"
+              :data="newTableList"
               @selection-change="handleSelectionChange"
               @selection-change="handleSelectionChange"
               style="width: 100%; height: 550px"
               style="width: 100%; height: 550px"
               :header-cell-style="{
               :header-cell-style="{
@@ -261,18 +277,18 @@
                 border: 0,
                 border: 0,
               }"
               }"
             >
             >
-              <el-table-column align="center" prop="houseName" label="操作编号">
+              <el-table-column align="center" prop="roomNumber" label="房间号">
               </el-table-column>
               </el-table-column>
-              <el-table-column align="center" prop="setDate" label="类型" />
-              <el-table-column align="center" prop="price" label="操作人" />
+              <el-table-column align="center" prop="type" label="类型" />
+              <el-table-column align="center" prop="operatorName" label="操作人" />
               <el-table-column
               <el-table-column
                 align="center"
                 align="center"
-                prop="operationName"
+                prop="dataTime"
                 label="操作时间"
                 label="操作时间"
               />
               />
               <el-table-column
               <el-table-column
                 align="center"
                 align="center"
-                prop="operationTime"
+                prop="content"
                 label="操作内容"
                 label="操作内容"
               >
               >
               </el-table-column>
               </el-table-column>
@@ -310,7 +326,7 @@
               color="rgba(41, 109, 227, 1)"
               color="rgba(41, 109, 227, 1)"
               class="queding"
               class="queding"
               type="primary"
               type="primary"
-              @click="submitAdd(ruleFormRef)"
+              @click="unlockingSubmit"
             >
             >
               确定
               确定
             </el-button>
             </el-button>
@@ -319,6 +335,51 @@
         </div>
         </div>
       </el-dialog>
       </el-dialog>
 
 
+      <!-- 绑定设备 -->
+      <el-dialog
+        class="BindingDialog"
+        v-model="bindingVisible"
+        :close-on-click-modal="false"
+        :close-on-press-escape="false"
+        title="绑定设备"
+        align-center
+        width="450"
+        :before-close="cancelBinding"
+      >
+        <div class="middle">
+          <el-form
+            ref="ruleFormRef"
+            :model="bindingRef"
+            :rules="bindingrules"
+            label-width="100px"
+            class="demo-ruleForm"
+            :size="formSize"
+            label-position="left"
+            status-icon
+          >
+            <el-form-item label="绑定设备 :" prop="luid">
+              <el-input
+                style="width: 250px"
+                v-model="bindingList.luid"
+                placeholder="请输入设备id"
+                clearable
+              />
+            </el-form-item>
+            <el-form-item class="options">
+              <el-button
+                color="rgba(0, 97, 255, 1)"
+                class="queding"
+                type="primary"
+                @click="bindingSubmit(bindingRef)"
+              >
+                确定
+              </el-button>
+              <el-button @click="cancelBinding">取消</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-dialog>
+
       <!-- 解绑设备 -->
       <!-- 解绑设备 -->
       <el-dialog
       <el-dialog
         class="unlockingDialog"
         class="unlockingDialog"
@@ -337,7 +398,7 @@
               color="rgba(41, 109, 227, 1)"
               color="rgba(41, 109, 227, 1)"
               class="queding"
               class="queding"
               type="primary"
               type="primary"
-              @click="submitAdd(ruleFormRef)"
+              @click="deblockSubmit"
             >
             >
               确定
               确定
             </el-button>
             </el-button>
@@ -548,7 +609,7 @@
                 </template> -->
                 </template> -->
                 <div class="table">
                 <div class="table">
                   <el-table
                   <el-table
-                    :row-class-name="tableRowClassName2"
+                    :row-class-name="tableRowClassName"
                     :data="tableData.list"
                     :data="tableData.list"
                     @selection-change="handleSelectionChange"
                     @selection-change="handleSelectionChange"
                     style="width: 100%; height: 200px"
                     style="width: 100%; height: 200px"
@@ -664,7 +725,7 @@
                 </template> -->
                 </template> -->
                 <div class="table">
                 <div class="table">
                   <el-table
                   <el-table
-                    :row-class-name="tableRowClassName2"
+                    :row-class-name="tableRowClassName"
                     :data="tableData.list"
                     :data="tableData.list"
                     @selection-change="handleSelectionChange"
                     @selection-change="handleSelectionChange"
                     style="width: 100%; height: 200px"
                     style="width: 100%; height: 200px"
@@ -765,7 +826,7 @@
                 </template> -->
                 </template> -->
                 <div class="table">
                 <div class="table">
                   <el-table
                   <el-table
-                    :row-class-name="tableRowClassName2"
+                    :row-class-name="tableRowClassName"
                     :data="roomList.list"
                     :data="roomList.list"
                     @selection-change="handleSelectionChange"
                     @selection-change="handleSelectionChange"
                     style="width: 100%; height: 200px"
                     style="width: 100%; height: 200px"
@@ -1214,8 +1275,8 @@ const searchInput = reactive({
   keyWord: "",
   keyWord: "",
 }); // 搜索按钮数据
 }); // 搜索按钮数据
 
 
-const roomTypes=ref();// 房间类型数据
-const roomTypeIndex=ref()// 选中的房间类型
+const roomTypes = ref(); // 房间类型数据
+const roomTypeIndex = ref("全部"); // 选中的房间类型
 const roomList = reactive({
 const roomList = reactive({
   list: [
   list: [
     {
     {
@@ -1511,6 +1572,7 @@ const roomList = reactive({
     },
     },
   ],
   ],
 });
 });
+const electricQuantity=ref() // 每个房间的电量
 
 
 // 设置临时总卡 (头部按钮--------------------------------------------------------)
 // 设置临时总卡 (头部按钮--------------------------------------------------------)
 const temporaryCardVisible = ref(false);
 const temporaryCardVisible = ref(false);
@@ -1574,14 +1636,30 @@ const temporaryCardRules = reactive({
 // 消息列表弹窗(----------------------------------------------------)
 // 消息列表弹窗(----------------------------------------------------)
 const newsVisible = ref(false);
 const newsVisible = ref(false);
 const newsIndex = ref(1);
 const newsIndex = ref(1);
+const newshouseNumberId=ref()
 const newsPage = ref(1); // 当前页
 const newsPage = ref(1); // 当前页
-const newsSize = ref(7);
+const newsSize = ref(10);
 const newsTotal = ref(20); // 当前总数
 const newsTotal = ref(20); // 当前总数
+const newTableList=ref()
 
 
 // 远程开锁(--------------------------------------------------------)
 // 远程开锁(--------------------------------------------------------)
 const unlockingVisible = ref(false);
 const unlockingVisible = ref(false);
+const unlockList = reactive({ luid: "", roomNumber: "",houseNumberId:'' });
+
+// 绑定设备 (--------------------------------------------------------)
+const bindingVisible = ref(false);
+const bindingRef=ref();
+const bindingList = reactive({ houseNumberId:"",luid: "" });
+// 表单验证
+const bindingrules = reactive({
+  luid: [
+    { required: true, message: "姓名不能为空", trigger: "blur" },
+  ],
+});
+
 // 解绑设备 (--------------------------------------------------------)
 // 解绑设备 (--------------------------------------------------------)
 const deblockingVisible = ref(false);
 const deblockingVisible = ref(false);
+const dellockList = reactive({ houseNumberId: "" });
 // 禁用门锁 (--------------------------------------------------------)
 // 禁用门锁 (--------------------------------------------------------)
 const forbiddenVisible = ref(false);
 const forbiddenVisible = ref(false);
 // 重置管理员密码 (--------------------------------------------------------)
 // 重置管理员密码 (--------------------------------------------------------)
@@ -1811,33 +1889,46 @@ const identityCardTitle = ref("");
 // const identityCardNum = ref(""); // 身份证卡号
 // const identityCardNum = ref(""); // 身份证卡号
 const identityCardIndex = ref(0); // 读卡步骤
 const identityCardIndex = ref(0); // 读卡步骤
 
 
-watch(
-  () => searchInput.createTime,
-  (newVal, oldVal) => {
-    console.log("监听时间:", newVal);
-    if (newVal == null) {
-      getList();
-    }
-  }
-);
-
-// 点击房间查看面板操作
-const itemClick = (i) => {
+// 点击房间查看面板操作 (--------------------------------------------------)
+const itemClick = async (i) => {
   roomList.list.forEach((item) => {
   roomList.list.forEach((item) => {
-    item.children.forEach((ii) => {
+    item.vos.forEach((ii) => {
       ii.visible = false;
       ii.visible = false;
     });
     });
   });
   });
   i.visible = true;
   i.visible = true;
-  // if (i.visible == true) {
-  //   i.visible = false;
-  // } else {
-  //   i.visible = true;
-  // }
+  let data = {
+    houseNumberId: i.houseNumberId,
+    permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+  };
+  let res = await axios({
+    method: "get",
+    url: api.value + "/house-lock/particular",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    params: data,
+  });
+  console.log(res, "门锁详情");
+  if (res.data.code == 200) {
+    electricQuantity.value=res.data.data.electricQuantity;
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
+// 关闭操作面板
+const closeRoom = (i) => {
+  i.visible = false;
 };
 };
 
 
 // 房型列表展示条
 // 房型列表展示条
-const roomNameTypeData=async ()=>{
+const roomNameTypeData = async () => {
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
     url: api.value + "/house/roomNameType",
     url: api.value + "/house/roomNameType",
@@ -1848,8 +1939,8 @@ const roomNameTypeData=async ()=>{
   });
   });
   console.log(res, "房型管理");
   console.log(res, "房型管理");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    roomTypes.value=res.data.data
-    roomTypeIndex.value=roomTypes.value[0]
+    roomTypes.value = res.data.data;
+    // roomTypeIndex.value=roomTypes.value[0]
     loading.value = false;
     loading.value = false;
     // ElMessage({
     // ElMessage({
     //   type: "success",
     //   type: "success",
@@ -1866,48 +1957,46 @@ const roomNameTypeData=async ()=>{
       center: true,
       center: true,
     });
     });
   }
   }
-}
-const changeTypes=(val)=>{
-  roomTypeIndex.value=val
-}
+};
+const changeTypes = (val) => {
+  console.log(val);
+  roomTypeIndex.value = val;
+  getList().then(()=>{
+    roomList.list.forEach((item) => {
+      item.vos.forEach((ii) => {
+        ii.visible = false;
+      });
+    });
+  })
+};
 
 
 // 查看员工列表
 // 查看员工列表
 const getList = async () => {
 const getList = async () => {
   loading.value = true;
   loading.value = true;
   let data = {
   let data = {
-    page: currentPage.value, // 当前页
-    rows: pageSize.value, // 一页数据条数
-    ledgerParam: searchInput.keyWord,
-    managerId: sessionStorage.getItem("token"),
+    roomNumber: searchInput.keyWord,
+    permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+    roomName: roomTypeIndex.value,
   };
   };
-  if (searchInput.createTime) {
-    data.payStartTime = searchInput.createTime[0];
-    data.payEndTime = searchInput.createTime[1];
-  }
-
-  if (searchInput.status) {
-    if (searchInput.status != 0) {
-      data.orderStatus = searchInput.status;
-    }
+  if (roomTypeIndex.value == "全部") {
+    data.roomName = "";
   }
   }
   let res = await axios({
   let res = await axios({
-    method: "post",
-    url: api.value + "/mhotel/bookquearyBookPage.action",
+    method: "get",
+    url: api.value + "/house-lock/list",
     headers: {
     headers: {
-      // token: sessionStorage.getItem("token"),
-      // user_head: sessionStorage.getItem("userhead"),
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
     },
     },
     params: data,
     params: data,
   });
   });
-  console.log(res, "用户列表");
+  console.log(res, "门锁页面展示");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     loading.value = false;
     loading.value = false;
-    // ElMessage({
-    //   type: "success",
-    //   showClose: true,
-    //   message: res.data.message,
-    //   center: true,
-    // });
+    res.data.data.forEach((item) => {
+      item.total = item.vos.length;
+    });
+    roomList.list = res.data.data;
   } else {
   } else {
     loading.value = false;
     loading.value = false;
     ElMessage({
     ElMessage({
@@ -1933,14 +2022,127 @@ const cancelTemporaryCard = () => {
 };
 };
 
 
 // 消息列表 (---------------------------------------------------------------)
 // 消息列表 (---------------------------------------------------------------)
-const newsClick = () => {
+const newsClick =async (row) => {
   newsVisible.value = true;
   newsVisible.value = true;
+  console.log(row,'消息列表');
+  newshouseNumberId.value=row.houseNumberId
+  if(newsIndex.value==1){
+    let data = {
+      houseNumberId: newshouseNumberId.value,
+      permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+      page: newsPage.value,
+      size: newsSize.value,
+    };
+    let res = await axios({
+      method: "get",
+      url: api.value + "/unlocking-record/pageList",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("userhead"),
+      },
+      params: data,
+    });
+    console.log(res, "开锁记录");
+    if (res.data.code == 200) {
+      newTableList.value=res.data.data.records
+      newsTotal.value=res.data.data.total
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
+  }else if(newsIndex.value==2){
+    let data = {
+      houseNumberId: newshouseNumberId.value,
+      permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+      page: newsPage.value,
+      size: newsSize.value,
+    };
+    let res = await axios({
+      method: "get",
+      url: api.value + "/operating-record/pageList",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("userhead"),
+      },
+      params: data,
+    });
+    console.log(res, "操作记录");
+    if (res.data.code == 200) {
+      newTableList.value=res.data.data.records
+      newsTotal.value=res.data.data.total
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
+  }
 };
 };
 // 切换消息列表
 // 切换消息列表
-const changeNews = (ind) => {
+const changeNews =async (ind) => {
   newsIndex.value = ind;
   newsIndex.value = ind;
   if (ind == 1) {
   if (ind == 1) {
+    let data = {
+      houseNumberId: newshouseNumberId.value,
+      permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+      page: newsPage.value,
+      size: newsSize.value,
+    };
+    let res = await axios({
+      method: "get",
+      url: api.value + "/unlocking-record/pageList",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("userhead"),
+      },
+      params: data,
+    });
+    console.log(res, "开锁记录");
+    if (res.data.code == 200) {
+      newTableList.value=res.data.data.records
+      newsTotal.value=res.data.data.total
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
   } else if (ind == 2) {
   } else if (ind == 2) {
+    let data = {
+      houseNumberId: newshouseNumberId.value,
+      permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+      page: newsPage.value,
+      size: newsSize.value,
+    };
+    let res = await axios({
+      method: "get",
+      url: api.value + "/operating-record/pageList",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("userhead"),
+      },
+      params: data,
+    });
+    console.log(res, "开锁记录");
+    if (res.data.code == 200) {
+      newTableList.value=res.data.data.records
+      newsTotal.value=res.data.data.total
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
   }
   }
 };
 };
 // 关闭弹窗列表
 // 关闭弹窗列表
@@ -1951,19 +2153,154 @@ const cancelNews = () => {
 const newsHandleCurrentChange = (value) => {
 const newsHandleCurrentChange = (value) => {
   // console.log(value);
   // console.log(value);
   newsPage.value = value;
   newsPage.value = value;
+  changeNews(newsIndex.value)
 };
 };
 
 
 // 远程开锁(-----------------------------------------------------------------)
 // 远程开锁(-----------------------------------------------------------------)
-const unlockingClick = () => {
+const unlockingClick = (row) => {
+  console.log(row, "远程开锁");
   unlockingVisible.value = true;
   unlockingVisible.value = true;
+  unlockList.luid = row.equipmentType;
+  unlockList.roomNumber = row.roomNumber;
+  unlockList.houseNumberId = row.houseNumberId;
+};
+// 确定远程开锁
+const unlockingSubmit = async () => {
+  let data = {
+    luid: unlockList.luid,
+    roomNumber: unlockList.roomNumber,
+    houseNumberId: unlockList.houseNumberId,
+    permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+  };
+  let res = await axios({
+    method: "post",
+    url: api.value + "/house-lock/remoteUnlocking",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    data: data,
+  });
+  console.log(res, "确定远程开锁");
+  if (res.data.code == 200) {
+    unlockingVisible.value = false;
+    getList()
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 };
 };
 const cancelUnlocking = () => {
 const cancelUnlocking = () => {
   unlockingVisible.value = false;
   unlockingVisible.value = false;
 };
 };
+
+// 绑定设备(-----------------------------------------------------------------)
+const bindingClick = (row) => {
+  console.log(row, "绑定设备");
+  bindingVisible.value = true;
+  bindingList.houseNumberId=row.houseNumberId;
+};
+// 确定绑定设备
+const bindingSubmit = lodash.debounce(async (formEl) => {
+  if (!formEl) return;
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      let data = {
+        permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+        houseNumberId: bindingList.houseNumberId, //房间号id
+	      adminId: sessionStorage.getItem("id"), //管理员id
+	      luid: bindingList.luid //锁设备ID
+      };
+      let res = await axios({
+          method: "post",
+          url: api.value + "/house-lock/binding",
+          headers: {
+            token: sessionStorage.getItem("token"),
+            user_head: sessionStorage.getItem("user_head"),
+          },
+          data: data,
+      });
+      console.log(res, "确定绑定设备");
+      if (res.data.code == 200) {
+          getList();
+          ElMessage({
+            type: "success",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+          bindingVisible.value = false;
+          bindingRef.value.resetFields();
+      } else {
+          ElMessage({
+            type: "error",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+      }
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
+}, 1000);
+// 取消绑定设备
+const cancelBinding = () => {
+  bindingVisible.value = false;
+};
+
 // 解绑设备(-----------------------------------------------------------------)
 // 解绑设备(-----------------------------------------------------------------)
-const deblockingClick = () => {
+const deblockingClick = (row) => {
+  console.log(row, "解绑设备");
   deblockingVisible.value = true;
   deblockingVisible.value = true;
+  dellockList.houseNumberId = row.houseNumberId;
 };
 };
+// 确定解绑设备
+const deblockSubmit = async () => {
+  let data = {
+    houseNumberId: dellockList.houseNumberId,
+    permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+    adminId: sessionStorage.getItem("id"),
+  };
+  let res = await axios({
+    method: "get",
+    url: api.value + "/house-lock/unbind",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    params: data,
+  });
+  console.log(res, "确定解绑设备");
+  if (res.data.code == 200) {
+    deblockingVisible.value = false;
+    getList()
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
+// 取消绑定
 const cancelDeblocking = () => {
 const cancelDeblocking = () => {
   deblockingVisible.value = false;
   deblockingVisible.value = false;
 };
 };
@@ -2295,7 +2632,8 @@ const handleCurrentChange = (value) => {
 
 
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
-  roomNameTypeData()
+  roomNameTypeData();
+  getList();
 });
 });
 onUnmounted(() => {
 onUnmounted(() => {
   // document.removeEventListener("keyup", Enters);
   // document.removeEventListener("keyup", Enters);
@@ -2323,13 +2661,13 @@ onUnmounted(() => {
     color: rgb(0, 0, 0);
     color: rgb(0, 0, 0);
     font-size: 18px;
     font-size: 18px;
     font-weight: 600;
     font-weight: 600;
-    .cameratxt{
+    .cameratxt {
       height: 60px;
       height: 60px;
       line-height: 60px;
       line-height: 60px;
     }
     }
   }
   }
 
 
-  .middles{
+  .middles {
     height: calc(100% - 61px);
     height: calc(100% - 61px);
   }
   }
 
 
@@ -2754,6 +3092,17 @@ onUnmounted(() => {
     border: 1px solid red;
     border: 1px solid red;
     color: #fff;
     color: #fff;
     font-size: 14px;
     font-size: 14px;
+    position: relative;
+    .close {
+      position: absolute;
+      cursor: pointer;
+      right: -40px;
+      top: -30px;
+      img {
+        width: 30px;
+        height: 30px;
+      }
+    }
     .title {
     .title {
       font-size: 16px;
       font-size: 16px;
       padding: 7.5px 0;
       padding: 7.5px 0;
@@ -3019,11 +3368,11 @@ onUnmounted(() => {
           margin-left: 5px;
           margin-left: 5px;
         }
         }
 
 
-        .el-table__body .even2 {
+        .el-table__body .even {
           background-color: #fff;
           background-color: #fff;
         }
         }
 
 
-        .el-table__body .odd2 {
+        .el-table__body .odd {
           background-color: rgba(240, 243, 247, 1);
           background-color: rgba(240, 243, 247, 1);
         }
         }
       }
       }
@@ -3093,6 +3442,50 @@ onUnmounted(() => {
     }
     }
   }
   }
 }
 }
+
+// 绑定设备弹窗
+:deep(.BindingDialog) {
+  height: 300px;
+  overflow: hidden;
+  border-radius: 11px;
+
+  .el-dialog__header {
+    border-radius: 11px 11px 0 0;
+    background: rgba(245, 249, 255, 1);
+    font-weight: 600;
+    height: 60px;
+    padding: 0 20px;
+    line-height: 60px;
+    margin: 0;
+    border-bottom: 1px solid rgba(230, 230, 230, 1);
+
+    .el-dialog__headerbtn {
+      outline: none;
+    }
+  }
+
+  .el-dialog__body {
+    padding: 20px;
+
+    .middle {
+      width: 96%;
+      color: #000;
+      .options {
+        display: flex;
+        flex-direction: row-reverse;
+        align-items: center;
+        margin: 120px 0 0 0;
+        .el-form-item__content{
+          flex: none;
+        }
+        .queding {
+          margin-left: 20px;
+        }
+      }
+    }
+  }
+}
+
 // 设置临时总卡
 // 设置临时总卡
 :deep(.temporaryCardDialog) {
 :deep(.temporaryCardDialog) {
   //   height: 420px;
   //   height: 420px;
@@ -3263,7 +3656,6 @@ onUnmounted(() => {
         }
         }
       }
       }
     }
     }
-    
   }
   }
 }
 }
 // 钥匙管理 密码管理
 // 钥匙管理 密码管理

+ 65 - 11
src/views/process/process.vue

@@ -155,18 +155,18 @@
               border: 0,
               border: 0,
             }"
             }"
           >
           >
-            <el-table-column
+            <!-- <el-table-column
               align="center"
               align="center"
               prop="orderNum"
               prop="orderNum"
               width="180"
               width="180"
               label="审批编号"
               label="审批编号"
             >
             >
               <template #default="{ row }">
               <template #default="{ row }">
-                <div class="orderNum" @click="orderInfo(row)">
-                  {{ row.orderNum }}
+                <div class="orderNum">
+                  {{ row.id }}
                 </div>
                 </div>
               </template>
               </template>
-            </el-table-column>
+            </el-table-column> -->
             <el-table-column
             <el-table-column
               align="center"
               align="center"
               prop="submissionTime"
               prop="submissionTime"
@@ -180,11 +180,25 @@
               label="审批时间"
               label="审批时间"
               width="180"
               width="180"
             />
             />
-            <el-table-column align="center" prop="usersName" label="提交人" />
             <el-table-column
             <el-table-column
               align="center"
               align="center"
               prop="examineAndApproveRemark"
               prop="examineAndApproveRemark"
-              label="备注"
+              label="审批备注"
+              show-overflow-tooltip
+              width="150"
+            />
+            <el-table-column align="center" prop="usersName" label="提交人" />
+            <el-table-column align="center" prop="changeUsersName" label="替课老师" />
+            <el-table-column
+              align="center"
+              prop="secondaryExamineAndApproveTime"
+              label="次级审批时间"
+              width="180"
+            />
+            <el-table-column
+              align="center"
+              prop="secondaryExamineAndApproveRemark"
+              label="次级审批备注"
               show-overflow-tooltip
               show-overflow-tooltip
               width="150"
               width="150"
             />
             />
@@ -318,6 +332,7 @@
           class="m-2"
           class="m-2"
           placeholder="请选择指定终点"
           placeholder="请选择指定终点"
           style="width: 280px"
           style="width: 280px"
+          @change="destinationChange"
         >
         >
           <el-option label="最上级审批" :value="1" />
           <el-option label="最上级审批" :value="1" />
           <el-option label="依次审批" :value="2" />
           <el-option label="依次审批" :value="2" />
@@ -396,28 +411,35 @@ const remarksRules = reactive({
 const regulation = reactive({
 const regulation = reactive({
   scope: "", // 可见范围
   scope: "", // 可见范围
   destination: "", // 指定终点
   destination: "", // 指定终点
+  id:""
 });
 });
 
 
 // 切换 申请记录 规则设置
 // 切换 申请记录 规则设置
 const changeItem = (ind) => {
 const changeItem = (ind) => {
   changeIndex.value = ind;
   changeIndex.value = ind;
   if (ind == 1) {
   if (ind == 1) {
-    // getList();
+    getList();
   } else if (ind == 2) {
   } else if (ind == 2) {
+    ruleInfo()
   }
   }
 };
 };
-const departmentList = async () => {
+// 规则设置 (------------------------------------------------------)
+const ruleInfo= async () => {
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
-    url: api.value + "/users/departmentList",
+    url: api.value + "/application-procedure-setting/list",
     headers: {
     headers: {
       token: sessionStorage.getItem("token"),
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("user_head"),
       user_head: sessionStorage.getItem("user_head"),
     },
     },
+    params:{
+      permissionSettingId:sessionStorage.getItem('permissionSettingId')
+    }
   });
   });
-  console.log(res, "部门数据");
+  console.log(res, "规则设置");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    departmentData.value = res.data.data;
+    regulation.destination = Number(res.data.data.approverType);
+    regulation.id = res.data.data.id;
   } else {
   } else {
     ElMessage({
     ElMessage({
       type: "error",
       type: "error",
@@ -427,6 +449,38 @@ const departmentList = async () => {
     });
     });
   }
   }
 };
 };
+// 改变规则
+const destinationChange=async ()=>{
+  let res = await axios({
+    method: "post",
+    url: api.value + "/application-procedure-setting/update",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+    data:{
+      adminMenuId: sessionStorage.getItem('permissionSettingId'),
+      id: regulation.id,
+      approverType: regulation.destination
+    }
+  });
+  console.log(res, "规则设置");
+  if (res.data.code == 200) {
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+}
 
 
 // 查看员工列表
 // 查看员工列表
 const getList = async () => {
 const getList = async () => {

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 378 - 435
src/views/roomStatus/roomStatus.vue


+ 194 - 69
src/views/statement/statement.vue

@@ -67,7 +67,7 @@
               color="rgba(41, 109, 227, 1)"
               color="rgba(41, 109, 227, 1)"
               type="primary"
               type="primary"
               plain
               plain
-              @click="searchBtn"
+              @click="importExcel"
             >
             >
               导出</el-button
               导出</el-button
             >
             >
@@ -102,30 +102,70 @@
               {{ row.orderNumber }}
               {{ row.orderNumber }}
             </template>
             </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column align="center" prop="liveName" label="入住人" />
-          <el-table-column align="center" prop="houseName" label="房型" />
-          <el-table-column align="center" prop="userName" label="房号" />
+          <el-table-column align="center" prop="reserveName" label="入住人" />
+          <el-table-column align="center" prop="houseName" label="房型">
+            <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
           <el-table-column
             align="center"
             align="center"
             prop="payPrice"
             prop="payPrice"
-            v-if="changeIndex==1"
+            v-if="changeIndex == 1"
             label="订单金额(元)"
             label="订单金额(元)"
           />
           />
           <el-table-column
           <el-table-column
             align="center"
             align="center"
             prop="payPrice"
             prop="payPrice"
-            v-if="changeIndex==2"
+            v-if="changeIndex == 2"
             label="待结账(元)"
             label="待结账(元)"
           />
           />
           <el-table-column
           <el-table-column
             align="center"
             align="center"
             prop="payTime"
             prop="payTime"
-            v-if="changeIndex==1"
+            v-if="changeIndex == 1"
             label="支付时间"
             label="支付时间"
             width="180"
             width="180"
           />
           />
           <el-table-column
           <el-table-column
             align="center"
             align="center"
+            prop="orderStatus"
+            label="订单状态"
+            width="120"
+          >
+            <template #default="{ row }">
+              <div style="color: #f07218" v-if="row.orderStatus == 1">
+                待支付
+              </div>
+              <div style="color: #09ae22" v-if="row.orderStatus == 2">
+                已支付
+              </div>
+              <div style="color: #9bab0a" v-if="row.orderStatus == 3">
+                待入住
+              </div>
+              <div style="color: #0b89d7" v-if="row.orderStatus == 4">
+                已入住
+              </div>
+              <div style="color: #4d17b1" v-if="row.orderStatus == 5">
+                待结账
+              </div>
+              <div style="color: #eb3f0a" v-if="row.orderStatus == 6">
+                退款中
+              </div>
+              <div style="color: #84a712" v-if="row.orderStatus == 7">
+                已退款
+              </div>
+              <div style="color: #1b14e5" v-if="row.orderStatus == 8">
+                已退房
+              </div>
+              <div style="color: #818282" v-if="row.orderStatus == 9">
+                已取消,超时
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
             prop="createTime"
             prop="createTime"
             label="创建时间"
             label="创建时间"
             width="180"
             width="180"
@@ -171,10 +211,7 @@
       <div class="info">
       <div class="info">
         <div class="user">
         <div class="user">
           <div class="name">姓名</div>
           <div class="name">姓名</div>
-          <el-input
-            v-model="order.userName"
-            placeholder="请输入关键字查询"
-          ></el-input>
+          <el-input v-model="order.userName" placeholder=""></el-input>
         </div>
         </div>
         <div class="user">
         <div class="user">
           <div class="name">联系方式</div>
           <div class="name">联系方式</div>
@@ -184,14 +221,13 @@
       <div class="info">
       <div class="info">
         <div class="user">
         <div class="user">
           <div class="name">订单号</div>
           <div class="name">订单号</div>
-
-          <el-tooltip placement="top" :content="order.orderNo">
-            <el-input v-model="order.orderNo"></el-input>
-          </el-tooltip>
+          <el-input v-model="order.orderNo"></el-input>
+          <!-- <el-tooltip placement="top" :content="order.orderNo">
+                <el-input v-model="order.orderNo"></el-input>
+              </el-tooltip> -->
         </div>
         </div>
         <div class="user">
         <div class="user">
-          <div class="name" v-if="changeIndex==1">支付金额(元)</div>
-          <div class="name" v-if="changeIndex==2">待付金额(元)</div>
+          <div class="name">支付金额(元)</div>
           <el-input v-model="order.allOfReceiveAmount"></el-input>
           <el-input v-model="order.allOfReceiveAmount"></el-input>
         </div>
         </div>
       </div>
       </div>
@@ -219,10 +255,13 @@
       <!-- 水费区域 -->
       <!-- 水费区域 -->
       <div class="rate">水费明细</div>
       <div class="rate">水费明细</div>
       <div class="water">
       <div class="water">
-        表计:101 楼层:{{ order.roomNo }} 抄表时间:2022-07-27 15:15:15
+        表计:{{ order.watermeter }} &nbsp;&nbsp;&nbsp;楼层:{{
+          order.floor
+        }}
+        &nbsp;&nbsp;&nbsp;抄表时间:{{ order.realStartTime }}
       </div>
       </div>
       <el-table
       <el-table
-        :data="waterTable"
+        :data="waterTable.list"
         max-height="93"
         max-height="93"
         style="width: 832px"
         style="width: 832px"
         stripe
         stripe
@@ -233,23 +272,9 @@
         }"
         }"
       >
       >
         <el-table-column
         <el-table-column
-          prop="startOfWater"
-          width="100"
-          label="始码"
-          align="center"
-        ></el-table-column>
-
-        <el-table-column
-          prop="endOfWater"
-          width="100"
-          align="center"
-          label="终码"
-        ></el-table-column>
-
-        <el-table-column
           prop="waterVolume"
           prop="waterVolume"
           align="center"
           align="center"
-          label="水量(吨)"
+          label="用水量(吨)"
         ></el-table-column>
         ></el-table-column>
         <el-table-column
         <el-table-column
           prop="priceOfWater"
           prop="priceOfWater"
@@ -272,10 +297,13 @@
       <!-- 电费区域 -->
       <!-- 电费区域 -->
       <div class="rate">电费明细</div>
       <div class="rate">电费明细</div>
       <div class="water">
       <div class="water">
-        表计:101 楼层:{{ order.roomNo }} 抄表时间:2022-07-27 15:15:15
+        表计:{{ order.elemeter }} &nbsp;&nbsp;&nbsp;楼层:{{
+          order.floor
+        }}
+        &nbsp;&nbsp;&nbsp;抄表时间:{{ order.realStartTime }}
       </div>
       </div>
       <el-table
       <el-table
-        :data="electricTable"
+        :data="electricTable.list"
         max-height="93"
         max-height="93"
         style="width: 832px"
         style="width: 832px"
         stripe
         stripe
@@ -286,26 +314,12 @@
         }"
         }"
       >
       >
         <el-table-column
         <el-table-column
-          prop="startOfElectric"
-          width="100"
-          label="始码"
+          prop="eleVolume"
           align="center"
           align="center"
+          label="用电量(度)"
         ></el-table-column>
         ></el-table-column>
-
         <el-table-column
         <el-table-column
-          prop="endOfElectric"
-          width="100"
-          align="center"
-          label="终码"
-        ></el-table-column>
-
-        <el-table-column
-          prop="electricVolume"
-          align="center"
-          label="电量(度)"
-        ></el-table-column>
-        <el-table-column
-          prop="priceOfElectric"
+          prop="priceOfEle"
           align="center"
           align="center"
           label="电价(元)"
           label="电价(元)"
         ></el-table-column>
         ></el-table-column>
@@ -370,20 +384,41 @@ const currentPage = ref(1); // 当前页
 const pageSize = ref(10);
 const pageSize = ref(10);
 const total = ref(10); // 当前总数
 const total = ref(10); // 当前总数
 
 
+// 详情
 const orderInfoVisible = ref(false); // 详情弹窗
 const orderInfoVisible = ref(false); // 详情弹窗
 const order = reactive({
 const order = reactive({
   userName: "", // 姓名
   userName: "", // 姓名
   userPhone: "", // 联系方式
   userPhone: "", // 联系方式
   orderNo: "", // 订单号
   orderNo: "", // 订单号
-  allOfReceiveAmount: "", // 预付款金额(元)
+  allOfReceiveAmount: "", // 支付金额(元)
   realStartTime: "", // 入住时间
   realStartTime: "", // 入住时间
   realEndTime: "", // 离住时间
   realEndTime: "", // 离住时间
   housDay: "", // 入住天数
   housDay: "", // 入住天数
   payTime: "", // 支付时间
   payTime: "", // 支付时间
-  roomNo: "", // 水费明细
+  floor: "", // 楼层
+  watermeter: "", // 水表计
+  elemeter: "", // 电表计
 });
 });
-const waterTable = ref(); // 水费明细
-const electricTable = ref(); // 电费明细
+const waterTable = reactive({
+  list: [
+    {
+      waterVolume: "",
+      priceOfWater: "",
+      allowance: "",
+      cost: "",
+    },
+  ],
+}); // 水费明细
+const electricTable = reactive({
+  list: [
+    {
+      eleVolume: "",
+      priceOfEle: "",
+      allowance: "",
+      cost: "",
+    },
+  ],
+}); // 电费明细
 
 
 // 切换 支付成功订单 待结账
 // 切换 支付成功订单 待结账
 const changeItem = (ind) => {
 const changeItem = (ind) => {
@@ -416,8 +451,8 @@ const getList = async () => {
   });
   });
   console.log(res, "用户列表");
   console.log(res, "用户列表");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    tableData.list = res.data.data.records;
-    total.value = res.data.data.total;
+    tableData.list = res.data.data.list;
+    total.value = res.data.data.totalCount;
     loading.value = false;
     loading.value = false;
   } else {
   } else {
     loading.value = false;
     loading.value = false;
@@ -435,11 +470,61 @@ const searchBtn = lodash.debounce(async () => {
   getList();
   getList();
 }, 300);
 }, 300);
 
 
-// 详情弹窗
-const clickOrderInfo = (row) => {
+// 详情弹窗 (----------------------------------------------)
+const clickOrderInfo = async (row) => {
   orderInfoVisible.value = true;
   orderInfoVisible.value = true;
+  order.floor = row.houseName + " " + row.houseNumber;
   console.log(row);
   console.log(row);
-  order.userName=row.liveName
+  let data = {
+    orderNumber: row.orderNumber,
+    adminId: sessionStorage.getItem("permissionSettingId"),
+  };
+  let res = await axios({
+    method: "get",
+    url: api.value + "/house-order/particulars",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+    params: data,
+  });
+  console.log(res, "详情信息");
+  if (res.data.code == 200) {
+    let data = res.data.data.houseOrder;
+    order.userName = data.reserveName;
+    order.userPhone = data.reservePhone;
+    order.orderNo = data.orderNumber;
+    order.allOfReceiveAmount = data.payPrice;
+    order.realStartTime = data.reserveLiveTime;
+    order.realEndTime = data.reserveLeaveTime;
+    order.housDay = data.liveDay;
+    order.payTime = data.payTime;
+    order.watermeter = res.data.data.waterEquipmentMeterName;
+    order.elemeter = res.data.data.electricEquipmentMeterName;
+    waterTable.list = [
+      {
+        waterVolume: data.waterConsume, // 用水量(吨)
+        priceOfWater: 2.1, // 水价(元)
+        allowance: res.data.data.freeQuotaOfWater, // 补助量(吨)
+        cost: data.waterCost, // 产生水费(元)
+      },
+    ];
+    electricTable.list = [
+      {
+        eleVolume: data.electricConsume, // 用电量(吨)
+        priceOfEle: 0.6, // 电价(元)
+        allowance: res.data.data.freeQuotaOfElectric, // 补助量(吨)
+        cost: data.electricCost, // 产生电费(元)
+      },
+    ];
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 };
 };
 // 关闭详情弹窗
 // 关闭详情弹窗
 const orderInfoClose = () => {
 const orderInfoClose = () => {
@@ -457,16 +542,56 @@ const tableRowClassName = ({ row, rowIndex }) => {
 };
 };
 //  支付成功订单 分页
 //  支付成功订单 分页
 const handleCurrentChange = (value) => {
 const handleCurrentChange = (value) => {
-  // console.log(value);
   currentPage.value = value;
   currentPage.value = value;
   getList();
   getList();
 };
 };
-//  待结账 分页
-const handleCurrentChange2 = (value) => {
-  // console.log(value);
-  currentPage2.value = value;
-  getList();
-};
+//导出功能
+const importExcel = lodash.debounce(async () => {
+  let data = {
+    permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+    keyWord: searchInput.keyWord,
+    state: changeIndex.value,
+  };
+  if (searchInput.createTime) {
+    data.startTime = searchInput.createTime[0];
+    data.endTime = searchInput.createTime[1];
+  }
+  let res = await axios({
+    method: "get",
+    url: api.value + "/house-order/reportStatisticsExport",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+    params: data,
+    responseType: "blob",
+  });
+  console.log(res, "统计报表导出");
+  if (res.status == 200) {
+    let name = `统计报表`;
+    var content = res.data;
+    var datas = new Blob([content]);
+    var downloadUrl = window.URL.createObjectURL(datas);
+    var anchor = document.createElement("a");
+    anchor.href = downloadUrl;
+    anchor.download = name + ".xlsx";
+    anchor.click();
+    window.URL.revokeObjectURL(datas);
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: "导出成功",
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+}, 1000);
 
 
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;