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

Merge branch 'master' of http://git.xt.wenhq.top:8083/wenhongquan/khyznh-ui

liwei19941102 2 лет назад
Родитель
Сommit
6c1ea0e50b
5 измененных файлов с 833 добавлено и 748 удалено
  1. 1 0
      package.json
  2. 5 5
      src/assets/styles/index.scss
  3. 3 0
      src/main.ts
  4. 252 192
      src/views/statics/index.vue
  5. 572 551
      src/views/statics/passengerFlow.vue

+ 1 - 0
package.json

@@ -19,6 +19,7 @@
   "dependencies": {
     "@amap/amap-jsapi-loader": "^1.0.1",
     "@element-plus/icons-vue": "2.1.0",
+    "@layui/layui-vue": "^2.18.3",
     "@vueup/vue-quill": "1.2.0",
     "@vueuse/core": "9.5.0",
     "animate.css": "4.1.1",

+ 5 - 5
src/assets/styles/index.scss

@@ -35,11 +35,11 @@ html.dark svg {
   height: 100%;
 }
 
-*,
-*:before,
-*:after {
-  box-sizing: inherit;
-}
+// *,
+// *:before,
+// *:after {
+//   box-sizing: inherit;
+// }
 
 .no-padding {
   padding: 0px !important;

+ 3 - 0
src/main.ts

@@ -32,6 +32,8 @@ import { parseTime, addDateRange, handleTree, selectDictLabel, selectDictLabels
 import { getElementLabelLine } from 'element-tree-line';
 // css
 import 'element-tree-line/dist/style.css';
+import Layui from '@layui/layui-vue';
+import '@layui/layui-vue/lib/index.css';
 
 // 国际化
 import i18n from '@/lang/index';
@@ -55,6 +57,7 @@ app.use(router);
 app.use(store);
 app.use(i18n);
 app.use(plugins);
+app.use(Layui);
 
 const ElementLabelLine = getElementLabelLine(h);
 app.component(ElementLabelLine.name, ElementLabelLine);

+ 252 - 192
src/views/statics/index.vue

@@ -2,239 +2,299 @@
 <template>
   <div class="p-2" style="padding: 10px">
     <div style="display: flex; flex-direction: row">
-      <div style="width: 20%;">
+      <div style="width: 20%">
         <div class="card-header">
           <div style="display: flex; flex-direction: row">
             <div style="width: 4px; height: 19px; opacity: 1; background: #409eff"></div>
-            <span style="
+            <span
+              style="
                 font-family: PingFang SC;
                 font-size: 14px;
                 font-weight: normal;
                 line-height: 19px;
                 height: 19px;
                 margin-left: 5px;
-              ">车辆列表</span>
+              "
+              >车辆列表</span
+            >
           </div>
         </div>
-        <div style="margin-top: 20px; padding-left: 10px;">
-          <el-tree-select v-model="deptId" :data="deptOptions" @change="changeDept"
-            :props="{ value: 'id', label: 'label', children: 'children' }" value-key="id" placeholder="请选择归属部门"
-            check-strictly />
-          <el-input style="margin-top: 10px;" v-model="filterText" placeholder="输入关键字" />
-          <el-tree-v2 v-if="showTree" style="margin-top: 10px;" ref="treeRef" class="filter-tree"
-            :height="gettreeheight()" :data="data" :indent="treeIndent" :props="defaultProps"
-            :filter-method="filterNode" @node-click="treeclick">
+        <div style="margin-top: 20px; padding-left: 10px">
+          <!-- <el-tree-select
+            v-model="deptId"
+            :data="deptOptions"
+            @change="changeDept"
+            :props="{ value: 'id', label: 'label', children: 'children' }"
+            value-key="id"
+            placeholder="请选择归属部门"
+            check-strictly
+          /> -->
+          <el-input
+            style="margin-top: 10px"
+            v-model="filterText"
+            placeholder="输入关键字"
+          />
+          <div style="max-height: 80vh;overflow-y: scroll">
+            <lay-tree
+              :data="data"
+              ref="treeRef"
+              :tail-node-icon="false"
+              :onlyIconControl="true"
+              :default-expand-all="true"
+              v-model:selectedKey="keys"
+              :searchNodeMethod="filterNode"
+              @node-click="treeclick"
+            >
+              <template #title="{ data }">
+                <div>
+                  <span>{{ data.title }}</span>
+                  <el-tag
+                    v-if="data.time != undefined"
+                    style="margin-left: 20px"
+                    :type="data.time == '在线' ? 'success' : 'danger'"
+                  >
+                    {{ data.time }}
+                  </el-tag>
+                </div>
+              </template>
+            </lay-tree>
+          </div>
+          <!-- <el-tree-v2
+
+            style="margin-top: 10px"
+            ref="treeRef"
+            class="filter-tree"
+            :default-expanded-keys="keys"
+            :height="gettreeheight()"
+            :data="data"
+            :indent="treeIndent"
+            :props="defaultProps"
+            :filter-method="filterNode"
+            @node-click="treeclick"
+          >
             <template v-slot:default="{ node }">
-              <element-tree-line :node="node" :treeData="data" :showLabelLine="false" :indent="treeIndent">
-                <div><span>{{node.label}}</span> <el-tag style="margin-left: 20px;"
-                    :type="node.data.time=='在线'?'success':'danger'"> {{ node.data.time }}</el-tag></div>
+              <element-tree-line
+                :node="node"
+                :treeData="data"
+                :showLabelLine="true"
+                :indent="treeIndent"
+              >
+                <div>
+                  <span>{{ node.label }}</span>
+                  <el-tag
+                    v-if="node.data.time"
+                    style="margin-left: 20px"
+                    :type="node.data.time == '在线' ? 'success' : 'danger'"
+                  >
+                    {{ node.data.time }}</el-tag
+                  >
+                </div>
               </element-tree-line>
             </template>
-          </el-tree-v2>
+          </el-tree-v2> -->
         </div>
       </div>
       <div style="width: 77%; margin-left: 2%">
         <div class="card-header">
-          <div style="display: flex; flex-direction: row;position: relative">
+          <div style="display: flex; flex-direction: row; position: relative">
             <div style="width: 4px; height: 19px; opacity: 1; background: #409eff"></div>
-            <span style="
+            <span
+              style="
                 font-family: PingFang SC;
                 font-size: 14px;
                 font-weight: normal;
                 line-height: 19px;
                 height: 19px;
                 margin-left: 5px;
-              ">车辆视频</span>
-            <span style="margin-left: 30px; font-size: 14px">{{ currentdata?.label }}</span>
-            <div style="margin-top: 20px">
-
-
-
-            </div>
-
-
+              "
+              >车辆视频</span
+            >
+            <span style="margin-left: 30px; font-size: 14px">{{
+              currentdata?.label
+            }}</span>
+            <div style="margin-top: 20px"></div>
           </div>
-
         </div>
-        <div id="container" style="margin-top: 20px;width:100%;height:80vh"></div>
-
+        <div id="container" style="margin-top: 20px; width: 100%; height: 80vh"></div>
       </div>
     </div>
-
   </div>
 </template>
 
 <script setup>
-  import { listCarInfo } from '@/api/carInfo';
-  import moment from 'moment';
-  import api from "@/api/system/user"
-  // import { DeptVO } from "@/api/system/dept/types";
-
-
-  const carlist = ref([]);
-  const carData = ref([])
-
-  const showTree = ref(true)
-
-  const filterText = ref("");
-  const treeRef = ref(null);
-
-  const deptOptions = ref([]);
-
-  const deptId = ref([])
-
-  const gettreeheight = () => {
-    return document.body.clientHeight - 300;
-  }
-
-
-  const getTreeSelect = async () => {
-    const res = await api.deptTreeSelect();
-    console.log(res)
-    deptOptions.value = res.data;
-  };
-
-
-
-  const initData = async () => {
-    listCarInfo({ pageSize: 1000000 }).then(res => {
-      carData.value = carlist.value = res.rows.filter(i => {
-        var hsin = false;
-        if (i.deviceInfos) {
-          JSON.parse(i.deviceInfos).forEach(item => {
-            if (item.type == "camera") {
-              hsin = true;
-              return true;
-            }
-          })
-        }
-        return hsin;
-
-      });
-      carlist.value = res.rows.filter(i => {
-        var hsin = false;
-        if (i.deviceInfos) {
-          JSON.parse(i.deviceInfos).forEach(item => {
-            if (item.type == "camera") {
-              hsin = true;
-              return true;
-            }
+import { listCarInfo } from "@/api/carInfo";
+import moment from "moment";
+import api from "@/api/system/user";
+
+const carlist = ref([]);
+const carData = ref([]);
+
+const showTree = ref(true);
+
+const filterText = ref("");
+const treeRef = ref(null);
+
+const deptOptions = ref([]);
+
+const deptId = ref([]);
+const keys = ref();
+
+const gettreeheight = () => {
+  return document.body.clientHeight - 300;
+};
+
+const getTreeSelect = async () => {
+  const res = await api.deptTreeSelect();
+  console.log(res);
+  deptOptions.value = res.data;
+};
+
+const initData = async () => {
+  getTreeSelect();
+  listCarInfo({ pageSize: 1000000 }).then((res) => {
+    carData.value = carlist.value = res.rows.filter((i) => {
+      var hsin = false;
+      if (i.deviceInfos) {
+        JSON.parse(i.deviceInfos).forEach((item) => {
+          if (item.type == "camera") {
+            hsin = true;
+            return true;
+          }
+        });
+      }
+      return hsin;
+    });
+
+    var keyp = [100];
+    var index = 0;
+    deptOptions.value[0]["title"] = deptOptions.value[0]["label"];
+    deptOptions.value[0].children.forEach((p) => {
+      p["title"] = p.label;
+      p["children"] = (p.children ?? []).concat(
+        carlist.value
+          .filter((i) => JSON.parse(i.ext1).deptId == p.id)
+          .map((i) => {
+            keyp.push(p.id);
+            return {
+              id: `car_${++index}`,
+              title: i.carNum,
+              deviceInfos: i.deviceInfos,
+              time:
+                i.lastCountTime == null
+                  ? "离线"
+                  : moment().unix() - moment(i.lastCountTime).unix() > 60 * 5
+                  ? "离线"
+                  : "在线",
+            };
           })
-        }
-        return hsin;
-
-      });
-
-    }
-    );
-  }
-
-
-  const defaultProps = {
-    children: "children",
-    label: "label",
-    value: 'id',
-  };
-  const treeIndent = ref(40);
-
-  watch(filterText, (val) => {
-    if (treeRef.value) {
-      treeRef.value.filter(val);
-    }
+      );
+    });
+    data.value = deptOptions.value;
+    keys.value = keyp;
+    setTimeout(() => {
+      treeRef.value.setExpandedKeys(keys.value);
+    }, 10000);
+
+    // carlist.value = res.rows.filter(i => {
+    //   var hsin = false;
+    //   if (i.deviceInfos) {
+    //     JSON.parse(i.deviceInfos).forEach(item => {
+    //       if (item.type == "camera") {
+    //         hsin = true;
+    //         return true;
+    //       }
+    //     })
+    //   }
+    //   return hsin
+
+    // });
   });
+};
+
+const defaultProps = {
+  children: "children",
+  label: "label",
+  value: "id",
+};
+const treeIndent = ref(40);
+
+watch(filterText, (val) => {
+  if (treeRef.value) {
+    treeRef.value.filter(val);
+  }
+});
 
-  const currenturl = ref("");
-
-
-  const filterNode = (value, node) => {
-    if (node.id == 1) return true;
-    return node.label.indexOf(value) != -1;
-  };
-
-  const currentdata = ref(null)
-
+const currenturl = ref("");
 
-  const treeclick = (data, node) => {
-    if (data.deviceInfos) {
-      JSON.parse(data.deviceInfos).forEach(item => {
+const filterNode = (node, value) => {
+  if (node.id == 1) return true;
+  return node.title.indexOf(value) != -1;
+};
 
-        if (item.type == "camera") {
-          currenturl.value = item.code;
-          jessibuca.play(currenturl.value);
-        }
-      })
-    }
-  }
+const currentdata = ref(null);
 
-  const changeDept = () => {
-    var carListData = []
-    for(var index in carData.value){
-        var carDataObj = JSON.parse(carData.value[index].ext1)
-        if(carDataObj.deptId){
-          if(carDataObj.deptId == deptId.value){
-            carListData.push(carData.value[index])
-          }
-        }
-    } 
-    carlist.value = carListData
-    // console.log(carListData)
+const treeclick = (data, node) => {
+  if (data.deviceInfos) {
+    JSON.parse(data.deviceInfos).forEach((item) => {
+      if (item.type == "camera") {
+        currenturl.value = item.code;
+        jessibuca.play(currenturl.value);
+      }
+    });
   }
-
-
-  const data = computed(() => {
-    let index = 0;
-    return carlist.value.map(i => { return { id: ++index, label: i.carNum, deviceInfos: i.deviceInfos, time: i.lastCountTime == null ? "离线" : ((moment().unix() - moment(i.lastCountTime).unix()) > 60 * 5 ? "离线" : "在线") } })
-  });
-  var jessibuca = null;
-  onMounted(() => {
-    initData();
-    getTreeSelect();
-    var $container = document.getElementById('container');
-    jessibuca = new Jessibuca({
-      container: $container,
-      videoBuffer: 0.2, // 缓存时长
-      isResize: false,
-      text: "",
-      decoder: "/jess/decoder.js",
-      loadingText: "",
-      useMSE: false,
-      debug: true,
-      showBandwidth: true, // 显示网速
-      operateBtns: {
-        fullscreen: true,
-        screenshot: false,
-        play: true,
-        audio: false,
-        recorder: false
-      },
-      forceNoOffscreen: true,
-      isNotMute: false,
-    },);
-    // if (treeRef.value) {
-    //   setTimeout(() => {
-    //     treeRef.value.expandNode(treeRef.value.getNode(1))
-    //   }, 100);
-    //   getSites();
-    //   initData();
-    //   // treeRef.value.expandNode(treeRef.value.getNode(1))
-    // }
+};
+
+const data = ref([]);
+var jessibuca = null;
+onMounted(() => {
+  initData();
+  // getTreeSelect();
+  var $container = document.getElementById("container");
+  jessibuca = new Jessibuca({
+    container: $container,
+    videoBuffer: 0.2, // 缓存时长
+    isResize: false,
+    text: "",
+    decoder: "/jess/decoder.js",
+    loadingText: "",
+    useMSE: false,
+    debug: true,
+    showBandwidth: true, // 显示网速
+    operateBtns: {
+      fullscreen: true,
+      screenshot: false,
+      play: true,
+      audio: false,
+      recorder: false,
+    },
+    forceNoOffscreen: true,
+    isNotMute: false,
   });
+  // if (treeRef.value) {
+  //   setTimeout(() => {
+  //     treeRef.value.expandNode(treeRef.value.getNode(1))
+  //   }, 100);
+  //   getSites();
+  //   initData();
+  //   // treeRef.value.expandNode(treeRef.value.getNode(1))
+  // }
+});
 </script>
 
 <style lang="scss" scoped>
-  #container {
-    background: rgba(13, 14, 27, 0.7);
-    width: 50vw;
-    height: 398px;
-  }
-
-  .card-header {
-    display: flex;
-    flex-direction: row;
-    justify-content: space-between;
-  }
-
-  .boxunused {
-    background: #3333332d;
-  }
-</style>
+#container {
+  background: rgba(13, 14, 27, 0.7);
+  width: 50vw;
+  height: 398px;
+}
+
+.card-header {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+
+.boxunused {
+  background: #3333332d;
+}
+</style>

+ 572 - 551
src/views/statics/passengerFlow.vue

@@ -1,188 +1,227 @@
 <template>
-    <div class="p-2">
-        <el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick">
-            <el-tab-pane label="车辆客流数据" name="first">
-                <div>
-                    <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
-                        :leave-active-class="proxy?.animate.searchAnimate.leave">
-                        <div class="search" v-show="showSearch" style="display: flex;flex-direction: row;">
-                            <div style="width: 80%;">
-                                <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
-                                    <!-- <el-form-item label="路线">
+  <div class="p-2">
+    <el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick">
+      <el-tab-pane label="车辆客流数据" name="first">
+        <div>
+          <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
+            <div class="search" v-show="showSearch" style="display: flex;flex-direction: row;">
+              <div style="width: 80%;">
+                <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
+                  <!-- <el-form-item label="路线">
                                         <el-select v-model="line" placeholder="请选择路线" style="width: 120px">
                                             <el-option v-for="item in carPathList" :key="item.id" :label="item.name"
                                                 :value="item.id" />
                                         </el-select>
                                     </el-form-item> -->
-                                    <el-form-item label="车辆">
-                                        <el-select v-model="queryParams.carNum" placeholder="请选择车辆"
-                                            style="width: 120px">
-                                            <el-option v-for="item in carInfoList" :key="item.carNum"
-                                                :label="item.carNum" :value="item.carNum" />
-                                        </el-select>
-                                    </el-form-item>
-                                    <el-form-item label="单位">
-                                        <el-tree-select v-model="deptId" :data="deptOptions"
-                                            :props="{ value: 'id', label: 'label', children: 'children' }"
-                                            value-key="id" placeholder="请选择归属部门" check-strictly />
-                                    </el-form-item>
-                                    <el-form-item label="时间" prop="carNum">
-                                        <el-date-picker v-model="dataValue" type="datetimerange" :shortcuts="shortcuts"
-                                            range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
-                                    </el-form-item>
-                                </el-form>
-                            </div>
-                            <div style="width: 20%;">
-                                <el-form-item>
-                                    <!-- <el-button type="primary" plain @click="goadd">今天</el-button>
+                  <el-form-item label="车辆">
+                    <el-select v-model="queryParams.carNum" placeholder="请选择车辆" style="width: 120px">
+                      <el-option v-for="item in carInfoList" :key="item.carNum" :label="item.carNum" :value="item.carNum" />
+                    </el-select>
+                  </el-form-item>
+                  <el-form-item label="单位">
+                    <el-tree-select
+                      v-model="deptId"
+                      :data="deptOptions"
+                      :props="{ value: 'id', label: 'label', children: 'children' }"
+                      value-key="id"
+                      placeholder="请选择归属部门"
+                      check-strictly
+                    />
+                  </el-form-item>
+                  <el-form-item label="时间" prop="carNum">
+                    <el-date-picker
+                      v-model="dataValue"
+                      type="datetimerange"
+                      :shortcuts="shortcuts"
+                      range-separator="至"
+                      start-placeholder="开始时间"
+                      end-placeholder="结束时间"
+                    />
+                  </el-form-item>
+                </el-form>
+              </div>
+              <div style="width: 20%;">
+                <el-form-item>
+                  <!-- <el-button type="primary" plain @click="goadd">今天</el-button>
                                     <el-button type="primary" plain @click="resetQuery">昨天</el-button>
                                     <el-button type="primary" plain @click="resetQuery">近三天</el-button> -->
-                                    <el-button type="primary" @click="searchCar">查询</el-button>
-                                    <!-- <el-button @click="resetQuery">重置</el-button> -->
-                                </el-form-item>
-                            </div>
-                        </div>
-                    </transition>
-                    <el-card shadow="never">
-                        <tableElm @childToParent='childrenClick' :columns="columns1" ref="table1"></tableElm>
-                        <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
-                            v-model:limit="queryParams.pageSize" @pagination="searchCar" />
-                    </el-card>
-                </div>
-            </el-tab-pane>
-            <el-tab-pane label="站点客流数据" name="second">
-                <div>
-                    <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
-                        :leave-active-class="proxy?.animate.searchAnimate.leave">
-                        <div class="search" v-show="showSearch" style="display: flex;flex-direction: row;">
-                            <div style="width: 80%;">
-                                <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
-                                    <el-form-item label="路线">
-                                        <el-select v-model="queryParams2.line" placeholder="请选择路线" style="width: 120px">
-                                            <el-option v-for="item in carPathList" :key="item.id" :label="item.name"
-                                                :value="item.id" />
-                                        </el-select>
-                                    </el-form-item>
-                                    <el-form-item label="站点" prop="carNum">
-                                        <el-select v-model="queryParams2.site" placeholder="请选择站点" style="width: 300px">
-                                            <el-option v-for="item in sites" :key="item.dictLabel"
-                                                :label="item.dictLabel" :value="item.dictLabel" />
-                                        </el-select>
-                                    </el-form-item>
-                                    <el-form-item label="时间" prop="carNum">
-                                        <el-date-picker v-model="dataValue2" type="datetimerange" :shortcuts="shortcuts"
-                                            range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
-                                    </el-form-item>
-                                </el-form>
-                            </div>
-                            <div style="width: 20%;">
-                                <el-form-item>
-                                    <!-- <el-button type="primary" plain @click="goadd">今天</el-button>
+                  <el-button type="primary" @click="searchCar">查询</el-button>
+                  <!-- <el-button @click="resetQuery">重置</el-button> -->
+                </el-form-item>
+              </div>
+            </div>
+          </transition>
+          <el-card shadow="never">
+            <tableElm @childToParent="childrenClick" :columns="columns1" ref="table1"></tableElm>
+            <pagination
+              v-show="total > 0"
+              :total="total"
+              v-model:page="queryParams.pageNum"
+              v-model:limit="queryParams.pageSize"
+              @pagination="searchCar"
+            />
+          </el-card>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane label="站点客流数据" name="second">
+        <div>
+          <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
+            <div class="search" v-show="showSearch" style="display: flex;flex-direction: row;">
+              <div style="width: 80%;">
+                <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
+                  <el-form-item label="路线">
+                    <el-select v-model="queryParams2.line" placeholder="请选择路线" style="width: 120px">
+                      <el-option v-for="item in carPathList" :key="item.id" :label="item.name" :value="item.id" />
+                    </el-select>
+                  </el-form-item>
+                  <el-form-item label="站点" prop="carNum">
+                    <el-select v-model="queryParams2.site" placeholder="请选择站点" style="width: 300px">
+                      <el-option v-for="item in sites" :key="item.dictLabel" :label="item.dictLabel" :value="item.dictLabel" />
+                    </el-select>
+                  </el-form-item>
+                  <el-form-item label="时间" prop="carNum">
+                    <el-date-picker
+                      v-model="dataValue2"
+                      type="datetimerange"
+                      :shortcuts="shortcuts"
+                      range-separator="至"
+                      start-placeholder="开始时间"
+                      end-placeholder="结束时间"
+                    />
+                  </el-form-item>
+                </el-form>
+              </div>
+              <div style="width: 20%;">
+                <el-form-item>
+                  <!-- <el-button type="primary" plain @click="goadd">今天</el-button>
                                     <el-button type="primary" plain @click="resetQuery">昨天</el-button>
                                     <el-button type="primary" plain @click="resetQuery">近三天</el-button> -->
-                                    <el-button type="primary" @click="searchSite">查询</el-button>
-                                    <!-- <el-button @click="resetQuery">重置</el-button> -->
-                                </el-form-item>
-                            </div>
-                        </div>
-                    </transition>
-                    <el-card shadow="never">
-                        <tableElm @childToParent='childrenClick' :columns="columns2" ref="table2"></tableElm>
-                        <pagination v-show="total2 > 0" :total="total2" v-model:page="queryParams2.pageNum"
-                            v-model:limit="queryParams2.pageSize" @pagination="searchSite" />
-                    </el-card>
-                </div>
-            </el-tab-pane>
-        </el-tabs>
-    </div>
+                  <el-button type="primary" @click="searchSite">查询</el-button>
+                  <!-- <el-button @click="resetQuery">重置</el-button> -->
+                </el-form-item>
+              </div>
+            </div>
+          </transition>
+          <el-card shadow="never">
+            <tableElm @childToParent="childrenClick" :columns="columns2" ref="table2"></tableElm>
+            <pagination
+              v-show="total2 > 0"
+              :total="total2"
+              v-model:page="queryParams2.pageNum"
+              v-model:limit="queryParams2.pageSize"
+              @pagination="searchSite"
+            />
+          </el-card>
+        </div>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
 </template>
 
 <script setup name="CarInfo" lang="ts">
-    import { listCarInfo, getCarInfo, delCarInfo, addCarInfo, updateCarInfo } from '@/api/carInfo';
-    import { listCarSchedule, getCarSchedule, delCarSchedule, addCarSchedule, updateCarSchedule } from '@/api/carSchedule';
-    import { CarInfoVO, CarInfoQuery, CarInfoForm } from '@/api/carInfo/types';
-    import { updateData, listData } from "@/api/system/dict/data";
-    import { listCarPath, getCarPath, delCarPath, addCarPath, updateCarPath } from '@/api/carPath';
-    import api from "@/api/system/user"
-    import { liststaticFlow, listsitesFlow } from '@/api/gpsData';
-    import tableElm from "@/components/Public/table.vue";
-    import { useRoute, useRouter } from "vue-router";
-    import moment from 'moment';
-
-    const route = useRoute();
-    const router = useRouter();
-
-    const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-
-    const carInfoList = ref < CarInfoVO[] > ([]);
-    const buttonLoading = ref(false);
-    const loading = ref(true);
-    const showSearch = ref(true);
-    const ids = ref < Array < string | number >> ([]);
-    const single = ref(true);
-    const multiple = ref(true);
-    const total = ref(0);
-    const total2 = ref(0);
-    const value2 = ref('')
-    const carPathList = ref([])
-
-    const queryFormRef = ref < ElFormInstance > ();
-    const carInfoFormRef = ref < ElFormInstance > ();
-    const siteFlowList = ref([])
-
-    const dataValue = ref < [Date, Date] > ([
-        new Date(new Date().getTime() - 3600 * 24 * 1000),
-        new Date(),
-    ])
-
-    const dataValue2 = ref < [Date, Date] > ([
-        new Date(new Date().getTime() - 3600 * 24 * 1000),
-        new Date(),
-    ])
-
-    const dialog = reactive < DialogOption > ({
-        visible: false,
-        title: ''
-    });
-
-    const sites = ref([]);
-    const table = ref(tableElm)
-    const table1 = ref(tableElm)
-    const table2 = ref(tableElm)
-    const activeName = ref("first")
-    const carFlowList = ref([])
-    const lineFlowList = ref([])
-
-    const columns = ref([
-        // {label: '上层位置', prop: 'v', visible: true},
-        { label: '来源', prop: 'carNum', visible: true, isTemplate: false },
-        { label: '时间', prop: 'workTime', visible: true, isTemplate: false, },
-        { label: '内容', prop: 'workName', pprop: "ext1", visible: true, isTemplate: false },
-    ])
-
-    const columns1 = ref([
-        // {label: '上层位置', prop: 'v', visible: true},
-        { label: '车牌号', prop: 'carNum', visible: true, isTemplate: false },
-        { label: '开始时间', prop: 'startTime', visible: true, isTemplate: false, },
-        { label: '结束时间', prop: 'endTime', pprop: "ext1", visible: true, isTemplate: false },
-        { label: '上车总数', prop: 'others.incount', visible: true, isTemplate: false, },
-        { label: '下车总数', prop: 'others.outcount', pprop: "ext1", visible: true, isTemplate: false },
-    ])
-
-    const columns2 = ref([
-        // {label: '上层位置', prop: 'v', visible: true},
-        { label: '站点名', prop: 'dictLabel', visible: true, isTemplate: false },
-        { label: '开始时间', prop: 'startTime', visible: true, isTemplate: false, },
-        { label: '结束时间', prop: 'endTime', pprop: "ext1", visible: true, isTemplate: false },
-        { label: '上车总数', prop: 'others.incount', visible: true, isTemplate: false, },
-        { label: '下车总数', prop: 'others.outcount', pprop: "ext1", visible: true, isTemplate: false },
-    ])
-
-    const deptId = ref(null)
-    const deptOptions = ref([]);
-
-    const initFormData: CarInfoForm = {
-        id: undefined,
+import { listCarInfo, getCarInfo, delCarInfo, addCarInfo, updateCarInfo } from '@/api/carInfo';
+import { listCarSchedule, getCarSchedule, delCarSchedule, addCarSchedule, updateCarSchedule } from '@/api/carSchedule';
+import { CarInfoVO, CarInfoQuery, CarInfoForm } from '@/api/carInfo/types';
+import { updateData, listData } from "@/api/system/dict/data";
+import { listCarPath, getCarPath, delCarPath, addCarPath, updateCarPath } from '@/api/carPath';
+import api from "@/api/system/user"
+import { liststaticFlow, listsitesFlow } from '@/api/gpsData';
+import tableElm from "@/components/Public/table.vue";
+import { useRoute, useRouter } from "vue-router";
+import moment from 'moment';
+
+const route = useRoute();
+const router = useRouter();
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+
+const carInfoList = ref < CarInfoVO[] > ([]);
+const buttonLoading = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref < Array < string | number >> ([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const total2 = ref(0);
+const value2 = ref('')
+const carPathList = ref([])
+
+const queryFormRef = ref < ElFormInstance > ();
+const carInfoFormRef = ref < ElFormInstance > ();
+const siteFlowList = ref([])
+
+const dataValue = ref < [Date, Date] > ([
+    new Date(new Date().getTime() - 3600 * 24 * 1000),
+    new Date(),
+])
+
+const dataValue2 = ref < [Date, Date] > ([
+    new Date(new Date().getTime() - 3600 * 24 * 1000),
+    new Date(),
+])
+
+const dialog = reactive < DialogOption > ({
+    visible: false,
+    title: ''
+});
+
+const sites = ref([]);
+const table = ref(tableElm)
+const table1 = ref(tableElm)
+const table2 = ref(tableElm)
+const activeName = ref("first")
+const carFlowList = ref([])
+const lineFlowList = ref([])
+
+const columns = ref([
+    // {label: '上层位置', prop: 'v', visible: true},
+    { label: '来源', prop: 'carNum', visible: true, isTemplate: false },
+    { label: '时间', prop: 'workTime', visible: true, isTemplate: false, },
+    { label: '内容', prop: 'workName', pprop: "ext1", visible: true, isTemplate: false },
+])
+
+const columns1 = ref([
+    // {label: '上层位置', prop: 'v', visible: true},
+    { label: '车牌号', prop: 'carNum', visible: true, isTemplate: false },
+    { label: '开始时间', prop: 'startTime', visible: true, isTemplate: false, },
+    { label: '结束时间', prop: 'endTime', pprop: "ext1", visible: true, isTemplate: false },
+    { label: '上车总数', prop: 'others.incount', visible: true, isTemplate: false, },
+    { label: '下车总数', prop: 'others.outcount', pprop: "ext1", visible: true, isTemplate: false },
+])
+
+const columns2 = ref([
+    // {label: '上层位置', prop: 'v', visible: true},
+    { label: '站点名', prop: 'dictLabel', visible: true, isTemplate: false },
+    { label: '开始时间', prop: 'startTime', visible: true, isTemplate: false, },
+    { label: '结束时间', prop: 'endTime', pprop: "ext1", visible: true, isTemplate: false },
+    { label: '上车总数', prop: 'others.incount', visible: true, isTemplate: false, },
+    { label: '下车总数', prop: 'others.outcount', pprop: "ext1", visible: true, isTemplate: false },
+])
+
+const deptId = ref(null)
+const deptOptions = ref([]);
+
+const initFormData: CarInfoForm = {
+    id: undefined,
+    carNum: undefined,
+    carType: undefined,
+    deviceInfos: undefined,
+    repairInfo: undefined,
+    maintenanceInfo: undefined,
+    insuranceInfo: undefined,
+    inspectionInfo: undefined,
+    trafficAccidentInfo: undefined,
+    violationInfo: undefined,
+    changeInfo: undefined,
+    ext1: undefined,
+    ext2: undefined
+}
+const data = reactive < PageData < CarInfoForm, CarInfoQuery>> ({
+    form: { ...initFormData },
+    queryParams: {
+        pageNum: 1,
+        pageSize: 10,
         carNum: undefined,
         carType: undefined,
         deviceInfos: undefined,
@@ -194,413 +233,395 @@
         violationInfo: undefined,
         changeInfo: undefined,
         ext1: undefined,
-        ext2: undefined
-    }
-    const data = reactive < PageData < CarInfoForm, CarInfoQuery>> ({
-        form: { ...initFormData },
-        queryParams: {
-            pageNum: 1,
-            pageSize: 10,
-            carNum: undefined,
-            carType: undefined,
-            deviceInfos: undefined,
-            repairInfo: undefined,
-            maintenanceInfo: undefined,
-            insuranceInfo: undefined,
-            inspectionInfo: undefined,
-            trafficAccidentInfo: undefined,
-            violationInfo: undefined,
-            changeInfo: undefined,
-            ext1: undefined,
-            ext2: undefined,
-            params: {
-            }
-        },
-        queryParams2: {
-            pageNum: 1,
-            pageSize: 10,
-            site: '',
-            line: [],
-        },
-        rules: {
-            id: [
-                { required: true, message: "编号不能为空", trigger: "blur" }
-            ],
-            carNum: [
-                { required: true, message: "车牌号不能为空", trigger: "blur" }
-            ],
-            carType: [
-                { required: true, message: "车类型不能为空", trigger: "change" }
-            ],
-            deviceInfos: [
-                { required: true, message: "所有车载设备信息不能为空", trigger: "blur" }
-            ],
-            repairInfo: [
-                { required: true, message: "维修信息不能为空", trigger: "blur" }
-            ],
-            maintenanceInfo: [
-                { required: true, message: "保养信息不能为空", trigger: "blur" }
-            ],
-            insuranceInfo: [
-                { required: true, message: "保险信息不能为空", trigger: "blur" }
-            ],
-            inspectionInfo: [
-                { required: true, message: "年检信息不能为空", trigger: "blur" }
-            ],
-            trafficAccidentInfo: [
-                { required: true, message: "交通事故信息不能为空", trigger: "blur" }
-            ],
-            violationInfo: [
-                { required: true, message: "违章信息不能为空", trigger: "blur" }
-            ],
-            changeInfo: [
-                { required: true, message: "车辆变更信息不能为空", trigger: "blur" }
-            ],
-            ext1: [
-                { required: true, message: "扩展1不能为空", trigger: "blur" }
-            ],
-            ext2: [
-                { required: true, message: "扩展2不能为空", trigger: "blur" }
-            ]
-        }
-    });
-
-    const paramData = ref({
-        starttime: '',
-        endtime: ''
-    })
-
-    const { queryParams, queryParams2, form, rules } = toRefs(data);
-
-    const goadd = () => {
-        router.push("/car/work/addWork")
-    }
-
-    const getSites = () => {
-        listData({ dictType: "tbl_sites" }).then(res2 => {
-            sites.value = res2.rows;
-        });
-    }
-
-    const getTreeSelect = async () => {
-        const res = await api.deptTreeSelect();
-        console.log(res)
-        deptOptions.value = res.data;
-    };
-
-    const searchData = () => {
-        console.log(dataValue.value)
-    }
-
-    /** 查询车辆信息列表 */
-    const getList = async () => {
-        // loading.value = true;
-        // const res = await listCarInfo(queryParams.value);
-        var res = {
-            rows: [
-                {
-                    carNum: '苏A862123',
-                    startTime: "2024-01-23 09:12:23",
-                    endTime: "2024-01-23 09:13:23",
-                    upCount: "10",
-                    downCount: "9",
-                },
-                {
-                    carNum: '苏A862123',
-                    startTime: "2024-01-23 10:12:23",
-                    endTime: "2024-01-23 10:13:23",
-                    upCount: "10",
-                    downCount: "9",
-
-                }
-            ],
-            total: 1
-        }
-        var res1 = {
-            rows: [
-                {
-                    siteName: '松罗客运站',
-                    startTime: "2024-01-23 09:12:23",
-                    endTime: "2024-01-23 09:13:23",
-                    upCount: "10",
-                    downCount: "9",
-                },
-                {
-                    siteName: '福清客运站',
-                    startTime: "2024-01-23 10:12:23",
-                    endTime: "2024-01-23 10:13:23",
-                    upCount: "10",
-                    downCount: "9",
-
-                }
-            ],
-            total: 1
+        ext2: undefined,
+        params: {
         }
-        var buttons = [
-            { type: 'danger', text: '删除', func: "goAdd" },
+    },
+    queryParams2: {
+        pageNum: 1,
+        pageSize: 10,
+        site: '',
+        line: [],
+    },
+    rules: {
+        id: [
+            { required: true, message: "编号不能为空", trigger: "blur" }
+        ],
+        carNum: [
+            { required: true, message: "车牌号不能为空", trigger: "blur" }
+        ],
+        carType: [
+            { required: true, message: "车类型不能为空", trigger: "change" }
+        ],
+        deviceInfos: [
+            { required: true, message: "所有车载设备信息不能为空", trigger: "blur" }
+        ],
+        repairInfo: [
+            { required: true, message: "维修信息不能为空", trigger: "blur" }
+        ],
+        maintenanceInfo: [
+            { required: true, message: "保养信息不能为空", trigger: "blur" }
+        ],
+        insuranceInfo: [
+            { required: true, message: "保险信息不能为空", trigger: "blur" }
+        ],
+        inspectionInfo: [
+            { required: true, message: "年检信息不能为空", trigger: "blur" }
+        ],
+        trafficAccidentInfo: [
+            { required: true, message: "交通事故信息不能为空", trigger: "blur" }
+        ],
+        violationInfo: [
+            { required: true, message: "违章信息不能为空", trigger: "blur" }
+        ],
+        changeInfo: [
+            { required: true, message: "车辆变更信息不能为空", trigger: "blur" }
+        ],
+        ext1: [
+            { required: true, message: "扩展1不能为空", trigger: "blur" }
+        ],
+        ext2: [
+            { required: true, message: "扩展2不能为空", trigger: "blur" }
         ]
-        table1.value.setDataList(res.rows);
-        table1.value.setButton(buttons);
-        table2.value.setDataList(res1.rows);
-        table2.value.setButton(buttons);
-        total.value = res.total;
-        loading.value = false;
-    }
-
-    /** 取消按钮 */
-    const cancel = () => {
-        reset();
-        dialog.visible = false;
     }
+});
 
-    /** 表单重置 */
-    const reset = () => {
-        form.value = { ...initFormData };
-        carInfoFormRef.value?.resetFields();
-    }
-
-    /** 搜索按钮操作 */
-    const handleQuery = () => {
-        queryParams.value.pageNum = 1;
-        getList();
-    }
-
-    /** 重置按钮操作 */
-    const resetQuery = () => {
-        queryFormRef.value?.resetFields();
-        handleQuery();
-    }
+const paramData = ref({
+    starttime: '',
+    endtime: ''
+})
 
-    /** 多选框选中数据 */
-    const handleSelectionChange = (selection: CarInfoVO[]) => {
-        ids.value = selection.map(item => item.id);
-        single.value = selection.length != 1;
-        multiple.value = !selection.length;
-    }
+const { queryParams, queryParams2, form, rules } = toRefs(data);
 
-    /** 新增按钮操作 */
-    const handleAdd = () => {
-        reset();
-        dialog.visible = true;
-        dialog.title = "添加车辆信息";
-    }
+const goadd = () => {
+    router.push("/car/work/addWork")
+}
 
-    /** 修改按钮操作 */
-    const handleUpdate = async (row?: CarInfoVO) => {
-        reset();
-        const _id = row?.id || ids.value[0]
-        const res = await getCarInfo(_id);
-        Object.assign(form.value, res.data);
-        dialog.visible = true;
-        dialog.title = "修改车辆信息";
-    }
+const getSites = () => {
+    listData({ dictType: "tbl_sites" }).then(res2 => {
+        sites.value = res2.rows;
+    });
+}
+
+const getTreeSelect = async () => {
+    const res = await api.deptTreeSelect();
+    console.log(res)
+    deptOptions.value = res.data;
+};
+
+const searchData = () => {
+    console.log(dataValue.value)
+}
+
+/** 查询车辆信息列表 */
+const getList = async () => {
+    // loading.value = true;
+    // const res = await listCarInfo(queryParams.value);
+    var res = {
+        rows: [
+            {
+                carNum: '苏A862123',
+                startTime: "2024-01-23 09:12:23",
+                endTime: "2024-01-23 09:13:23",
+                upCount: "10",
+                downCount: "9",
+            },
+            {
+                carNum: '苏A862123',
+                startTime: "2024-01-23 10:12:23",
+                endTime: "2024-01-23 10:13:23",
+                upCount: "10",
+                downCount: "9",
 
-    const childrenClick = (data) => {
-        eval(data.func + "(data.data)")
+            }
+        ],
+        total: 1
     }
+    var res1 = {
+        rows: [
+            {
+                siteName: '松罗客运站',
+                startTime: "2024-01-23 09:12:23",
+                endTime: "2024-01-23 09:13:23",
+                upCount: "10",
+                downCount: "9",
+            },
+            {
+                siteName: '福清客运站',
+                startTime: "2024-01-23 10:12:23",
+                endTime: "2024-01-23 10:13:23",
+                upCount: "10",
+                downCount: "9",
 
-    const openDialog = () => {
-        dialog.visible = true
+            }
+        ],
+        total: 1
     }
-
-    /** 提交按钮 */
-    const submitForm = () => {
-        carInfoFormRef.value?.validate(async (valid: boolean) => {
-            if (valid) {
-                buttonLoading.value = true;
-                if (form.value.id) {
-                    await updateCarInfo(form.value).finally(() => buttonLoading.value = false);
-                } else {
-                    await addCarInfo(form.value).finally(() => buttonLoading.value = false);
-                }
-                proxy?.$modal.msgSuccess("修改成功");
-                dialog.visible = false;
-                await getList();
+    var buttons = [
+        { type: 'danger', text: '删除', func: "goAdd" },
+    ]
+    table1.value.setDataList(res.rows);
+    table1.value.setButton(buttons);
+    table2.value.setDataList(res1.rows);
+    table2.value.setButton(buttons);
+    total.value = res.total;
+    loading.value = false;
+}
+
+/** 取消按钮 */
+const cancel = () => {
+    reset();
+    dialog.visible = false;
+}
+
+/** 表单重置 */
+const reset = () => {
+    form.value = { ...initFormData };
+    carInfoFormRef.value?.resetFields();
+}
+
+/** 搜索按钮操作 */
+const handleQuery = () => {
+    queryParams.value.pageNum = 1;
+    getList();
+}
+
+/** 重置按钮操作 */
+const resetQuery = () => {
+    queryFormRef.value?.resetFields();
+    handleQuery();
+}
+
+/** 多选框选中数据 */
+const handleSelectionChange = (selection: CarInfoVO[]) => {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+const handleAdd = () => {
+    reset();
+    dialog.visible = true;
+    dialog.title = "添加车辆信息";
+}
+
+/** 修改按钮操作 */
+const handleUpdate = async (row?: CarInfoVO) => {
+    reset();
+    const _id = row?.id || ids.value[0]
+    const res = await getCarInfo(_id);
+    Object.assign(form.value, res.data);
+    dialog.visible = true;
+    dialog.title = "修改车辆信息";
+}
+
+const childrenClick = (data) => {
+    eval(data.func + "(data.data)")
+}
+
+const openDialog = () => {
+    dialog.visible = true
+}
+
+/** 提交按钮 */
+const submitForm = () => {
+    carInfoFormRef.value?.validate(async (valid: boolean) => {
+        if (valid) {
+            buttonLoading.value = true;
+            if (form.value.id) {
+                await updateCarInfo(form.value).finally(() => buttonLoading.value = false);
+            } else {
+                await addCarInfo(form.value).finally(() => buttonLoading.value = false);
             }
-        });
+            proxy?.$modal.msgSuccess("修改成功");
+            dialog.visible = false;
+            await getList();
+        }
+    });
+}
+
+/** 删除按钮操作 */
+const handleDelete = async (row?: CarInfoVO) => {
+    const _ids = row?.id || ids.value;
+    await proxy?.$modal.confirm('是否确认删除车辆信息编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
+    await delCarInfo(_ids);
+    proxy?.$modal.msgSuccess("删除成功");
+    await getList();
+}
+
+/** 导出按钮操作 */
+const handleExport = () => {
+    proxy?.download('system/carInfo/export', {
+        ...queryParams.value
+    }, `carInfo_${new Date().getTime()}.xlsx`)
+}
+
+const initData = async () => {
+    const res = await listCarPath({ pageSize: 1000 });
+    carPathList.value = res.rows
+    const res2 = await listCarInfo({ pageSize: 1000 });
+    carInfoList.value = res2.rows
+    var params = {
+        starttime: moment(dataValue2.value[0]).format("YYYY-MM-DD HH:mm:ss"),
+        endtime: moment(dataValue2.value[1]).format("YYYY-MM-DD HH:mm:ss")
     }
-
-    /** 删除按钮操作 */
-    const handleDelete = async (row?: CarInfoVO) => {
-        const _ids = row?.id || ids.value;
-        await proxy?.$modal.confirm('是否确认删除车辆信息编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
-        await delCarInfo(_ids);
-        proxy?.$modal.msgSuccess("删除成功");
-        await getList();
+    const res3 = await listCarSchedule({ pageSize: 1000, params: params })
+    getSites();
+    carFlowList.value = [];
+    siteFlowList.value = [];
+    searchCar();
+    searchSite();
+    // for (var index in carInfoList.value) {
+    //     if (carInfoList.value[index].deviceInfos != null) {
+    //         var deviceCode = JSON.parse(carInfoList.value[index].deviceInfos)[0].code
+    //         console.log(deviceCode)
+    //         await getFlowData(deviceCode, carInfoList.value[index].carNum)
+    //     }
+    //     //getFlowData();
+    // }
+    // for (var index in res3.data) {
+    //     if (res3.data[index].ext1 != null) {
+    //         var siteList = JSON.parse(res3.data[index].ext1)
+    //         var gpsCode = ''
+    //         for (var j in carInfoList.value) {
+    //             if (carInfoList.value[j].carNum == res3.data[index]) {
+    //                 gpsCode = JSON.parse(carInfoList.value[index].deviceInfos)[0].code
+    //             }
+    //         }
+    //         for (var key in siteList) {
+    //             var obj = siteList[key]
+    //             await getSiteData(key, gpsCode, obj.intime, obj.outtime);
+    //         }
+    //     }
+    // }
+    // table2.value.setButton([]);
+    // console.log(carFlowList.value)
+    // table2.value.setDataList(siteFlowList.value);
+}
+
+const searchCar = () => {
+    var obj = {
+        pageSize: queryParams.value.pageSize,
+        pageNum: queryParams.value.pageNum,
+        carNum: queryParams.value.carNum,
+        deviceInfos:"people_count",
+        params: {
+            starttime: moment(dataValue.value[0]).format("YYYY-MM-DD HH:mm:ss"),
+            endtime: moment(dataValue.value[1]).format("YYYY-MM-DD HH:mm:ss")
+        }
     }
-
-    /** 导出按钮操作 */
-    const handleExport = () => {
-        proxy?.download('system/carInfo/export', {
-            ...queryParams.value
-        }, `carInfo_${new Date().getTime()}.xlsx`)
+    if (deptId.value != null) {
+        obj.params["ext1$deptId"] = deptId.value
     }
-
-    const initData = async () => {
-        const res = await listCarPath({ pageSize: 1000 });
-        carPathList.value = res.rows
-        const res2 = await listCarInfo({ pageSize: 1000 });
-        carInfoList.value = res2.rows
-        var params = {
-            starttime: moment(dataValue2.value[0]).format("YYYY-MM-DD HH:mm:ss"),
-            endtime: moment(dataValue2.value[1]).format("YYYY-MM-DD HH:mm:ss")
+    liststaticFlow(obj).then(res => {
+        total.value = res.total
+        table1.value.setButton([]);
+        for (var index in res.rows) {
+            res.rows[index].startTime = moment(dataValue.value[0]).format("YYYY-MM-DD HH:mm:ss")
+            res.rows[index].endTime = moment(dataValue.value[1]).format("YYYY-MM-DD HH:mm:ss")
         }
-        const res3 = await listCarSchedule({ pageSize: 1000, params: params })
-        getSites();
-        carFlowList.value = [];
-        siteFlowList.value = [];
-        searchCar();
-        searchSite();
-        // for (var index in carInfoList.value) {
-        //     if (carInfoList.value[index].deviceInfos != null) {
-        //         var deviceCode = JSON.parse(carInfoList.value[index].deviceInfos)[0].code
-        //         console.log(deviceCode)
-        //         await getFlowData(deviceCode, carInfoList.value[index].carNum)
-        //     }
-        //     //getFlowData();
-        // }
-        // for (var index in res3.data) {
-        //     if (res3.data[index].ext1 != null) {
-        //         var siteList = JSON.parse(res3.data[index].ext1)
-        //         var gpsCode = ''
-        //         for (var j in carInfoList.value) {
-        //             if (carInfoList.value[j].carNum == res3.data[index]) {
-        //                 gpsCode = JSON.parse(carInfoList.value[index].deviceInfos)[0].code
-        //             }
-        //         }
-        //         for (var key in siteList) {
-        //             var obj = siteList[key]
-        //             await getSiteData(key, gpsCode, obj.intime, obj.outtime);
-        //         }
-        //     }
-        // }
-        // table2.value.setButton([]);
-        // console.log(carFlowList.value)
-        // table2.value.setDataList(siteFlowList.value);
-    }
-
-    const searchCar = () => {
-        var obj = {
-            pageSize: queryParams.value.pageSize,
-            pageNum: queryParams.value.pageNum,
-            carNum: queryParams.value.carNum,
-            params: {
-                starttime: moment(dataValue.value[0]).format("YYYY-MM-DD HH:mm:ss"),
-                endtime: moment(dataValue.value[1]).format("YYYY-MM-DD HH:mm:ss")
+        table1.value.setDataList(res.rows);
+    })
+}
+
+const searchSite = () => {
+    var sites = []
+    for (var index in carPathList.value) {
+        if (queryParams2.value.line == carPathList.value[index].id) {
+            for (var j in JSON.parse(carPathList.value[index].stationList)) {
+                var station = JSON.parse(carPathList.value[index].stationList)[j].data
+                sites.push(station.dictLabel)
             }
         }
-        if (deptId.value != null) {
-            obj.params["ext1$deptId"] = deptId.value
-        }
-        liststaticFlow(obj).then(res => {
-            total.value = res.total
-            table1.value.setButton([]);
-            for (var index in res.rows) {
-                res.rows[index].startTime = moment(dataValue.value[0]).format("YYYY-MM-DD HH:mm:ss")
-                res.rows[index].endTime = moment(dataValue.value[1]).format("YYYY-MM-DD HH:mm:ss")
-            }
-            table1.value.setDataList(res.rows);
-        })
     }
-
-    const searchSite = () => {
-        var sites = []
-        for (var index in carPathList.value) {
-            if (queryParams2.value.line == carPathList.value[index].id) {
-                for (var j in JSON.parse(carPathList.value[index].stationList)) {
-                    var station = JSON.parse(carPathList.value[index].stationList)[j].data
-                    sites.push(station.dictLabel)
+    var params = {
+        starttime: moment(dataValue2.value[0]).format("YYYY-MM-DD HH:mm:ss"),
+        endtime: moment(dataValue2.value[1]).format("YYYY-MM-DD HH:mm:ss")
+    }
+    if (sites.length > 0) {
+        params.sites = sites.join(',')
+    }
+    var obj = {
+        dictLabel: queryParams2.value.site,
+        pageSize: queryParams2.value.pageSize,
+        pageNum: queryParams2.value.pageNum,
+        params: params
+    }
+    listsitesFlow(obj).then(res => {
+        total2.value = res.total
+        for (var index in res.rows) {
+            res.rows[index].startTime = moment(dataValue.value[0]).format("YYYY-MM-DD HH:mm:ss")
+            res.rows[index].endTime = moment(dataValue.value[1]).format("YYYY-MM-DD HH:mm:ss")
+            if (res.rows[index].others == null || res.rows[index].others == '') {
+                var countData = {
+                    incount: 0,
+                    outcount: 0
                 }
+                res.rows[index].others = countData
             }
         }
-        var params = {
-            starttime: moment(dataValue2.value[0]).format("YYYY-MM-DD HH:mm:ss"),
-            endtime: moment(dataValue2.value[1]).format("YYYY-MM-DD HH:mm:ss")
-        }
-        if (sites.length > 0) {
-            params.sites = sites.join(',')
-        }
-        var obj = {
-            dictLabel: queryParams2.value.site,
-            pageSize: queryParams2.value.pageSize,
-            pageNum: queryParams2.value.pageNum,
-            params: params
-        }
-        listsitesFlow(obj).then(res => {
-            total2.value = res.total
-            for (var index in res.rows) {
-                res.rows[index].startTime = moment(dataValue.value[0]).format("YYYY-MM-DD HH:mm:ss")
-                res.rows[index].endTime = moment(dataValue.value[1]).format("YYYY-MM-DD HH:mm:ss")
-                if (res.rows[index].others == null || res.rows[index].others == '') {
-                    var countData = {
-                        incount: 0,
-                        outcount: 0
-                    }
-                    res.rows[index].others = countData
-                }
-            }
-            console.log(res.rows)
-            table2.value.setButton([]);
-            table2.value.setDataList(res.rows);
-        })
-    }
+        console.log(res.rows)
+        table2.value.setButton([]);
+        table2.value.setDataList(res.rows);
+    })
+}
 
-    const getFlowData = (carCode, carNum) => {
-        var obj = {
-            starttime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
-            endtime: moment(dataValue.value[1]).format('YYYY-MM-DD')
-        }
-        getCountData({ devicecode: carCode, params: obj }).then(res => {
-            var data = {
-                carNum: carNum,
-                startTime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
-                endTime: moment(dataValue.value[1]).format('YYYY-MM-DD'),
-                upCount: res.data.totalin,
-                downCount: res.data.totalout
-            }
-            carFlowList.value.push(data);
-        })
+const getFlowData = (carCode, carNum) => {
+    var obj = {
+        starttime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
+        endtime: moment(dataValue.value[1]).format('YYYY-MM-DD')
     }
-
-    const getSiteData = (carCode, siteName, startTime, endTime) => {
-        var obj = {
-            starttime: startTime,
-            endtime: endTime
+    getCountData({ devicecode: carCode, params: obj }).then(res => {
+        var data = {
+            carNum: carNum,
+            startTime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
+            endTime: moment(dataValue.value[1]).format('YYYY-MM-DD'),
+            upCount: res.data.totalin,
+            downCount: res.data.totalout
         }
-        getCountData({ devicecode: carCode, params: obj }).then(res => {
-            var data = {
-                siteName: siteName,
-                startTime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
-                endTime: moment(dataValue.value[1]).format('YYYY-MM-DD'),
-                upCount: res.data.totalin,
-                downCount: res.data.totalout
-            }
-            siteFlowList.value.push(data);
-        })
-    }
+        carFlowList.value.push(data);
+    })
+}
 
-    const getStationData = (carCode, siteName) => {
-        var obj = {
-            starttime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
-            endtime: moment(dataValue.value[1]).format('YYYY-MM-DD')
+const getSiteData = (carCode, siteName, startTime, endTime) => {
+    var obj = {
+        starttime: startTime,
+        endtime: endTime
+    }
+    getCountData({ devicecode: carCode, params: obj }).then(res => {
+        var data = {
+            siteName: siteName,
+            startTime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
+            endTime: moment(dataValue.value[1]).format('YYYY-MM-DD'),
+            upCount: res.data.totalin,
+            downCount: res.data.totalout
         }
-        getCountData({ devicecode: carCode, params: obj }).then(res => {
-            var data = {
-                siteName: siteName,
-                startTime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
-                endTime: moment(dataValue.value[1]).format('YYYY-MM-DD'),
-                upCount: res.data.totalin,
-                downCount: res.data.totalout
-            }
-            carFlowList.value.push(data);
-        })
+        siteFlowList.value.push(data);
+    })
+}
+
+const getStationData = (carCode, siteName) => {
+    var obj = {
+        starttime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
+        endtime: moment(dataValue.value[1]).format('YYYY-MM-DD')
     }
+    getCountData({ devicecode: carCode, params: obj }).then(res => {
+        var data = {
+            siteName: siteName,
+            startTime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
+            endTime: moment(dataValue.value[1]).format('YYYY-MM-DD'),
+            upCount: res.data.totalin,
+            downCount: res.data.totalout
+        }
+        carFlowList.value.push(data);
+    })
+}
 
-    onMounted(() => {
-        initData();
-        getTreeSelect();
-    });
+onMounted(() => {
+    initData();
+    getTreeSelect();
+});
 </script>
 
-
-<style></style>
+<style></style>