浏览代码

5/15投入使用后 解决一些数据问题

hzj18279462576@163.com 3 年之前
父节点
当前提交
fc55d2440c

+ 14 - 80
src/layout/index.vue

@@ -21,7 +21,7 @@ const api = ref("");
 watch(
 watch(
   () => router.currentRoute.value.fullPath,
   () => router.currentRoute.value.fullPath,
   (newValue, oldValue) => {
   (newValue, oldValue) => {
-    // console.log(newValue);
+    console.log(newValue);
     if (newValue == "/schoolBus/statement") {
     if (newValue == "/schoolBus/statement") {
       store.commit("indexUp", 1);
       store.commit("indexUp", 1);
       sessionStorage.setItem("sidevarItem", 1);
       sessionStorage.setItem("sidevarItem", 1);
@@ -70,85 +70,19 @@ const tableData = reactive({
 });
 });
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
-  {
-    let data = new FormData();
-    data.set("page", 1);
-    data.set("rows", 100);
-    let res = await axios({
-      method: "post",
-      url: store.state.user.api + "/carBook/routelist.action",
-      headers: {
-        token: sessionStorage.getItem("token"),
-      },
-      data: data,
-    });
-    console.log(res, "路线管理");
-    if (res.status == 200) {
-      tableData.list = res.data.rows;
-      tableData.list.forEach((item) => {
-        // item.route2 = item.route;
-        // item.route_end2 = item.route_end;
-        item.path_start = item.route.split("-")[0];
-        item.path_end = item.route.split("-")[1];
-        if (item.is_repair == "" || item.is_repair == 0) {
-          item.state = false;
-        } else if (item.is_repair == 1) {
-          item.state = true;
-        }
-      });
-      let obj = {};
-      var reduce = tableData.list.reduce((curr, next) => {
-        /*判断对象中是否已经有该属性  没有的话 push 到 curr数组*/
-        obj[next.route_end] ? "" : (obj[next.route_end] = curr.push(next));
-        return curr;
-      }, []);
-      sessionStorage.setItem("route_endSelect", JSON.stringify(reduce));
-      let obj2 = {};
-      var reduce2 = tableData.list.reduce((curr, next) => {
-        /*判断对象中是否已经有该属性  没有的话 push 到 curr数组*/
-        obj2[next.route] ? "" : (obj2[next.route] = curr.push(next));
-        return curr;
-      }, []);
-      sessionStorage.setItem("pathSelect", JSON.stringify(reduce2));
-    } else {
-      ElMessage({
-        type: "error",
-        showClose: true,
-        message: res.data.message,
-        center: true,
-      });
-    }
-  }
-  {
-    let data = new FormData();
-    data.set("page", 1);
-    data.set("rows", 100); //前面的key记得对应!
-    // let res = await adminApi.adminLogin(data);
-    let res = await axios({
-      method: "post",
-      url: store.state.user.api + "/carBook/cinfolist.action",
-      headers: {
-        token: sessionStorage.getItem("token"),
-      },
-      data: data,
-    });
-    console.log(res, "车辆管理");
-    if (res.status == 200) {
-      sessionStorage.setItem("busSelect", JSON.stringify(res.data.rows));
-    } else {
-      ElMessage({
-        type: "error",
-        showClose: true,
-        message: res.data.message,
-        center: true,
-      });
-      if (res.data.message == "token错误") {
-        router.push({
-          path: `/login`,
-        });
-      }
-    }
-  }
+  store.dispatch("pathSelect");
+  store.dispatch("busNum");
+  // {
+  //   let res = await axios({
+  //     method: "post",
+  //     url: api.value + "/carBook/cnqueryHb.action",
+  //     headers: {
+  //       token: sessionStorage.getItem("token"),
+  //     },
+  //   });
+  //   console.log(res, "系统配置");
+  //   sessionStorage.setItem("waiting", JSON.stringify(res.data.data));
+  // }
   store.dispatch("newsAsync");
   store.dispatch("newsAsync");
 });
 });
 </script>
 </script>

+ 9 - 0
src/layout/sidebar/Navbar.vue

@@ -193,6 +193,15 @@ const rules = reactive({
   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
 });
 });
 
 
