Parcourir la source

新增调度接口,删除调度接口

hzj18279462576@163.com il y a 3 ans
Parent
commit
870a193717

+ 5 - 7
package-lock.json

@@ -239,6 +239,11 @@
       "resolved": "https://registry.npmmirror.com/@liveqing/liveplayer-v3/-/liveplayer-v3-3.7.10.tgz",
       "integrity": "sha512-ZfgEObnH/vZJHotBXY0qY4adXTUnqHtNFsSXB7GBZ/WjOxq13saLG5NgoHjdvHiRyuhNkVzOqHZT4UmQpswoww=="
     },
+    "@popperjs/core": {
+      "version": "npm:@sxzz/popperjs-es@2.11.7",
+      "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+    },
     "@types/lodash": {
       "version": "4.14.191",
       "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz",
@@ -511,13 +516,6 @@
         "lodash-unified": "^1.0.2",
         "memoize-one": "^6.0.0",
         "normalize-wheel-es": "^1.2.0"
-      },
-      "dependencies": {
-        "@popperjs/core": {
-          "version": "npm:@sxzz/popperjs-es@2.11.7",
-          "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
-          "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
-        }
       }
     },
     "esbuild": {

+ 2 - 0
src/App.vue

@@ -1,8 +1,10 @@
 <script setup>
+import { ref, reactive, nextTick, onBeforeMount, onUnmounted } from "vue";
 import { useRouter } from "vue-router";
 import { useStore } from "vuex";
 const store = useStore();
 const router = useRouter();
+onBeforeMount(() => {});
 </script>
 
 <template>

+ 1 - 1
src/layout/index.vue

@@ -70,7 +70,6 @@ const tableData = reactive({
 });
 onBeforeMount(async () => {
   api.value = store.state.user.api;
-
   {
     let data = new FormData();
     data.set("page", 1);
@@ -150,6 +149,7 @@ onBeforeMount(async () => {
       }
     }
   }
+  store.dispatch("newsAsync");
 });
 </script>
 

+ 1 - 1
src/layout/sidebar/Navbar.vue

@@ -345,7 +345,7 @@ const loginOut = () => {
     });
 };
 
