瀏覽代碼

黑名单管理 添加爽约记录

hzj18279462576@163.com 2 年之前
父節點
當前提交
125c8fe898
共有 4 個文件被更改,包括 958 次插入737 次删除
  1. 563 213
      src/views/blacklist/blacklist.vue
  2. 239 213
      src/views/busquery/busquery.vue
  3. 154 310
      src/views/statement/statement.vue
  4. 2 1
      vite.config.js

文件差異過大導致無法顯示
+ 563 - 213
src/views/blacklist/blacklist.vue


+ 239 - 213
src/views/busquery/busquery.vue

@@ -565,102 +565,6 @@
             class="m-2"
             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')"
@@ -695,17 +599,7 @@
             />
           </el-select>
         </div>
-        <!-- <div class="condition">
-          <span>发车日期 : </span>
-        
-          <el-date-picker
-            type="date"
-            placeholder="请选择日期"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-            v-model="searchInput.s_date"
-          />
-        </div> -->
+
         <el-button
           style="margin-left: 20px"
           color="rgba(61, 81, 232, 1)"
@@ -714,14 +608,6 @@
           @click="search"
           ><el-icon><Search /></el-icon><span>搜索</span></el-button
         >
-        <!-- <el-button
-          style="margin-left: 20px"
-          color="rgba(61, 81, 232, 1)"
-          type="primary"
-          class="search"
-          @click="resetSearch"
-          ><el-icon><Search /></el-icon><span>重置</span></el-button
-        > -->
       </div>
       <div class="footer">
         <el-table
@@ -843,7 +729,7 @@
                 @click="sendBus(scope.row)"
                 ><div class="look">调度</div></el-button
               >
-              <!-- <el-button
+              <el-button
                 v-if="scope.row.state == 2"
                 color="#909399"
                 plain
@@ -856,7 +742,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
               >
