Procházet zdrojové kódy

房态管理 预定房间 电话号码默认加(+86)
房态管理 、订单管理 预定和入住不能连续点击(节流,2s内所有点击只能请求一次)
房态管理 入住中 身份证号限定 18位
房态管理、订单管理 微信扫码支付重复入住问题
用户管理 添加用户 防止保存按钮被多次点击

hzj18279462576@163.com před 1 rokem
rodič
revize
8daa33d427

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 716 - 29
package-lock.json


+ 8 - 4
src/views/doorLock/doorLock.vue

@@ -3325,9 +3325,12 @@ const Card = () => {
         setTimeout(() => {
         setTimeout(() => {
           identityCardIndex.value = 3;
           identityCardIndex.value = 3;
           identityCardTitle.value = "读卡成功";
           identityCardTitle.value = "读卡成功";
-        }, 1500);
+        }, 1000);
+        identityCardRuleForm.icCard=data.data.uid
+        setTimeout(() => {
+          addIdentityCardVisible.value=false
+        }, 2000);
       }
       }
-
       // ElMessage({
       // ElMessage({
       //   type: "success",
       //   type: "success",
       //   showClose: true,
       //   showClose: true,
@@ -3919,14 +3922,15 @@ onUnmounted(() => {
   .footer::-webkit-scrollbar {
   .footer::-webkit-scrollbar {
     background-color: #0888f8;
     background-color: #0888f8;
     height: 3px;
     height: 3px;
-    width: 4px;
+    width: 6px;
   }
   }
 
 
   .footer::-webkit-scrollbar-thumb {
   .footer::-webkit-scrollbar-thumb {
     background: #57b2ff;
     background: #57b2ff;
     border-radius: 4px;
     border-radius: 4px;
     height: 3px;
     height: 3px;
-    width: 4px;
+    width: 6px;
+    cursor: pointer;
   }
   }
 
 
   .pageSize {
   .pageSize {

+ 120 - 87
src/views/order/order.vue

@@ -1209,6 +1209,7 @@
                   checkInRuleForm.orderStatus == 3 ||
                   checkInRuleForm.orderStatus == 3 ||
                   payPriceRuleForm.type == 2
                   payPriceRuleForm.type == 2
                 "
                 "
+                :loading="payPriceLoading"
                 color="rgba(41, 109, 227, 1)"
                 color="rgba(41, 109, 227, 1)"
                 type="primary"
                 type="primary"
                 @click="configPayPrice(payPriceRef)"
                 @click="configPayPrice(payPriceRef)"
@@ -1451,6 +1452,7 @@
                 type="primary"
                 type="primary"
                 @click="submitroomChange"
                 @click="submitroomChange"
                 style="margin-right: 20px"
                 style="margin-right: 20px"
+                :loading="roomChangeLoading"
               >
               >
                 确定
                 确定
               </el-button>
               </el-button>
@@ -1461,7 +1463,7 @@
                 clearable
                 clearable
                 v-model.trim="roomChangeRuleForm.houseNumberNow"
                 v-model.trim="roomChangeRuleForm.houseNumberNow"
                 class="w-50 m-2"
                 class="w-50 m-2"
-                style="width: 80px"
+                style="width: 180px"
               />
               />
               <span class="title">新房号 : </span>
               <span class="title">新房号 : </span>
 
 
@@ -1572,6 +1574,7 @@ import { ElMessage, ElMessageBox } from "element-plus";
 import { Calendar } from "@element-plus/icons-vue";
 import { Calendar } from "@element-plus/icons-vue";
 import vidiconsApi from "@/api/vidicons.js";
 import vidiconsApi from "@/api/vidicons.js";
 import { dayjs } from "element-plus";
 import { dayjs } from "element-plus";
+// import { debounce, throttle } from 'lodash'
 import lodash from "lodash";
 import lodash from "lodash";
 import axios from "axios";
 import axios from "axios";
 import QRCode from "qrcode";
 import QRCode from "qrcode";
@@ -1717,6 +1720,16 @@ var checkInName = (rule, value, callback) => {
     callback();
     callback();
   }
   }
 };
 };
+var checkIdcardRule=(rule, value, callback) => {
+  if (!value) {
+    return callback(new Error("请输入身份证号"));
+  }
+  if(value.length==18){
+    callback();
+  }else{
+    callback(new Error("请正确输入18位身份证号"));
+  }
+};
 // 表单验证
 // 表单验证
 const checkInRules = reactive({
 const checkInRules = reactive({
   type: [{ required: true, message: "类型不能为空", trigger: "blur" }],
   type: [{ required: true, message: "类型不能为空", trigger: "blur" }],
@@ -1741,6 +1754,7 @@ const checkInRules = reactive({
       message: "身份证号不能为空",
       message: "身份证号不能为空",
       trigger: "blur",
       trigger: "blur",
     },
     },
+    { validator: checkIdcardRule, trigger: "blur" },
   ],
   ],
   arrivalTime: [
   arrivalTime: [
     {
     {
@@ -1843,6 +1857,7 @@ const radioIcDate = ref();
 const payPriceVisible = ref(false);
 const payPriceVisible = ref(false);
 const payPriceRef = ref();
 const payPriceRef = ref();
 const payPriceSuccess = ref(false); // 判断订单是否支付成功
 const payPriceSuccess = ref(false); // 判断订单是否支付成功
+const payPriceLoading = ref(false); // 确定入住加载按钮
 const payPriceRuleForm = reactive({
 const payPriceRuleForm = reactive({
   order: "",
   order: "",
   price: "",
   price: "",
@@ -1892,6 +1907,7 @@ const successPay = ref(false); // 判断是否支付成功
 
 
 // 换房弹窗(----------------------------------------------------)
 // 换房弹窗(----------------------------------------------------)
 const roomChangeVisible = ref(false);
 const roomChangeVisible = ref(false);
+const roomChangeLoading = ref(false);
 const roomChangeIndex = ref(1);
 const roomChangeIndex = ref(1);
 const roomChangeRuleForm = reactive({
 const roomChangeRuleForm = reactive({
   houseName: "", // 原本的房型
   houseName: "", // 原本的房型
@@ -2370,18 +2386,21 @@ const Card = () => {
       identityCardTitle.value = "配置失败,请检查卡片是否已放置设备上";
       identityCardTitle.value = "配置失败,请检查卡片是否已放置设备上";
       identityCardIndex.value = 1;
       identityCardIndex.value = 1;
     } else if (data.type == 140) {
     } else if (data.type == 140) {
-      checkInRuleForm.icCard = data.data.uid;
+      
       console.log(data.data.uid, "读取的卡号");
       console.log(data.data.uid, "读取的卡号");
 
 
       identityCardIndex.value = 2;
       identityCardIndex.value = 2;
       identityCardTitle.value = "读卡中";
       identityCardTitle.value = "读卡中";
 
 
       if (data.data.uid) {
       if (data.data.uid) {
+        checkInRuleForm.icCard = data.data.uid;
         setTimeout(() => {
         setTimeout(() => {
           identityCardIndex.value = 3;
           identityCardIndex.value = 3;
           identityCardTitle.value = "读卡成功";
           identityCardTitle.value = "读卡成功";
+        }, 1000);
+        setTimeout(() => {
           addIdentityCardVisible.value = false;
           addIdentityCardVisible.value = false;
-        }, 1500);
+        }, 2000);
       }
       }
     }
     }
   };
   };
@@ -2433,6 +2452,7 @@ const orderInfoCancel = (row) => {
 
 
 // 弹出支付页面 (-------------------------------------)
 // 弹出支付页面 (-------------------------------------)
 const checkInConfirm = lodash.debounce(async (formEl) => {
 const checkInConfirm = lodash.debounce(async (formEl) => {
+  payPriceLoading.value = false;
   if (!formEl) return;
   if (!formEl) return;
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
@@ -2472,12 +2492,13 @@ const checkInConfirm = lodash.debounce(async (formEl) => {
       console.log("error submit!", fields);
       console.log("error submit!", fields);
     }
     }
   });
   });
-}, 100);
+}, 300);
 // 确定入住
 // 确定入住
-const configPayPrice = lodash.debounce(async (formEl) => {
+const configPayPrice = lodash.throttle(async (formEl) => {
   if (!formEl) return;
   if (!formEl) return;
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
+      payPriceLoading.value = true;
       if (
       if (
         checkInRuleForm.orderStatus == 2 ||
         checkInRuleForm.orderStatus == 2 ||
         checkInRuleForm.orderStatus == 3
         checkInRuleForm.orderStatus == 3
@@ -2514,6 +2535,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
         console.log(res, "确定入住");
         console.log(res, "确定入住");
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getList();
           getList();
+          payPriceLoading.value = false;
           // 支付入住成功弹窗查看密码弹窗
           // 支付入住成功弹窗查看密码弹窗
           if (checkInIndex.value == 1) {
           if (checkInIndex.value == 1) {
             passVisible.value = true;
             passVisible.value = true;
@@ -2551,6 +2573,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
             center: true,
             center: true,
           });
           });
         } else {
         } else {
+          payPriceLoading.value = false;
           ElMessage({
           ElMessage({
             type: "error",
             type: "error",
             showClose: true,
             showClose: true,
@@ -2606,6 +2629,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
           console.log(res, "确定入住");
           console.log(res, "确定入住");
           if (res.data.code == 200) {
           if (res.data.code == 200) {
             getList();
             getList();
+            payPriceLoading.value = false;
             // 支付入住成功弹窗查看密码弹窗
             // 支付入住成功弹窗查看密码弹窗
             if (checkInIndex.value == 1) {
             if (checkInIndex.value == 1) {
               passVisible.value = true;
               passVisible.value = true;
@@ -2643,6 +2667,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
               center: true,
               center: true,
             });
             });
           } else {
           } else {
+            payPriceLoading.value = false;
             ElMessage({
             ElMessage({
               type: "error",
               type: "error",
               showClose: true,
               showClose: true,
@@ -2696,7 +2721,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
       console.log("error submit!", fields);
       console.log("error submit!", fields);
     }
     }
   });
   });
-}, 100);
+}, 2000);
 
 
 // 微信扫码支付界面 (----------------------------------------)
 // 微信扫码支付界面 (----------------------------------------)
 const paymentCodeClick = async () => {
 const paymentCodeClick = async () => {
@@ -2721,6 +2746,7 @@ const paymentCodeClick = async () => {
     let img = QRCode.toDataURL(res.data.data.codeUrl);
     let img = QRCode.toDataURL(res.data.data.codeUrl);
     img.then((t) => {
     img.then((t) => {
       qrCodeImgUrl.value = t;
       qrCodeImgUrl.value = t;
+      let payFlag = 0;
       timer.value = setInterval(async () => {
       timer.value = setInterval(async () => {
         let datas = new FormData();
         let datas = new FormData();
         datas.append("outTradeNo", payPriceRuleForm.order);
         datas.append("outTradeNo", payPriceRuleForm.order);
@@ -2736,85 +2762,89 @@ const paymentCodeClick = async () => {
         console.log(ress, "微信支付查询订单");
         console.log(ress, "微信支付查询订单");
         if (ress.data.code == 200) {
         if (ress.data.code == 200) {
           if (ress.data.data.tradeState == "SUCCESS") {
           if (ress.data.data.tradeState == "SUCCESS") {
-            successPay.value = true;
-            let liveTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
-            let livedata = {
-              adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
-              adminId: sessionStorage.getItem("id"), //用户id
-              houseId: checkInRuleForm.houseId,
-              houseNumberId: checkInRuleForm.houseNumberId,
-              liveName: checkInRuleForm.checkName,
-              // phone: checkInRuleForm.phone,
-              idCard: checkInRuleForm.checkIdcard,
-              // cardNumber: "", //有就填,没有就不填
-              // liveTime: checkInRuleForm.forecastTime,
-              liveTime: liveTime,
-              leaveTime: checkInRuleForm.preionizationTime,
-              payPrice: checkInRuleForm.roomPrice,
-              liveDay: checkInRuleForm.dayNum,
-              lockStatus: checkInIndex.value, //开锁方式 1:密码,2:卡片 3:指纹
-              fingerprint: checkInRuleForm.fingerprintNum, // 指纹特征码 有就填,没有就不填
-              idCardInformation: checkInRuleForm.icCard, // 卡片特征码 有就填,没有就不填
-              orderNumber: checkInRuleForm.orderNumber, //有订单就填,没有就不填
-            };
-            let liveres = await axios({
-              method: "post",
-              url: api.value + "/house-number-state/checkIdCard",
-              headers: {
-                token: sessionStorage.getItem("token"),
-                user_head: sessionStorage.getItem("user_head"),
-              },
-              data: livedata,
-            });
-            console.log(liveres, "确定入住");
-            if (liveres.data.code == 200) {
-              clearInterval(timer.value);
-              timer.value = null;
-              getList();
-              // 支付入住成功弹窗查看密码弹窗
-              if (checkInIndex.value == 1) {
-                passVisible.value = true;
-                let data = {
-                  orderNumber: checkInRuleForm.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) {
-                  passForm.pass = res.data.data.houseOrder.keyPassWord;
-                  passForm.reserveLiveTime = dayjs(
-                    res.data.data.houseOrder.liveTime
-                  ).format("YYYY-MM-DD HH:mm:ss");
-                  passForm.reserveLeaveTime =
-                    res.data.data.houseOrder.reserveLeaveTime;
+            payFlag++;
+            if(payFlag==1){
+              successPay.value = true;
+              let liveTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
+              let livedata = {
+                adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
+                adminId: sessionStorage.getItem("id"), //用户id
+                houseId: checkInRuleForm.houseId,
+                houseNumberId: checkInRuleForm.houseNumberId,
+                liveName: checkInRuleForm.checkName,
+                // phone: checkInRuleForm.phone,
+                idCard: checkInRuleForm.checkIdcard,
+                // cardNumber: "", //有就填,没有就不填
+                // liveTime: checkInRuleForm.forecastTime,
+                liveTime: liveTime,
+                leaveTime: checkInRuleForm.preionizationTime,
+                payPrice: checkInRuleForm.roomPrice,
+                liveDay: checkInRuleForm.dayNum,
+                lockStatus: checkInIndex.value, //开锁方式 1:密码,2:卡片 3:指纹
+                fingerprint: checkInRuleForm.fingerprintNum, // 指纹特征码 有就填,没有就不填
+                idCardInformation: checkInRuleForm.icCard, // 卡片特征码 有就填,没有就不填
+                orderNumber: checkInRuleForm.orderNumber, //有订单就填,没有就不填
+              };
+              let liveres = await axios({
+                method: "post",
+                url: api.value + "/house-number-state/checkIdCard",
+                headers: {
+                  token: sessionStorage.getItem("token"),
+                  user_head: sessionStorage.getItem("user_head"),
+                },
+                data: livedata,
+              });
+              console.log(liveres, "确定入住");
+              if (liveres.data.code == 200) {
+                getList();
+                // 支付入住成功弹窗查看密码弹窗
+                if (checkInIndex.value == 1) {
+                  passVisible.value = true;
+                  let data = {
+                    orderNumber: checkInRuleForm.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) {
+                    passForm.pass = res.data.data.houseOrder.keyPassWord;
+                    passForm.reserveLiveTime = dayjs(
+                      res.data.data.houseOrder.liveTime
+                    ).format("YYYY-MM-DD HH:mm:ss");
+                    passForm.reserveLeaveTime =
+                      res.data.data.houseOrder.reserveLeaveTime;
+                  }
+                } else {
+                  orderDialogVisible.value = false;
+                  payPriceVisible.value = false;
+                  paymentCodeVisible.value = false;
                 }
                 }
+                ElMessage({
+                  type: "success",
+                  showClose: true,
+                  message: ress.data.data.tradeStateDesc,
+                  center: true,
+                });
               } else {
               } else {
-                orderDialogVisible.value = false;
-                payPriceVisible.value = false;
-                paymentCodeVisible.value = false;
+                ElMessage({
+                  type: "error",
+                  showClose: true,
+                  message: liveres.data.message,
+                  center: true,
+                });
               }
               }
-              ElMessage({
-                type: "success",
-                showClose: true,
-                message: ress.data.data.tradeStateDesc,
-                center: true,
-              });
-            } else {
-              ElMessage({
-                type: "error",
-                showClose: true,
-                message: liveres.data.message,
-                center: true,
-              });
             }
             }
+            console.log(payFlag);
+            clearInterval(timer.value);
+            timer.value = null;
           } else {
           } else {
             successPay.value = false;
             successPay.value = false;
             payPriceSuccess.value = false;
             payPriceSuccess.value = false;
@@ -2866,7 +2896,7 @@ const orderCheckout = async (row) => {
   checkOutForm.orderNumber = row.orderNumber;
   checkOutForm.orderNumber = row.orderNumber;
   checkOutForm.houseNumberId = row.houseNumberId;
   checkOutForm.houseNumberId = row.houseNumberId;
 };
 };
-const checkOutConfirm = async () => {
+const checkOutConfirm =lodash.throttle(async () => {
   let datas = {
   let datas = {
     orderNumber: checkOutForm.orderNumber,
     orderNumber: checkOutForm.orderNumber,
     houseNumberId: checkOutForm.houseNumberId,
     houseNumberId: checkOutForm.houseNumberId,
@@ -2920,7 +2950,7 @@ const checkOutConfirm = async () => {
       center: true,
       center: true,
     });
     });
   }
   }
-};
+},5000);
 const cancelCheckOut = () => {
 const cancelCheckOut = () => {
   checkOutVisible.value = false;
   checkOutVisible.value = false;
 };
 };
@@ -3021,6 +3051,7 @@ const roomCheck = (row) => {
 };
 };
 // 确定换房
 // 确定换房
 const submitroomChange = async () => {
 const submitroomChange = async () => {
+  roomChangeLoading.value=true
   let data = {
   let data = {
     initialHouseNumberId: roomChangeRuleForm.houseNumberId, // 初始的房间id
     initialHouseNumberId: roomChangeRuleForm.houseNumberId, // 初始的房间id
     houseNumberId: roomChangeRuleForm.houseNumberIdNow, // 勾选的房间id
     houseNumberId: roomChangeRuleForm.houseNumberIdNow, // 勾选的房间id
@@ -3042,6 +3073,7 @@ const submitroomChange = async () => {
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     getList();
     getList();
     roomChangeVisible.value = false;
     roomChangeVisible.value = false;
+    roomChangeLoading.value=false
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
@@ -3049,6 +3081,7 @@ const submitroomChange = async () => {
       center: true,
       center: true,
     });
     });
   } else {
   } else {
+    roomChangeLoading.value=false
     ElMessage({
     ElMessage({
       type: "error",
       type: "error",
       showClose: true,
       showClose: true,
@@ -3067,7 +3100,7 @@ const cancelRoomChange = () => {
 };
 };
 
 
 // 退款 (-------------------------------------------------------------------------)
 // 退款 (-------------------------------------------------------------------------)
-const orderPayout = async (row) => {
+const orderPayout =lodash.throttle( async (row) => {
   console.log(row, "退款");
   console.log(row, "退款");
   let data = {
   let data = {
     orderNumber: row.orderNumber,
     orderNumber: row.orderNumber,
@@ -3123,7 +3156,7 @@ const orderPayout = async (row) => {
       center: true,
       center: true,
     });
     });
   }
   }
-};
+},5000);
 
 
 // 搜索功能
 // 搜索功能
 const searchBtn = lodash.debounce(async () => {
 const searchBtn = lodash.debounce(async () => {
@@ -3221,7 +3254,7 @@ const handleSelectionChange = (val) => {
   selectData.list = val;
   selectData.list = val;
 };
 };
 //导出功能
 //导出功能
-const importExcel = lodash.debounce(async () => {
+const importExcel = lodash.throttle(async () => {
   let data = {
   let data = {
     adminId: sessionStorage.getItem("permissionSettingId"),
     adminId: sessionStorage.getItem("permissionSettingId"),
     keyWord: searchInput.keyWord,
     keyWord: searchInput.keyWord,
@@ -3292,7 +3325,7 @@ const importExcel = lodash.debounce(async () => {
       center: true,
       center: true,
     });
     });
   }
   }
-}, 1000);
+}, 3000);
 
 
 // 表格斑马纹颜色修改
 // 表格斑马纹颜色修改
 const tableRowClassName = ({ row, rowIndex }) => {
 const tableRowClassName = ({ row, rowIndex }) => {

+ 184 - 146
src/views/roomStatus/roomStatus.vue

@@ -1,5 +1,9 @@
 <template>
 <template>
-  <div class="content-box" v-loading="roomLoading" element-loading-text="加载中...">
+  <div
+    class="content-box"
+    v-loading="roomLoading"
+    element-loading-text="加载中..."
+  >
     <div class="left">
     <div class="left">
       <div class="cameratxt">
       <div class="cameratxt">
         <span class="cameratxt">房态管理</span>
         <span class="cameratxt">房态管理</span>
@@ -89,7 +93,7 @@
           <div class="condition">
           <div class="condition">
             <span>楼栋单元</span>
             <span>楼栋单元</span>
             <el-select
             <el-select
-              style="width: 180px; margin-left: 20px"
+              style="width: 200px; margin-left: 20px"
               v-model="searchInput.buildingId"
               v-model="searchInput.buildingId"
               placeholder="请选择楼栋单元"
               placeholder="请选择楼栋单元"
               @change="searchBtn"
               @change="searchBtn"
@@ -178,7 +182,7 @@
           >
           >
         </div>
         </div>
       </div>
       </div>
-      <div class="footer"  v-if="switchDayIndex == 1">
+      <div class="footer" v-if="switchDayIndex == 1">
         <div class="floor" v-for="item in roomList.list">
         <div class="floor" v-for="item in roomList.list">
           <div class="title" v-if="item.roomlength">
           <div class="title" v-if="item.roomlength">
             <span class="t1">{{ item.name }}</span
             <span class="t1">{{ item.name }}</span
@@ -1637,6 +1641,7 @@
               color="rgba(41, 109, 227, 1)"
               color="rgba(41, 109, 227, 1)"
               type="primary"
               type="primary"
               @click="submitroomChange"
               @click="submitroomChange"
+              :loading="roomChangeLoading"
               style="margin-right: 20px"
               style="margin-right: 20px"
             >
             >
               确定
               确定
@@ -1648,7 +1653,7 @@
               clearable
               clearable
               v-model.trim="roomChangeRuleForm.houseNumberNow"
               v-model.trim="roomChangeRuleForm.houseNumberNow"
               class="w-50 m-2"
               class="w-50 m-2"
-              style="width: 80px"
+              style="width: 180px"
             />
             />
             <span class="title">新房号 : </span>
             <span class="title">新房号 : </span>
 
 
@@ -1970,7 +1975,7 @@
               <el-form-item label="入住人 :" prop="checkName">
               <el-form-item label="入住人 :" prop="checkName">
                 <el-input
                 <el-input
                   v-model.trim="checkInRuleForm.checkName"
                   v-model.trim="checkInRuleForm.checkName"
-                  placeholder="请输入预订人"
+                  placeholder="请输入姓名"
                   clearable
                   clearable
                   style="width: 150px"
                   style="width: 150px"
                 />
                 />
@@ -2339,6 +2344,7 @@
                 checkInRuleForm.orderStatus == 3 ||
                 checkInRuleForm.orderStatus == 3 ||
                 payPriceRuleForm.type == 2
                 payPriceRuleForm.type == 2
               "
               "
+              :loading="payPriceLoading"
               color="rgba(41, 109, 227, 1)"
               color="rgba(41, 109, 227, 1)"
               type="primary"
               type="primary"
               @click="configPayPrice(payPriceRef)"
               @click="configPayPrice(payPriceRef)"
@@ -2786,6 +2792,7 @@ import { ElMessage, ElMessageBox } from "element-plus";
 import { Calendar } from "@element-plus/icons-vue";
 import { Calendar } from "@element-plus/icons-vue";
 import vidiconsApi from "@/api/vidicons.js";
 import vidiconsApi from "@/api/vidicons.js";
 import { dayjs } from "element-plus";
 import { dayjs } from "element-plus";
+// import { debounce, throttle } from 'lodash'
 import lodash from "lodash";
 import lodash from "lodash";
 import axios from "axios";
 import axios from "axios";
 import { useStore } from "vuex";
 import { useStore } from "vuex";
@@ -2882,6 +2889,7 @@ const roomTypeColor = ref([
 
 
 // 换房弹窗(----------------------------------------------------)
 // 换房弹窗(----------------------------------------------------)
 const roomChangeVisible = ref(false);
 const roomChangeVisible = ref(false);
+const roomChangeLoading = ref(false);
 const roomChangeIndex = ref(1);
 const roomChangeIndex = ref(1);
 const roomChangeRuleForm = reactive({
 const roomChangeRuleForm = reactive({
   houseName: "", // 原本的房型
   houseName: "", // 原本的房型
@@ -3077,6 +3085,16 @@ var checkInName = (rule, value, callback) => {
     callback();
     callback();
   }
   }
 };
 };
+var checkIdcard = (rule, value, callback) => {
+  if (!value) {
+    return callback(new Error("请输入身份证号"));
+  }
+  if (value.length == 18) {
+    callback();
+  } else {
+    callback(new Error("请正确输入18位身份证号"));
+  }
+};
 // 表单验证
 // 表单验证
 const checkInRules = reactive({
 const checkInRules = reactive({
   type: [{ required: true, message: "类型不能为空", trigger: "blur" }],
   type: [{ required: true, message: "类型不能为空", trigger: "blur" }],
@@ -3101,6 +3119,7 @@ const checkInRules = reactive({
       message: "身份证号不能为空",
       message: "身份证号不能为空",
       trigger: "blur",
       trigger: "blur",
     },
     },
+    { validator: checkIdcard, trigger: "blur" },
   ],
   ],
   arrivalTime: [
   arrivalTime: [
     {
     {
@@ -3205,6 +3224,7 @@ const checkInPassIndex = ref(1);
 const payPriceVisible = ref(false);
 const payPriceVisible = ref(false);
 const payPriceRef = ref();
 const payPriceRef = ref();
 const payPriceSuccess = ref(false); // 判断订单是否支付成功
 const payPriceSuccess = ref(false); // 判断订单是否支付成功
+const payPriceLoading = ref(false); // 确定入住加载按钮
 const payPriceRuleForm = reactive({
 const payPriceRuleForm = reactive({
   order: "",
   order: "",
   price: "",
   price: "",
@@ -3372,7 +3392,7 @@ const closeItem = (val) => {
 
 
 // 批量置净脏房 (--------------------------------------)
 // 批量置净脏房 (--------------------------------------)
 const roomDirtyClose = async (flag) => {
 const roomDirtyClose = async (flag) => {
-  roomLoading.value=true // 加载页面
+  roomLoading.value = true; // 加载页面
   cleanRoomLiCount.value = [];
   cleanRoomLiCount.value = [];
   cleanDialogVisible.value = true;
   cleanDialogVisible.value = true;
   cleanRoomAllChecked.value = false;
   cleanRoomAllChecked.value = false;
@@ -3400,9 +3420,9 @@ const roomDirtyClose = async (flag) => {
       });
       });
       cleanDatas.value = arr;
       cleanDatas.value = arr;
       console.log(cleanDatas.value, dataLength.value);
       console.log(cleanDatas.value, dataLength.value);
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
     } else {
     } else {
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -3435,10 +3455,10 @@ const roomDirtyClose = async (flag) => {
       });
       });
       cleanDatas.value = arr;
       cleanDatas.value = arr;
       console.log(cleanDatas.value, dataLength.value);
       console.log(cleanDatas.value, dataLength.value);
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
     } else {
     } else {
-      roomLoading.value=false // 加载页面
-      
+      roomLoading.value = false; // 加载页面
+
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -3450,7 +3470,7 @@ const roomDirtyClose = async (flag) => {
 };
 };
 // 批量开/关房
 // 批量开/关房
 const roomClose = async (flag) => {
 const roomClose = async (flag) => {
-  roomLoading.value=true // 加载页面
+  roomLoading.value = true; // 加载页面
   cleanRoomLiCount.value = [];
   cleanRoomLiCount.value = [];
   cleanDialogVisible.value = true;
   cleanDialogVisible.value = true;
   cleanRoomAllChecked.value = false;
   cleanRoomAllChecked.value = false;
@@ -3478,9 +3498,9 @@ const roomClose = async (flag) => {
       });
       });
       cleanDatas.value = arr;
       cleanDatas.value = arr;
       console.log(cleanDatas.value, dataLength.value);
       console.log(cleanDatas.value, dataLength.value);
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
     } else {
     } else {
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -3513,9 +3533,9 @@ const roomClose = async (flag) => {
       });
       });
       cleanDatas.value = arr;
       cleanDatas.value = arr;
       console.log(cleanDatas.value, dataLength.value);
       console.log(cleanDatas.value, dataLength.value);
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
     } else {
     } else {
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -3527,7 +3547,7 @@ const roomClose = async (flag) => {
 };
 };
 // 批量控制水电
 // 批量控制水电
 const clean = async (flag) => {
 const clean = async (flag) => {
-  roomLoading.value=true // 加载页面
+  roomLoading.value = true; // 加载页面
   cleanRoomLiCount.value = [];
   cleanRoomLiCount.value = [];
   cleanDialogVisible.value = true;
   cleanDialogVisible.value = true;
   cleanRoomAllChecked.value = false;
   cleanRoomAllChecked.value = false;
@@ -3555,9 +3575,9 @@ const clean = async (flag) => {
       });
       });
       cleanDatas.value = arr;
       cleanDatas.value = arr;
       console.log(cleanDatas.value, dataLength.value);
       console.log(cleanDatas.value, dataLength.value);
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
     } else {
     } else {
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -3590,9 +3610,9 @@ const clean = async (flag) => {
       });
       });
       cleanDatas.value = arr;
       cleanDatas.value = arr;
       console.log(cleanDatas.value, dataLength.value);
       console.log(cleanDatas.value, dataLength.value);
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
     } else {
     } else {
-      roomLoading.value=false // 加载页面
+      roomLoading.value = false; // 加载页面
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -3665,7 +3685,7 @@ const cancelClean = () => {
 };
 };
 // 确定批量开关房
 // 确定批量开关房
 const switchBatch = async () => {
 const switchBatch = async () => {
-  roomLoading.value=true // 加载页面
+  roomLoading.value = true; // 加载页面
   if (cleanRoomLiCount.value.length) {
   if (cleanRoomLiCount.value.length) {
     if (roomCloseTitle.value == "批量开房") {
     if (roomCloseTitle.value == "批量开房") {
       let arr = [];
       let arr = [];
@@ -3687,7 +3707,7 @@ const switchBatch = async () => {
       });
       });
       console.log(res, "批量开房");
       console.log(res, "批量开房");
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         cleanRoomTree.value.setCheckedNodes([]);
         cleanRoomTree.value.setCheckedNodes([]);
         getList();
         getList();
@@ -3698,7 +3718,7 @@ const switchBatch = async () => {
           center: true,
           center: true,
         });
         });
       } else {
       } else {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         getList();
         getList();
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         ElMessage({
         ElMessage({
@@ -3728,7 +3748,7 @@ const switchBatch = async () => {
       });
       });
       console.log(res, "批量关房");
       console.log(res, "批量关房");
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         cleanRoomTree.value.setCheckedNodes([]);
         cleanRoomTree.value.setCheckedNodes([]);
         getList();
         getList();
@@ -3739,7 +3759,7 @@ const switchBatch = async () => {
           center: true,
           center: true,
         });
         });
       } else {
       } else {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         getList();
         getList();
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         ElMessage({
         ElMessage({
@@ -3769,7 +3789,7 @@ const switchBatch = async () => {
       });
       });
       console.log(res, "批量关房");
       console.log(res, "批量关房");
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         cleanRoomTree.value.setCheckedNodes([]);
         cleanRoomTree.value.setCheckedNodes([]);
         getList();
         getList();
@@ -3780,7 +3800,7 @@ const switchBatch = async () => {
           center: true,
           center: true,
         });
         });
       } else {
       } else {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         getList();
         getList();
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         ElMessage({
         ElMessage({
@@ -3810,7 +3830,7 @@ const switchBatch = async () => {
       });
       });
       console.log(res, "批量置净");
       console.log(res, "批量置净");
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         cleanRoomTree.value.setCheckedNodes([]);
         cleanRoomTree.value.setCheckedNodes([]);
         getList();
         getList();
@@ -3821,7 +3841,7 @@ const switchBatch = async () => {
           center: true,
           center: true,
         });
         });
       } else {
       } else {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         getList();
         getList();
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         ElMessage({
         ElMessage({
@@ -3851,7 +3871,7 @@ const switchBatch = async () => {
       });
       });
       console.log(res, "批量关电");
       console.log(res, "批量关电");
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         cleanRoomTree.value.setCheckedNodes([]);
         cleanRoomTree.value.setCheckedNodes([]);
         getList();
         getList();
@@ -3862,7 +3882,7 @@ const switchBatch = async () => {
           center: true,
           center: true,
         });
         });
       } else {
       } else {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         getList();
         getList();
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         ElMessage({
         ElMessage({
@@ -3892,7 +3912,7 @@ const switchBatch = async () => {
       });
       });
       console.log(res, "批量开电");
       console.log(res, "批量开电");
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         cleanRoomTree.value.setCheckedNodes([]);
         cleanRoomTree.value.setCheckedNodes([]);
         getList();
         getList();
@@ -3903,7 +3923,7 @@ const switchBatch = async () => {
           center: true,
           center: true,
         });
         });
       } else {
       } else {
-        roomLoading.value=false // 加载页面
+        roomLoading.value = false; // 加载页面
         getList();
         getList();
         cleanDialogVisible.value = false;
         cleanDialogVisible.value = false;
         ElMessage({
         ElMessage({
@@ -4179,11 +4199,11 @@ const houseTypeClick = () => {
 // 搜索功能
 // 搜索功能
 const searchBtn = lodash.debounce(async (val) => {
 const searchBtn = lodash.debounce(async (val) => {
   getList();
   getList();
-}, 300);
+}, 1000);
 
 
 // 置净(---------------------------------------)
 // 置净(---------------------------------------)
-const setAside = lodash.debounce(async (val) => {
-  roomLoading.value=true // 加载页面
+const setAside = lodash.throttle(async (val) => {
+  roomLoading.value = true; // 加载页面
   console.log(val);
   console.log(val);
   let data = {
   let data = {
     houseNumberId: val.houseNumberId,
     houseNumberId: val.houseNumberId,
@@ -4199,7 +4219,7 @@ const setAside = lodash.debounce(async (val) => {
     data: data,
     data: data,
   });
   });
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    roomLoading.value=false // 加载页面
+    roomLoading.value = false; // 加载页面
     getList();
     getList();
     itemClick(val);
     itemClick(val);
     ElMessage({
     ElMessage({
@@ -4209,7 +4229,7 @@ const setAside = lodash.debounce(async (val) => {
       center: true,
       center: true,
     });
     });
   } else {
   } else {
-    roomLoading.value=false // 加载页面
+    roomLoading.value = false; // 加载页面
     getList();
     getList();
     // itemClick(val);
     // itemClick(val);
     ElMessage({
     ElMessage({
@@ -4219,11 +4239,11 @@ const setAside = lodash.debounce(async (val) => {
       center: true,
       center: true,
     });
     });
   }
   }
-}, 300);
+}, 2000);
 
 
 // 置脏(---------------------------------------)
 // 置脏(---------------------------------------)
-const mess = lodash.debounce(async (val) => {
-  roomLoading.value=true // 加载页面
+const mess = lodash.throttle(async (val) => {
+  roomLoading.value = true; // 加载页面
   console.log(val);
   console.log(val);
   let data = {
   let data = {
     houseNumberId: val.houseNumberId,
     houseNumberId: val.houseNumberId,
@@ -4239,7 +4259,7 @@ const mess = lodash.debounce(async (val) => {
     data: data,
     data: data,
   });
   });
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    roomLoading.value=false // 加载页面
+    roomLoading.value = false; // 加载页面
     getList();
     getList();
     itemClick(val);
     itemClick(val);
     ElMessage({
     ElMessage({
@@ -4249,7 +4269,7 @@ const mess = lodash.debounce(async (val) => {
       center: true,
       center: true,
     });
     });
   } else {
   } else {
-    roomLoading.value=false // 加载页面
+    roomLoading.value = false; // 加载页面
     getList();
     getList();
     // itemClick(val);
     // itemClick(val);
     ElMessage({
     ElMessage({
@@ -4259,7 +4279,7 @@ const mess = lodash.debounce(async (val) => {
       center: true,
       center: true,
     });
     });
   }
   }
-}, 300);
+}, 2000);
 
 
 // 换房 (---------------------------------------------------------------)
 // 换房 (---------------------------------------------------------------)
 const roomChangeClick = async (row) => {
 const roomChangeClick = async (row) => {
@@ -4272,7 +4292,7 @@ const roomChangeClick = async (row) => {
   roomChangeRuleForm.forecastTime = row.reserveLiveTime;
   roomChangeRuleForm.forecastTime = row.reserveLiveTime;
   roomChangeRuleForm.preionizationTime = row.reserveLeaveTime;
   roomChangeRuleForm.preionizationTime = row.reserveLeaveTime;
   let data = {
   let data = {
-    liveTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
+    liveTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
     leaveTime: row.reserveLeaveTime,
     leaveTime: row.reserveLeaveTime,
     houseNumberId: row.houseNumberId,
     houseNumberId: row.houseNumberId,
     adminId: sessionStorage.getItem("permissionSettingId"),
     adminId: sessionStorage.getItem("permissionSettingId"),
@@ -4313,8 +4333,9 @@ const roomCheck = (row) => {
   roomChangeRuleForm.houseNumberIdNow = row.id;
   roomChangeRuleForm.houseNumberIdNow = row.id;
 };
 };
 // 确定换房
 // 确定换房
-const submitroomChange = async () => {
-  roomLoading.value=true // 加载页面
+const submitroomChange = lodash.throttle(async () => {
+  roomLoading.value = true; // 加载页面
+  roomChangeLoading.value = true;
   let data = {
   let data = {
     initialHouseNumberId: roomChangeRuleForm.houseNumberId, // 初始的房间id
     initialHouseNumberId: roomChangeRuleForm.houseNumberId, // 初始的房间id
     houseNumberId: roomChangeRuleForm.houseNumberIdNow, // 勾选的房间id
     houseNumberId: roomChangeRuleForm.houseNumberIdNow, // 勾选的房间id
@@ -4334,7 +4355,8 @@ const submitroomChange = async () => {
   });
   });
   console.log(res, "确定换房");
   console.log(res, "确定换房");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    roomLoading.value=false // 加载页面
+    roomLoading.value = false; // 加载页面
+    roomChangeLoading.value = false;
     getList();
     getList();
     roomChangeVisible.value = false;
     roomChangeVisible.value = false;
     ElMessage({
     ElMessage({
@@ -4344,7 +4366,8 @@ const submitroomChange = async () => {
       center: true,
       center: true,
     });
     });
   } else {
   } else {
-    roomLoading.value=false // 加载页面
+    roomLoading.value = false; // 加载页面
+    roomChangeLoading.value = false;
     ElMessage({
     ElMessage({
       type: "error",
       type: "error",
       showClose: true,
       showClose: true,
@@ -4352,7 +4375,7 @@ const submitroomChange = async () => {
       center: true,
       center: true,
     });
     });
   }
   }
-};
+}, 2000);
 // 关闭换房
 // 关闭换房
 const cancelRoomChange = () => {
 const cancelRoomChange = () => {
   roomChangeVisible.value = false;
   roomChangeVisible.value = false;
@@ -4647,11 +4670,15 @@ const cancelReserve = () => {
   reserveRef.value.resetFields();
   reserveRef.value.resetFields();
 };
 };
 // 确定预定
 // 确定预定
-const reserveSubmitAdd = lodash.debounce(async (formEl) => {
+const reserveSubmitAdd = lodash.throttle(async (formEl) => {
   if (!formEl) return;
   if (!formEl) return;
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
       if (reserveRuleForm.type == 1) {
       if (reserveRuleForm.type == 1) {
+        let phoneFlag = reserveRuleForm.phone.includes("(+86)");
+        if (!phoneFlag) {
+          reserveRuleForm.phone = "(+86)" + reserveRuleForm.phone;
+        }
         let data = {
         let data = {
           name: reserveRuleForm.name,
           name: reserveRuleForm.name,
           phone: reserveRuleForm.phone,
           phone: reserveRuleForm.phone,
@@ -4736,10 +4763,10 @@ const reserveSubmitAdd = lodash.debounce(async (formEl) => {
       console.log("error submit!", fields);
       console.log("error submit!", fields);
     }
     }
   });
   });
-}, 1500);
+}, 2000);
 
 
 // 退款 (-------------------------------------------------------------------------)
 // 退款 (-------------------------------------------------------------------------)
-const orderPayout = async (row) => {
+const orderPayout = lodash.throttle(async (row) => {
   console.log(row, "退款");
   console.log(row, "退款");
   let data = {
   let data = {
     orderNumber: row.orderNumber,
     orderNumber: row.orderNumber,
@@ -4795,7 +4822,7 @@ const orderPayout = async (row) => {
       center: true,
       center: true,
     });
     });
   }
   }
-};
+}, 2000);
 
 
 // 入住 (--------------------------------------------------------------------)
 // 入住 (--------------------------------------------------------------------)
 const checkInClick = async (row) => {
 const checkInClick = async (row) => {
@@ -5115,18 +5142,18 @@ const Card = () => {
       identityCardTitle.value = "配置失败,请检查卡片是否已放置设备上";
       identityCardTitle.value = "配置失败,请检查卡片是否已放置设备上";
       identityCardIndex.value = 1;
       identityCardIndex.value = 1;
     } else if (data.type == 140) {
     } else if (data.type == 140) {
-      checkInRuleForm.icCard = data.data.uid;
-      console.log(data.data.uid, "读取的卡号");
-
       identityCardIndex.value = 2;
       identityCardIndex.value = 2;
       identityCardTitle.value = "读卡中";
       identityCardTitle.value = "读卡中";
 
 
       if (data.data.uid) {
       if (data.data.uid) {
+        checkInRuleForm.icCard = data.data.uid;
         setTimeout(() => {
         setTimeout(() => {
           identityCardIndex.value = 3;
           identityCardIndex.value = 3;
           identityCardTitle.value = "读卡成功";
           identityCardTitle.value = "读卡成功";
+        }, 1000);
+        setTimeout(() => {
           addIdentityCardVisible.value = false;
           addIdentityCardVisible.value = false;
-        }, 1500);
+        }, 2000);
       }
       }
 
 
       // ElMessage({
       // ElMessage({
@@ -5207,6 +5234,7 @@ const cancelCheckIn = () => {
 };
 };
 // 弹出支付页面 (-------------------------------------)
 // 弹出支付页面 (-------------------------------------)
 const checkInConfirm = lodash.debounce(async (formEl) => {
 const checkInConfirm = lodash.debounce(async (formEl) => {
+  payPriceLoading.value = false;
   if (!formEl) return;
   if (!formEl) return;
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
@@ -5218,12 +5246,13 @@ const checkInConfirm = lodash.debounce(async (formEl) => {
       console.log("error submit!", fields);
       console.log("error submit!", fields);
     }
     }
   });
   });
-}, 100);
+}, 500);
 // 确定入住
 // 确定入住
-const configPayPrice = lodash.debounce(async (formEl) => {
+const configPayPrice = lodash.throttle(async (formEl) => {
   if (!formEl) return;
   if (!formEl) return;
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
+      payPriceLoading.value = true;
       if (
       if (
         checkInRuleForm.orderStatus == 2 ||
         checkInRuleForm.orderStatus == 2 ||
         checkInRuleForm.orderStatus == 3
         checkInRuleForm.orderStatus == 3
@@ -5261,6 +5290,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
         console.log(ress, "确定入住");
         console.log(ress, "确定入住");
         if (ress.data.code == 200) {
         if (ress.data.code == 200) {
           getList();
           getList();
+          payPriceLoading.value = false;
           // clearInterval(timer.value)
           // clearInterval(timer.value)
           // 支付入住成功弹窗查看密码弹窗
           // 支付入住成功弹窗查看密码弹窗
           if (checkInIndex.value == 1) {
           if (checkInIndex.value == 1) {
@@ -5299,6 +5329,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
             center: true,
             center: true,
           });
           });
         } else {
         } else {
+          payPriceLoading.value = false;
           ElMessage({
           ElMessage({
             type: "error",
             type: "error",
             showClose: true,
             showClose: true,
@@ -5357,6 +5388,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
           console.log(ress, "确定入住");
           console.log(ress, "确定入住");
           if (ress.data.code == 200) {
           if (ress.data.code == 200) {
             getList();
             getList();
+            payPriceLoading.value = false;
             // 支付入住成功弹窗查看密码弹窗
             // 支付入住成功弹窗查看密码弹窗
             setTimeout(async () => {
             setTimeout(async () => {
               if (checkInIndex.value == 1) {
               if (checkInIndex.value == 1) {
@@ -5396,6 +5428,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
               center: true,
               center: true,
             });
             });
           } else {
           } else {
+            payPriceLoading.value = false;
             ElMessage({
             ElMessage({
               type: "error",
               type: "error",
               showClose: true,
               showClose: true,
@@ -5416,7 +5449,7 @@ const configPayPrice = lodash.debounce(async (formEl) => {
       console.log("error submit!", fields);
       console.log("error submit!", fields);
     }
     }
   });
   });
-}, 100);
+}, 2000);
 
 
 // 微信扫码支付界面 (----------------------------------------)
 // 微信扫码支付界面 (----------------------------------------)
 const paymentCodeClick = async () => {
 const paymentCodeClick = async () => {
@@ -5441,6 +5474,7 @@ const paymentCodeClick = async () => {
     let img = QRCode.toDataURL(res.data.data.codeUrl);
     let img = QRCode.toDataURL(res.data.data.codeUrl);
     img.then((t) => {
     img.then((t) => {
       qrCodeImgUrl.value = t;
       qrCodeImgUrl.value = t;
+      let payFlag = 0;
       timer.value = setInterval(async () => {
       timer.value = setInterval(async () => {
         let datas = new FormData();
         let datas = new FormData();
         datas.append("outTradeNo", payPriceRuleForm.order);
         datas.append("outTradeNo", payPriceRuleForm.order);
@@ -5456,88 +5490,92 @@ const paymentCodeClick = async () => {
         console.log(ress, "微信支付查询订单");
         console.log(ress, "微信支付查询订单");
         if (ress.data.code == 200) {
         if (ress.data.code == 200) {
           if (ress.data.data.tradeState == "SUCCESS") {
           if (ress.data.data.tradeState == "SUCCESS") {
-            successPay.value = true;
-            let livedata = {
-              adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
-              adminId: sessionStorage.getItem("id"), //用户id
-              houseId: checkInRuleForm.houseId,
-              houseNumberId: checkInRuleForm.houseNumberId,
-              liveName: checkInRuleForm.name,
-              phone: checkInRuleForm.phone,
-              // "idCard": "362425123456891011",
-              cardNumber: "", //有就填,没有就不填
-              liveTime: checkInRuleForm.forecastTime,
-              leaveTime: checkInRuleForm.preionizationTime,
-              payPrice: checkInRuleForm.roomPrice,
-              liveDay: checkInRuleForm.dayNum,
-              lockStatus: checkInIndex.value, //开锁方式 1:密码,2:卡片 3:指纹
-              fingerprint: checkInRuleForm.fingerprintNum, // 指纹特征码 有就填,没有就不填
-              idCardInformation: checkInRuleForm.icCard, // 卡片特征码 有就填,没有就不填
-              orderNumber: checkInRuleForm.orderNumber, //有订单就填,没有就不填
-            };
-            let liveres = await axios({
-              method: "post",
-              url: api.value + "/house-number-state/checkIdCard",
-              headers: {
-                token: sessionStorage.getItem("token"),
-                user_head: sessionStorage.getItem("user_head"),
-              },
-              data: livedata,
-            });
-            console.log(liveres, "确定入住");
-            if (liveres.data.code == 200) {
-              clearInterval(timer.value);
-              timer.value = null;
-              getList();
-
-              // 支付入住成功弹窗查看密码弹窗
-              if (checkInIndex.value == 1) {
-                passVisible.value = true;
-                let data = {
-                  orderNumber: checkInRuleForm.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) {
-                  passForm.pass = res.data.data.houseOrder.keyPassWord;
-                  passForm.reserveLiveTime = dayjs(
-                    res.data.data.houseOrder.liveTime
-                  ).format("YYYY-MM-DD HH:mm:ss");
-                  passForm.reserveLeaveTime =
-                    res.data.data.houseOrder.reserveLeaveTime;
+            payFlag++;
+            if(payFlag==1){
+              successPay.value = true;
+              let liveTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
+              let livedata = {
+                adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
+                adminId: sessionStorage.getItem("id"), //用户id
+                houseId: checkInRuleForm.houseId,
+                houseNumberId: checkInRuleForm.houseNumberId,
+                liveName: checkInRuleForm.name,
+                phone: checkInRuleForm.phone,
+                // "idCard": "362425123456891011",
+                cardNumber: "", //有就填,没有就不填
+                liveTime: liveTime,
+                leaveTime: checkInRuleForm.preionizationTime,
+                payPrice: checkInRuleForm.roomPrice,
+                liveDay: checkInRuleForm.dayNum,
+                lockStatus: checkInIndex.value, //开锁方式 1:密码,2:卡片 3:指纹
+                fingerprint: checkInRuleForm.fingerprintNum, // 指纹特征码 有就填,没有就不填
+                idCardInformation: checkInRuleForm.icCard, // 卡片特征码 有就填,没有就不填
+                orderNumber: checkInRuleForm.orderNumber, //有订单就填,没有就不填
+              };
+              let liveres = await axios({
+                method: "post",
+                url: api.value + "/house-number-state/checkIdCard",
+                headers: {
+                  token: sessionStorage.getItem("token"),
+                  user_head: sessionStorage.getItem("user_head"),
+                },
+                data: livedata,
+              });
+              console.log(liveres, "确定入住");
+              if (liveres.data.code == 200) {
+                getList();
+                // 支付入住成功弹窗查看密码弹窗
+                if (checkInIndex.value == 1) {
+                  passVisible.value = true;
+                  let data = {
+                    orderNumber: checkInRuleForm.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) {
+                    passForm.pass = res.data.data.houseOrder.keyPassWord;
+                    passForm.reserveLiveTime = dayjs(
+                      res.data.data.houseOrder.liveTime
+                    ).format("YYYY-MM-DD HH:mm:ss");
+                    passForm.reserveLeaveTime =
+                      res.data.data.houseOrder.reserveLeaveTime;
+                  }
+                } else {
+                  checkInVisible.value = false;
+                  payPriceVisible.value = false;
+                  paymentCodeVisible.value = false;
                 }
                 }
+                ElMessage({
+                  type: "success",
+                  showClose: true,
+                  message: ress.data.data.tradeStateDesc,
+                  center: true,
+                });
               } else {
               } else {
-                checkInVisible.value = false;
-                payPriceVisible.value = false;
-                paymentCodeVisible.value = false;
+                ElMessage({
+                  type: "error",
+                  showClose: true,
+                  message: liveres.data.message,
+                  center: true,
+                });
               }
               }
-              ElMessage({
-                type: "success",
-                showClose: true,
-                message: ress.data.data.tradeStateDesc,
-                center: true,
-              });
-            } else {
-              ElMessage({
-                type: "error",
-                showClose: true,
-                message: liveres.data.message,
-                center: true,
-              });
             }
             }
-          } else {
-            successPay.value = false;
-            payPriceSuccess.value = false;
-          }
+            console.log(payFlag);
+            clearInterval(timer.value);
+            timer.value = null;       
+          }  else {
+              successPay.value = false;
+              payPriceSuccess.value = false;
+            }
         } else {
         } else {
         }
         }
       }, 2000);
       }, 2000);
@@ -5565,7 +5603,7 @@ const checkOutClick = (row) => {
   checkOutForm.orderNumber = row.orderNumber;
   checkOutForm.orderNumber = row.orderNumber;
   checkOutForm.houseNumberId = row.houseNumberId;
   checkOutForm.houseNumberId = row.houseNumberId;
 };
 };
-const checkOutConfirm = async () => {
+const checkOutConfirm = lodash.throttle(async () => {
   let data = {
   let data = {
     orderNumber: checkOutForm.orderNumber,
     orderNumber: checkOutForm.orderNumber,
     houseNumberId: checkOutForm.houseNumberId,
     houseNumberId: checkOutForm.houseNumberId,
@@ -5720,7 +5758,7 @@ const checkOutConfirm = async () => {
   //     center: true,
   //     center: true,
   //   });
   //   });
   // }
   // }
-};
+}, 2000);
 const cancelCheckOut = () => {
 const cancelCheckOut = () => {
   checkOutVisible.value = false;
   checkOutVisible.value = false;
 };
 };
@@ -5795,7 +5833,7 @@ const cancelLockRoom = () => {
   lockRoomVisible.value = false;
   lockRoomVisible.value = false;
 };
 };
 // 确定锁房
 // 确定锁房
-const lockRoomConfirm = lodash.debounce(async (formEl) => {
+const lockRoomConfirm = lodash.throttle(async (formEl) => {
   if (!formEl) return;
   if (!formEl) return;
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
@@ -5833,7 +5871,7 @@ const lockRoomConfirm = lodash.debounce(async (formEl) => {
   });
   });
 }, 1500);
 }, 1500);
 // 解锁房间
 // 解锁房间
-const unlockClick = lodash.debounce(async (row) => {
+const unlockClick = lodash.throttle(async (row) => {
   let data = {
   let data = {
     houseNumberIds: [row.houseNumberId],
     houseNumberIds: [row.houseNumberId],
     adminId: sessionStorage.getItem("permissionSettingId"),
     adminId: sessionStorage.getItem("permissionSettingId"),
@@ -5891,7 +5929,7 @@ const maintainClick = async (row) => {
 const cancelMaintain = () => {
 const cancelMaintain = () => {
   maintainVisible.value = false;
   maintainVisible.value = false;
 };
 };
-const maintainConfirm = lodash.debounce(async (formEl) => {
+const maintainConfirm = lodash.throttle(async (formEl) => {
   if (!formEl) return;
   if (!formEl) return;
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
@@ -7922,7 +7960,7 @@ onUnmounted(() => {
     background: rgba(0, 0, 0, 0.8) !important;
     background: rgba(0, 0, 0, 0.8) !important;
   }
   }
 }
 }
-.el-loading-mask{
+.el-loading-mask {
   z-index: 9999999;
   z-index: 9999999;
 }
 }
 </style>
 </style>

+ 5 - 2
src/views/staff/staff.vue

@@ -888,13 +888,16 @@ const Card = () => {
       identityCardTitle.value = "读卡中";
       identityCardTitle.value = "读卡中";
 
 
       if (data.data.uid) {
       if (data.data.uid) {
+        editRuleForm.schoolCard = data.data.uid;
         setTimeout(() => {
         setTimeout(() => {
           identityCardIndex.value = 3;
           identityCardIndex.value = 3;
           identityCardTitle.value = "读卡成功";
           identityCardTitle.value = "读卡成功";
+        }, 1000);
+        setTimeout(() => {
           addIdentityCardVisible.value = false;
           addIdentityCardVisible.value = false;
-        }, 1500);
+        }, 2000);
       }
       }
-      editRuleForm.schoolCard = data.data.uid;
+      
 
 
       // ElMessage({
       // ElMessage({
       //   type: "success",
       //   type: "success",

+ 7 - 0
src/views/user/user.vue

@@ -241,6 +241,7 @@
               color="rgba(41, 109, 227, 1)"
               color="rgba(41, 109, 227, 1)"
               class="queding"
               class="queding"
               type="primary"
               type="primary"
+              :loading="confirmEditLoading"
               @click="confirmEdit(editRef)"
               @click="confirmEdit(editRef)"
             >
             >
               保存
               保存
@@ -386,6 +387,7 @@ const pageSize = ref(10);
 const total = ref(); // 当前总数
 const total = ref(); // 当前总数
 
 
 // 编辑功能
 // 编辑功能
+const confirmEditLoading=ref(false)
 const titleDialog = ref("");
 const titleDialog = ref("");
 const editVisible = ref(false);
 const editVisible = ref(false);
 const editRef = ref();
 const editRef = ref();
@@ -612,6 +614,7 @@ const confirmEdit = (formEl) => {
   if (!formEl) return;
   if (!formEl) return;
   formEl.validate(async (valid, fields) => {
   formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
+      confirmEditLoading.value=true;
       if (editRuleForm.id) {
       if (editRuleForm.id) {
         let arr = editRuleForm.userRoles;
         let arr = editRuleForm.userRoles;
         let data = {
         let data = {
@@ -640,6 +643,7 @@ const confirmEdit = (formEl) => {
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getList();
           getList();
           editVisible.value = false;
           editVisible.value = false;
+          confirmEditLoading.value=false;
           ElMessage({
           ElMessage({
             type: "success",
             type: "success",
             showClose: true,
             showClose: true,
@@ -647,6 +651,7 @@ const confirmEdit = (formEl) => {
             center: true,
             center: true,
           });
           });
         } else {
         } else {
+          confirmEditLoading.value=false;
           ElMessage({
           ElMessage({
             type: "error",
             type: "error",
             showClose: true,
             showClose: true,
@@ -678,6 +683,7 @@ const confirmEdit = (formEl) => {
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getList();
           getList();
           editVisible.value = false;
           editVisible.value = false;
+          confirmEditLoading.value=false;
           ElMessage({
           ElMessage({
             type: "success",
             type: "success",
             showClose: true,
             showClose: true,
@@ -685,6 +691,7 @@ const confirmEdit = (formEl) => {
             center: true,
             center: true,
           });
           });
         } else {
         } else {
+          confirmEditLoading.value=false;
           ElMessage({
           ElMessage({
             type: "error",
             type: "error",
             showClose: true,
             showClose: true,