-onBeforeMount(() => {
+onMounted(() => {
   activeIndex.value = store.state.user.navbar;
   if (sessionStorage.getItem("newsNum") == 0) {
     titlenumber.value = "";

+ 1 - 1
src/layout/sidebar/SidevarItem.vue

@@ -93,7 +93,7 @@ const store = useStore();
 const router = useRouter();
 
 const menuClose = ref(false);
-const activeIndex = ref(1);
+const activeIndex = ref(9);
 const acitveItems = reactive({ list: [] });
 
 watch(

+ 49 - 26
src/store/modules/user.js

@@ -1,40 +1,63 @@
+import axios from "axios";
+
 //store/modules/user.js
+
 // 声明变量
 const state = {
-    collapse: false,
-    activeIndex:1,
-    username:'',
-    password:'',
-    api:'/carstop/carbook',
-
+  collapse: false,
+  activeIndex: 1,
+  username: "",
+  password: "",
+  api: "/carstop/carbook",
+  newsNum: "",
 };
 
 // 修改变量(state不能直接赋值修改,只能通过mutations)
 const mutations = {
-    menuClose: (state, value) => {
-        state.collapse = value;
-    },
-    indexUp: (state, value) => {
-        state.activeIndex = value;
-    },
-    userName:(state,value)=>{
-        state.username=value
-    },
-    passWord:(state,value)=>{
-        state.password=value
-    }
+  menuClose: (state, value) => {
+    state.collapse = value;
+  },
+  indexUp: (state, value) => {
+    state.activeIndex = value;
+  },
+  userName: (state, value) => {
+    state.username = value;
+  },
+  passWord: (state, value) => {
+    state.password = value;
+  },
+  newsUp: (state, value) => {
+    state.newsNum = value;
+  },
 };
 // mutations的值由actions传入(异步)
 const actions = {
-    addAsync: ({ commit }) => {
-        setTimeout(() => {
-            commit("add");
-        }, 1000);
-    },
+  addAsync: ({ commit }) => {
+    setTimeout(() => {
+      commit("add");
+    }, 1000);
+  },
+  newsAsync: async ({ commit, state }) => {
+    let data = new FormData();
+    data.set("state", 0);
+    data.set("page", 1);
+    data.set("rows", 100); //前面的key记得对应!
+    let res = await axios({
+      method: "post",
+      url: state.api + "/carBook/userqueryMes.action",
+      headers: {
+        token: sessionStorage.getItem("token"),
+      },
+      data: data,
+    });
+    commit("newsUp", res.data.total);
+    sessionStorage.setItem("newsNum", res.data.total);
+    // console.log("vuex", res.data.total);
+  },
 };
 
 export default {
-    state,
-    mutations,
-    actions,
+  state,
+  mutations,
+  actions,
 };

+ 92 - 44
src/views/buspath/buspath.vue

@@ -16,7 +16,38 @@
               ><el-icon><CirclePlus /></el-icon><span>新增路线</span></el-button
             >
           </div> -->
-          <div class="route">
+          <el-table
+            :data="pathNum.list"
+            @selection-change="handleSelectionChange"
+            style="width: 100%; --el-table-border-color: none"
+            height="138"
+            :header-cell-style="{
+              height: '40px',
+              border: 0,
+            }"
+          >
+            <el-table-column
+              align="left"
+              prop="route"
+              label="出发路线名称"
+              width="300"
+            />
+            <el-table-column label="是否候补" width="150" align="center">
+              <template #default="scope">
+                <el-switch
+                  @change="savePath(scope.row)"
+                  :disabled="false"
+                  v-model="scope.row.state"
+                  class="ml-2"
+                  style="
+                    --el-switch-on-color: rgba(61, 81, 232, 1);
+                    /* --el-switch-off-color: rgba(61, 81, 232, 1); */
+                  "
+                />
+              </template>
+            </el-table-column>
+          </el-table>
+          <!-- <div class="route">
             <div class="startRoute">
               <div class="name">出发路线名称</div>
             </div>
@@ -39,7 +70,9 @@
                     --el-switch-on-color: rgba(61, 81, 232, 1);
                     /* --el-switch-off-color: rgba(61, 81, 232, 1); */
                   "
-                  v-model="item.state"
+                  v-model="item.is_repair"
+                  :active-value="1"
+                  :inactive-value="0"
                   size="large"
                 />
               </div>
@@ -52,7 +85,7 @@
                 >
               </div>
             </div>
-          </div>
+          </div> -->
         </div>
       </div>
     </div>
@@ -297,47 +330,62 @@ const getList = async (message) => {
 };
 
 // 修改路线
-const savePath = async (id) => {
-  let augment = pathNum.list.filter((item) => {
-    return item.id == id;
-  });
-  console.log(augment[0]);
-  console.log(augment[0].state);
-  if (augment[0].state == false) {
-    augment[0].is_repair = 0;
-  } else if (augment[0].state == true) {
-    augment[0].is_repair = 1;
-  }
-  let data = new FormData();
-  data.set("route", augment[0].route);
-  data.set("is_repair", augment[0].is_repair);
-
-  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) {
-    sessionStorage.setItem("pathSelect", JSON.stringify(pathNum.list));
-    getList();
-    ElMessage({
-      type: "success",
-      showClose: true,
-      message: res.data.message,
-      center: true,
-    });
-  } else {
-    ElMessage({
-      type: "error",
-      showClose: true,
-      message: res.data.message,
-      center: true,
+const savePath = async (row) => {
+  ElMessageBox.confirm(`是否启用/取消 ${row.route} 候补`, "提示", {
+    confirmButtonText: "确认",
+    cancelButtonText: "取消",
+    type: "warning",
+  })
+    .then(async () => {
+      let augment = pathNum.list.filter((item) => {
+        return item.id == row.id;
+      });
+      if (augment[0].state == false) {
+        augment[0].is_repair = 0;
+      } else if (augment[0].state == true) {
+        augment[0].is_repair = 1;
+      }
+      let data = new FormData();
+      data.set("route", augment[0].route);
+      data.set("is_repair", augment[0].is_repair);
+      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) {
+        sessionStorage.setItem("pathSelect", JSON.stringify(pathNum.list));
+        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((action) => {
+      ElMessage({
+        type: "info",
+        message: "已取消",
+      });
+      if (row.is_repair == 0) {
+        row.state = false;
+      } else if (row.is_repair == 1) {
+        row.state = true;
+      }
     });
-  }
 };
 // 搜索功能
 const searchBtn = lodash.debounce(async () => {
@@ -590,7 +638,7 @@ onUnmounted(() => {
         // display: flex;
         // flex-wrap: wrap;
         // align-items: center;
-        margin: 15px 0 0 0;
+        margin: 10px 10px 0 10px;
         .route {
           display: flex;
           align-items: center;

+ 369 - 25
src/views/busquery/busquery.vue

@@ -4,6 +4,125 @@
       <!-- <el-icon :size="23" class="camera"><UserFilled /></el-icon> -->
       <span class="cameratxt">车辆调度</span>
     </div>
+    <!-- 新增车辆调度 -->
+    <el-dialog
+      class="sendBus"
+      v-model="addBusqueryVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      title="新增调度"
+      align-center
+      width="600"
+      :before-close="editCloseQuery"
+    >
+      <el-form
+        ref="ruleFormRefQuery"
+        :model="ruleFormQuery"
+        :rules="rulesQuery"
+        label-width="150px"
+        class="demo-ruleForm"
+        :size="formSize"
+        label-position="left"
+        status-icon
+      >
+        <!-- <el-form-item label="发车日期 :" prop="startDate">
+          <el-date-picker
+            v-model="ruleFormQuery.startDate"
+            type="date"
+            placeholder="请选择发车日期"
+            format="YYYY-DD-MM"
+            value-format="YYYY-DD-MM"
+          />
+        </el-form-item> -->
+        <el-form-item label="发车时间 :" prop="ci_time">
+          <el-time-picker
+            v-model="ruleFormQuery.ci_time"
+            placeholder="请选择发车时间"
+            format="HH:mm"
+            value-format="HH:mm"
+          />
+        </el-form-item>
+        <el-form-item label="车牌号 :" prop="busname">
+          <el-select
+            v-model="ruleFormQuery.busname"
+            class="m-2"
+            placeholder="请选择车牌号"
+          >
+            <el-option
+              :label="item.car_number"
+              :value="item.car_number"
+              v-for="item in busNum.list"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="容量 :" prop="volume">
+          <el-input
+            v-model="ruleFormQuery.volume"
+            placeholder="请输入容量"
+            clearable
+            :disabled="true"
+          />
+        </el-form-item>
+        <el-form-item label="路线 :" prop="route">
+          <el-select
+            v-model="ruleFormQuery.route"
+            class="m-2"
+            placeholder="请选择路线"
+          >
+            <el-option
+              :label="item.route"
+              :value="item.route"
+              v-for="item in pathNum.list"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="终点站 :" prop="destination">
+          <el-select
+            v-model="ruleFormQuery.destination"
+            class="m-2"
+            placeholder="请选择终点站"
+          >
+            <el-option
+              :label="item.route_end"
+              :value="item.route_end"
+              v-for="item in addendNum.list"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          label="是否可提前一天预约"
+          prop="yesterday"
+          class="yesterday"
+          style="
+            padding-bottom: 20px;
+            border-bottom: 1px solid rgba(230, 230, 230, 1);
+          "
+        >
+          <el-switch
+            v-model="ruleFormQuery.yesterday"
+            size="large"
+            style="
+              --el-switch-on-color: rgba(61, 81, 232, 1);
+              /* --el-switch-off-color: rgba(61, 81, 232, 1); */
+            "
+          />
+        </el-form-item>
+        <el-form-item class="options">
+          <el-button class="congzhi" @click="editCloseQuery(ruleFormRefQuery)"
+            >取消</el-button
+          >
+          <el-button
+            color="rgba(61, 81, 232, 1)"
+            class="queding"
+            type="primary"
+            @click="submitAddQuery(ruleFormRefQuery)"
+          >
+            确定
+          </el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
     <!-- 候补派车 -->
     <el-dialog
       class="sendBus"
@@ -78,8 +197,8 @@
             placeholder="请选择终点站"
           >
             <el-option
-              :label="item"
-              :value="item"
+              :label="item.route_end"
+              :value="item.route_end"
               v-for="item in endNum.list"
             />
           </el-select>
@@ -101,6 +220,16 @@
       </el-form>
     </el-dialog>
     <div class="MingXi" style="height: 652px; margin: 10px 0 20px 0">
+      <div class="">
+        <el-button
+          style="margin: 10px 0 0 30px"
+          color="rgba(61, 81, 232, 1)"
+          type="primary"
+          class="search"
+          @click="addQuery"
+          ><el-icon><CirclePlus /></el-icon><span>新增调度</span></el-button
+        >
+      </div>
       <div class="footer">
         <el-table
           :row-class-name="tableRowClassName"
@@ -175,24 +304,27 @@
               <div v-if="scope.row.state == 4" style="color: #ccc">已分车</div>
             </template>
           </el-table-column>
-          <el-table-column align="center" label="操作" width="120">
+          <el-table-column align="center" label="操作" width="180">
             <template #default="scope">
               <el-button link type="primary" @click="sendBus(scope.row)"
                 ><div class="look">调度</div></el-button
               >
+              <el-button link type="primary" @click="del(scope.row)"
+                ><div class="look">删除</div></el-button
+              >
             </template>
           </el-table-column>
         </el-table>
       </div>
     </div>
-    <el-pagination
+    <!-- <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>
 </template>
 
@@ -220,12 +352,15 @@ const searchInput = reactive({
 const busNum = reactive({ list: [] }); // 车牌号
 const pathNum = reactive({ list: [] }); // 路线
 const endNum = reactive({ list: [] }); // 终点站
+const addendNum = reactive({ list: [] }); // 新增调度终点站
 
 // 表格数据
 const tableData = reactive({
   list: [], //汇总数据
 });
 
+const addBusqueryVisible = ref(false); // 新增车辆调度弹窗
+
 const dialongTitle = ref("车辆调度"); // 弹窗标题
 const centerDialogVisible = ref(false); // 候补弹窗显示
 const initials = reactive({
@@ -246,7 +381,8 @@ const selectData = reactive({ list: [] }); // 多选框选择的数据
 // 表单数据
 const formSize = ref("default");
 const ruleFormRef = ref();
-
+const ruleFormRefQuery = ref();
+// 派车调度数据
 const ruleForm = reactive({
   busname: [], //候补弹窗车牌绑定数据
   volume: "",
@@ -256,6 +392,15 @@ const ruleForm = reactive({
   state: "",
   id: "",
 });
+// 新增车辆调度数据
+const ruleFormQuery = reactive({
+  busname: "", //候补弹窗车牌绑定数据
+  ci_time: "", // 发车时间
+  volume: "",
+  route: "",
+  destination: "",
+  yesterday: false,
+});
 // 表单验证
 const rules = reactive({
   ci_time: [
@@ -299,6 +444,110 @@ const rules = reactive({
     },
   ],
 });
+const rulesQuery = reactive({
+  ci_time: [
+    {
+      required: true,
+      message: "发车时间不能为空",
+      trigger: "blur",
+    },
+  ],
+  busname: [
+    {
+      required: true,
+      message: "车牌号不能为空",
+      trigger: "blur",
+    },
+  ],
+  volume: [
+    {
+      required: true,
+      message: "容量不能为空",
+      trigger: "blur",
+    },
+    {
+      pattern: /^(0|[1-9][0-9]*)$/,
+      message: "请输入正确数字",
+      trigger: "blur",
+    },
+  ],
+  route: [
+    {
+      required: true,
+      message: "路线不能为空",
+      trigger: "blur",
+    },
+  ],
+  destination: [
+    {
+      required: true,
+      message: "请选择终点站",
+      trigger: "change",
+    },
+  ],
+});
+
+// 监控派车弹窗选择车牌时容量发生变化
+watch(
+  () => ruleForm.busname,
+  (newValue, oldValue) => {
+    // console.log("person的job变化了", newValue);
+    let volume = 0;
+    newValue.forEach((item) => {
+      busNum.list.forEach((i) => {
+        if (item == i.car_number) {
+          volume = volume + i.contain;
+        }
+      });
+    });
+    // console.log(volume);
+    ruleForm.volume = volume;
+  }
+);
+// 监控车牌号
+watch(
+  () => ruleFormQuery.busname,
+  (newValue, oldValue) => {
+    console.log(newValue);
+    if (!newValue == "") {
+      let arr = busNum.list.filter((item) => {
+        return item.car_number == newValue;
+      });
+      // console.log(arr);
+      if (arr == []) {
+      } else {
+        ruleFormQuery.volume = arr[0].contain;
+      }
+    }
+  }
+);
+
+// 监控新增车辆调度路线
+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;
+    });
+  }
+);
+// 监控调度路线
+// watch(
+//   () => ruleForm.route,
+//   (newValue, oldValue) => {
+//     console.log(oldValue);
+//     let arr = JSON.parse(sessionStorage.getItem("route_endSelect"));
+//     console.log(arr);
+//     endNum.list = arr.filter((item) => {
+//       return item.route == newValue;
+//     });
+//   }
+// );
 
 // 获取数据列表
 const getList = async () => {
@@ -364,6 +613,11 @@ const handleSelectionChange = (val) => {
   selectData.list = val;
 };
 
+// 新增车辆调度
+const addQuery = () => {
+  addBusqueryVisible.value = true;
+};
+
 // 派车按钮
 const sendBus = (row) => {
   console.log(row);
@@ -424,6 +678,111 @@ const submitAdd = async (formEl) => {
   });
 };
 
+// 新增车辆调度弹窗关闭
+const editCloseQuery = () => {
+  addBusqueryVisible.value = false;
+  ruleFormRefQuery.value.resetFields();
+};
+// 确认新增车辆调度
+const submitAddQuery = async (formEl) => {
+  if (!formEl) return;
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      let yesterday = 0;
+      if (ruleFormQuery.yesterday == true) {
+        yesterday = 1;
+      } else if (ruleFormQuery.yesterday == false) {
+        yesterday = 0;
+      }
+      let data = {
+        car_number: ruleFormQuery.busname,
+        ci_time: ruleFormQuery.ci_time,
+        contain: ruleFormQuery.volume,
+        route: ruleFormQuery.route,
+        route_end: ruleFormQuery.destination,
+        before_state: yesterday,
+      };
+      let res = await axios({
+        method: "post",
+        url: api.value + "/carBook/scheinsert.action",
+        headers: {
+          "Content-Type": "application/json;charset=utf-8",
+          token: sessionStorage.getItem("token"),
+        },
+        data: data,
+      });
+      if (res.data.code == 200) {
+        getList();
+        ElMessage({
+          type: "success",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+        addBusqueryVisible.value = false;
+        ruleFormRefQuery.value.resetFields();
+      } else {
+        ElMessage({
+          type: "error",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+      }
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
+};
+
+//删除按钮
+const del = (row) => {
+  console.log(row);
+  ElMessageBox.confirm(`是否删除 ${row.car_number} 车辆?`, "提示", {
+    confirmButtonText: "确认",
+    cancelButtonText: "取消",
+    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"),
+        },
+        data: data,
+      });
+      if (res.data.code == 200) {
+        // if (tableData.list.length == 1 && currentPage.value != 1) {
+        //   currentPage.value = currentPage.value - 1;
+        // }
+        getList();
+        ElMessage({
+          type: "success",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+      } else {
+        ElMessage({
+          type: "error",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+      }
+      console.log(res);
+    })
+    .catch(() => {
+      ElMessage({
+        type: "info",
+        message: "已取消删除",
+      });
+    });
+};
+
 // 导出按钮
 // const downLoad = lodash.debounce(async () => {
 //   let data = new FormData();
@@ -489,30 +848,14 @@ const tableRowClassName = ({ row, rowIndex }) => {
 const handleCurrentChange = (value) => {
   currentPage.value = value;
 };
-// 监控派车弹窗选择车牌时容量发生变化
-watch(
-  () => ruleForm.busname,
-  (newValue, oldValue) => {
-    // console.log("person的job变化了", newValue);
-    let volume = 0;
-    newValue.forEach((item) => {
-      busNum.list.forEach((i) => {
-        if (item == i.car_number) {
-          volume = volume + i.contain;
-        }
-      });
-    });
-    // console.log(volume);
-    ruleForm.volume = volume;
-  }
-);
+
 onBeforeMount(() => {
   api.value = store.state.user.api;
   pathNum.list = JSON.parse(sessionStorage.getItem("pathSelect"));
   busNum.list = JSON.parse(sessionStorage.getItem("busSelect"));
   let route_endSelect = JSON.parse(sessionStorage.getItem("route_endSelect"));
-  route_endSelect.forEach((item) => {
-    endNum.list.push(item.route_end);
+  endNum.list = route_endSelect.filter((item) => {
+    return item.route == ruleForm.route;
   });
   busNum.list.forEach((item) => {
     initials.list.push(item.car_number);
@@ -541,6 +884,7 @@ onBeforeMount(() => {
     width: calc(100wh - 40px);
     display: flex;
     align-items: center;
+    justify-content: space-between;
     height: 60px;
     margin: 0 30px;
     // padding: 10px 0;

+ 137 - 18
src/views/classes/classes.vue

@@ -81,7 +81,8 @@
         <el-table-column label="是否启用" width="150" align="center">
           <template #default="scope">
             <el-switch
-              disabled
+              @change="startClasses(scope.row)"
+              :disabled="false"
               v-model="scope.row.states"
               class="ml-2"
               style="
@@ -760,6 +761,7 @@ const rulesBus = reactive({
   // ],
 });
 
+// 监控车牌号
 watch(
   () => ruleFormBus.busnumber,
   (newValue, oldValue) => {
@@ -777,6 +779,19 @@ 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;
+    });
+  }
+);
+
 // 获取班次列表
 const getList = async (message) => {
   let data = new FormData();
@@ -836,6 +851,7 @@ const getList = async (message) => {
 // 返回班次按钮
 const backClass = () => {
   addShow.value = true;
+  getList();
 };
 
 // 搜索功能
@@ -851,6 +867,63 @@ const searchRefresh = lodash.debounce(async () => {
   getList();
 }, 300);
 
+// 表格页面启用班次开关
+const startClasses = (row) => {
+  ElMessageBox.confirm(`是否启用/取消 ${row.name} 班次`, "提示", {
+    confirmButtonText: "确认",
+    cancelButtonText: "取消",
+    type: "warning",
+  })
+    .then(async () => {
+      if (row.states == true) {
+        row.state = 1;
+      } else if (row.states == false) {
+        row.state = 0;
+      }
+      let data = {
+        id: row.id,
+        state: row.state,
+      };
+      let res = await axios({
+        method: "post",
+        url: api.value + "/carBook/bcupdatestate.action",
+        headers: {
+          "Content-Type": "application/json;charset=utf-8",
+          token: sessionStorage.getItem("token"),
+        },
+        data: data,
+      });
+      console.log(res.data);
+      if (res.data.code == 200) {
+        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((action) => {
+      ElMessage({
+        type: "info",
+        message: "已取消",
+      });
+      if (row.state == 0) {
+        row.states = false;
+      } else if (row.state == 1) {
+        row.states = true;
+      }
+    });
+};
+
 //新增班次
 const addClass = async () => {
   dialongTitle.value = "新增班次";
@@ -884,7 +957,7 @@ const particulars = (row) => {
   console.log(row);
   dialongTitle.value = "班次详情";
   ruleForm.id = row.id;
-  getbusList();
+  getbusList(100);
   particularsDialog.value = true;
 };
 // 取消班次详情
@@ -993,13 +1066,19 @@ const del = (row) => {
 
 // 新增车次页面功能
 // 车次数据列表
-const getbusList = async () => {
+const getbusList = async (pageSize) => {
   let data = new FormData();
   if (searchInput.createTime == null) {
     searchInput.createTime = "";
   }
+  data.set("b_id", ruleForm.id);
   data.set("page", currentPage2.value);
-  data.set("rows", pageSize2.value); //前面的key记得对应!
+  if (pageSize) {
+    data.set("rows", pageSize);
+  } else {
+    data.set("rows", pageSize2.value);
+  }
+  //前面的key记得对应!
   let res = await axios({
     method: "post",
     url: api.value + "/carBook/cclist.action",
@@ -1008,18 +1087,22 @@ const getbusList = async () => {
     },
     data: data,
   });
-  // console.log(res, "车次");
+  console.log(res, "车次");
   if (res.status == 200) {
-    let data = res.data.rows;
-    tableData.buslist = data.filter((item) => {
-      let weekarr = [];
-      item.week.split(",").forEach((item) => {
-        weekarr.push(checkweeks.value[item - 1]);
+    tableData.buslist = res.data.rows;
+    if (res.data.rows == []) {
+      tableData.buslist = [];
+    } else {
+      tableData.buslist.forEach((item) => {
+        let weekarr = [];
+        item.week.split(",").forEach((item) => {
+          weekarr.push(checkweeks.value[item - 1]);
+        });
+        item.weekarr = weekarr.join(",");
       });
-      item.weekarr = weekarr.join(",");
-      return ruleForm.id == item.b_id;
-    });
-    total2.value = tableData.buslist.length;
+    }
+
+    total2.value = res.data.total;
   } else {
     ElMessage({
       type: "error",
@@ -1141,6 +1224,14 @@ const addbus = (row) => {
   busdialogTitle.value = "新增车次";
   ruleFormBus.id = "";
   busdialog.value = true;
+  ruleFormBus.busnumber = "";
+  ruleFormBus.contain = "";
+  ruleFormBus.startTime = "";
+  ruleFormBus.route = "";
+  ruleFormBus.busterminus = "";
+  ruleFormBus.yesterday = "";
+  ruleFormBus.weeks = [];
+  ruleFormBus.id = "";
   console.log(ruleForm.id);
 };
 // 编辑车次功能
@@ -1310,10 +1401,38 @@ const busdel = (row) => {
         if (tableData.buslist.length == 1 && currentPage2.value != 1) {
           currentPage2.value = currentPage2.value - 1;
         }
-        // if (tableData.buslist.length == 1) {
-        //   ruleForm.ClassSwitch == false;
-        //   busSave();
-        // }
+        if (tableData.buslist.length == 1) {
+          let datas = {
+            id: ruleForm.id,
+            state: 0,
+          };
+          let resdata = await axios({
+            method: "post",
+            url: api.value + "/carBook/bcupdatestate.action",
+            headers: {
+              "Content-Type": "application/json;charset=utf-8",
+              token: sessionStorage.getItem("token"),
+            },
+            data: datas,
+          });
+          console.log(resdata.data);
+          if (resdata.data.code == 200) {
+            ruleForm.ClassSwitch = false;
+            // ElMessage({
+            //   type: "success",
+            //   showClose: true,
+            //   message: res.data.message,
+            //   center: true,
+            // });
+          } else {
+            ElMessage({
+              type: "error",
+              showClose: true,
+              message: resdata.data.message,
+              center: true,
+            });
+          }
+        }
         getbusList();
         ElMessage({
           type: "success",

+ 3 - 3
src/views/login/index.vue

@@ -134,12 +134,12 @@ const submitForm = (formEl) => {
         }
         sessionStorage.setItem("token", res.data.access_token);
         sessionStorage.setItem("username", res.data.data[0].number);
-        sessionStorage.setItem("sidevarItem", 1);
-        store.commit("indexUp", 1);
+        sessionStorage.setItem("sidevarItem", 9);
+        store.commit("indexUp", 9);
         store.commit("userName", res.data.data[0].number);
         store.commit("passWord", res.data.data[0].password);
         router.push({
-          path: `/schoolBus/statement`,
+          path: `/schoolBus/busquery`,
         });
         ElMessage({
           type: "success",

+ 20 - 12
src/views/news/news.vue

@@ -303,10 +303,10 @@ const rules = reactive({
   ],
   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
 });
-// 获取摄像头列表
+// 获取消息列表
 const getList = async () => {
   let data = new FormData();
-  console.log(searchInput.state === 0);
+  // console.log(searchInput.state === 0);
 
   data.set("create_time", searchInput.createTime);
   if (searchInput.state == 2 || searchInput.state == "全部") {
@@ -331,15 +331,15 @@ const getList = async () => {
     } else {
       currentPage.value = 1;
     }
-    if (tableData.list) {
-      let newsArr = tableData.list.filter((item) => {
-        return item.state == 0;
-      });
-      console.log(newsArr.length);
-      sessionStorage.setItem("newsNum", newsArr.length);
-    } else {
-      sessionStorage.setItem("newsNum", 0);
-    }
+    // if (tableData.list) {
+    //   let newsArr = tableData.list.filter((item) => {
+    //     return item.state == 0;
+    //   });
+    //   console.log(newsArr.length);
+    //   sessionStorage.setItem("newsNum", newsArr.length);
+    // } else {
+    //   sessionStorage.setItem("newsNum", 0);
+    // }
     total.value = res.data.total;
   } else {
     tableData.list = res.data.rows;
@@ -430,6 +430,10 @@ const look = async (row) => {
   });
   console.log(res);
   if (res.status == 200) {
+    store.dispatch("newsAsync");
+    router.push({
+      path: `/schoolBus/statement`,
+    });
   } else {
     ElMessage({
       type: "error",
@@ -452,6 +456,7 @@ const allLook = async (row) => {
   });
   console.log(res);
   if (res.status == 200) {
+    store.dispatch("newsAsync");
   } else {
     ElMessage({
       type: "error",
@@ -478,7 +483,10 @@ const tableRowClassName = ({ row, rowIndex }) => {
   return "";
 };
 // 分页
-const handleCurrentChange = (value) => {};
+const handleCurrentChange = (value) => {
+  currentPage.value = value;
+  getList();
+};
 
 onBeforeMount(() => {
   api.value = store.state.user.api;

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

@@ -266,7 +266,8 @@ const rules = reactive({
   phone: [
     { 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}$/,
       message: "请输入合法手机号/电话号",
       trigger: "blur",
     },
@@ -275,7 +276,7 @@ const rules = reactive({
     {
       required: true,
       message: "职位不能为空",
-      trigger: "change",
+      trigger: "blur",
     },
   ],
 

+ 1 - 1
src/views/statement/statement.vue

@@ -504,7 +504,7 @@ const pageSize2 = ref(10);
 const currentPage2 = ref(1); // 当前页
 const total2 = ref(10); // 当前总数
 
-const footerMenuIndex = ref(0); // 控制汇总和明细列表
+const footerMenuIndex = ref(1); // 控制汇总和明细列表
 // 表单数据
 const formSize = ref("default");
 const ruleFormRef = ref();