+// 监控消息通知数量
+watch(
+  () => store.state.user.newsNum,
+  (newValue, oldValue) => {
+    titlenumber.value = newValue;
+    console.log(newValue, "监控消息数量");
+  }
+);
+
 // 点击消息通知
 // 点击消息通知
 const newsClick = () => {
 const newsClick = () => {
   store.commit("indexUp", 0);
   store.commit("indexUp", 0);

+ 5 - 6
src/layout/sidebar/SidevarItem.vue

@@ -105,15 +105,17 @@ watch(
 watch(
 watch(
   () => store.state.user.activeIndex,
   () => store.state.user.activeIndex,
   (newValue, oldValue) => {
   (newValue, oldValue) => {
+    console.log(newValue);
+
     activeIndex.value = newValue;
     activeIndex.value = newValue;
   }
   }
 );
 );
 
 
-const handleSelect = (key, keyPath) => {
-  // console.log(key, keyPath);
+const handleSelect = (key) => {
   store.commit("indexUp", key);
   store.commit("indexUp", key);
   activeIndex.value = key;
   activeIndex.value = key;
   sessionStorage.setItem("sidevarItem", key);
   sessionStorage.setItem("sidevarItem", key);
+
   if (activeIndex.value == 1) {
   if (activeIndex.value == 1) {
     router.push({
     router.push({
       path: `/schoolBus/statement`,
       path: `/schoolBus/statement`,
@@ -166,15 +168,12 @@ const handleSelect = (key, keyPath) => {
   }
   }
 };
 };
 onBeforeMount(() => {
 onBeforeMount(() => {
-  // console.log("切换", Number(sessionStorage.getItem("sidevarItem")));
+  activeIndex.value = Number(sessionStorage.getItem("sidevarItem"));
   store.commit("indexUp", Number(sessionStorage.getItem("sidevarItem")));
   store.commit("indexUp", Number(sessionStorage.getItem("sidevarItem")));
 });
 });
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-.box-item {
-  // width: 160px;
-}
 .el-menu-vertical-demo:not(.el-menu--collapse) {
 .el-menu-vertical-demo:not(.el-menu--collapse) {
   width: 200px;
   width: 200px;
   // min-height: 400px;
   // min-height: 400px;

+ 70 - 3
src/store/modules/user.js

@@ -5,7 +5,7 @@ import axios from "axios";
 // 声明变量
 // 声明变量
 const state = {
 const state = {
   collapse: false,
   collapse: false,
-  activeIndex: 1,
+  activeIndex: 9,
   username: "",
   username: "",
   password: "",
   password: "",
   api: "/carstop/carbook",
   api: "/carstop/carbook",
@@ -41,7 +41,7 @@ const actions = {
     let data = new FormData();
     let data = new FormData();
     data.set("state", 0);
     data.set("state", 0);
     data.set("page", 1);
     data.set("page", 1);
-    data.set("rows", 10000); //前面的key记得对应!
+    data.set("rows", 1000000); //前面的key记得对应!
     let res = await axios({
     let res = await axios({
       method: "post",
       method: "post",
       url: state.api + "/carBook/userqueryMes.action",
       url: state.api + "/carBook/userqueryMes.action",
@@ -52,7 +52,74 @@ const actions = {
     });
     });
     commit("newsUp", res.data.total);
     commit("newsUp", res.data.total);
     sessionStorage.setItem("newsNum", res.data.total);
     sessionStorage.setItem("newsNum", res.data.total);
-    // console.log("vuex", res.data.total);
+    console.log("vuex", res.data.total);
+  },
+  busNum: async ({ commit, state }) => {
+    let data = new FormData();
+    // let res = await adminApi.adminLogin(data);
+    let res = await axios({
+      method: "post",
+      url: state.api + "/carBook/cinfoqueryAll.action",
+      headers: {
+        token: sessionStorage.getItem("token"),
+      },
+      data: data,
+    });
+    console.log(res, "车辆管理");
+    if (res.status == 200) {
+      sessionStorage.setItem("busSelect", JSON.stringify(res.data.data));
+    } else {
+      // ElMessage({
+      //   type: "error",
+      //   showClose: true,
+      //   message: res.data.message,
+      //   center: true,
+      // });
+      // if (res.data.message == "token错误") {
+      //   router.push({
+      //     path: `/login`,
+      //   });
+      // }
+    }
+  },
+  pathSelect: async ({ commit, state }) => {
+    let data = new FormData();
+    let res = await axios({
+      method: "post",
+      url: state.api + "/carBook/routequeryAll.action",
+      headers: {
+        token: sessionStorage.getItem("token"),
+      },
+      data: data,
+    });
+    res.data.data.forEach((item) => {
+      if (item.is_repair == 0) {
+        item.state = false;
+      } else if (item.is_repair == 1) {
+        item.state = true;
+      }
+      if (item.repair_end == "null") {
+        item.repair_end = "";
+      }
+    });
+    console.log(res, "路线管理");
+    if (res.status == 200) {
+      sessionStorage.setItem("route_endSelect", JSON.stringify(res.data.data));
+      let obj2 = {};
+      var reduce2 = res.data.data.reduce((curr, next) => {
+        /*判断对象中是否已经有该属性  没有的话 push 到 curr数组*/
+        obj2[next.route] ? "" : (obj2[next.route] = curr.push(next));
+        return curr;
+      }, []);
+      sessionStorage.setItem("pathSelect", JSON.stringify(reduce2));
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
   },
   },
 };
 };
 
 

+ 10 - 2
src/views/account/account.vue

@@ -222,17 +222,25 @@ const rules = reactive({
     // { min: 3, max: 5, message: "Length should be 3 to 5", trigger: "blur" },
     // { min: 3, max: 5, message: "Length should be 3 to 5", trigger: "blur" },
     {
     {
       pattern: /^[a-zA-z]\w{3,15}$/,
       pattern: /^[a-zA-z]\w{3,15}$/,
-      message: "请输入合法账号",
+      message: "请输入正确账号",
       trigger: "blur",
       trigger: "blur",
     },
     },
   ],
   ],
-  // /^[a-zA-z]\w{3,15}$/
+  // ^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*,\._\+(){}])[0-9a-zA-Z!@#$%^&*,\\._\+(){}]{8,20}$
   pass: [
   pass: [
     {
     {
       required: true,
       required: true,
       message: "密码不能为空",
       message: "密码不能为空",
       trigger: "blur",
       trigger: "blur",
     },
     },
+    {
+      min: 8,
+      max: 20,
+      pattern:
+        /^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*,\._\+(){}])[0-9a-zA-Z!@#$%^&*,\\._\+(){}]{8,20}$/,
+      message: "请输入8-20位正确密码(大小写字母·字符·数字)",
+      trigger: "blur",
+    },
   ],
   ],
   name: [
   name: [
     {
     {

+ 7 - 10
src/views/bus/bus.vue

@@ -252,7 +252,7 @@ const rules = reactive({
   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
 });
 });
 // 查看车辆管理列表
 // 查看车辆管理列表
-const getList = async (message) => {
+const getList = async (flag) => {
   let data = new FormData();
   let data = new FormData();
   if (searchInput.createTime == null) {
   if (searchInput.createTime == null) {
     searchInput.createTime = "";
     searchInput.createTime = "";
@@ -272,15 +272,10 @@ const getList = async (message) => {
   });
   });
   console.log(res);
   console.log(res);
   if (res.status == 200) {
   if (res.status == 200) {
-    if (message) {
-      ElMessage({
-        type: "success",
-        showClose: true,
-        message: message,
-        center: true,
-      });
-    }
     tableData.list = res.data.rows;
     tableData.list = res.data.rows;
+    if (flag == 1) {
+      sessionStorage.setItem("busSelect", JSON.stringify(tableData.list));
+    }
     // currentPage.value = res.data.currentPage;
     // currentPage.value = res.data.currentPage;
     total.value = res.data.total;
     total.value = res.data.total;
   } else {
   } else {
@@ -358,6 +353,7 @@ const submitAdd = async (formEl) => {
         // console.log(res, "添加账号");
         // console.log(res, "添加账号");
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getList();
           getList();
+          store.dispatch("busNum");
           ElMessage({
           ElMessage({
             type: "success",
             type: "success",
             showClose: true,
             showClose: true,
@@ -394,7 +390,7 @@ const submitAdd = async (formEl) => {
         // console.log(res, "修改账号");
         // console.log(res, "修改账号");
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getList();
           getList();
-
+          store.dispatch("busNum");
           ElMessage({
           ElMessage({
             type: "success",
             type: "success",
             showClose: true,
             showClose: true,
@@ -442,6 +438,7 @@ const del = (row) => {
           currentPage.value = currentPage.value - 1;
           currentPage.value = currentPage.value - 1;
         }
         }
         getList();
         getList();
+        store.dispatch("busNum");
         ElMessage({
         ElMessage({
           type: "success",
           type: "success",
           showClose: true,
           showClose: true,

+ 91 - 22
src/views/buspath/buspath.vue

@@ -32,18 +32,43 @@
               label="出发路线名称"
               label="出发路线名称"
               width="300"
               width="300"
             />
             />
+            <el-table-column align="left" label="候补截止时间" width="300"
+              ><template #default="scope">
+                <el-time-picker
+                  ref="hb_time"
+                  v-model="scope.row.repair_end"
+                  placeholder="请选择时间"
+                  format="HH:mm"
+                  value-format="HH:mm"
+                  :clearable="false"
+                  :editable="false"
+                  @change="savePath(scope.row, '是否修改候补截止时间')"
+                />
+                <!-- @change="savePath(scope.row, '是否修改候补截止时间')" -->
+              </template>
+            </el-table-column>
             <el-table-column label="是否候补" width="150" align="center">
             <el-table-column label="是否候补" width="150" align="center">
               <template #default="scope">
               <template #default="scope">
                 <el-switch
                 <el-switch
-                  @change="savePath(scope.row)"
-                  :disabled="false"
+                  :disabled="
+                    scope.row.repair_end == '' || scope.row.repair_end == 'null'
+                      ? true
+                      : false
+                  "
                   v-model="scope.row.state"
                   v-model="scope.row.state"
                   class="ml-2"
                   class="ml-2"
                   style="
                   style="
-                    --el-switch-on-color: rgba(61, 81, 232, 1);
-                    /* --el-switch-off-color: rgba(61, 81, 232, 1); */
+                    --el-switch-on-color: rgba(
+                      61,
+                      81,
+                      232,
+                      1
+                    ); /*
+                --el-switch-off-color: rgba(61, 81, 232, 1); */
                   "
                   "
+                  @change="savePath(scope.row, '是否启用候补')"
                 />
                 />
+                <!-- @change="savePath(scope.row, '是否启用/取消候补')" -->
               </template>
               </template>
             </el-table-column>
             </el-table-column>
           </el-table>
           </el-table>
@@ -95,7 +120,7 @@
     </div>
     </div>
     <div class="gongneng">
     <div class="gongneng">
       <el-button type="primary" color="rgba(61, 81, 232, 1)" @click="addlist"
       <el-button type="primary" color="rgba(61, 81, 232, 1)" @click="addlist"
-        ><el-icon><CirclePlus /></el-icon><span>新增点</span></el-button
+        ><el-icon><CirclePlus /></el-icon><span>新增点</span></el-button
       >
       >
     </div>
     </div>
     <!-- 站点管理 -->
     <!-- 站点管理 -->
@@ -220,6 +245,7 @@ import { useStore } from "vuex";
 const store = useStore();
 const store = useStore();
 const api = ref("");
 const api = ref("");
 const router = useRouter();
 const router = useRouter();
+const hb_time = ref(); // 路线管理候补截止时间组件 ref
 // 表格数据
 // 表格数据
 const tableData = reactive({
 const tableData = reactive({
   list: [],
   list: [],
@@ -264,8 +290,45 @@ const rules = reactive({
     },
     },
   ],
   ],
 });
 });
+
+watch(
+  () => pathNum.list,
+  (newValue, oldValue) => {
+    newValue.forEach(async (item) => {
+      if (item.repair_end == "" || item.repair_end == "null") {
+        console.log("时间为空");
+        item.state = false;
+        item.is_repair = "0";
+        let data = new FormData();
+        data.set("route", item.route);
+        data.set("is_repair", item.is_repair);
+        data.set("repair_end", item.repair_end);
+        let res = await axios({
+          method: "post",
+          url: api.value + "/carBook/routeupdateState.action",
+          headers: {
+            token: sessionStorage.getItem("token"),
+          },
+          data: data,
+        });
+        console.log(res, "修改路线候补时间和是否开启");
+        if (res.data.code == 200) {
+          store.dispatch("pathSelect");
+        } else {
+          ElMessage({
+            type: "error",
+            showClose: true,
+            message: res.data.message,
+            center: true,
+          });
+        }
+      }
+    });
+  }
+);
+
 // 获取车次信息
 // 获取车次信息
-const getList = async (message) => {
+const getList = async (flag) => {
   let data = new FormData();
   let data = new FormData();
   if (searchInput.createTime == null) {
   if (searchInput.createTime == null) {
     searchInput.createTime = "";
     searchInput.createTime = "";
@@ -281,18 +344,9 @@ const getList = async (message) => {
     },
     },
     data: data,
     data: data,
   });
   });
-  console.log(res);
+  // console.log(res);
 
 
   if (res.status == 200) {
   if (res.status == 200) {
-    if (message) {
-      ElMessage({
-        type: "success",
-        showClose: true,
-        message: message,
-        center: true,
-      });
-    }
-
     tableData.list = res.data.rows;
     tableData.list = res.data.rows;
     tableData.list.forEach((item) => {
     tableData.list.forEach((item) => {
       item.route2 = item.route;
       item.route2 = item.route;
@@ -329,9 +383,9 @@ const getList = async (message) => {
   }
   }
 };
 };
 
 
-// 修改路线
-const savePath = async (row) => {
-  ElMessageBox.confirm(`是否启用/取消 ${row.route} 候补`, "提示", {
+// 修改路线候补时间和是否开启
+const savePath = async (row, title) => {
+  ElMessageBox.confirm(`${title}`, "提示", {
     confirmButtonText: "确认",
     confirmButtonText: "确认",
     cancelButtonText: "取消",
     cancelButtonText: "取消",
     type: "warning",
     type: "warning",
@@ -348,6 +402,7 @@ const savePath = async (row) => {
       let data = new FormData();
       let data = new FormData();
       data.set("route", augment[0].route);
       data.set("route", augment[0].route);
       data.set("is_repair", augment[0].is_repair);
       data.set("is_repair", augment[0].is_repair);
+      data.set("repair_end", augment[0].repair_end);
       let res = await axios({
       let res = await axios({
         method: "post",
         method: "post",
         url: api.value + "/carBook/routeupdateState.action",
         url: api.value + "/carBook/routeupdateState.action",
@@ -356,10 +411,11 @@ const savePath = async (row) => {
         },
         },
         data: data,
         data: data,
       });
       });
-      // console.log(res, "修改账号");
+      // console.log(res, "修改路线候补时间和是否开启");
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        sessionStorage.setItem("pathSelect", JSON.stringify(pathNum.list));
         getList();
         getList();
+        store.dispatch("pathSelect");
+        console.log(hb_time.value);
         ElMessage({
         ElMessage({
           type: "success",
           type: "success",
           showClose: true,
           showClose: true,
@@ -380,6 +436,7 @@ const savePath = async (row) => {
         type: "info",
         type: "info",
         message: "已取消",
         message: "已取消",
       });
       });
+      pathNum.list = JSON.parse(sessionStorage.getItem("pathSelect"));
       if (row.is_repair == 0) {
       if (row.is_repair == 0) {
         row.state = false;
         row.state = false;
       } else if (row.is_repair == 1) {
       } else if (row.is_repair == 1) {
@@ -387,6 +444,16 @@ const savePath = async (row) => {
       }
       }
     });
     });
 };
 };
+// 确定修改路线候补时间时选择时间框没有关闭的bug
+const handleClose = (val) => {
+  console.log(val);
+};
+
+// 确定截止时间
+const timeUpdata = (row) => {
+  console.log(row);
+};
+
 // 搜索功能
 // 搜索功能
 const searchBtn = lodash.debounce(async () => {
 const searchBtn = lodash.debounce(async () => {
   getList("查询成功");
   getList("查询成功");
@@ -442,6 +509,7 @@ const submitAdd = async (formEl) => {
         // console.log(res, "添加账号");
         // console.log(res, "添加账号");
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getList();
           getList();
+          store.dispatch("pathSelect");
           ElMessage({
           ElMessage({
             type: "success",
             type: "success",
             showClose: true,
             showClose: true,
@@ -478,7 +546,7 @@ const submitAdd = async (formEl) => {
         // console.log(res, "修改账号");
         // console.log(res, "修改账号");
         if (res.data.code == 200) {
         if (res.data.code == 200) {
           getList();
           getList();
-
+          store.dispatch("pathSelect");
           ElMessage({
           ElMessage({
             type: "success",
             type: "success",
             showClose: true,
             showClose: true,
@@ -527,6 +595,7 @@ const del = (row) => {
         }
         }
 
 
         getList();
         getList();
+        store.dispatch("pathSelect");
         ElMessage({
         ElMessage({
           type: "success",
           type: "success",
           showClose: true,
           showClose: true,

+ 407 - 101
src/views/busquery/busquery.vue

@@ -12,7 +12,7 @@
       :close-on-press-escape="false"
       :close-on-press-escape="false"
       title="新增调度"
       title="新增调度"
       align-center
       align-center
-      width="600"
+      width="550"
       :before-close="editCloseQuery"
       :before-close="editCloseQuery"
     >
     >
       <el-form
       <el-form
@@ -25,23 +25,61 @@
         label-position="left"
         label-position="left"
         status-icon
         status-icon
       >
       >
-        <!-- <el-form-item label="发车日期 :" prop="startDate">
-          <el-date-picker
+        <el-form-item label="发车日期 :" prop="startDate">
+          <!-- <el-date-picker
             v-model="ruleFormQuery.startDate"
             v-model="ruleFormQuery.startDate"
             type="date"
             type="date"
             placeholder="请选择发车日期"
             placeholder="请选择发车日期"
-            format="YYYY-DD-MM"
-            value-format="YYYY-DD-MM"
-          />
-        </el-form-item> -->
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+          /> -->
+          <el-select
+            v-model="ruleFormQuery.startDate"
+            class="m-2"
+            placeholder="请选择发车日期"
+            @change="startbusTime"
+          >
+            <el-option
+              :label="dayjs().format('YYYY-MM-DD')"
+              :value="dayjs().format('YYYY-MM-DD')"
+            />
+            <el-option
+              :label="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .add(1, 'day')
+                  .format('YYYY-MM-DD')
+              "
+              :value="
+                dayjs(dayjs().format('YYYY-MM-DD'))
+                  .add(1, 'day')
+                  .format('YYYY-MM-DD')
+              "
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="发车时间 :" prop="ci_time">
         <el-form-item label="发车时间 :" prop="ci_time">
           <el-time-picker
           <el-time-picker
             v-model="ruleFormQuery.ci_time"
             v-model="ruleFormQuery.ci_time"
             placeholder="请选择发车时间"
             placeholder="请选择发车时间"
             format="HH:mm"
             format="HH:mm"
             value-format="HH:mm"
             value-format="HH:mm"
+            :disabled-hours="disabledQueryHours"
+            :disabled-minutes="disabledQueryMinutes"
+            :disabled-seconds="disabledQuerySeconds"
+            @change="addQueryTime"
           />
           />
         </el-form-item>
         </el-form-item>
+        <!-- <el-form-item label="扫码时间 :" prop="codeTime">
+          <el-time-picker
+            v-model="ruleFormQuery.codeTime"
+            format="HH:mm"
+            value-format="HH:mm"
+            is-range
+            range-separator="-"
+            start-placeholder="开始时间"
+            end-placeholder="截止时间"
+          />
+        </el-form-item> -->
         <el-form-item label="车牌号 :" prop="busname">
         <el-form-item label="车牌号 :" prop="busname">
           <el-select
           <el-select
             v-model="ruleFormQuery.busname"
             v-model="ruleFormQuery.busname"
@@ -69,6 +107,7 @@
             v-model="ruleFormQuery.route"
             v-model="ruleFormQuery.route"
             class="m-2"
             class="m-2"
             placeholder="请选择路线"
             placeholder="请选择路线"
+            @change="changeRouteQuery"
           >
           >
             <el-option
             <el-option
               :label="item.route"
               :label="item.route"
@@ -90,6 +129,7 @@
             />
             />
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
+
         <el-form-item
         <el-form-item
           label="是否可提前一天预约"
           label="是否可提前一天预约"
           prop="yesterday"
           prop="yesterday"
@@ -144,16 +184,37 @@
         label-position="left"
         label-position="left"
         status-icon
         status-icon
       >
       >
-        <el-form-item
-          label="发车时间 :"
-          v-if="ruleForm.state != 3"
-          prop="ci_time"
-        >
+        <el-form-item label="发车日期 :" prop="startDate">
+          <el-date-picker
+            v-model="ruleForm.startDate"
+            type="date"
+            placeholder="请选择发车日期"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+            :disabled="true"
+          />
+        </el-form-item>
+        <el-form-item label="发车时间 :" prop="ci_time">
           <el-time-picker
           <el-time-picker
             v-model="ruleForm.ci_time"
             v-model="ruleForm.ci_time"
             placeholder="请选择时间"
             placeholder="请选择时间"
+            :disabled="ruleForm.state == 2 ? true : false"
             format="HH:mm"
             format="HH:mm"
             value-format="HH:mm"
             value-format="HH:mm"
+            :disabled-hours="disabledHours"
+            :disabled-minutes="disabledMinutes"
+            :disabled-seconds="disabledSeconds"
+          />
+        </el-form-item>
+        <el-form-item label="扫码时间 :" prop="codeTime">
+          <el-time-picker
+            v-model="ruleForm.codeTime"
+            format="HH:mm"
+            value-format="HH:mm"
+            is-range
+            range-separator="-"
+            start-placeholder="开始时间"
+            end-placeholder="截止时间"
           />
           />
         </el-form-item>
         </el-form-item>
         <!-- <el-form-item
         <!-- <el-form-item
@@ -188,12 +249,18 @@
           />
           />
         </el-form-item>
         </el-form-item>
         <el-form-item label="路线 :" prop="route">
         <el-form-item label="路线 :" prop="route">
-          <el-input
+          <el-select
             v-model="ruleForm.route"
             v-model="ruleForm.route"
-            placeholder="请输入路线"
-            :disabled="true"
-            clearable
-          />
+            class="m-2"
+            placeholder="请选择路线"
+            @change="changeRoute"
+          >
+            <el-option
+              :label="item.route"
+              :value="item.route"
+              v-for="item in pathNum.list"
+            />
+          </el-select>
         </el-form-item>
         </el-form-item>
         <el-form-item
         <el-form-item
           label="终点站 :"
           label="终点站 :"
@@ -232,21 +299,75 @@
       </el-form>
       </el-form>
     </el-dialog>
     </el-dialog>
     <div class="MingXi" style="height: 652px; margin: 10px 0 20px 0">
     <div class="MingXi" style="height: 652px; margin: 10px 0 20px 0">
-      <div class="">
+      <div class="filter">
+        <div class="condition">
+          <el-button
+            style="margin: 0 0 0 30px"
+            color="rgba(61, 81, 232, 1)"
+            type="primary"
+            class="search"
+            @click="addQuery"
+            ><el-icon><CirclePlus /></el-icon
+            ><span> &nbsp;&nbsp;新增调度</span></el-button
+          >
+        </div>
+        <!-- <div class="condition">
+          <span>车牌号 : </span>
+          <el-input
+            clearable
+            class="w-50 m-2"
+            placeholder="请输入车牌号"
+            style="width: 150px"
+            v-model="searchInput.car_number"
+          />
+        </div> -->
+        <div class="condition">
+          <span>车牌号 : </span>
+          <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">
+          <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)"
+          type="primary"
+          class="search"
+          @click="search"
+          ><el-icon><Search /></el-icon><span>搜索</span></el-button
+        >
         <el-button
         <el-button
-          style="margin: 10px 0 0 30px"
+          style="margin-left: 20px"
           color="rgba(61, 81, 232, 1)"
           color="rgba(61, 81, 232, 1)"
           type="primary"
           type="primary"
           class="search"
           class="search"
-          @click="addQuery"
-          ><el-icon><CirclePlus /></el-icon><span>新增调度</span></el-button
+          @click="resetSearch"
+          ><el-icon><Search /></el-icon><span>重置</span></el-button
         >
         >
       </div>
       </div>
       <div class="footer">
       <div class="footer">
         <el-table
         <el-table
           :row-class-name="tableRowClassName"
           :row-class-name="tableRowClassName"
           :data="tableData.list"
           :data="tableData.list"
-          style="width: 100%; height: 630px"
+          style="width: 100%; height: 580px"
           :header-cell-style="{
           :header-cell-style="{
             background: 'rgba(240, 243, 247, 1)',
             background: 'rgba(240, 243, 247, 1)',
             border: 0,
             border: 0,
@@ -274,7 +395,7 @@
           <el-table-column
           <el-table-column
             align="center"
             align="center"
             width="100"
             width="100"
-            prop="yy_num"
+            prop="by_num"
             label="乘车人数"
             label="乘车人数"
           />
           />
           <el-table-column
           <el-table-column
@@ -290,8 +411,18 @@
             label="容量"
             label="容量"
           />
           />
 
 
-          <el-table-column align="center" prop="route" label="路线" />
-          <el-table-column align="center" prop="route_end" label="终点" />
+          <el-table-column
+            align="center"
+            prop="route"
+            width="280"
+            label="路线"
+          />
+          <el-table-column
+            width="200"
+            align="center"
+            prop="route_end"
+            label="终点"
+          />
 
 
           <el-table-column
           <el-table-column
             align="center"
             align="center"
@@ -305,43 +436,74 @@
           </el-table-column>
           </el-table-column>
           <el-table-column align="center" label="状态" width="120">
           <el-table-column align="center" label="状态" width="120">
             <template #default="scope">
             <template #default="scope">
-              <div v-if="scope.row.state == 1" style="color: blue">预约中</div>
               <div
               <div
-                v-if="scope.row.state == 2"
+                v-if="scope.row.state == 1"
                 style="color: rgba(67, 207, 124, 1)"
                 style="color: rgba(67, 207, 124, 1)"
               >
               >
+                预约中
+              </div>
+              <div
+                v-if="scope.row.state == 2"
+                style="color: rgba(212, 48, 48, 1)"
+              >
                 已截止
                 已截止
               </div>
               </div>
-              <div v-if="scope.row.state == 3" style="color: red">候补中</div>
-              <div v-if="scope.row.state == 4" style="color: #ccc">已分车</div>
+              <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>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column align="center" label="操作" width="180">
           <el-table-column align="center" label="操作" width="180">
             <template #default="scope">
             <template #default="scope">
+              <!-- <el-button
+                link
+                type="primary"
+                @click="sendBus(scope.row)"
+                v-if="scope.row.ci_time == 0"
+                ><div class="look">候补</div></el-button
+              > -->
               <el-button link type="primary" @click="sendBus(scope.row)"
               <el-button link type="primary" @click="sendBus(scope.row)"
                 ><div class="look">调度</div></el-button
                 ><div class="look">调度</div></el-button
               >
               >
-              <el-button link type="primary" @click="del(scope.row)"
+              <el-button
+                link
+                type="primary"
+                @click="del(scope.row)"
+                v-if="scope.row.yy_num == 0"
                 ><div class="look">删除</div></el-button
                 ><div class="look">删除</div></el-button
               >
               >
+              <!-- <el-button link type="primary" v-else :disabled="true"
+                ><div class="look">删除</div></el-button
+              > -->
             </template>
             </template>
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>
       </div>
       </div>
     </div>
     </div>
-    <!-- <el-pagination
+
+    <!-- 分页数据 -->
+    <el-pagination
       background
       background
-      v-model:page-size="pageSize"
-      v-model:current-page="currentPage"
-      layout="total, prev, pager, next, jumper"
+      :current-page="currentPage"
+      :page-size="pageSize"
+      layout="total, prev, pager, next, jumper, slot"
       :total="total"
       :total="total"
-      @current-change="handleCurrentChange"
-    /> -->
+      @update:current-page="handleCurrentChange"
+    />
   </div>
   </div>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
-import { ref, reactive, watch, onBeforeMount } from "vue";
+import { ref, reactive, watch, onBeforeMount, onMounted } from "vue";
 import { useRouter } from "vue-router";
 import { useRouter } from "vue-router";
 import { Select, Pointer, Upload } from "@element-plus/icons-vue";
 import { Select, Pointer, Upload } from "@element-plus/icons-vue";
 import { JSEncrypt } from "jsencrypt"; // 加密密码
 import { JSEncrypt } from "jsencrypt"; // 加密密码
@@ -357,7 +519,7 @@ const api = ref("");
 // 搜索框数据
 // 搜索框数据
 const searchInput = reactive({
 const searchInput = reactive({
   state: "",
   state: "",
-  yy_date: "",
+  s_date: "",
   car_number: "",
   car_number: "",
 });
 });
 
 
@@ -385,40 +547,58 @@ const options = ref(
   }))
   }))
 ); //候补弹窗多选车牌号逻辑
 ); //候补弹窗多选车牌号逻辑
 
 
-const pageSize = ref(12);
+const pageSize = ref(10);
 const currentPage = ref(1); // 当前页
 const currentPage = ref(1); // 当前页
 const total = ref(10); // 当前总数
 const total = ref(10); // 当前总数
 const selectData = reactive({ list: [] }); // 多选框选择的数据
 const selectData = reactive({ list: [] }); // 多选框选择的数据
 
 
 // 表单数据
 // 表单数据
 const formSize = ref("default");
 const formSize = ref("default");
-const ruleFormRef = ref();
-const ruleFormRefQuery = ref();
+const ruleFormRef = ref(); // 调度表单
+const ruleFormRefQuery = ref(); // 新增调度表单
 // 派车调度数据
 // 派车调度数据
 const ruleForm = reactive({
 const ruleForm = reactive({
-  busname: [], //候补弹窗车牌绑定数据
-  volume: "",
-  route: "黄家湖校区-墨轩湖校区",
-  destination: "",
-  ci_time: "",
-  state: "",
+  startDate: "", // 发车日期
+  busname: [], // 调度 车牌号
+  volume: "", // 车子容量
+  route: "黄家湖校区-墨轩湖校区", // 线路选择
+  destination: "", // 终点站
+  ci_time: "", // 发车时间
+  state: "", // 状态
+  codeTime: [], // 扫码时间
   id: "",
   id: "",
 });
 });
 // 新增车辆调度数据
 // 新增车辆调度数据
 const ruleFormQuery = reactive({
 const ruleFormQuery = reactive({
+  startDate: "", // 发车日期
   busname: "", //候补弹窗车牌绑定数据
   busname: "", //候补弹窗车牌绑定数据
   ci_time: "", // 发车时间
   ci_time: "", // 发车时间
-  volume: "",
-  route: "",
-  destination: "",
-  yesterday: false,
+  volume: "", // 车子容量
+  route: "", // 线路选择
+  destination: "", // 终点站
+  yesterday: true, // 是否提前预约
+  // codeTime: [], // 扫码时间
 });
 });
-// 表单验证
+// 调度表单验证
 const rules = reactive({
 const rules = reactive({
+  startDate: [
+    {
+      required: true,
+      message: "发车日期不能为空",
+      trigger: "blur",
+    },
+  ],
   ci_time: [
   ci_time: [
     {
     {
       required: true,
       required: true,
-      message: "时间不能为空",
+      message: "发车时间不能为空",
+      trigger: "blur",
+    },
+  ],
+  codeTime: [
+    {
+      required: true,
+      message: "扫码时间不能为空",
       trigger: "blur",
       trigger: "blur",
     },
     },
   ],
   ],
@@ -452,11 +632,19 @@ const rules = reactive({
     {
     {
       required: true,
       required: true,
       message: "请选择终点站",
       message: "请选择终点站",
-      trigger: "change",
+      trigger: "blur",
     },
     },
   ],
   ],
 });
 });
+// 新增调度表单验证
 const rulesQuery = reactive({
 const rulesQuery = reactive({
+  startDate: [
+    {
+      required: true,
+      message: "发车日期不能为空",
+      trigger: "blur",
+    },
+  ],
   ci_time: [
   ci_time: [
     {
     {
       required: true,
       required: true,
@@ -464,6 +652,13 @@ const rulesQuery = reactive({
       trigger: "blur",
       trigger: "blur",
     },
     },
   ],
   ],
+  // codeTime: [
+  //   {
+  //     required: true,
+  //     message: "扫码时间不能为空",
+  //     trigger: "blur",
+  //   },
+  // ],
   busname: [
   busname: [
     {
     {
       required: true,
       required: true,
@@ -494,7 +689,7 @@ const rulesQuery = reactive({
     {
     {
       required: true,
       required: true,
       message: "请选择终点站",
       message: "请选择终点站",
-      trigger: "change",
+      trigger: "blur",
     },
     },
   ],
   ],
 });
 });
@@ -535,20 +730,29 @@ watch(
 );
 );
 
 
 // 监控新增车辆调度路线
 // 监控新增车辆调度路线
-watch(
-  () => ruleFormQuery.route,
-  (newValue, oldValue) => {
-    console.log(newValue);
-    let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
-    // ruleFormQuery.destination = "";
-    // console.log(arr);
+// watch(
+//   () => ruleFormQuery.route,
+//   (newValue, oldValue) => {
+//     console.log(newValue);
+//     let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
+//     ruleFormQuery.destination = "";
+//     // console.log(arr);
 
 
-    addendNum.list = arr.filter((item) => {
-      return item.route == newValue;
-    });
-  }
-);
-// 监控调度路线
+//     addendNum.list = arr.filter((item) => {
+//       return item.route == newValue;
+//     });
+//   }
+// );
+const changeRouteQuery = (val) => {
+  let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
+  ruleFormQuery.destination = "";
+  // console.log(arr);
+
+  addendNum.list = arr.filter((item) => {
+    return item.route == val;
+  });
+};
+// 监控调度路线;
 // watch(
 // watch(
 //   () => ruleForm.route,
 //   () => ruleForm.route,
 //   (newValue, oldValue) => {
 //   (newValue, oldValue) => {
@@ -560,13 +764,23 @@ watch(
 //     });
 //     });
 //   }
 //   }
 // );
 // );
+const changeRoute = (val) => {
+  let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
+  // console.log(arr);
+  ruleForm.destination = "";
+  endNum.list = arr.filter((item) => {
+    return item.route == val;
+  });
+};
 
 
 // 获取数据列表
 // 获取数据列表
 const getList = async () => {
 const getList = async () => {
   {
   {
     let data = new FormData();
     let data = new FormData();
     let time = dayjs().format("YYYY-MM-DD");
     let time = dayjs().format("YYYY-MM-DD");
-    data.set("date", time);
+    data.set("car_number", searchInput.car_number);
+    data.set("page", currentPage.value);
+    data.set("rows", pageSize.value);
     let res = await axios({
     let res = await axios({
       method: "post",
       method: "post",
       url: api.value + "/carBook/schequeryYlist.action",
       url: api.value + "/carBook/schequeryYlist.action",
@@ -575,18 +789,9 @@ const getList = async () => {
       },
       },
       data: data,
       data: data,
     });
     });
-    console.log(res);
-
+    console.log(res, "调度数据");
     if (res.status == 200) {
     if (res.status == 200) {
-      // if (message) {
-      //   ElMessage({
-      //     type: "success",
-      //     showClose: true,
-      //     message: message,
-      //     center: true,
-      //   });
-      // }
-      tableData.list = res.data.data;
+      tableData.list = res.data.rows;
       // currentPage.value = res.data.currentPage;
       // currentPage.value = res.data.currentPage;
       total.value = res.data.total;
       total.value = res.data.total;
     } else {
     } else {
@@ -609,13 +814,13 @@ const getList = async () => {
 };
 };
 
 
 // 搜索按钮
 // 搜索按钮
-// const search = lodash.debounce(() => {
-//   getList();
-// }, 300);
+const search = lodash.debounce(() => {
+  getList();
+}, 300);
 // 重置搜索框
 // 重置搜索框
-const resetInput = lodash.debounce(() => {
+const resetSearch = lodash.debounce(() => {
   searchInput.state = "";
   searchInput.state = "";
-  searchInput.yy_date = "";
+  searchInput.s_date = "";
   searchInput.car_number = "";
   searchInput.car_number = "";
   getList();
   getList();
 }, 300);
 }, 300);
@@ -629,14 +834,91 @@ const handleSelectionChange = (val) => {
 const addQuery = () => {
 const addQuery = () => {
   addBusqueryVisible.value = true;
   addBusqueryVisible.value = true;
 };
 };
+const makeRange = (start, end) => {
+  const result = [];
+  for (let i = start; i <= end; i++) {
+    result.push(i);
+  }
+
+  return result;
+};
+const startbusTime = (val) => {
+  ruleFormQuery.ci_time = "";
+};
+// 控制新增调度发车时间    小时
+const disabledQueryHours = () => {
+  let dateTime = dayjs().format("YYYY-MM-DD");
+  if (ruleFormQuery.startDate == dateTime) {
+    console.log("当天时间");
+    let hour = dayjs().hour();
+    return makeRange(0, hour - 1);
+  }
+};
+// 控制新增调度发车时间    分钟
+const disabledQueryMinutes = (hour) => {
+  let hours = dayjs().hour();
+  let dateTime = dayjs().format("YYYY-MM-DD");
+  let minute = dayjs().minute();
+  if (ruleFormQuery.startDate == dateTime) {
+    if (hour == hours) {
+      return makeRange(0, minute);
+    }
+  }
+};
+
+// 控制调度发车时间    小时
+const disabledHours = () => {
+  if (ruleForm.state == 2) {
+  } else {
+    let dateTime = dayjs().format("YYYY-MM-DD");
+    if (ruleForm.startDate == dateTime) {
+      console.log("当天时间");
+      let hour = dayjs().hour();
+      return makeRange(0, hour - 1);
+    }
+  }
+};
+// 控制调度发车时间    分钟
+const disabledMinutes = (hour) => {
+  if (ruleForm.state == 2) {
+  } else {
+    let hours = dayjs().hour();
+    let dateTime = dayjs().format("YYYY-MM-DD");
+    let minute = dayjs().minute();
+    if (ruleForm.startDate == dateTime) {
+      if (hour == hours) {
+        return makeRange(0, minute);
+      }
+    }
+  }
+};
 
 
 // 派车按钮
 // 派车按钮
 const sendBus = (row) => {
 const sendBus = (row) => {
   console.log(row);
   console.log(row);
+  let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
+  endNum.list = arr.filter((item) => {
+    return item.route == row.route;
+  });
   centerDialogVisible.value = true;
   centerDialogVisible.value = true;
+  ruleForm.startDate = row.s_date;
   ruleForm.id = row.id;
   ruleForm.id = row.id;
   ruleForm.state = row.state;
   ruleForm.state = row.state;
-  ruleForm.ci_time = row.ci_time;
+  if (row.car_number == 0) {
+    ruleForm.busname = [];
+  } else {
+    ruleForm.busname = [row.car_number];
+  }
+  ruleForm.route = row.route;
+  ruleForm.destination = row.route_end;
+  ruleForm.codeTime = [row.sm_start, row.sm_end];
+  if (row.ci_time == 0) {
+    // dialongTitle.value = "车辆候补调度";
+    ruleForm.ci_time = "";
+  } else {
+    // dialongTitle.value = "车辆调度";
+    ruleForm.ci_time = row.ci_time;
+  }
 };
 };
 // 派车弹窗关闭
 // 派车弹窗关闭
 const editClose = () => {
 const editClose = () => {
@@ -649,11 +931,13 @@ const submitAdd = async (formEl) => {
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
       let data = {
       let data = {
-        car_number: ruleForm.busname.join(",f"),
+        car_number: ruleForm.busname.join(","),
         route: ruleForm.route,
         route: ruleForm.route,
         contain: ruleForm.volume,
         contain: ruleForm.volume,
         route_end: ruleForm.destination,
         route_end: ruleForm.destination,
         ci_time: ruleForm.ci_time,
         ci_time: ruleForm.ci_time,
+        sm_start: ruleForm.codeTime[0],
+        sm_end: ruleForm.codeTime[1],
         id: ruleForm.id,
         id: ruleForm.id,
       };
       };
       let res = await axios({
       let res = await axios({
@@ -674,7 +958,7 @@ const submitAdd = async (formEl) => {
           message: res.data.message,
           message: res.data.message,
           center: true,
           center: true,
         });
         });
-        addDialogVisible.value = false;
+        centerDialogVisible.value = false;
         ruleFormRef.value.resetFields();
         ruleFormRef.value.resetFields();
       } else {
       } else {
         ElMessage({
         ElMessage({
@@ -713,6 +997,7 @@ const submitAddQuery = async (formEl) => {
         route: ruleFormQuery.route,
         route: ruleFormQuery.route,
         route_end: ruleFormQuery.destination,
         route_end: ruleFormQuery.destination,
         before_state: yesterday,
         before_state: yesterday,
+        s_date: ruleFormQuery.startDate,
       };
       };
       let res = await axios({
       let res = await axios({
         method: "post",
         method: "post",
@@ -767,9 +1052,9 @@ const del = (row) => {
         data: data,
         data: data,
       });
       });
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        // if (tableData.list.length == 1 && currentPage.value != 1) {
-        //   currentPage.value = currentPage.value - 1;
-        // }
+        if (tableData.list.length == 1 && currentPage.value != 1) {
+          currentPage.value = currentPage.value - 1;
+        }
         getList();
         getList();
         ElMessage({
         ElMessage({
           type: "success",
           type: "success",
@@ -859,19 +1144,25 @@ const tableRowClassName = ({ row, rowIndex }) => {
 // 分页
 // 分页
 const handleCurrentChange = (value) => {
 const handleCurrentChange = (value) => {
   currentPage.value = value;
   currentPage.value = value;
+  getList();
 };
 };
 
 
-onBeforeMount(() => {
+onMounted(() => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
   pathNum.list = JSON.parse(sessionStorage.getItem("pathSelect"));
   pathNum.list = JSON.parse(sessionStorage.getItem("pathSelect"));
   busNum.list = JSON.parse(sessionStorage.getItem("busSelect"));
   busNum.list = JSON.parse(sessionStorage.getItem("busSelect"));
-  let route_endSelect = JSON.parse(sessionStorage.getItem("route_endSelect"));
-  endNum.list = route_endSelect.filter((item) => {
-    return item.route == ruleForm.route;
-  });
-  busNum.list.forEach((item) => {
-    initials.list.push(item.car_number);
-  });
+  // let route_endSelect = JSON.parse(sessionStorage.getItem("route_endSelect"));
+  // console.log(route_endSelect);
+
+  // endNum.list = route_endSelect.filter((item) => {
+  //   return item.route == ruleForm.route;
+  // });
+  if (busNum.list) {
+    busNum.list.forEach((item) => {
+      initials.list.push(item.car_number);
+    });
+  }
+
   options.value = Array.from({ length: initials.list.length }).map(
   options.value = Array.from({ length: initials.list.length }).map(
     (_, idx) => ({
     (_, idx) => ({
       value: `${initials.list[idx % 10]}`,
       value: `${initials.list[idx % 10]}`,
@@ -909,6 +1200,23 @@ onBeforeMount(() => {
       color: #4392f7;
       color: #4392f7;
     }
     }
   }
   }
+  .MingXi {
+    .filter {
+      display: flex;
+      flex-wrap: wrap;
+      align-items: center;
+      //   width: 100%;
+      .condition {
+        display: flex;
+        align-items: center;
+        margin: 10px 30px 10px 0;
+        color: #000;
+        span {
+          margin: 0 10px 0 0;
+        }
+      }
+    }
+  }
   :deep(.sendBus) {
   :deep(.sendBus) {
     //   height: 420px;
     //   height: 420px;
     border-radius: 11px;
     border-radius: 11px;
@@ -937,8 +1245,6 @@ onBeforeMount(() => {
 
 
       .options {
       .options {
         margin-left: 200px;
         margin-left: 200px;
-        .el-form-item__content {
-        }
       }
       }
     }
     }
   }
   }

+ 31 - 17
src/views/classes/classes.vue

@@ -538,6 +538,7 @@
               v-model="ruleFormBus.route"
               v-model="ruleFormBus.route"
               class="m-2"
               class="m-2"
               placeholder="请选择路线"
               placeholder="请选择路线"
+              @change="changeRoute"
             >
             >
               <el-option
               <el-option
                 :label="item.route"
                 :label="item.route"
@@ -780,17 +781,24 @@ watch(
 );
 );
 
 
 // 监控路线
 // 监控路线
-watch(
-  () => ruleFormBus.route,
-  (newValue, oldValue) => {
-    console.log(newValue);
-    let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
-    ruleFormBus.busterminus = "";
-    route_endSelect.list = arr.filter((item) => {
-      return item.route == newValue;
-    });
-  }
-);
+// watch(
+//   () => ruleFormBus.route,
+//   (newValue, oldValue) => {
+//     console.log(newValue);
+//     let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
+//     // ruleFormBus.busterminus = "";
+//     route_endSelect.list = arr.filter((item) => {
+//       return item.route == newValue;
+//     });
+//   }
+// );
+const changeRoute = (val) => {
+  let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
+  ruleFormBus.busterminus = "";
+  route_endSelect.list = arr.filter((item) => {
+    return item.route == val;
+  });
+};
 
 
 // 获取班次列表
 // 获取班次列表
 const getList = async (message) => {
 const getList = async (message) => {
@@ -1243,6 +1251,10 @@ const busedit = (row) => {
   } else if (row.before_state == 0) {
   } else if (row.before_state == 0) {
     before_state = false;
     before_state = false;
   }
   }
+  let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
+  route_endSelect.list = arr.filter((item) => {
+    return item.route == row.route;
+  });
   busdialogTitle.value = "编辑车次";
   busdialogTitle.value = "编辑车次";
   ruleFormBus.busnumber = row.car_number;
   ruleFormBus.busnumber = row.car_number;
   ruleFormBus.contain = row.contain;
   ruleFormBus.contain = row.contain;
@@ -1266,10 +1278,11 @@ const submitAddBus = async (formEl) => {
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
       if (busdialogTitle.value == "新增车次") {
       if (busdialogTitle.value == "新增车次") {
+        let yesterday = 0;
         if (ruleFormBus.yesterday == true) {
         if (ruleFormBus.yesterday == true) {
-          ruleFormBus.yesterday = 1;
+          yesterday = 1;
         } else if (ruleFormBus.yesterday == false) {
         } else if (ruleFormBus.yesterday == false) {
-          ruleFormBus.yesterday = 0;
+          yesterday = 0;
         }
         }
         let weekarr = [];
         let weekarr = [];
         checkweeks.value.forEach((item, index) => {
         checkweeks.value.forEach((item, index) => {
@@ -1287,7 +1300,7 @@ const submitAddBus = async (formEl) => {
           route: ruleFormBus.route,
           route: ruleFormBus.route,
           route_end: ruleFormBus.busterminus,
           route_end: ruleFormBus.busterminus,
           week: weekarr.join(","),
           week: weekarr.join(","),
-          before_state: ruleFormBus.yesterday,
+          before_state: yesterday,
           b_id: ruleForm.id,
           b_id: ruleForm.id,
         };
         };
         // let res = await admin.adminAdd(data);
         // let res = await admin.adminAdd(data);
@@ -1321,10 +1334,11 @@ const submitAddBus = async (formEl) => {
         }
         }
       } else {
       } else {
         // 车次名称修改接口
         // 车次名称修改接口
+        let yesterday = 0;
         if (ruleFormBus.yesterday == true) {
         if (ruleFormBus.yesterday == true) {
-          ruleFormBus.yesterday = 1;
+          yesterday = 1;
         } else if (ruleFormBus.yesterday == false) {
         } else if (ruleFormBus.yesterday == false) {
-          ruleFormBus.yesterday = 0;
+          yesterday = 0;
         }
         }
         let weekarr = [];
         let weekarr = [];
         checkweeks.value.forEach((item, index) => {
         checkweeks.value.forEach((item, index) => {
@@ -1343,7 +1357,7 @@ const submitAddBus = async (formEl) => {
           route: ruleFormBus.route,
           route: ruleFormBus.route,
           route_end: ruleFormBus.busterminus,
           route_end: ruleFormBus.busterminus,
           week: weekarr.join(","),
           week: weekarr.join(","),
-          before_state: ruleFormBus.yesterday,
+          before_state: yesterday,
         };
         };
         let res = await axios({
         let res = await axios({
           method: "post",
           method: "post",

+ 1 - 0
src/views/news/news.vue

@@ -456,6 +456,7 @@ const allLook = async (row) => {
   });
   });
   console.log(res);
   console.log(res);
   if (res.status == 200) {
   if (res.status == 200) {
+    getList();
     store.dispatch("newsAsync");
     store.dispatch("newsAsync");
   } else {
   } else {
     ElMessage({
     ElMessage({

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

@@ -261,13 +261,18 @@ const rules = reactive({
   // /^[\u4E00-\u9FA5]$/
   // /^[\u4E00-\u9FA5]$/
   cardnumber: [
   cardnumber: [
     { required: true, message: "卡号不能为空", trigger: "blur" },
     { required: true, message: "卡号不能为空", trigger: "blur" },
-    // { min: 3, max: 5, message: "Length should be 3 to 5", trigger: "blur" },
+    {
+      // pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
+      pattern: /^[0-9]*$/,
+      message: "请输入正确卡号(数字类型)",
+      trigger: "blur",
+    },
   ],
   ],
   phone: [
   phone: [
     { required: true, message: "请输入手机号", trigger: "blur" },
     { required: true, message: "请输入手机号", trigger: "blur" },
     {
     {
       // pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
       // pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
-      pattern: /^((\(\+86\))|(\(86\))|(\+86)|(86))?[1][3456789][0-9]{9}$/,
+      pattern: /^((\(\+86\))|(\(86\)))?[1][3456789][0-9]{9}$/,
       message: "请输入合法手机号/电话号",
       message: "请输入合法手机号/电话号",
       trigger: "blur",
       trigger: "blur",
     },
     },

+ 20 - 23
src/views/statement/statement.vue

@@ -273,26 +273,11 @@
             prop="s_date"
             prop="s_date"
             label="创建时间"
             label="创建时间"
           />
           />
-          <el-table-column
-            align="center"
-            prop="ci_time"
-            label="发车时间"
-            width="100"
-          />
-          <el-table-column
-            align="center"
-            width="100"
-            prop="yy_num"
-            label="预约人数"
-          />
-          <el-table-column
-            align="center"
-            prop="by_num"
-            width="120"
-            label="乘车人数"
-          />
-          <el-table-column align="center" prop="car_number" label="车牌号" />
+          <el-table-column align="center" prop="ci_time" label="发车时间" />
+          <el-table-column align="center" prop="yy_num" label="预约人数" />
+          <el-table-column align="center" prop="by_num" label="乘车人数" />
           <el-table-column align="center" prop="contain" label="容量" />
           <el-table-column align="center" prop="contain" label="容量" />
+          <el-table-column align="center" prop="car_number" label="车牌号" />
           <el-table-column align="center" label="状态">
           <el-table-column align="center" label="状态">
             <template #default="scope">
             <template #default="scope">
               <div
               <div
@@ -377,6 +362,7 @@
             prop="yy_time"
             prop="yy_time"
             label="下单时间"
             label="下单时间"
           />
           />
+          <el-table-column align="center" prop="yy_date" label="发车日期" />
           <el-table-column align="center" prop="ci_time" 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_name" label="预约人" />
           <el-table-column align="center" prop="user_zz" label="身份" />
           <el-table-column align="center" prop="user_zz" label="身份" />
@@ -394,17 +380,27 @@
             label="车牌号"
             label="车牌号"
           />
           />
           <el-table-column align="center" prop="contain" label="容量" />
           <el-table-column align="center" prop="contain" label="容量" />
-
           <el-table-column
           <el-table-column
             align="center"
             align="center"
+            prop="route"
+            width="200"
+            label="路线"
+          /><el-table-column
+            align="center"
+            prop="route_end"
+            width="220"
+            label="终点站"
+          />
+          <!-- <el-table-column
+            align="center"
             prop="remark"
             prop="remark"
             width="450"
             width="450"
             label="变更信息"
             label="变更信息"
-          />
+          /> -->
 
 
           <el-table-column
           <el-table-column
             align="center"
             align="center"
-            width="200"
+            width="180"
             prop="by_time"
             prop="by_time"
             label="通行时间"
             label="通行时间"
           />
           />
@@ -858,7 +854,7 @@ onBeforeMount(() => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
   pathNum.list = JSON.parse(sessionStorage.getItem("pathSelect"));
   pathNum.list = JSON.parse(sessionStorage.getItem("pathSelect"));
   busNum.list = JSON.parse(sessionStorage.getItem("busSelect"));
   busNum.list = JSON.parse(sessionStorage.getItem("busSelect"));
-  busNum.list = JSON.parse(sessionStorage.getItem("busSelect"));
+  // busNum.list = JSON.parse(sessionStorage.getItem("busSelect"));
   let route_endSelect = JSON.parse(sessionStorage.getItem("route_endSelect"));
   let route_endSelect = JSON.parse(sessionStorage.getItem("route_endSelect"));
   route_endSelect.forEach((item) => {
   route_endSelect.forEach((item) => {
     endNum.list.push(item.route_end);
     endNum.list.push(item.route_end);
@@ -902,6 +898,7 @@ onBeforeMount(() => {
       color: #4392f7;
       color: #4392f7;
     }
     }
   }
   }
+
   :deep(.sendBus) {
   :deep(.sendBus) {
     //   height: 420px;
     //   height: 420px;
     border-radius: 11px;
     border-radius: 11px;

+ 35 - 11
src/views/waiting/waiting.vue

@@ -24,7 +24,7 @@
         <div class="condition">
         <div class="condition">
           <h3>截止预约时间设置</h3>
           <h3>截止预约时间设置</h3>
           <div>
           <div>
-            <span>正常发车前</span>
+            <span>发车前</span>
             <el-input
             <el-input
               clearable
               clearable
               v-model="ruleForm.yy_end"
               v-model="ruleForm.yy_end"
@@ -42,6 +42,29 @@
           </div>
           </div>
         </div>
         </div>
         <div class="condition">
         <div class="condition">
+          <h3>扫码时间设置</h3>
+          <div>
+            <span>发车前</span>
+            <el-input
+              clearable
+              v-model="ruleForm.startTime"
+              class="w-50 m-2"
+              style="width: 100px"
+              @blur="timeUpdata"
+            />
+            <span>&nbsp;&nbsp;分钟 ,</span>
+            <span>发车后</span>
+            <el-input
+              clearable
+              v-model="ruleForm.endTime"
+              class="w-50 m-2"
+              style="width: 100px"
+              @blur="timeUpdata"
+            />
+            <span>&nbsp;&nbsp;分钟可扫码核销 </span>
+          </div>
+        </div>
+        <!-- <div class="condition">
           <h3>候补截止预约时间设置</h3>
           <h3>候补截止预约时间设置</h3>
           <div>
           <div>
             <span>候补截止时间</span>
             <span>候补截止时间</span>
@@ -52,20 +75,12 @@
               value-format="HH:mm"
               value-format="HH:mm"
               @change="timeUpdata"
               @change="timeUpdata"
             />
             />
-            <!-- <el-input
-              clearable
-              v-model="ruleForm.yy_end"
-              class="w-50 m-2"
-              style="width: 100px"
-              @blur="timeUpdata"
-            />
-            <span>&nbsp;&nbsp;分钟</span> -->
           </div>
           </div>
-        </div>
+        </div> -->
         <div class="condition">
         <div class="condition">
           <h3>黑名单设置</h3>
           <h3>黑名单设置</h3>
           <div>
           <div>
-            <span>爽约超过</span>
+            <span>爽约</span>
             <el-input
             <el-input
               clearable
               clearable
               v-model="ruleForm.black_count"
               v-model="ruleForm.black_count"
@@ -121,6 +136,8 @@ const ruleForm = reactive({
   yy_end: "", //候补截止预约时间设置
   yy_end: "", //候补截止预约时间设置
   black_count: "", //黑名单设置次数
   black_count: "", //黑名单设置次数
   notice_time: "", //发车前提前
   notice_time: "", //发车前提前
+  startTime: "", // 扫码前时间
+  endTime: "", // 扫码后时间
   id: "",
   id: "",
 });
 });
 const getlist = async (message) => {
 const getlist = async (message) => {
@@ -140,6 +157,8 @@ const getlist = async (message) => {
     ruleForm.hh_end = res.data.data.hh_end; //
     ruleForm.hh_end = res.data.data.hh_end; //
     ruleForm.black_count = res.data.data.black_count;
     ruleForm.black_count = res.data.data.black_count;
     ruleForm.notice_time = res.data.data.notice_time;
     ruleForm.notice_time = res.data.data.notice_time;
+    ruleForm.startTime = res.data.data.sm_start;
+    ruleForm.endTime = res.data.data.sm_end;
     ruleForm.id = res.data.data.id;
     ruleForm.id = res.data.data.id;
     if (message) {
     if (message) {
       ElMessage({
       ElMessage({
@@ -165,12 +184,17 @@ const getlist = async (message) => {
 };
 };
 
 
 const timeUpdata = async () => {
 const timeUpdata = async () => {
+  if (ruleForm.black_count <= 0) {
+    ruleForm.black_count = 1;
+  }
   let data = {
   let data = {
     yy_duration: ruleForm.yy_duration.join("~"),
     yy_duration: ruleForm.yy_duration.join("~"),
     yy_end: ruleForm.yy_end,
     yy_end: ruleForm.yy_end,
     hh_end: ruleForm.hh_end,
     hh_end: ruleForm.hh_end,
     black_count: ruleForm.black_count,
     black_count: ruleForm.black_count,
     notice_time: ruleForm.notice_time,
     notice_time: ruleForm.notice_time,
+    sm_start: ruleForm.startTime,
+    sm_end: ruleForm.endTime,
     id: ruleForm.id,
     id: ruleForm.id,
   };
   };
   // let res = await admin.adminAdd(data);
   // let res = await admin.adminAdd(data);