Просмотр исходного кода

完成合车,操作日志,黑名单详情,报备管理

hzj18279462576@163.com 3 лет назад
Родитель
Сommit
03dd780ee2

BIN
src/assets/report.png


BIN
src/assets/reportA.png


+ 8 - 0
src/layout/index.vue

@@ -58,6 +58,14 @@ watch(
       store.commit("indexUp", 9);
       sessionStorage.setItem("sidevarItem", 9);
     }
+    if (newValue == "/schoolBus/log") {
+      store.commit("indexUp", 10);
+      sessionStorage.setItem("sidevarItem", 10);
+    }
+    if (newValue == "/schoolBus/report") {
+      store.commit("indexUp", 11);
+      sessionStorage.setItem("sidevarItem", 11);
+    }
     if (newValue == "/schoolBus/news") {
       store.commit("indexUp", 0);
       sessionStorage.setItem("sidevarItem", 0);

+ 20 - 0
src/layout/sidebar/SidevarItem.vue

@@ -39,6 +39,21 @@
         <img v-else src="@/assets/staff.png" alt="" />
         <span>驾驶员管理</span>
       </el-menu-item>
+      <el-menu-item :index="11">
+        <img
+          v-if="activeIndex == 11"
+          style="width: 22px; height: 22px; margin: 0 20px 0 18px"
+          src="@/assets/reportA.png"
+          alt=""
+        />
+        <img
+          v-else
+          style="width: 22px; height: 22px; margin: 0 20px 0 18px"
+          src="@/assets/report.png"
+          alt=""
+        />
+        <span>报备管理</span>
+      </el-menu-item>
       <el-menu-item :index="3">
         <img v-if="activeIndex == 3" src="@/assets/accountA.png" alt="" />
         <img v-else src="@/assets/account.png" alt="" />
@@ -181,6 +196,11 @@ const handleSelect = (key) => {
       path: `/schoolBus/log`,
     });
   }