@@ -1478,91 +1364,83 @@ const selectable = (row) => {
 
 // 确定合车按钮
 const mergesubmit = async () => {
-  mergeBusloading.value = true;
-  let bid = [];
-  selectData.list.forEach((item) => {
-    bid.push(item.id);
-  });
-  let data = { id: mergeTable.list1[0].id, bid: bid.join(",") };
-
-  let res = await axios({
-    method: "post",
-    url: api.value + "/carBook/schemerge.action",
-    headers: {
-      token: sessionStorage.getItem("token"),
-      admin_name: sessionStorage.getItem("username"),
-    },
-    data: data,
-  });
-  if (res.data.code == 200) {
-    getList();
-    mergeBusDialog.value = false;
-    mergeBusloading.value = false;
-    ElMessage({
-      type: "success",
-      showClose: true,
-      message: res.data.message,
-      center: true,
-    });
-  } else {
-    mergeBusloading.value = false;
-    ElMessage({
-      type: "error",
-      showClose: true,
-      message: res.data.message,
-      center: true,
-    });
-  }
-  console.log(res);
-};
-
-// 车辆合车弹窗关闭
-const mergeBusClose = () => {
-  mergeBusDialog.value = false;
-  selectData.list = [];
-  selectData.allNum = 0;
-  selectData.sy_num = 0;
-  // ruleFormMerge.value.resetFields();
-};
-
-// 确认派车
-const submitAdd = async (formEl) => {
-  if (!formEl) return;
-  await formEl.validate(async (valid, fields) => {
-    if (valid) {
+  ElMessageBox.confirm("是否允许给用户发送通知信息?", "提示", {
+    confirmButtonText: "确认",
+    cancelButtonText: "取消",
+    type: "warning",
+  })
+    .then(async () => {
+      mergeBusloading.value = true;
+      let bid = [];
+      selectData.list.forEach((item) => {
+        bid.push(item.id);
+      });
       let data = {
-        car_number: ruleForm.busname.join(","),
-        route: ruleForm.route,
-        contain: ruleForm.volume,
-        route_end: ruleForm.destination,
-        ci_time: ruleForm.ci_time,
-        sm_start: ruleForm.codeTime[0],
-        sm_end: ruleForm.codeTime[1],
-        yy_end: ruleForm.yy_end,
-        id: ruleForm.id,
+        id: mergeTable.list1[0].id,
+        bid: bid.join(","),
+        send_state: 1,
       };
       let res = await axios({
         method: "post",
-        url: api.value + "/carBook/scheupdate.action",
+        url: api.value + "/carBook/schemerge.action",
+        headers: {
+          token: sessionStorage.getItem("token"),
+          admin_name: sessionStorage.getItem("username"),
+        },
+        data: data,
+      });
+      if (res.data.code == 200) {
+        getList();
+        mergeBusDialog.value = false;
+        mergeBusloading.value = false;
+        ElMessage({
+          type: "success",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+      } else {
+        mergeBusloading.value = false;
+        ElMessage({
+          type: "error",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+      }
+    })
+    .catch(async () => {
+      mergeBusloading.value = true;
+      let bid = [];
+      selectData.list.forEach((item) => {
+        bid.push(item.id);
+      });
+      let data = {
+        id: mergeTable.list1[0].id,
+        bid: bid.join(","),
+        send_state: 0,
+      };
+      let res = await axios({
+        method: "post",
+        url: api.value + "/carBook/schemerge.action",
         headers: {
-          "Content-Type": "application/json;charset=utf-8",
           token: sessionStorage.getItem("token"),
           admin_name: sessionStorage.getItem("username"),
         },
         data: data,
       });
-      // console.log(res, "添加账号");
       if (res.data.code == 200) {
         getList();
+        mergeBusDialog.value = false;
+        mergeBusloading.value = false;
         ElMessage({
           type: "success",
           showClose: true,
           message: res.data.message,
           center: true,
         });
-        centerDialogVisible.value = false;
-        ruleFormRef.value.resetFields();
       } else {
+        mergeBusloading.value = false;
         ElMessage({
           type: "error",
           showClose: true,
@@ -1570,6 +1448,114 @@ const submitAdd = async (formEl) => {
           center: true,
         });
       }
+    });
+};
+
+// 车辆合车弹窗关闭
+const mergeBusClose = () => {
+  mergeBusDialog.value = false;
+  selectData.list = [];
+  selectData.allNum = 0;
+  selectData.sy_num = 0;
+  // ruleFormMerge.value.resetFields();
+};
+
+// 确认派车
+const submitAdd = async (formEl) => {
+  if (!formEl) return;
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      ElMessageBox.confirm("是否允许给用户发送通知信息?", "提示", {
+        confirmButtonText: "确认",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          // 允许发送通知信息  --------------------------
+          let data = {
+            car_number: ruleForm.busname.join(","),
+            route: ruleForm.route,
+            contain: ruleForm.volume,
+            route_end: ruleForm.destination,
+            ci_time: ruleForm.ci_time,
+            sm_start: ruleForm.codeTime[0],
+            sm_end: ruleForm.codeTime[1],
+            yy_end: ruleForm.yy_end,
+            id: ruleForm.id,
+            send_state: 1,
+          };
+          let res = await axios({
+            method: "post",
+            url: api.value + "/carBook/scheupdate.action",
+            headers: {
+              "Content-Type": "application/json;charset=utf-8",
+              token: sessionStorage.getItem("token"),
+              admin_name: sessionStorage.getItem("username"),
+            },
+            data: data,
+          });
+          if (res.data.code == 200) {
+            getList();
+            ElMessage({
+              type: "success",
+              showClose: true,
+              message: res.data.message,
+              center: true,
+            });
+            centerDialogVisible.value = false;
+            ruleFormRef.value.resetFields();
+          } else {
+            ElMessage({
+              type: "error",
+              showClose: true,
+              message: res.data.message,
+              center: true,
+            });
+          }
+        })
+        .catch(async () => {
+          // 取消发送通知信息 -----------------------
+          let data = {
+            car_number: ruleForm.busname.join(","),
+            route: ruleForm.route,
+            contain: ruleForm.volume,
+            route_end: ruleForm.destination,
+            ci_time: ruleForm.ci_time,
+            sm_start: ruleForm.codeTime[0],
+            sm_end: ruleForm.codeTime[1],
+            yy_end: ruleForm.yy_end,
+            id: ruleForm.id,
+            send_state: 0,
+          };
+          let res = await axios({
+            method: "post",
+            url: api.value + "/carBook/scheupdate.action",
+            headers: {
+              "Content-Type": "application/json;charset=utf-8",
+              token: sessionStorage.getItem("token"),
+              admin_name: sessionStorage.getItem("username"),
+            },
+            data: data,
+          });
+          if (res.data.code == 200) {
+            getList();
+            ElMessage({
+              type: "success",
+              showClose: true,
+              message: res.data.message,
+              center: true,
+            });
+            centerDialogVisible.value = false;
+            ruleFormRef.value.resetFields();
+          } else {
+            ElMessage({
+              type: "error",
+              showClose: true,
+              message: res.data.message,
+              center: true,
+            });
+          }
+        });
     } else {
       console.log("error submit!", fields);
     }
@@ -1645,37 +1631,77 @@ const del = (row) => {
     type: "warning",
   })
     .then(async () => {
-      let data = new FormData();
-      data.set("id", row.id);
-      let res = await axios({
-        method: "post",
-        url: api.value + "/carBook/schedel.action",
-        headers: {
-          token: sessionStorage.getItem("token"),
-          admin_name: sessionStorage.getItem("username"),
-        },
-        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,
+      ElMessageBox.confirm("是否允许给用户发送通知信息?", "提示", {
+        confirmButtonText: "确认",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          let data = new FormData();
+          data.set("id", row.id);
+          data.set("send_state", 1);
+          let res = await axios({
+            method: "post",
+            url: api.value + "/carBook/schedel.action",
+            headers: {
+              token: sessionStorage.getItem("token"),
+              admin_name: sessionStorage.getItem("username"),
+            },
+            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,
+            });
+          }
+        })
+        .catch(async () => {
+          let data = new FormData();
+          data.set("id", row.id);
+          data.set("send_state", 0);
+          let res = await axios({
+            method: "post",
+            url: api.value + "/carBook/schedel.action",
+            headers: {
+              token: sessionStorage.getItem("token"),
+              admin_name: sessionStorage.getItem("username"),
+            },
+            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({

+ 154 - 310
src/views/statement/statement.vue

@@ -16,16 +16,8 @@
             placeholder="请输入车牌号"
             style="width: 150px"
           /> -->
-          <el-select
-            v-model="searchInputHZ.car_number"
-            class="m-2"
-            placeholder="请选择车牌号"
-          >
-            <el-option
-              v-for="item in busNum.list"
-              :label="item.car_number"
-              :value="item.car_number"
-            />
+          <el-select v-model="searchInputHZ.car_number" class="m-2" placeholder="请选择车牌号">
+            <el-option v-for="item in busNum.list" :label="item.car_number" :value="item.car_number" />
           </el-select>
         </div>
         <div class="condition">
@@ -38,22 +30,12 @@
             format="YYYY-MM-DD HH:mm:ss"
             value-format="YYYY-MM-DD HH:mm:ss"
           /> -->
-          <el-date-picker
-            v-model="searchInputHZ.date"
-            type="date"
-            placeholder="请选择日期"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-            :clearable="false"
-          />
+          <el-date-picker v-model="searchInputHZ.date" type="date" placeholder="请选择日期" format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD" :clearable="false" />
         </div>
         <div class="condition">
           <span>状态 : </span>
-          <el-select
-            v-model="searchInputHZ.state"
-            class="m-2"
-            placeholder="请选择状态"
-          >
+          <el-select v-model="searchInputHZ.state" class="m-2" placeholder="请选择状态">
             <el-option label="预约中" value="1" />
             <el-option label="已截止" value="2" />
             <el-option label="候补中" value="3" />
@@ -61,22 +43,14 @@
           </el-select>
         </div>
 
-        <el-button
-          style="margin-left: 20px"
-          color="rgba(61, 81, 232, 1)"
-          type="primary"
-          class="search"
-          @click="searchHZ"
-          ><el-icon><Search /></el-icon><span>搜索</span></el-button
-        >
-        <el-button
-          style="margin-left: 20px"
-          color="rgba(61, 81, 232, 1)"
-          type="primary"
-          class="search"
-          @click="resetInputHZ"
-          ><el-icon><Search /></el-icon><span>重置</span></el-button
-        >
+        <el-button style="margin-left: 20px" color="rgba(61, 81, 232, 1)" type="primary" class="search"
+          @click="searchHZ"><el-icon>
+            <Search />
+          </el-icon><span>搜索</span></el-button>
+        <el-button style="margin-left: 20px" color="rgba(61, 81, 232, 1)" type="primary" class="search"
+          @click="resetInputHZ"><el-icon>
+            <Refresh />
+          </el-icon><span>重置</span></el-button>
       </div>
       <!-- <el-button
         color="rgba(61, 81, 232, 1)"
@@ -103,16 +77,8 @@
             placeholder="请输入车牌号"
             style="width: 150px"
           /> -->
-          <el-select
-            v-model="searchInput.car_number"
-            class="m-2"
-            placeholder="请选择车牌号"
-          >
-            <el-option
-              v-for="item in busNum.list"
-              :label="item.car_number"
-              :value="item.car_number"
-            />
+          <el-select v-model="searchInput.car_number" class="m-2" placeholder="请选择车牌号">
+            <el-option v-for="item in busNum.list" :label="item.car_number" :value="item.car_number" />
           </el-select>
         </div>
         <div class="condition">
@@ -125,166 +91,76 @@
             format="YYYY-MM-DD HH:mm:ss"
             value-format="YYYY-MM-DD HH:mm:ss"
           /> -->
-          <el-date-picker
-            v-model="searchInput.yy_date"
-            type="date"
-            placeholder="请选择日期"
-            format="YYYY-MM-DD"
-            value-format="YYYY-MM-DD"
-          />
+          <el-date-picker v-model="searchInput.yy_date" type="date" placeholder="请选择日期" format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD" />
         </div>
         <div class="condition">
           <span>发车时间 : </span>
-          <el-time-picker
-            v-model="searchInput.ci_time"
-            placeholder="请选择发车时间"
-            format="HH:mm"
-            value-format="HH:mm"
-            :disabled-hours="disabledQueryHours"
-            :disabled-minutes="disabledQueryMinutes"
-            :disabled-seconds="disabledQuerySeconds"
-            @change="addQueryTime"
-          />
+          <el-time-picker v-model="searchInput.ci_time" placeholder="请选择发车时间" format="HH:mm" value-format="HH:mm"
+            :disabled-hours="disabledQueryHours" :disabled-minutes="disabledQueryMinutes"
+            :disabled-seconds="disabledQuerySeconds" @change="addQueryTime" />
         </div>
         <div class="condition">
           <span>状态 : </span>
-          <el-select
-            v-model="searchInput.state"
-            class="m-2"
-            placeholder="请选择状态"
-          >
+          <el-select v-model="searchInput.state" class="m-2" placeholder="请选择状态">
             <el-option label="预约成功" value="1" />
             <el-option label="上车" value="2" />
             <el-option label="候补" value="3" />
             <el-option label="取消" value="4" />
+            <el-option label="爽约" value="5" />
+            <el-option label="爽约已核销" value="6" />
           </el-select>
         </div>
 
-        <el-button
-          style="margin-left: 20px"
-          color="rgba(61, 81, 232, 1)"
-          type="primary"
-          class="search"
-          @click="search"
-          ><el-icon><Search /></el-icon><span>搜索</span></el-button
-        >
-        <el-button
-          style="margin-left: 20px"
-          color="rgba(61, 81, 232, 1)"
-          type="primary"
-          class="search"
-          @click="resetInput"
-          ><el-icon><Search /></el-icon><span>重置</span></el-button
-        >
+        <el-button style="margin-left: 20px" color="rgba(61, 81, 232, 1)" type="primary" class="search"
+          @click="search"><el-icon>
+            <Search />
+          </el-icon><span>搜索</span></el-button>
+        <el-button style="margin-left: 20px" color="rgba(61, 81, 232, 1)" type="primary" class="search"
+          @click="resetInput"><el-icon>
+            <Search />
+          </el-icon><span>重置</span></el-button>
       </div>
-      <el-button
-        color="rgba(61, 81, 232, 1)"
-        class="import"
-        type="primary"
-        @click="downLoad"
-        ><img
-          src="@/assets/import.png"
-          style="width: 14px; height: 14px; margin-right: 4px"
-          alt=""
-        />
-        <span>导出表单</span></el-button
-      >
+      <el-button color="rgba(61, 81, 232, 1)" class="import" type="primary" @click="downLoad"><img
+          src="@/assets/import.png" style="width: 14px; height: 14px; margin-right: 4px" alt="" />
+        <span>导出表单</span></el-button>
     </div>
     <div class="footerMenu">
-      <div
-        class="menuList"
-        @click="collectMenu"
-        :class="footerMenuIndex == 0 ? 'menuListActive' : ''"
-      >
+      <div class="menuList" @click="collectMenu" :class="footerMenuIndex == 0 ? 'menuListActive' : ''">
         汇总
       </div>
-      <div
-        class="menuList"
-        @click="detailMenu"
-        :class="footerMenuIndex == 1 ? 'menuListActive' : ''"
-      >
+      <div class="menuList" @click="detailMenu" :class="footerMenuIndex == 1 ? 'menuListActive' : ''">
         明细列表
       </div>
     </div>
     <!-- 候补派车 -->
-    <el-dialog
-      class="sendBus"
-      v-model="centerDialogVisible"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      :title="dialongTitle"
-      align-center
-      width="500"
-      :before-close="editClose"
-    >
-      <el-form
-        ref="ruleFormRef"
-        :model="ruleForm"
-        :rules="rules"
-        label-width="100px"
-        class="demo-ruleForm"
-        :size="formSize"
-        label-position="left"
-        status-icon
-      >
+    <el-dialog class="sendBus" v-model="centerDialogVisible" :close-on-click-modal="false" :close-on-press-escape="false"
+      :title="dialongTitle" align-center width="500" :before-close="editClose">
+      <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="busname">
-          <el-select-v2
-            validate-event
-            v-model="ruleForm.busname"
-            :options="options"
-            placeholder="请选择车牌号"
-            style="width: 260px"
-            multiple
-          />
+          <el-select-v2 validate-event v-model="ruleForm.busname" :options="options" placeholder="请选择车牌号"
+            style="width: 260px" multiple />
         </el-form-item>
 
         <el-form-item label="容量 :" prop="volume">
-          <el-input
-            v-model="ruleForm.volume"
-            placeholder="请输入容量"
-            clearable
-            :disabled="true"
-          />
+          <el-input v-model="ruleForm.volume" placeholder="请输入容量" clearable :disabled="true" />
         </el-form-item>
         <el-form-item label="路线 :" prop="route">
-          <el-input
-            v-model="ruleForm.route"
-            placeholder="请输入路线"
-            :disabled="true"
-            clearable
-          />
+          <el-input v-model="ruleForm.route" placeholder="请输入路线" :disabled="true" clearable />
         </el-form-item>
-        <el-form-item
-          label="终点站 :"
-          prop="destination"
-          style="
+        <el-form-item label="终点站 :" prop="destination" style="
             padding-bottom: 40px;
             border-bottom: 1px solid rgba(230, 230, 230, 1);
-          "
-        >
-          <el-select
-            v-model="ruleForm.destination"
-            class="m-2"
-            placeholder="请选择终点站"
-          >
-            <el-option
-              :label="item"
-              :value="item"
-              v-for="item in endNum.list"
-            />
+          ">
+          <el-select v-model="ruleForm.destination" class="m-2" placeholder="请选择终点站">
+            <el-option :label="item" :value="item" v-for="item in endNum.list" />
           </el-select>
         </el-form-item>
 
         <el-form-item class="options">
-          <el-button class="congzhi" @click="editClose(ruleFormRef)"
-            >取消</el-button
-          >
-          <el-button
-            color="rgba(61, 81, 232, 1)"
-            class="queding"
-            type="primary"
-            @click="submitAdd(ruleFormRef)"
-          >
+          <el-button class="congzhi" @click="editClose(ruleFormRef)">取消</el-button>
+          <el-button color="rgba(61, 81, 232, 1)" class="queding" type="primary" @click="submitAdd(ruleFormRef)">
             确定
           </el-button>
         </el-form-item>
@@ -292,30 +168,17 @@
     </el-dialog>
     <div class="MingXi" v-if="footerMenuIndex == 0">
       <div class="footer mingxi">
-        <el-table
-          :row-class-name="tableRowClassName"
-          :data="tableData.list"
-          style="width: 100%; height: 500px"
+        <el-table :row-class-name="tableRowClassName" :data="tableData.list" style="width: 100%; height: 500px"
           :header-cell-style="{
             background: 'rgba(240, 243, 247, 1)',
             border: 0,
-          }"
-          @selection-change="handleSelectionChange"
-        >
+          }" @selection-change="handleSelectionChange">
           <!-- <el-table-column align="center" type="selection" width="80" /> -->
-          <el-table-column
-            align="center"
-            width="250"
-            prop="s_date"
-            label="创建时间"
-          />
+          <el-table-column align="center" width="250" prop="s_date" label="创建时间" />
           <el-table-column align="center" prop="ci_time" label="发车时间" />
           <el-table-column align="center" label="预约人数">
             <template #default="scope">
-              <div
-                v-if="scope.row.yy_num == scope.row.contain"
-                style="color: red"
-              >
+              <div v-if="scope.row.yy_num == scope.row.contain" style="color: red">
                 {{ scope.row.yy_num }}
               </div>
               <div v-else>{{ scope.row.yy_num }}</div>
@@ -324,45 +187,28 @@
           <el-table-column align="center" prop="by_num" label="乘车人数" />
           <el-table-column align="center" prop="contain" label="容量" />
           <el-table-column align="center" prop="car_number" label="车牌号" />
-          <el-table-column
-            align="center"
-            prop="route"
-            width="250"
-            label="路线"
-          />
+          <el-table-column align="center" prop="route" width="250" label="路线" />
           <el-table-column align="center" label="状态">
             <template #default="scope">
-              <div
-                v-if="scope.row.state == 1"
-                style="color: rgba(67, 207, 124, 1)"
-              >
+              <div v-if="scope.row.state == 1" style="color: rgba(67, 207, 124, 1)">
                 预约中
               </div>
-              <div
-                v-if="scope.row.state == 2"
-                style="color: rgba(212, 48, 48, 1)"
-              >
+              <div v-if="scope.row.state == 2" style="color: rgba(212, 48, 48, 1)">
                 已截止
               </div>
-              <div
-                v-if="scope.row.state == 3"
-                style="color: rgba(61, 81, 232, 1)"
-              >
+              <div v-if="scope.row.state == 3" style="color: rgba(61, 81, 232, 1)">
                 候补中
               </div>
-              <div
-                v-if="scope.row.state == 4"
-                style="color: rgba(77, 77, 77, 1)"
-              >
+              <div v-if="scope.row.state == 4" style="color: rgba(77, 77, 77, 1)">
                 已分车
               </div>
             </template>
           </el-table-column>
           <el-table-column align="center" label="操作">
             <template #default="scope">
-              <el-button link type="primary" @click="info(scope.row)"
-                ><div class="look">详情</div></el-button
-              >
+              <el-button link type="primary" @click="info(scope.row)">
+                <div class="look">详情</div>
+              </el-button>
               <!-- <el-button
                 v-if="scope.row.state == '候补'"
                 link
@@ -375,25 +221,16 @@
         </el-table>
       </div>
       <div style="width: 100%; height: 34px">
-        <el-pagination
-          background
-          v-model:page-size="pageSize"
-          v-model:current-page="currentPage"
-          layout="total, prev, pager, next, jumper"
-          :total="total"
-          @current-change="handleCurrentChange"
-        />
+        <el-pagination background v-model:page-size="pageSize" v-model:current-page="currentPage"
+          layout="total, prev, pager, next, jumper" :total="total" @current-change="handleCurrentChange" />
         <!-- 往返校区预约和乘车人数 -->
-        <div
-          class="nowday"
-          style="
+        <div class="nowday" style="
             position: relative;
             width: 1200px;
             color: #000;
             top: -47px;
             font-size: 18px;
-          "
-        >
+          ">
           <div>
             <div style="display: inline-block; margin-left: 30px">
               <span style="padding-right: 10px">{{
@@ -402,11 +239,8 @@
               <span style="font-size: 18px; font-weight: 800">{{
                 gobacknum.list1.route
               }}</span>
-              <div
-                style="display: inline-block; width: 320px; margin-left: 20px"
-              >
-                <span style="font-size: 16px; font-weight: 800">教职工</span
-                >&nbsp; 预约人数:<span style="color: red">{{
+              <div style="display: inline-block; width: 320px; margin-left: 20px">
+                <span style="font-size: 16px; font-weight: 800">教职工</span>&nbsp; 预约人数:<span style="color: red">{{
                   gobacknum.list1.yy_num
                 }}</span>
                 , 乘车人数:<span style="color: red">{{
@@ -415,8 +249,7 @@
               </div>
             </div>
             <div style="display: inline-block">
-              <span style="font-size: 16px; font-weight: 800">报备人员</span
-              >&nbsp;&nbsp; 预约人数:<span style="color: red">{{
+              <span style="font-size: 16px; font-weight: 800">报备人员</span>&nbsp;&nbsp; 预约人数:<span style="color: red">{{
                 gobacknum.list2.yy_num
               }}</span>
               , 乘车人数:<span style="color: red">{{
@@ -432,11 +265,8 @@
               <span style="font-size: 18px; font-weight: 800">{{
                 gobacknum.list3.route
               }}</span>
-              <div
-                style="display: inline-block; width: 320px; margin-left: 20px"
-              >
-                <span style="font-size: 16px; font-weight: 800">教职工</span
-                >&nbsp; 预约人数:<span style="color: red">{{
+              <div style="display: inline-block; width: 320px; margin-left: 20px">
+                <span style="font-size: 16px; font-weight: 800">教职工</span>&nbsp; 预约人数:<span style="color: red">{{
                   gobacknum.list3.yy_num
                 }}</span>
                 , 乘车人数:<span style="color: red">{{
@@ -445,8 +275,7 @@
               </div>
             </div>
             <div style="display: inline-block">
-              <span style="font-size: 16px; font-weight: 800">报备人员</span
-              >&nbsp;&nbsp; 预约人数:<span style="color: red">{{
+              <span style="font-size: 16px; font-weight: 800">报备人员</span>&nbsp;&nbsp; 预约人数:<span style="color: red">{{
                 gobacknum.list4.yy_num
               }}</span>
               , 乘车人数:<span style="color: red">{{
@@ -459,61 +288,22 @@
     </div>
     <div class="MingXi" v-else-if="footerMenuIndex == 1">
       <div class="footers footer">
-        <el-table
-          :row-class-name="tableRowClassName"
-          :data="tableData.list2"
-          style="width: 100%; height: 550px"
+        <el-table :row-class-name="tableRowClassName" :data="tableData.list2" style="width: 100%; height: 550px"
           :header-cell-style="{
             background: 'rgba(240, 243, 247, 1)',
             border: 0,
-          }"
-          @selection-change="handleSelectionChange"
-        >
-          <el-table-column
-            align="center"
-            width="200"
-            prop="yy_time"
-            label="下单时间"
-          />
-          <el-table-column
-            align="center"
-            width="120"
-            prop="yy_date"
-            label="发车日期"
-          />
+          }" @selection-change="handleSelectionChange">
+          <el-table-column align="center" width="200" prop="yy_time" label="下单时间" />
+          <el-table-column align="center" width="120" prop="yy_date" label="发车日期" />
           <el-table-column align="center" prop="ci_time" label="发车时间" />
           <el-table-column align="center" prop="user_name" label="预约人" />
           <el-table-column align="center" prop="user_zz" label="身份" />
-          <el-table-column
-            align="center"
-            width="150"
-            prop="user_phone"
-            label="手机号码"
-          />
+          <el-table-column align="center" width="150" prop="user_phone" label="手机号码" />
 
-          <el-table-column
-            width="130"
-            align="center"
-            prop="car_number"
-            label="车牌号"
-          />
-          <el-table-column
-            align="center"
-            width="40"
-            prop="contain"
-            label="容量"
-          />
-          <el-table-column
-            align="center"
-            prop="route"
-            width="200"
-            label="路线"
-          /><el-table-column
-            align="center"
-            prop="route_end"
-            width="300"
-            label="终点站"
-          />
+          <el-table-column width="130" align="center" prop="car_number" label="车牌号" />
+          <el-table-column align="center" width="40" prop="contain" label="容量" />
+          <el-table-column align="center" prop="route" width="200" label="路线" /><el-table-column align="center"
+            prop="route_end" width="300" label="终点站" />
           <!-- <el-table-column
             align="center"
             prop="remark"
@@ -521,25 +311,25 @@
             label="变更信息"
           /> -->
 
-          <el-table-column
-            align="center"
-            width="180"
-            prop="by_time"
-            label="通行时间"
-          />
+          <el-table-column align="center" width="180" prop="by_time" label="通行时间" />
           <el-table-column align="center" label="状态" width="100">
             <template #default="scope">
               <div v-if="scope.row.state == 1" style="color: blue">
                 预约成功
               </div>
-              <div
-                v-if="scope.row.state == 2"
-                style="color: rgba(67, 207, 124, 1)"
-              >
+              <div v-if="scope.row.state == 2" style="color: rgb(50, 201, 110)">
                 上车
               </div>
-              <div v-if="scope.row.state == 3" style="color: red">候补</div>
+              <div v-if="scope.row.state == 3" style="color: rgb(236, 168, 22)">
+                候补
+              </div>
               <div v-if="scope.row.state == 4" style="color: #ccc">取消</div>
+              <div v-if="scope.row.state == 5" style="color: rgb(255, 0, 0)">
+                爽约
+              </div>
+              <div v-if="scope.row.state == 6" style="color: rgb(42, 228, 200)">
+                爽约已核销
+              </div>
             </template>
           </el-table-column>
           <!-- <el-table-column align="center" label="操作">
@@ -551,14 +341,8 @@
           </el-table-column> -->
         </el-table>
       </div>
-      <el-pagination
-        background
-        v-model:page-size="pageSize2"
-        v-model:current-page="currentPage2"
-        layout="total, prev, pager, next, jumper"
-        :total="total2"
-        @current-change="handleCurrentChange2"
-      />
+      <el-pagination background v-model:page-size="pageSize2" v-model:current-page="currentPage2"
+        layout="total, prev, pager, next, jumper" :total="total2" @current-change="handleCurrentChange2" />
     </div>
   </div>
 </template>
@@ -1092,6 +876,7 @@ onBeforeMount(() => {
     color: #000;
     font-size: 18px;
     font-weight: 600;
+
     .cameratxt {
       margin-right: 15px;
       display: flex;
@@ -1103,25 +888,31 @@ onBeforeMount(() => {
   :deep(.sendBus) {
     //   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--feedback {
         .el-input__validateIcon {
           color: rgba(61, 81, 232, 1);
         }
       }
+
       .el-form-item.is-error .el-input__validateIcon {
         color: red;
       }
+
       .el-input {
         width: 200px;
       }
@@ -1131,6 +922,7 @@ onBeforeMount(() => {
       }
     }
   }
+
   .middle {
     width: 96%;
     margin: 0 auto;
@@ -1147,38 +939,47 @@ onBeforeMount(() => {
       display: flex;
       flex-wrap: wrap;
       align-items: center;
+
       //   width: 100%;
       .condition {
         display: flex;
         align-items: center;
         margin: 10px 20px 10px 0;
+
         :deep(.el-input .el-input__inner) {
           font-size: 16px;
         }
+
         span {
           margin: 0 5px 0 0;
         }
       }
     }
+
     .import {
       margin: 10px 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;
@@ -1189,16 +990,19 @@ onBeforeMount(() => {
       display: flex;
       justify-content: center;
     }
+
     :deep(.cont .accomplish .el-button) {
       width: 50%;
       margin: 0;
     }
   }
+
   .footerMenu {
     width: 96%;
     margin: 10px auto 0;
     display: flex;
     align-items: center;
+
     // height: 40px;
     .menuList {
       padding: 5px 12px;
@@ -1209,19 +1013,23 @@ onBeforeMount(() => {
       //   font-size: 16px;
       font-weight: 600;
     }
+
     .menuListActive {
       border-bottom: 2px solid rgba(61, 81, 232, 1);
       color: rgba(61, 81, 232, 1);
       font-size: 17px;
     }
   }
+
   .footer.mingxi {
     :deep(.el-table__header-wrapper) {
       height: 50px;
+
       .el-table__header {
         height: 50px;
       }
     }
+
     .el-table--fit {
       height: 100%;
 
@@ -1230,18 +1038,22 @@ onBeforeMount(() => {
       }
     }
   }
+
   .footer {
     width: 96%;
     height: 510px;
     margin: 20px auto 20px;
+
     :deep(.el-table__header-wrapper) {
       height: 48px;
+
       .el-table__header {
         height: 48px;
         font-size: 16px;
         color: #000;
       }
     }
+
     .el-table--fit {
       height: 100%;
 
@@ -1250,31 +1062,37 @@ onBeforeMount(() => {
         font-size: 16px;
         color: #000;
       }
+
       :deep(.el-table__row td) {
         padding: 0;
         border: 0;
       }
+
       :deep(.look) {
         padding: 3px 10px;
         border-radius: 40px;
         border: 0.74px solid rgba(30, 125, 251, 1);
       }
+
       // 输出链接弹窗样式
       :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;
           }
@@ -1288,6 +1106,7 @@ onBeforeMount(() => {
         background-color: #ccc;
         margin-right: 0;
       }
+
       :deep(.playVideo .el-dialog__body) {
         height: 600px;
       }
@@ -1295,26 +1114,32 @@ onBeforeMount(() => {
       .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);
       }
     }
   }
+
   .footers {
     width: 96%;
     height: 550px;
     margin: 20px auto 20px;
+
     :deep(.el-table__header-wrapper) {
       height: 48px;
+
       .el-table__header {
         height: 48px;
         font-size: 16px;
         color: #000;
       }
     }
+
     .el-table--fit {
       height: 100%;
 
@@ -1323,31 +1148,37 @@ onBeforeMount(() => {
         font-size: 16px;
         color: #000;
       }
+
       :deep(.el-table__row td) {
         padding: 0;
         border: 0;
       }
+
       :deep(.look) {
         padding: 3px 10px;
         border-radius: 40px;
         border: 0.74px solid rgba(30, 125, 251, 1);
       }
+
       // 输出链接弹窗样式
       :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;
           }
@@ -1361,6 +1192,7 @@ onBeforeMount(() => {
         background-color: #ccc;
         margin-right: 0;
       }
+
       :deep(.playVideo .el-dialog__body) {
         height: 600px;
       }
@@ -1368,48 +1200,59 @@ onBeforeMount(() => {
       .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);
       }
     }
   }
+
   .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);
@@ -1418,6 +1261,7 @@ onBeforeMount(() => {
     }
   }
 }
+
 .el-input {
   width: 192px;
 }

+ 2 - 1
vite.config.js

@@ -34,7 +34,8 @@ export default defineConfig({
     // 测试地址
     // proxy: {
     //   "/testingServertomcat/carbook": {
-    //     target: "https://chtech.ncjti.edu.cn/testingServertomcat/carbook", // 测试环境
+    //     // target: "https://chtech.ncjti.edu.cn/testingServertomcat/carbook", // 测试环境
+    //     target: "https://jtishfw.ncjti.edu.cn/jxch-smartmp/carbook", // 测试环境
     //     changeOrigin: true,
     //     rewrite: (path) => path.replace(/^\/testingServertomcat\/carbook/, ""),
     //   },