+  if (activeIndex.value == 11) {
+    router.push({
+      path: `/schoolBus/report`,
+    });
+  }
   if (activeIndex.value == 0) {
     router.push({
       path: `/schoolBus/news`,

+ 7 - 2
src/router/index.js

@@ -5,8 +5,8 @@ import {
 } from "vue-router";
 import Layout from "@/layout/index.vue";
 const router = createRouter({
-  history: createWebHashHistory("/carstop/dist6"), // 线上地址
-  //   history: createWebHashHistory("/testingServertomcat/dist6"), // 测试环境发布地址
+  //   history: createWebHashHistory("/carstop/dist6"), // 线上地址
+  history: createWebHashHistory("/testingServertomcat/dist6"), // 测试环境发布地址
   routes: [
     {
       path: "/login",
@@ -75,6 +75,11 @@ const router = createRouter({
           component: () => import("@/views/log/log.vue"),
           meta: { title: "Dashboard", icon: "dashboard" },
         },
+        {
+          path: "report",
+          component: () => import("@/views/report/report.vue"),
+          meta: { title: "Dashboard", icon: "dashboard" },
+        },
       ],
     },
   ],

+ 2 - 2
src/store/modules/user.js

@@ -8,8 +8,8 @@ const state = {
   activeIndex: 9,
   username: "",
   password: "",
-  api: "/carstop/carbook", // 线上
-  // api: "/testingServertomcat/carbook",  // 测试
+  // api: "/carstop/carbook", // 线上
+  api: "/testingServertomcat/carbook", // 测试
   newsNum: "",
 };
 

+ 254 - 144
src/views/blacklist/blacklist.vue

@@ -78,10 +78,10 @@
 
         <el-table-column align="center" label="操作" width="220">
           <template #default="scope">
-            <!-- <el-button link type="primary" @click="edit(scope.row)"
-              ><div class="look">编辑</div></el-button
-            > -->
-            <el-button link type="primary" @click="del(scope.row)"
+            <el-button type="primary" plain @click="edit(scope.row)"
+              ><div class="look">详情</div></el-button
+            >
+            <el-button type="danger" plain @click="del(scope.row)"
               ><div class="look">移出</div></el-button
             >
           </template>
@@ -152,7 +152,67 @@
         </el-form>
       </el-dialog> -->
     </div>
+    <!-- 黑名单详情 -->
+    <el-dialog
+      class="addStaff particulars"
+      v-model="blackDialog"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      title="黑名单爽约记录详情"
+      align-center
+      width="1200"
+      :before-close="particularsCancel"
+    >
+      <el-table
+        :row-class-name="tableRowClassName"
+        :data="blackData.list"
+        style="width: 100%; height: 490px; margin-bottom: 20px"
+        :header-cell-style="{
+          background: 'rgba(240, 243, 247, 1)',
+          height: '50px',
+          border: 0,
+        }"
+      >
+        <el-table-column
+          width="150"
+          align="center"
+          prop="user_name"
+          label="姓名"
+        />
+        <el-table-column
+          width="150"
+          align="center"
+          prop="yy_time"
+          label="下单日期"
+        />
+        <el-table-column
+          width="150"
+          align="center"
+          prop="yy_date"
+          label="发车日期"
+        />
+        <el-table-column
+          width="100"
+          align="center"
+          prop="ci_time"
+          label="发车时间"
+        />
 
+        <el-table-column
+          align="center"
+          width="150"
+          prop="car_number"
+          label="车牌号"
+        />
+        <el-table-column align="center" prop="route" label="线路名称" />
+        <el-table-column
+          align="center"
+          width="250"
+          prop="route_end"
+          label="站点"
+        />
+      </el-table>
+    </el-dialog>
     <!-- 分页组件 -->
     <el-pagination
       background
@@ -179,8 +239,9 @@ const api = ref("");
 const router = useRouter();
 // 表格数据
 const tableData = reactive({ list: [] });
+const blackData = reactive({ list: [] });
 const activeIndex = ref(); // 默认跳转路由
-const dialongTitle = ref("新增账号"); // 弹窗标题
+// const dialongTitle = ref("新增账号"); // 弹窗标题
 
 const searchInput = reactive({
   carnumber: "",
@@ -191,9 +252,10 @@ const searchInput = reactive({
 const currentPage = ref(1); // 当前页
 const pageSize = ref(10);
 const total = ref(); // 当前总数
-const selectData = reactive({ list: [] }); // 多选框选择的数据
+const blackDialog = ref(false); // 黑名单爽约次数详情弹窗
+// const selectData = reactive({ list: [] }); // 多选框选择的数据
 
-const addDialogVisible = ref(false); // 控制添加员工弹窗
+// const addDialogVisible = ref(false); // 控制添加员工弹窗
 
 // 表单数据
 const formSize = ref("default");
@@ -233,6 +295,7 @@ const ruleForm = reactive({
 
 //   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
 // });
+
 // 获取账户列表
 const getList = async (message) => {
   // let res = await vidiconsApi.queryCamera(data);
@@ -303,155 +366,172 @@ const searchRefresh = lodash.debounce(async () => {
   getList();
 }, 300);
 
-//导出功能
-const importExcel = async () => {
-  if (searchInput.createTime == null) {
-    searchInput.createTime = "";
-  }
+// //导出功能
+// const importExcel = async () => {
+//   if (searchInput.createTime == null) {
+//     searchInput.createTime = "";
+//   }
+//   let data = new FormData();
+//   data.set("number", searchInput.carnumber);
+//   data.set("create_time", searchInput.createTime);
+//   let res = await axios({
+//     method: "post",
+//     url: api.value + "/carBook/admintoExcel.action",
+//     headers: {
+//       token: sessionStorage.getItem("token"),
+//     },
+//     data: data,
+//   });
+//   // console.log(res, "导出账号");
+//   if (res.data.code == 200) {
+//     const elt = document.createElement("a");
+//     elt.setAttribute(
+//       "href",
+//       "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl
+//     );
+//     elt.setAttribute("download", "file.png");
+//     elt.style.display = "none";
+//     document.body.appendChild(elt);
+//     elt.click();
+//     ElMessage({
+//       type: "success",
+//       showClose: true,
+//       message: res.data.message,
+//       center: true,
+//     });
+//   } else {
+//     ElMessage({
+//       type: "error",
+//       showClose: true,
+//       message: res.data.message,
+//       center: true,
+//     });
+//   }
+// };
+// 添加员工
+// const addlist = () => {
+//   dialongTitle.value = "新增账号";
+//   addDialogVisible.value = true;
+//   ruleForm.name = "";
+//   ruleForm.account = "";
+//   ruleForm.pass = "";
+// };
+// // 取消添加员工
+// const cancelAdd = () => {
+//   addDialogVisible.value = false;
+//   ruleFormRef.value.resetFields();
+// };
+// // 确认添加员工
+// const submitAdd = async (formEl) => {
+//   if (!formEl) return;
+//   await formEl.validate(async (valid, fields) => {
+//     if (valid) {
+//       if (dialongTitle.value == "新增账号") {
+//         let data = {
+//           name: ruleForm.name,
+//           number: ruleForm.account,
+//           password: ruleForm.pass,
+//         };
+//         // let res = await admin.adminAdd(data);
+//         let res = await axios({
+//           method: "post",
+//           url: api.value + "/carBook/admininsert.action",
+//           headers: {
+//             "Content-Type": "application/json;charset=utf-8",
+//             token: sessionStorage.getItem("token"),
+//           },
+//           data: data,
+//         });
+//         // console.log(res, "添加账号");
+//         if (res.data.code == 200) {
+//           getList();
+
+//           ElMessage({
+//             type: "success",
+//             showClose: true,
+//             message: res.data.message,
+//             center: true,
+//           });
+//           addDialogVisible.value = false;
+//           ruleFormRef.value.resetFields();
+//         } else {
+//           ElMessage({
+//             type: "error",
+//             showClose: true,
+//             message: res.data.message,
+//             center: true,
+//           });
+//         }
+//       } else {
+//         let data = {
+//           name: ruleForm.name,
+//           number: ruleForm.account,
+//           password: ruleForm.pass,
+//           id: ruleForm.id,
+//         };
+//         // let res = await admin.adminAdd(data);
+//         let res = await axios({
+//           method: "post",
+//           url: api.value + "/carBook/adminupdate.action",
+//           headers: {
+//             "Content-Type": "application/json;charset=utf-8",
+//             token: sessionStorage.getItem("token"),
+//           },
+//           data: data,
+//         });
+//         // console.log(res, "修改账号");
+//         if (res.data.code == 200) {
+//           getList();
+
+//           ElMessage({
+//             type: "success",
+//             showClose: true,
+//             message: res.data.message,
+//             center: true,
+//           });
+//           addDialogVisible.value = false;
+//           ruleFormRef.value.resetFields();
+//         } else {
+//           ElMessage({
+//             type: "error",
+//             showClose: true,
+//             message: res.data.message,
+//             center: true,
+//           });
+//         }
+//       }
+//     } else {
+//       console.log("error submit!", fields);
+//     }
+//   });
+// };
+
+//  黑名单爽约详情
+const edit = async (row) => {
+  blackDialog.value = true;
+  console.log(row);
   let data = new FormData();
-  data.set("number", searchInput.carnumber);
-  data.set("create_time", searchInput.createTime);
+  data.set("card_number", row.card_number);
   let res = await axios({
     method: "post",
-    url: api.value + "/carBook/admintoExcel.action",
+    url: api.value + "/carBook/brecblack_detail.action",
     headers: {
       token: sessionStorage.getItem("token"),
     },
     data: data,
   });
-  // console.log(res, "导出账号");
-  if (res.data.code == 200) {
-    const elt = document.createElement("a");
-    elt.setAttribute(
-      "href",
-      "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl
-    );
-    elt.setAttribute("download", "file.png");
-    elt.style.display = "none";
-    document.body.appendChild(elt);
-    elt.click();
-    ElMessage({
-      type: "success",
-      showClose: true,
-      message: res.data.message,
-      center: true,
-    });
+  console.log(res);
+  if (res.status == 200) {
+    blackData.list = res.data.data;
   } else {
     ElMessage({
       type: "error",
       showClose: true,
-      message: res.data.message,
+      message: "暂无数据",
       center: true,
     });
   }
 };
-// 添加员工
-const addlist = () => {
-  dialongTitle.value = "新增账号";
-  addDialogVisible.value = true;
-  ruleForm.name = "";
-  ruleForm.account = "";
-  ruleForm.pass = "";
-};
-// 取消添加员工
-const cancelAdd = () => {
-  addDialogVisible.value = false;
-  ruleFormRef.value.resetFields();
-};
-// 确认添加员工
-const submitAdd = async (formEl) => {
-  if (!formEl) return;
-  await formEl.validate(async (valid, fields) => {
-    if (valid) {
-      if (dialongTitle.value == "新增账号") {
-        let data = {
-          name: ruleForm.name,
-          number: ruleForm.account,
-          password: ruleForm.pass,
-        };
-        // let res = await admin.adminAdd(data);
-        let res = await axios({
-          method: "post",
-          url: api.value + "/carBook/admininsert.action",
-          headers: {
-            "Content-Type": "application/json;charset=utf-8",
-            token: sessionStorage.getItem("token"),
-          },
-          data: data,
-        });
-        // console.log(res, "添加账号");
-        if (res.data.code == 200) {
-          getList();
-
-          ElMessage({
-            type: "success",
-            showClose: true,
-            message: res.data.message,
-            center: true,
-          });
-          addDialogVisible.value = false;
-          ruleFormRef.value.resetFields();
-        } else {
-          ElMessage({
-            type: "error",
-            showClose: true,
-            message: res.data.message,
-            center: true,
-          });
-        }
-      } else {
-        let data = {
-          name: ruleForm.name,
-          number: ruleForm.account,
-          password: ruleForm.pass,
-          id: ruleForm.id,
-        };
-        // let res = await admin.adminAdd(data);
-        let res = await axios({
-          method: "post",
-          url: api.value + "/carBook/adminupdate.action",
-          headers: {
-            "Content-Type": "application/json;charset=utf-8",
-            token: sessionStorage.getItem("token"),
-          },
-          data: data,
-        });
-        // console.log(res, "修改账号");
-        if (res.data.code == 200) {
-          getList();
-
-          ElMessage({
-            type: "success",
-            showClose: true,
-            message: res.data.message,
-            center: true,
-          });
-          addDialogVisible.value = false;
-          ruleFormRef.value.resetFields();
-        } else {
-          ElMessage({
-            type: "error",
-            showClose: true,
-            message: res.data.message,
-            center: true,
-          });
-        }
-      }
-    } else {
-      console.log("error submit!", fields);
-    }
-  });
-};
-//编辑按钮
-const edit = (row) => {
-  dialongTitle.value = "编辑信息";
-  addDialogVisible.value = true;
-  console.log(row);
-  ruleForm.pass = row.password;
-  ruleForm.name = row.name;
-  ruleForm.account = row.number;
-  ruleForm.id = row.id;
-};
 //删除按钮
 const del = (row) => {
   console.log(row);
@@ -644,10 +724,12 @@ onUnmounted(() => {
       :deep(.el-table__body .odd) {
         background-color: rgba(240, 243, 247, 1);
       }
-      :deep(.look) {
-        padding: 5px 10px;
-        border-radius: 45px;
-        border: 0.74px solid rgba(30, 125, 251, 1);
+
+      :deep(.el-button) {
+        width: 60px;
+        height: 28px;
+        border-radius: 40px;
+        font-size: 15px;
       }
     }
 
@@ -720,6 +802,34 @@ onUnmounted(() => {
       background-color: transparent;
     }
   }
+  :deep(.addStaff) {
+    //   height: 420px;
+    border-radius: 11px;
+    .el-dialog__header {
+      border-radius: 11px 11px 0 0;
+      background: rgba(237, 241, 245, 1);
+      font-weight: 600;
+      margin: 0;
+      padding-bottom: 16px;
+      .el-dialog__headerbtn {
+        outline: none;
+      }
+    }
+    .el-dialog__body {
+      padding: 30px 20px 10px 20px;
+      .el-input {
+        width: 200px;
+      }
+      .options {
+        margin-left: 120px;
+      }
+    }
+  }
+  :deep(.particulars) {
+    .el-dialog__body {
+      padding: 30px 20px 30px 20px;
+    }
+  }
 }
 .el-input {
   width: 192px;

+ 108 - 4
src/views/busquery/busquery.vue

@@ -566,6 +566,102 @@
             placeholder="请选择发车日期"
           >
             <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(8, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(8, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+            <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(7, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(7, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+            <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(6, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(6, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+            <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(5, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(5, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+            <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(4, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(4, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+            <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(3, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(3, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+            <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(2, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(2, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+            <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(1, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .subtract(1, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+            <el-option
               :label="dayjs().format('YYYY-MM-DD')"
               :value="dayjs().format('YYYY-MM-DD')"
             />
@@ -747,7 +843,7 @@
                 @click="sendBus(scope.row)"
                 ><div class="look">调度</div></el-button
               >
-              <!-- <el-button
+              <el-button
                 v-if="scope.row.state == 2"
                 color="#909399"
                 plain
@@ -760,7 +856,7 @@
                 plain
                 @click="mergeBus(scope.row)"
                 ><div class="lookcar">合车</div></el-button
-              > -->
+              >
               <el-button type="danger" plain @click="del(scope.row)"
                 ><div class="lookdel">删除</div></el-button
               >
@@ -1121,7 +1217,7 @@ const updataSmTime = () => {
 };
 
 // 获取数据列表
-const getList = async () => {
+const getList = async (message) => {
   {
     let data = new FormData();
     let time = dayjs().format("YYYY-MM-DD");
@@ -1143,6 +1239,14 @@ const getList = async () => {
     if (res.status == 200) {
       tableData.list = res.data.rows;
       // currentPage.value = res.data.currentPage;
+      if (message) {
+        ElMessage({
+          type: "success",
+          showClose: true,
+          message: message,
+          center: true,
+        });
+      }
       total.value = res.data.total;
     } else {
       tableData.list = res.data.rows;
@@ -1165,7 +1269,7 @@ const getList = async () => {
 
 // 搜索按钮
 const search = lodash.debounce(() => {
-  getList();
+  getList("查询成功");
 }, 300);
 // 重置搜索框
 const resetSearch = lodash.debounce(() => {

+ 2 - 1
src/views/classes/classes.vue

@@ -1767,6 +1767,7 @@ onUnmounted(() => {});
         background: rgba(237, 241, 245, 1);
         font-weight: 600;
         margin: 0;
+        padding-bottom: 17px;
         .el-dialog__headerbtn {
           outline: none;
         }
@@ -1783,7 +1784,7 @@ onUnmounted(() => {});
     }
     :deep(.particulars) {
       .el-dialog__body {
-        padding: 30px 20px 30px 20px;
+        padding: 30px 20px 35px 20px;
       }
     }
   }

+ 877 - 0
src/views/report/report.vue

@@ -0,0 +1,877 @@
+<template>
+  <div class="content-box">
+    <div class="left">
+      <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
+      <span class="cameratxt">报备管理</span>
+    </div>
+    <div class="middle">
+      <div class="filter">
+        <div class="condition">
+          <span>姓名 : </span>
+          <el-input
+            clearable
+            v-model="searchInput.name"
+            class="w-50 m-2"
+            placeholder="请输入姓名"
+            style="width: 150px"
+          />
+        </div>
+        <!-- <div class="condition">
+          <span>手机号码 : </span>
+          <el-input
+            clearable
+            v-model="searchInput.phone"
+            class="w-50 m-2"
+            placeholder="请输入手机号码"
+            style="width: 150px"
+          />
+        </div> -->
+        <div class="condition">
+          <span>创建时间 : </span>
+          <el-date-picker
+            v-model="searchInput.createTime"
+            type="date"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+            :prefix-icon="Calendar"
+            placeholder="请选择日期"
+          />
+        </div>
+        <el-button
+          style="margin-left: 20px"
+          color="rgba(61, 81, 232, 1)"
+          type="primary"
+          class="search"
+          @click="searchBtn"
+          ><el-icon><Search /></el-icon> <span>查询</span></el-button
+        >
+        <el-button
+          style="margin-left: 20px !important"
+          color="rgba(61, 81, 232, 1)"
+          type="primary"
+          class="search"
+          @click="searchRefresh"
+          ><el-icon><Refresh /></el-icon><span>重置</span></el-button
+        >
+      </div>
+      <!-- 按钮列表 -->
+      <div class="gongneng">
+        <el-button type="primary" color="rgba(61, 81, 232, 1)" @click="addlist"
+          ><el-icon><CirclePlus /></el-icon><span>新增报备人员</span></el-button
+        >
+        <!-- <el-button
+          color="rgba(61, 81, 232, 1)"
+          class="import"
+          type="primary"
+          @click="importExcel"
+          ><img
+            src="@/assets/import.png"
+            style="width: 14px; height: 14px; margin-right: 4px"
+            alt=""
+          />
+          <span>导出表单</span></el-button
+        > -->
+      </div>
+    </div>
+    <div class="footer">
+      <el-table
+        :row-class-name="tableRowClassName"
+        :data="tableData.list"
+        @selection-change="handleSelectionChange"
+        style="width: 100%"
+        :header-cell-style="{
+          background: 'rgba(240, 243, 247, 1)',
+          height: '50px',
+          border: 0,
+        }"
+      >
+        <el-table-column align="center" prop="create_time" label="创建时间" />
+        <el-table-column align="center" prop="user_name" label="姓名" />
+        <el-table-column align="center" prop="card_number" label="卡号" />
+        <el-table-column align="center" width="300" label="有效时间">
+          <template #default="scope">
+            <div>{{ scope.row.start_time + " ~ " + scope.row.end_time }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="user_phone" label="电话号码" />
+        <el-table-column align="center" label="操作">
+          <template #default="scope">
+            <el-button link type="primary" @click="edit(scope.row)"
+              ><div class="look">编辑</div></el-button
+            >
+            <el-button link type="danger" @click="del(scope.row)"
+              ><div class="looks">删除</div></el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <!-- 添加报备人员弹窗 -->
+      <el-dialog
+        class="addStaff"
+        v-model="addDialogVisible"
+        :close-on-click-modal="false"
+        :close-on-press-escape="false"
+        :title="dialongTitle"
+        align-center
+        width="609"
+        :before-close="cancelAdd"
+      >
+        <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          :rules="rules"
+          label-width="100px"
+          class="demo-ruleForm"
+          :size="formSize"
+          label-position="left"
+          status-icon
+        >
+          <el-form-item label="姓名 :" prop="name">
+            <el-input
+              v-model="ruleForm.name"
+              placeholder="请输入姓名"
+              clearable
+            />
+          </el-form-item>
+          <el-form-item
+            label="卡号 :"
+            prop="cardnumber"
+            v-if="dialongTitle == '新增报备人员'"
+          >
+            <!-- <el-tooltip
+              :visible="cardVisible"
+              placement="right-start"
+              effect="light"
+            >
+              <template #content>
+                <span>微校卡号</span>
+              </template>
+              <el-input
+                v-model="ruleForm.cardnumber"
+                placeholder="请输入卡号"
+                clearable
+                @focus="cardShow"
+                @blur="cardHide"
+              />
+            </el-tooltip> -->
+            <el-input
+              v-model="ruleForm.cardnumber"
+              placeholder="请输入微校卡号"
+              clearable
+            />
+          </el-form-item>
+          <el-form-item label="手机号码 :">
+            <el-input
+              v-model="ruleForm.phone"
+              placeholder="请输入手机号码"
+              clearable
+            />
+          </el-form-item>
+          <!-- <el-form-item label="类型 :" prop="post">
+            <el-select
+              v-model="ruleForm.post"
+              class="m-2"
+              placeholder="请选择职位"
+            >
+              <el-option label="临时人员" value="临时人员" />
+              <el-option label="学生" value="学生" />
+            </el-select>
+          </el-form-item> -->
+          <el-form-item
+            label="有效时间 :"
+            prop="startTime"
+            style="padding-bottom: 30px"
+          >
+            <el-date-picker
+              v-model="ruleForm.startTime"
+              type="daterange"
+              range-separator="-"
+              start-placeholder="开始时间"
+              end-placeholder="结束时间"
+              format="YYYY-MM-DD"
+              value-format="YYYY-MM-DD"
+            />
+          </el-form-item>
+          <el-divider />
+          <el-form-item class="options">
+            <el-button class="congzhi" @click="cancelAdd(ruleFormRef)"
+              >取消</el-button
+            >
+            <el-button
+              color="rgba(61, 81, 232, 1)"
+              class="queding"
+              type="primary"
+              @click="submitAdd(ruleFormRef)"
+            >
+              确定
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </el-dialog>
+    </div>
+
+    <!-- 分页组件 -->
+    <el-pagination
+      background
+      :current-page="currentPage"
+      :page-size="pageSize"
+      layout="total, prev, pager, next, jumper, slot"
+      :total="total"
+      @update:current-page="handleCurrentChange"
+    />
+  </div>
+</template>
+
+<script setup>
+import { ref, reactive, nextTick, onBeforeMount, onUnmounted } from "vue";
+import { useRouter } from "vue-router";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { Calendar } from "@element-plus/icons-vue";
+import vidiconsApi from "@/api/vidicons.js";
+import { dayjs } from "element-plus";
+import lodash from "lodash";
+import axios from "axios";
+import { useStore } from "vuex";
+const store = useStore();
+const router = useRouter();
+// 表格数据
+const tableData = reactive({ list: [] });
+const activeIndex = ref(); // 默认跳转路由
+const dialongTitle = ref("新增报备人员"); // 弹窗标题
+const api = ref("");
+const searchInput = reactive({
+  name: "",
+  phone: "",
+  createTime: "",
+}); // 搜索按钮数据
+
+const currentPage = ref(1); // 当前页
+const pageSize = ref(10);
+const total = ref(); // 当前总数
+const selectData = reactive({ list: [] }); // 多选框选择的数据
+
+const addDialogVisible = ref(false); // 控制添加员工弹窗
+const cardVisible = ref(false); // 卡号提示文字
+
+// 表单数据
+const formSize = ref("default");
+const ruleFormRef = ref();
+const ruleForm = reactive({
+  name: "",
+  phone: "",
+  post: "0",
+  cardnumber: "",
+  startTime: "",
+  id: "",
+});
+// 表单验证
+const rules = reactive({
+  name: [
+    { required: true, message: "姓名不能为空", trigger: "blur" },
+    {
+      pattern: /[\u4e00-\u9fa5]$/,
+      message: "请输入正确姓名",
+      trigger: "blur",
+    },
+  ],
+  // /^[\u4E00-\u9FA5]$/
+  cardnumber: [
+    { required: true, message: "卡号不能为空", trigger: "blur" },
+    // {
+    //   // pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
+    //   // pattern: /^[0-9]*$/,
+    //   message: "请输入正确卡号(数字类型)",
+    //   trigger: "blur",
+    // },
+  ],
+  phone: [
+    { required: true, message: "请输入手机号", trigger: "blur" },
+    {
+      // pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
+      pattern: /^((\(\+86\))|(\(86\)))?[1][3456789][0-9]{9}$/,
+      message: "请输入合法手机号/电话号",
+      trigger: "blur",
+    },
+  ],
+  post: [
+    {
+      required: true,
+      message: "职位不能为空",
+      trigger: "blur",
+    },
+  ],
+  startTime: [
+    {
+      required: true,
+      message: "请选择时间段",
+      trigger: "blur",
+    },
+  ],
+
+  // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
+});
+// 获取摄像头列表
+const getList = async (message) => {
+  let data = new FormData();
+  data.set("user_name", searchInput.name);
+  data.set("create_time", searchInput.createTime);
+  data.set("page", currentPage.value);
+  data.set("rows", pageSize.value); //前面的key记得对应!
+  // let res = await adminApi.adminLogin(data);
+  let res = await axios({
+    method: "post",
+    url: api.value + "/ubblist.action",
+    headers: {
+      token: sessionStorage.getItem("token"),
+    },
+    data: data,
+  });
+  console.log(res, "报备数据");
+  if (res.status == 200) {
+    if (message) {
+      ElMessage({
+        type: "success",
+        showClose: true,
+        message: message,
+        center: true,
+      });
+    }
+    tableData.list = res.data.rows;
+    // currentPage.value = res.data.currentPage;
+    total.value = res.data.total;
+  } else {
+    tableData.list = res.data.rows;
+    currentPage.value = 1;
+    total.value = res.data.total;
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+  // console.log(res);
+};
+
+// 搜索功能
+const searchBtn = lodash.debounce(async () => {
+  getList("查询成功");
+}, 300);
+// 重置搜索
+const searchRefresh = lodash.debounce(async () => {
+  searchInput.name = "";
+  searchInput.createTime = "";
+  currentPage.value = 1;
+  getList();
+}, 300);
+// 添加员工
+const addlist = () => {
+  dialongTitle.value = "新增报备人员";
+  addDialogVisible.value = true;
+  ruleForm.name = "";
+  ruleForm.cardnumber = "";
+  ruleForm.phone = "";
+  ruleForm.post = "";
+  ruleForm.startTime = [];
+};
+//编辑按钮
+const edit = (row) => {
+  // console.log(ruleForm.startTime, row.start_time, row.end_time);
+
+  dialongTitle.value = "编辑报备人员";
+  addDialogVisible.value = true;
+  console.log(row);
+  ruleForm.name = row.user_name;
+  ruleForm.phone = row.user_phone;
+  ruleForm.id = row.id;
+  ruleForm.cardnumber = row.card_number;
+  let data = [row.start_time, row.end_time];
+  ruleForm.startTime = data;
+};
+// 取消添加员工
+const cancelAdd = () => {
+  addDialogVisible.value = false;
+  ruleFormRef.value.resetFields();
+};
+// 确认添加员工
+const submitAdd = async (formEl) => {
+  if (!formEl) return;
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      if (dialongTitle.value == "新增报备人员") {
+        let data = {
+          start_time: ruleForm.startTime[0],
+          end_time: ruleForm.startTime[1],
+          user_name: ruleForm.name,
+          card_number: ruleForm.cardnumber,
+          user_phone: ruleForm.phone,
+        };
+        // let res = await admin.adminAdd(data);
+        let res = await axios({
+          method: "post",
+          url: api.value + "/ubbinsert.action",
+          headers: {
+            "Content-Type": "application/json;charset=utf-8",
+            token: sessionStorage.getItem("token"),
+          },
+          data: data,
+        });
+        console.log(res, "添加报备");
+        if (res.data.code == 200) {
+          getList();
+          ElMessage({
+            type: "success",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+          addDialogVisible.value = false;
+          ruleFormRef.value.resetFields();
+        } else {
+          ElMessage({
+            type: "error",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+        }
+      } else {
+        let data = {
+          user_name: ruleForm.name,
+          user_phone: ruleForm.phone,
+          id: ruleForm.id,
+          card_number: ruleForm.cardnumber,
+          start_time: ruleForm.startTime[0],
+          end_time: ruleForm.startTime[1],
+        };
+        // let res = await admin.adminAdd(data);
+        let res = await axios({
+          method: "post",
+          url: api.value + "/ubbupdate.action",
+          headers: {
+            "Content-Type": "application/json;charset=utf-8",
+            token: sessionStorage.getItem("token"),
+          },
+          data: data,
+        });
+        console.log(res, "修改报备");
+        if (res.data.code == 200) {
+          getList();
+          ElMessage({
+            type: "success",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+          addDialogVisible.value = false;
+          ruleFormRef.value.resetFields();
+        } else {
+          ElMessage({
+            type: "error",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+        }
+      }
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
+};
+
+//删除按钮
+const del = (row) => {
+  ElMessageBox.confirm(`是否删除 ${row.user_name} 报备人员?`, "提示", {
+    confirmButtonText: "确认",
+    cancelButtonText: "取消",
+    type: "warning",
+  })
+    .then(async () => {
+      let data = new FormData();
+      data.set("id", row.id);
+      // let res = await adminApi.adminLogin(data);
+      let res = await axios({
+        method: "post",
+        url: api.value + "/ubbdel.action",
+        headers: {
+          token: sessionStorage.getItem("token"),
+        },
+        data: data,
+      });
+      if (res.data.code == 200) {
+        if (tableData.list.length == 1 && currentPage.value != 1) {
+          currentPage.value = currentPage.value - 1;
+        }
+        getList();
+        ElMessage({
+          type: "success",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+      } else {
+        ElMessage({
+          type: "error",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+      }
+      console.log(res);
+    })
+    .catch(() => {
+      ElMessage({
+        type: "info",
+        message: "已取消删除",
+      });
+    });
+};
+
+// 控制卡号显示
+const cardShow = () => {
+  cardVisible.value = true;
+};
+// 控制卡号隐藏
+const cardHide = () => {
+  cardVisible.value = false;
+};
+
+//导出功能
+// const importExcel = async () => {
+//   if (searchInput.createTime == null) {
+//     searchInput.createTime = "";
+//   }
+//   let data = new FormData();
+//   data.set("user_name", searchInput.name);
+//   data.set("user_phone", searchInput.phone);
+//   data.set("create_time", searchInput.createTime);
+//   let res = await axios({
+//     method: "post",
+//     url: api.value + "/carBook/usertoExcel.action",
+//     headers: {
+//       token: sessionStorage.getItem("token"),
+//     },
+//     data: data,
+//   });
+//   // console.log(res, "导出账号");
+//   if (res.data.code == 200) {
+//     // const elt = document.createElement("a");
+//     // elt.setAttribute(
+//     //   "href",
+//     //   "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl
+//     // );
+//     // // elt.setAttribute("download", "file.xlsx");
+//     // // elt.style.display = "none";
+//     // document.body.appendChild(elt);
+//     // elt.click();
+//     var downloadPath = "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl;
+//     console.log("获得地址数据:", downloadPath);
+//     var downloadLink = document.createElement("a");
+//     downloadLink.style.display = "none"; // 使其隐藏
+//     downloadLink.href = downloadPath;
+//     downloadLink.download = "";
+//     downloadLink.click();
+//     document.body.appendChild(downloadLink);
+//     document.body.removeChild(downloadLink);
+//     ElMessage({
+//       type: "success",
+//       showClose: true,
+//       message: res.data.message,
+//       center: true,
+//     });
+//   } else {
+//     ElMessage({
+//       type: "error",
+//       showClose: true,
+//       message: res.data.message,
+//       center: true,
+//     });
+//   }
+// };
+// 多选框功能
+const handleSelectionChange = (val) => {
+  console.log(val);
+  selectData.list = val;
+};
+
+// 表格斑马纹颜色修改
+const tableRowClassName = ({ row, rowIndex }) => {
+  if (rowIndex % 2 === 0) {
+    return "even";
+  } else if (rowIndex % 2 !== 0) {
+    return "odd";
+  }
+  return "";
+};
+// 分页
+const handleCurrentChange = (value) => {
+  // console.log(value);
+  currentPage.value = value;
+  getList();
+};
+
+onBeforeMount(() => {
+  api.value = store.state.user.api;
+  getList();
+  // let arr = [2, 4, 6, 3, 5, 8, 7, 9, 1];
+  // for (let j = 1; j <= arr.length - 1; j++) {
+  //   for (let i = 0; i <= arr.length - j; i++) {
+  //     let a = arr[i];
+  //     if (arr[i] > arr[i + 1]) {
+  //       arr[i] = arr[i + 1];
+  //       arr[i + 1] = a;
+  //     }
+  //   }
+  // }
+  // for (let j = 0; j <= arr.length - 2; j++) {
+  //   for (let i = j + 1; i <= arr.length - 1; i++) {
+  //     let a = arr[j];
+  //     if (arr[j] < arr[i]) {
+  //       arr[j] = arr[i];
+  //       arr[i] = a;
+  //     }
+  //   }
+  // }
+  // let arr = [2, 4, 6, 3, 3, 4, 8, 9, 3, 1, 2, 5, 8, 7, 9, 1];
+  // let arr2 = [];
+  // for (let j = 0; j <= arr.length - 1; j++) {
+  //   let flag = true;
+  //   for (let i = 0; i <= arr2.length - 1; i++) {
+  //     if (arr[j] == arr2[i]) {
+  //       flag = false;
+  //       break;
+  //     }
+  //   }
+  //   if (flag) {
+  //     arr2.push(arr[j]);
+  //   }
+  // }
+  // console.log(arr2);
+
+  // let arr = [2, 4, 6, 3, 3, 4, 8, 9, 3, 1, 2, 5, 8, 7, 9, 1];
+  // var newArr = arr.reduce((pre, cur) => {
+  //   console.log(pre, cur);
+  //   if (cur in pre) {
+  //     pre[cur]++;
+  //   } else {
+  //     pre[cur] = 1;
+  //   }
+  //   return pre;
+  // }, {}); //这里注意初始值要默认赋予空对象,不然会报错
+  // console.log(newArr);
+
+  // let arr = [2, 4, 6, 3, 3, 4, 8, 9, 3, 1, 2, 5, 8, 7, 9, 1];
+  // let newArr = arr.reduce((pre, cur) => {
+  //   if (!pre.includes(cur)) {
+  //     return pre.concat(cur);
+  //   } else {
+  //     return pre;
+  //   }
+  // }, []);
+
+  // console.log(newArr);
+});
+onUnmounted(() => {
+  // document.removeEventListener("keyup", Enters);
+});
+</script>
+
+<style scoped lang="scss">
+.content-box {
+  width: 97.5%;
+  height: 89%;
+  margin: 20px auto;
+  background-color: #fff;
+  color: #fff;
+  display: flex;
+  flex-direction: column;
+
+  .left {
+    // width: calc(100wh - 40px);
+    display: flex;
+    align-items: center;
+    height: 60px;
+    margin: 0 30px;
+    border-bottom: 1px solid #ccc;
+    color: #000;
+    font-size: 18px;
+    font-weight: 600;
+    .camera {
+      margin-right: 15px;
+      color: #4392f7;
+    }
+  }
+  .middle {
+    width: 96%;
+    margin: 0 auto;
+
+    color: #000;
+    // border-bottom: 1px solid rgb(231, 231, 231);
+    .filter {
+      display: flex;
+      flex-wrap: wrap;
+      align-items: center;
+      margin: 10px 0 0 0;
+      .search {
+        margin-left: 0 !important;
+      }
+      .condition {
+        display: flex;
+        align-items: center;
+        margin: 10px 30px 10px 0;
+        :deep(.el-input .el-input__inner) {
+          font-size: 16px;
+        }
+        span {
+          margin: 0 10px 0 0;
+        }
+      }
+    }
+    .gongneng {
+      margin: 10px 0;
+    }
+    :deep(.cont) {
+      width: 60%;
+      margin: 20px auto;
+    }
+    :deep(.download) {
+      display: flex;
+      align-items: center;
+      margin: 10px;
+    }
+    :deep(.download span) {
+      font-size: 16px;
+      margin-left: 20px;
+    }
+    :deep(.cont .el-button) {
+      margin-left: 60px;
+      margin-bottom: 30px;
+    }
+
+    :deep(.cont .accomplish) {
+      width: 100%;
+      display: flex;
+      justify-content: center;
+    }
+    :deep(.cont .accomplish .el-button) {
+      width: 50%;
+      margin: 0;
+    }
+  }
+  .footer {
+    width: 96%;
+    height: 550px;
+    margin: 10px auto 30px;
+    .el-table--fit {
+      height: 100%;
+      :deep(.el-table__header-wrapper) {
+        background-color: #000;
+        font-size: 16px;
+        color: #000;
+      }
+      :deep(.el-table__row) {
+        height: 50px;
+        font-size: 16px;
+        color: #000;
+      }
+      :deep(.el-table__row td) {
+        padding: 0;
+        border: 0;
+      }
+
+      .el-button--primary {
+        margin-left: 5px;
+      }
+      :deep(.el-table__body .even) {
+        background-color: #fff;
+      }
+      :deep(.el-table__body .odd) {
+        background-color: rgba(240, 243, 247, 1);
+      }
+      :deep(.look) {
+        padding: 5px 10px;
+        border-radius: 45px;
+        border: 0.74px solid rgba(30, 125, 251, 1);
+      }
+      :deep(.looks) {
+        padding: 5px 10px;
+        border-radius: 45px;
+        border: 0.74px solid #f56c6c;
+      }
+    }
+
+    // 添加员工弹窗样式
+    :deep(.addStaff) {
+      //   height: 420px;
+      border-radius: 11px;
+      .el-dialog__header {
+        border-radius: 11px 11px 0 0;
+        background: rgba(237, 241, 245, 1);
+        font-weight: 600;
+        margin: 0;
+        .el-dialog__headerbtn {
+          outline: none;
+        }
+      }
+      .el-dialog__body {
+        padding: 30px 20px 10px 20px;
+        // .el-form-item {
+        //   // width: 500px;
+        // }
+        .el-input {
+          width: 200px;
+        }
+        .options {
+          margin-left: 320px;
+        }
+      }
+    }
+  }
+  .el-pagination {
+    // width: 1600px;
+    width: 96%;
+    margin: 0 auto 18px;
+    justify-content: flex-end;
+    :deep(.el-pagination__total) {
+      color: #000;
+    }
+    :deep(.el-pagination__goto) {
+      color: #000;
+    }
+    :deep(.el-pagination__classifier) {
+      color: #000;
+    }
+    :deep(.el-input__wrapper) {
+      border: 1px solid rgba(0, 0, 0, 1);
+      border-radius: 5px;
+      box-shadow: none;
+    }
+    :deep(.el-pager li) {
+      margin: 0 5px;
+      border: 1px solid rgba(0, 0, 0, 1);
+      border-radius: 5px;
+      background-color: transparent;
+    }
+    :deep(.el-pager li.is-active) {
+      background-color: rgba(30, 125, 251, 1);
+    }
+    :deep(.btn-prev) {
+      margin-right: 5px;
+      border: 1px solid rgba(0, 0, 0, 1);
+      border-radius: 5px;
+      background-color: transparent;
+    }
+    :deep(.btn-next) {
+      margin-left: 5px;
+      border: 1px solid rgba(0, 0, 0, 1);
+      border-radius: 5px;
+      background-color: transparent;
+    }
+  }
+}
+.el-input {
+  width: 192px;
+}
+</style>

+ 19 - 15
src/views/statement/statement.vue

@@ -629,7 +629,7 @@ const rules = reactive({
 });
 
 // 获取数据列表
-const getList = async () => {
+const getList = async (message) => {
   if (footerMenuIndex.value == 0) {
     let data = new FormData();
     if (searchInputHZ.state) {
@@ -651,12 +651,14 @@ const getList = async () => {
     });
     console.log(res);
     if (res.status == 200) {
-      // ElMessage({
-      //   type: "success",
-      //   showClose: true,
-      //   message: res.data.message,
-      //   center: true,
-      // });
+      if (message) {
+        ElMessage({
+          type: "success",
+          showClose: true,
+          message: message,
+          center: true,
+        });
+      }
       tableData.list = res.data.rows;
       // currentPage.value = res.data.currentPage;
       total.value = res.data.total;
@@ -734,12 +736,14 @@ const getList = async () => {
     });
     console.log(res);
     if (res.status == 200) {
-      // ElMessage({
-      //   type: "success",
-      //   showClose: true,
-      //   message: res.data.message,
-      //   center: true,
-      // });
+      if (message) {
+        ElMessage({
+          type: "success",
+          showClose: true,
+          message: message,
+          center: true,
+        });
+      }
       tableData.list2 = res.data.rows;
       if (res.data.currentPage) {
         currentPage2.value = res.data.currentPage;
@@ -784,7 +788,7 @@ const goBackNum = async () => {
 };
 // 汇总搜索按钮
 const searchHZ = lodash.debounce(() => {
-  getList();
+  getList("查询成功");
   goBackNum();
 }, 300);
 // 汇总重置搜索框
@@ -798,7 +802,7 @@ const resetInputHZ = lodash.debounce(() => {
 
 // 搜索按钮
 const search = lodash.debounce(() => {
-  getList();
+  getList("查询成功");
 }, 300);
 // 重置搜索框
 const resetInput = lodash.debounce(() => {

+ 0 - 983
src/views/vidicons/user/index.vue

@@ -1,983 +0,0 @@
-<template>
-  <div class="content-box">
-    <div class="left">
-      <el-icon :size="23" class="camera"><UserFilled /></el-icon>
-      <span class="cameratxt">用户管理</span>
-    </div>
-    <div class="middle">
-      <div class="filter">
-        <div class="condition">
-          <span>姓名 </span>
-          <el-input
-            clearable
-            v-model="searchData.input1"
-            class="w-50 m-2"
-            placeholder="请输入姓名"
-            style="width: 150px"
-          />
-        </div>
-        <div class="condition">
-          <span>账号 </span>
-          <el-input
-            clearable
-            v-model="searchData.input2"
-            class="w-50 m-2"
-            placeholder="请输入账号"
-            style="width: 150px"
-          />
-        </div>
-        <div class="condition">
-          <span>联系方式 </span>
-          <el-input
-            clearable
-            v-model="searchData.input3"
-            class="w-50 m-2"
-            placeholder="请输入联系方式"
-            style="width: 180px"
-          />
-        </div>
-        <div class="condition">
-          <span>角色 </span>
-          <el-select
-            style="width: 120px"
-            v-model="searchData.input4"
-            class="m-2"
-            placeholder="请选择角色"
-          >
-            <el-option label="管理员" value="2" />
-            <el-option label="超级管理员" value="1" />
-          </el-select>
-        </div>
-
-        <div class="condition">
-          <span>创建时间 </span>
-          <el-date-picker
-            v-model="searchData.input5"
-            type="datetimerange"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            format="YYYY-MM-DD HH:mm:ss"
-            value-format="YYYY-MM-DD HH:mm:ss"
-          />
-        </div>
-        <el-button type="primary" class="search" @click="search">搜索</el-button>
-        <el-button type="primary" plain @click="resetInput">重置</el-button>
-      </div>
-
-      <!-- 按钮列表 -->
-
-      <div class="gongneng">
-        <el-button type="primary" plain @click="addlist">新增</el-button>
-        <el-button type="success" plain @click="importExcel">导入</el-button>
-        <el-button type="warning" plain @click="downLoad">导出</el-button>
-        <el-button type="danger" plain @click="allDel">删除</el-button>
-      </div>
-
-      <!-- 编辑/新增管理员 -->
-      <el-dialog
-        v-model="centerDialogVisible"
-        :title="dialongTitle"
-        width="30%"
-        align-center
-        :before-close="editClose"
-      >
-        <el-form
-          ref="ruleFormRef"
-          :model="ruleForm"
-          :rules="rules"
-          label-width="120px"
-          class="demo-ruleForm"
-          :size="formSize"
-          status-icon
-        >
-          <el-form-item label="姓名" prop="name">
-            <el-input v-model="ruleForm.name" placeholder="请输入姓名" />
-          </el-form-item>
-          <el-form-item label="性别" prop="region">
-            <el-select
-              v-model="ruleForm.region"
-              style="width: 180px"
-              placeholder="请选择性别"
-            >
-              <el-option label="男" value="1" />
-              <el-option label="女" value="0" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="账号" prop="date1">
-            <el-input v-model="ruleForm.date1" placeholder="请输入账号" />
-          </el-form-item>
-          <el-form-item label="密码" prop="date2" v-show="dialongTitle == '新增用户'">
-            <el-input v-model="ruleForm.date2" placeholder="请输入密码" />
-          </el-form-item>
-          <el-form-item label="联系方式" prop="phone">
-            <el-input v-model="ruleForm.phone" placeholder="请输入联系方式"></el-input>
-          </el-form-item>
-          <el-form-item label="类别" prop="resource">
-            <el-select v-model="ruleForm.resource" placeholder="请选择类别">
-              <el-option label="超级管理员" value="1" />
-              <el-option label="管理员" value="2" />
-            </el-select>
-          </el-form-item>
-          <el-form-item>
-            <el-button type="primary" @click="submitForm(ruleFormRef)"> 确定 </el-button>
-            <el-button @click="resetForm(ruleFormRef)">重置</el-button>
-          </el-form-item>
-        </el-form>
-      </el-dialog>
-      <!-- 导入用户按钮 -->
-      <el-dialog
-        v-model="importByExcelDialog"
-        title="导入用户信息"
-        width="45%"
-        align-center
-        custom-class="importExecl"
-      >
-        <el-steps :active="active" align-center finish-status="success">
-          <el-step title="下载模板 1" :icon="Pointer" />
-          <el-step title="执行上传 2" :icon="Upload" />
-          <el-step title="导入完成 3" :icon="Select" />
-        </el-steps>
-        <div class="cont">
-          <div class="download">
-            <el-icon :size="30"><Pointer /></el-icon><span>请按照数据模板导入数据</span>
-          </div>
-          <el-button type="primary">
-            <a href="/video/videoManage/userProfile.xlsx" style="color: #fff">下载模板</a>
-          </el-button>
-          <div class="upload">
-            <div class="download">
-              <el-icon :size="30"><Upload /></el-icon
-              ><span>将文件上传(用户上传的excel文件需要符合规定的格式)</span>
-            </div>
-            <el-upload
-              v-model:file-list="fileList"
-              class="upload-demo"
-              action="none"
-              :limit="1"
-              :multiple="false"
-              :auto-upload="false"
-              :on-change="changeUpload"
-              :before-remove="beforeRemove"
-            >
-              <el-button type="primary">选择文件</el-button>
-              <template #tip>
-                <div class="el-upload__tip">仅允许上传一个文件</div>
-              </template>
-            </el-upload>
-          </div>
-          <div class="accomplish">
-            <el-button
-              type="primary"
-              :disabled="active == 1"
-              style="margin-top: 12px"
-              @click="next"
-              >完成导入</el-button
-            >
-          </div>
-        </div>
-      </el-dialog>
-    </div>
-    <div class="footer">
-      <el-table
-        :row-class-name="tableRowClassName"
-        :data="tableData.list"
-        style="width: 100%"
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column align="center" type="selection" width="80" />
-        <el-table-column align="center" prop="name" label="姓名" width="100" />
-        <el-table-column align="center" width="100" prop="sex" label="性别" />
-        <el-table-column align="center" prop="username" label="用户名(账号)" />
-        <el-table-column align="center" prop="adminType" label="类别" />
-        <el-table-column align="center" prop="phone" label="手机号码" />
-        <el-table-column align="center" width="300" prop="createTime" label="创建时间" />
-        <el-table-column align="center" label="操作">
-          <template #default="scope">
-            <el-button link type="primary" size="small" @click="handleUp(scope.row)"
-              >编辑</el-button
-            >
-            <el-button link type="primary" size="small" @click="handleDel(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-    <el-pagination
-      v-model:page-size="pageSize"
-      v-model:current-page="currentPage"
-      layout="total, prev, pager, next, jumper"
-      :total="total"
-      @current-change="handleCurrentChange"
-    />
-  </div>
-</template>
-
-<script setup>
-import { ref, reactive, onBeforeMount } from "vue";
-import { useRouter } from "vue-router";
-import { Select, Pointer, Upload } from "@element-plus/icons-vue";
-import { JSEncrypt } from "jsencrypt"; // 加密密码
-import { ElMessage, ElMessageBox } from "element-plus";
-import { dayjs } from "element-plus";
-import axios from "axios";
-import lodash from "lodash";
-import adminApi from "@/api/admin.js";
-const router = useRouter();
-
-// 搜索框数据
-const searchData = reactive({
-  input1: "",
-  input2: "",
-  input3: "",
-  input4: "",
-  input5: "",
-});
-// 表格数据
-const tableData = reactive({ list: [] });
-const dialongTitle = ref(""); // 弹窗标题
-const pageSize = ref(13);
-const currentPage = ref(1); // 当前页
-const total = ref(); // 当前总数
-const selectData = reactive({ list: [] }); // 多选框选择的数据
-const centerDialogVisible = ref(false); // 控制新增或修改弹窗开关
-
-const importByExcelDialog = ref(false); // 控制导入弹窗
-const active = ref(1); // 导入步骤计数
-const fileList = ref(); // 上传的文件
-
-// 表单数据
-const formSize = ref("default");
-const ruleFormRef = ref();
-
-const ruleForm = reactive({
-  name: "",
-  region: "",
-  date1: "",
-  date2: "",
-  phone: "",
-  resource: "",
-  id: "",
-});
-// 表单验证
-const rules = reactive({
-  region: [
-    {
-      required: true,
-      message: "请选择性别",
-      trigger: "blur",
-    },
-  ],
-  name: [
-    {
-      required: true,
-      message: "请输入姓名",
-      trigger: "blur",
-    },
-  ],
-  date1: [
-    {
-      required: true,
-      message: "请输入账号",
-      trigger: "blur",
-    },
-  ],
-  date2: [
-    {
-      required: true,
-      message: "请输入密码",
-      trigger: "blur",
-    },
-  ],
-  phone: [
-    {
-      required: true,
-      message: "请输入电话号码",
-      trigger: "blur",
-    },
-    {
-      validator: function (rule, value, callback) {
-        if (/^1[34578]\d{9}$/.test(value) == false) {
-          callback(new Error("请输入正确的手机号"));
-        } else {
-          callback();
-        }
-      },
-      trigger: "blur",
-    },
-  ],
-  resource: [
-    {
-      required: true,
-      message: "请选择类别",
-      trigger: "blur",
-    },
-  ],
-});
-// 路由
-const handleSelect = (key, keyPath) => {
-  router.push({
-    path: `/vidicons/${key}`,
-  });
-};
-// 获取管理员列表
-const getList = (curPage) => {
-  adminApi
-    .adminList({ pageSize: 13, curPage })
-    .then((res) => {
-      console.log(res);
-      total.value = res.data.totalCount;
-      res.data.list.forEach((item) => {
-        if (item.sex == 0) {
-          item.sex = "女";
-        } else if (item.sex == 1) {
-          item.sex = "男";
-        }
-        if (item.adminType == "1") {
-          item.adminType = "超级管理员";
-        } else if (item.adminType == "2") {
-          item.adminType = "管理员";
-        }
-      });
-
-      tableData.list = res.data.list;
-    })
-    .catch((err) => {
-      console.log(err);
-    });
-};
-
-// 搜索按钮
-const search = lodash.debounce(() => {
-  let startTime = "";
-  let endTime = "";
-  if (searchData.input5 == []) {
-    startTime = "";
-    endTime = "";
-  } else {
-    startTime = searchData.input5[0];
-    endTime = searchData.input5[1];
-  }
-
-  let data = {
-    pageSize: 13,
-    curPage: 1,
-    name: searchData.input1,
-    username: searchData.input2,
-    phone: searchData.input3,
-    adminType: searchData.input4,
-    startTime,
-    endTime,
-  };
-  adminApi
-    .adminList(data)
-    .then((res) => {
-      console.log(res);
-      total.value = res.data.totalCount;
-      res.data.list.forEach((item) => {
-        if (item.sex == 0) {
-          item.sex = "女";
-        } else {
-          item.sex = "男";
-        }
-        if (item.adminType == "1") {
-          item.adminType = "超级管理员";
-        } else {
-          item.adminType = "管理员";
-        }
-      });
-      ElMessage({
-        type: "success",
-        showClose: true,
-        message: "搜索成功",
-        center: true,
-      });
-      currentPage.value = 1;
-      tableData.list = res.data.list;
-    })
-    .catch((err) => {
-      console.log(err);
-      ElMessage({
-        type: "error",
-        showClose: true,
-        message: "搜索失败",
-        center: true,
-      });
-    });
-}, 300);
-// 重置搜索框
-const resetInput = lodash.debounce(() => {
-  searchData.input1 = "";
-  searchData.input2 = "";
-  searchData.input3 = "";
-  searchData.input4 = "";
-  searchData.input5 = "";
-  currentPage.value = 1;
-  getList(1);
-}, 300);
-// 多选框功能
-const handleSelectionChange = (val) => {
-  console.log(val);
-  selectData.list = val;
-};
-
-// 删除多选IP
-const allDel = () => {
-  console.log(selectData.list);
-  ElMessageBox.confirm("此操作将永久删除所选用户,是否继续?", "提示", {
-    confirmButtonText: "确认",
-    cancelButtonText: "取消",
-    type: "warning",
-  })
-    .then(async () => {
-      let idIP = [];
-      selectData.list.forEach((item) => {
-        idIP.push(item.id);
-      });
-      console.log(idIP);
-      let res = await adminApi.adminDel(idIP);
-      if (res.success) {
-        if (
-          tableData.list.length - selectData.list.length == 0 &&
-          currentPage.value != 1
-        ) {
-          currentPage.value = currentPage.value - 1;
-        }
-        ElMessage({
-          type: "success",
-          showClose: true,
-          message: "删除成功",
-          center: true,
-        });
-        getList(currentPage.value);
-      } else {
-        ElMessage({
-          type: "warning",
-          showClose: true,
-          message: "删除失败",
-          center: true,
-        });
-      }
-    })
-    .catch(() => {
-      ElMessage({
-        type: "info",
-        message: "取消删除",
-      });
-    });
-};
-
-// 重置表单
-const resetForm = (formEl) => {
-  formEl.resetFields();
-  console.log("重置表单");
-  ruleForm.phone = "";
-  ruleForm.date1 = "";
-  ruleForm.resource = "";
-  // ruleForm.password=,
-  ruleForm.region = "";
-  ruleForm.name = "";
-  ruleForm.date2 = "";
-  // if (!formEl) return;
-
-  // formEl.resetFields();
-};
-
-//新增按钮
-const addlist = () => {
-  dialongTitle.value = "新增用户";
-  ruleForm.phone = "";
-  ruleForm.date1 = "";
-  ruleForm.resource = "";
-  // ruleForm.password=,
-  ruleForm.region = "";
-  ruleForm.name = "";
-  ruleForm.date2 = "";
-  centerDialogVisible.value = true;
-};
-//修改按钮
-const handleUp = (row) => {
-  console.log(row);
-  ruleForm.id = row.id;
-  ruleForm.phone = row.phone;
-  ruleForm.date1 = row.username;
-  ruleForm.name = row.name;
-  ruleForm.date2 = row.password;
-  ruleForm.region = row.sex;
-  ruleForm.resource = row.adminType;
-  dialongTitle.value = "修改用户";
-  centerDialogVisible.value = true;
-};
-
-// 关闭新增/修改页面
-const editClose = (done) => {
-  ruleFormRef.value.resetFields();
-  ruleForm.phone = "";
-  ruleForm.date1 = "";
-  ruleForm.resource = "";
-  // ruleForm.password=,
-  ruleForm.region = "";
-  ruleForm.name = "";
-  ruleForm.date2 = "";
-  centerDialogVisible.value = false;
-  done();
-};
-// 确定表单
-const submitForm = async (formEl) => {
-  if (!formEl) return;
-  await formEl.validate((valid, fields) => {
-    if (valid) {
-      console.log("submit!");
-      if (dialongTitle.value == "新增用户") {
-        let publicKey =
-          "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMOcPB06u5yKyQsPjfVWiWgbEIrd14kiXNNihciaVKb6HnkQvq7zpQuZ80WEX94spnUMI3iOAl/GmIvHrpGwcbB4hJbznm+PajiwnUSPuCCXA68YJF640cJKb/8KeM7WVz69OFkIEPHhVxOy4FFF5QWe/kt6zOZ19HmE+ak+5x/QIDAQAB";
-        let encryptor = new JSEncrypt(); // 新建JSEncrypt对象
-        encryptor.setPublicKey(publicKey); // 设置公钥
-        let rsaPassWord = encryptor.encrypt(ruleForm.date2); // 对密码进行加密
-        let data = {
-          phone: ruleForm.phone,
-          username: ruleForm.date1,
-          adminType: ruleForm.resource,
-          password: rsaPassWord,
-          sex: ruleForm.region,
-          name: ruleForm.name,
-          createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
-        };
-        if (data.sex == "女") {
-          data.sex = 0;
-        } else if (data.sex == "男") {
-          data.sex = 1;
-        }
-        if (data.adminType == "超级管理员") {
-          data.adminType = 1;
-        } else if (data.adminType == "管理员") {
-          data.adminType = 2;
-        }
-        adminApi
-          .adminAdd(data)
-          .then((res) => {
-            console.log(tableData.list.length);
-            if (res.success) {
-              if (tableData.list.length == 13) {
-                currentPage.value = currentPage.value + 1;
-              }
-              ElMessage({
-                type: "success",
-                showClose: true,
-                message: res.message,
-                center: true,
-              });
-              getList(currentPage.value);
-              ruleFormRef.value.resetFields();
-              centerDialogVisible.value = false;
-            } else {
-              ElMessage({
-                type: "warning",
-                showClose: true,
-                message: res.message,
-                center: true,
-              });
-            }
-          })
-          .catch((err) => {
-            console.log(err);
-            ElMessage({
-              type: "error",
-              showClose: true,
-              message: "添加失败",
-              center: true,
-            });
-          });
-      } else {
-        // let publicKey =
-        //   "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMOcPB06u5yKyQsPjfVWiWgbEIrd14kiXNNihciaVKb6HnkQvq7zpQuZ80WEX94spnUMI3iOAl/GmIvHrpGwcbB4hJbznm+PajiwnUSPuCCXA68YJF640cJKb/8KeM7WVz69OFkIEPHhVxOy4FFF5QWe/kt6zOZ19HmE+ak+5x/QIDAQAB";
-        // let encryptor = new JSEncrypt(); // 新建JSEncrypt对象
-        // encryptor.setPublicKey(publicKey); // 设置公钥
-        // let rsaPassWord = encryptor.encrypt(ruleForm.date2); // 对密码进行加密
-
-        let data = {
-          phone: ruleForm.phone,
-          username: ruleForm.date1,
-          adminType: ruleForm.resource,
-          sex: ruleForm.region,
-          name: ruleForm.name,
-          id: ruleForm.id,
-          createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
-        };
-        if (data.sex == "女") {
-          data.sex = 0;
-        } else if (data.sex == "男") {
-          data.sex = 1;
-        }
-        if (data.adminType == "超级管理员") {
-          data.adminType = 1;
-        } else if (data.adminType == "管理员") {
-          data.adminType = 2;
-        }
-        adminApi
-          .adminUpdate(data)
-          .then((res) => {
-            console.log(res);
-            if (res.success) {
-              ElMessage({
-                type: "success",
-                showClose: true,
-                message: res.message,
-                center: true,
-              });
-              getList(currentPage.value);
-              ruleFormRef.value.resetFields();
-              centerDialogVisible.value = false;
-            } else {
-              ElMessage({
-                type: "warning",
-                showClose: true,
-                message: res.message,
-                center: true,
-              });
-            }
-          })
-          .catch((err) => {
-            console.log(err);
-            ElMessage({
-              type: "error",
-              showClose: true,
-              message: res.message,
-              center: true,
-            });
-          });
-      }
-    } else {
-      console.log("error submit!", fields);
-    }
-  });
-};
-// 删除按钮
-const handleDel = (row) => {
-  console.log("click");
-  ElMessageBox.confirm("此操作将永久删除所选中的IP,是否继续?", "提示", {
-    confirmButtonText: "确认",
-    cancelButtonText: "取消",
-    type: "warning",
-  })
-    .then(() => {
-      let idIP = [];
-      selectData.list.forEach((item) => {
-        idIP.push(item.id);
-      });
-      console.log(idIP);
-      adminApi
-        .adminDel([row.id])
-        .then((res) => {
-          console.log(tableData.list.length);
-          if (tableData.list.length == 1 && currentPage.value != 1) {
-            currentPage.value = currentPage.value - 1;
-          }
-          ElMessage({
-            type: "success",
-            showClose: true,
-            message: "删除成功",
-            center: true,
-          });
-          getList(currentPage.value);
-        })
-        .catch((err) => {
-          console.log(err);
-          ElMessage({
-            type: "warning",
-            showClose: true,
-            message: "删除失败",
-            center: true,
-          });
-        });
-    })
-    .catch(() => {
-      ElMessage({
-        type: "info",
-        message: "取消删除",
-      });
-    });
-};
-
-// 导出按钮
-const downLoad = lodash.debounce(() => {
-  let startTime = searchData.input5[0];
-  let endTime = searchData.input5[1];
-  let data = {
-    name: searchData.input1,
-    username: searchData.input2,
-    phone: searchData.input3,
-    adminType: searchData.input4,
-    startTime,
-    endTime,
-  };
-  adminApi
-    .download(data)
-    .then((res) => {
-      let name = "用户管理列表";
-      var content = res;
-      // var data = new Blob([content], { type: "application/octet-stream;charset=utf-8" });
-      var data = new Blob([content], { type: "application/vnd.ms-excel;charset=utf-8" });
-      var downloadUrl = window.URL.createObjectURL(data);
-      var anchor = document.createElement("a");
-      anchor.href = downloadUrl;
-      anchor.download = name + ".xlsx";
-      anchor.click();
-      window.URL.revokeObjectURL(data);
-      console.log(res);
-      ElMessage({
-        type: "success",
-        showClose: true,
-        message: "导出成功",
-        center: true,
-      });
-    })
-    .catch((err) => {
-      console.log(err);
-      ElMessage({
-        type: "error",
-        showClose: true,
-        message: "导出失败",
-        center: true,
-      });
-    });
-}, 300);
-// 导入按钮
-const importExcel = () => {
-  importByExcelDialog.value = true;
-};
-
-// 上传文件
-const changeUpload = (file, fileList) => {
-  // fileList.value = [];
-  if (file) {
-    fileList.value = file;
-  }
-  active.value = 2;
-};
-// 移出文件前的回调
-const beforeRemove = (file) => {
-  console.log(file);
-  active.value = 1;
-};
-
-// 步骤条功能
-const next = async () => {
-  console.log(fileList.value);
-  let formData = new FormData();
-  formData.append("file", fileList.value[0].raw);
-  let res = await axios({
-    method: "post",
-    url: "/video/transcoding/videoAdmin/importByExcel",
-    data: formData,
-    headers: {
-      admin_token: sessionStorage.getItem("admin_token"),
-    },
-  });
-  // console.log(res);
-  if (res.data.success) {
-    setTimeout(() => {
-      importByExcelDialog.value = false;
-      fileList.value = "";
-      active.value = 1;
-    }, 1000);
-    ElMessage({
-      type: "success",
-      showClose: true,
-      message: "导入成功",
-      center: true,
-    });
-    active.value = 3;
-    currentPage.value = 1;
-    getList(1);
-  } else {
-    ElMessage({
-      type: "warning",
-      showClose: true,
-      message: res.data.message,
-      center: true,
-    });
-  }
-};
-
-// 表格斑马纹颜色修改
-const tableRowClassName = ({ row, rowIndex }) => {
-  if (rowIndex % 2 === 0) {
-    return "even";
-  } else if (rowIndex % 2 !== 0) {
-    return "odd";
-  }
-  return "";
-};
-// 分页
-const handleCurrentChange = (value) => {
-  currentPage.value = value;
-  getList(value);
-};
-onBeforeMount(() => {
-  getList(1);
-});
-</script>
-
-<style scoped lang="scss">
-.content-box {
-  width: 97.5%;
-  height: 90%;
-  margin: 20px auto;
-  background-color: #fff;
-  color: #fff;
-  display: flex;
-  flex-direction: column;
-
-  .left {
-    width: calc(100wh - 40px);
-    display: flex;
-    align-items: center;
-    height: 60px;
-    margin: 0 30px;
-    border-bottom: 1px solid #ccc;
-    color: #000;
-    font-size: 18px;
-    font-weight: 600;
-    .camera {
-      margin-right: 15px;
-      color: #4392f7;
-    }
-  }
-  .middle {
-    width: 96%;
-    margin: 0 auto;
-
-    color: #000;
-    border-bottom: 1px solid rgb(231, 231, 231);
-    .filter {
-      display: flex;
-      flex-wrap: wrap;
-      align-items: center;
-      .condition {
-        display: flex;
-        align-items: center;
-        margin: 10px 30px 10px 0;
-        span {
-          margin: 0 10px 0 0;
-        }
-      }
-    }
-    .gongneng {
-      margin: 10px 0;
-    }
-    :deep(.cont) {
-      width: 60%;
-      margin: 20px auto;
-    }
-    :deep(.download) {
-      display: flex;
-      align-items: center;
-      margin: 10px;
-    }
-    :deep(.download span) {
-      font-size: 16px;
-      margin-left: 20px;
-    }
-    :deep(.cont .el-button) {
-      margin-left: 60px;
-      margin-bottom: 30px;
-    }
-
-    :deep(.cont .accomplish) {
-      width: 100%;
-      display: flex;
-      justify-content: center;
-    }
-    :deep(.cont .accomplish .el-button) {
-      width: 50%;
-      margin: 0;
-    }
-  }
-  .footer {
-    width: 96%;
-    height: 562px;
-    margin: 20px auto 30px;
-    .el-table--fit {
-      height: 100%;
-
-      :deep(.el-table__row) {
-        height: 40px;
-      }
-      :deep(.el-table__row td) {
-        padding: 0;
-      }
-      // 输出链接弹窗样式
-      :deep(.link .el-dialog__header) {
-        text-align: left;
-        font-size: 20px;
-        font-weight: 600;
-      }
-      :deep(.link .el-dialog__body) {
-        padding: 10px 20px;
-        height: 100px;
-        margin-bottom: 10px;
-      }
-      .link {
-        .linkcontent {
-          text-align: left;
-          height: 100px;
-          border: 1px solid #ccc;
-          p {
-            margin: 5px 10px;
-          }
-        }
-      }
-
-      :deep(.playVideo .el-dialog__header) {
-        text-align: left;
-        font-size: 20px;
-        font-weight: 600;
-        background-color: #ccc;
-        margin-right: 0;
-      }
-      :deep(.playVideo .el-dialog__body) {
-        height: 600px;
-      }
-
-      .el-button--primary {
-        margin-left: 5px;
-      }
-      :deep(.el-table__body .even) {
-        background-color: #fff;
-      }
-      :deep(.el-table__body .odd) {
-        background-color: #f5f8fc;
-      }
-    }
-  }
-  .el-pagination {
-    // width: 1600px;
-    width: 96%;
-    margin: 0 auto 18px;
-    justify-content: flex-end;
-    :deep(.el-pagination__total) {
-      color: #000;
-    }
-    :deep(.el-pagination__goto) {
-      color: #000;
-    }
-    :deep(.el-pagination__classifier) {
-      color: #000;
-    }
-
-    :deep(.el-pager li) {
-      margin: 0 3px;
-    }
-    :deep(.btn-prev) {
-      margin-right: 3px;
-    }
-    :deep(.btn-next) {
-      margin-left: 3px;
-    }
-  }
-}
-.el-input {
-  width: 192px;
-}
-</style>

Разница между файлами не показана из-за своего большого размера
+ 0 - 1629
src/views/vidicons/vidicon/index.vue


+ 17 - 0
src/views/waiting/waiting.vue

@@ -105,6 +105,20 @@
             <span>&nbsp;&nbsp;分钟,发送通知</span>
           </div>
         </div>
+        <div class="condition">
+          <h3>报备人员开始预约时间设置</h3>
+          <div>
+            <span>发车前</span>
+            <el-input
+              clearable
+              v-model="ruleForm.bb_before"
+              class="w-50 m-2"
+              style="width: 100px"
+              @blur="timeUpdata"
+            />
+            <span>&nbsp;&nbsp;分钟,可以预约车辆</span>
+          </div>
+        </div>
       </div>
     </div>
     <div class="footer"></div>
@@ -138,6 +152,7 @@ const ruleForm = reactive({
   notice_time: "", //发车前提前
   startTime: "", // 扫码前时间
   endTime: "", // 扫码后时间
+  bb_before: "", // 报备人预约车辆时间设置
   id: "",
 });
 // 获取系统设置数据
@@ -159,6 +174,7 @@ const getlist = async (message) => {
     ruleForm.notice_time = res.data.data.notice_time;
     ruleForm.startTime = res.data.data.sm_start;
     ruleForm.endTime = res.data.data.sm_end;
+    ruleForm.bb_before = res.data.data.bb_before;
     ruleForm.id = res.data.data.id;
     sessionStorage.setItem("sm_start", res.data.data.sm_start);
     sessionStorage.setItem("sm_end", res.data.data.sm_end);
@@ -198,6 +214,7 @@ const timeUpdata = async () => {
     notice_time: ruleForm.notice_time,
     sm_start: ruleForm.startTime,
     sm_end: ruleForm.endTime,
+    bb_before: ruleForm.bb_before,
     id: ruleForm.id,
   };
   // let res = await admin.adminAdd(data);

+ 12 - 6
vite.config.js

@@ -22,13 +22,19 @@ export default defineConfig({
     port: 8990,
     // 是否开启 https
     // https: false,
-    // 线上
-    // /carstop/carbook  线上打包地址
-    // /testingServertomcat/carbook // 测试
+    // 线上地址
+    // proxy: {
+    //   "/carstop/carbook": {
+    //     target: "https://chtech.ncjti.edu.cn/carstop/carbook",
+    //     changeOrigin: true,
+    //     rewrite: (path) => path.replace(/^\/carstop\/carbook/, ""),
+    //   },
+    // },
+
+    // 测试地址
     proxy: {
-      "/carstop/carbook": {
-        target: "https://chtech.ncjti.edu.cn/carstop/carbook",
-        // target: "https://chtech.ncjti.edu.cn/testingServertomcat/carbook", // 测试环境
+      "/testingServertomcat/carbook": {
+        target: "https://chtech.ncjti.edu.cn/testingServertomcat/carbook", // 测试环境
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/carstop\/carbook/, ""),
       },