liwei19941102 1 年間 前
コミット
88392d5f5e
2 ファイル変更612 行追加593 行削除
  1. 604 589
      src/views/statics/passengerFlow.vue
  2. 8 4
      src/views/yunying/scheduling/index.vue

+ 604 - 589
src/views/statics/passengerFlow.vue

@@ -1,228 +1,200 @@
 <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" @change="getSiteList">
-                      <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">
+                        <div style="display: flex;flex-direction: row;justify-content: space-around;width: 60%;">
+                            <div>上车总数:{{sctotal}}</div>
+                            <div>下车总数:{{xctotal}}</div>
+                            <div>总数:{{totalcount}}</div>
+                        </div>
+                        <tableElm @childToParent="childrenClick" :columns="columns1" ref="table1"
+                            style="margin-top: 10px;"></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"
+                                            @change="getSiteList">
+                                            <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 siteList = 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,
+    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 siteList = ref([]);
+    const table = ref(tableElm)
+    const table1 = ref(tableElm)
+    const table2 = ref(tableElm)
+    const activeName = ref("first")
+    const carFlowList = ref([])
+    const lineFlowList = ref([])
+
+    const sctotal = ref(0)
+    const xctotal = ref(0)
+    const totalcount = ref(0)
+
+    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,
@@ -234,417 +206,460 @@ const data = reactive < PageData < CarInfoForm, CarInfoQuery>> ({
         violationInfo: undefined,
         changeInfo: undefined,
         ext1: undefined,
-        ext2: undefined,
-        params: {
+        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" }
+            ]
         }
-    },
-    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;
+            siteList.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
+        }
+        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 paramData = ref({
-    starttime: '',
-    endtime: ''
-})
+    /** 取消按钮 */
+    const cancel = () => {
+        reset();
+        dialog.visible = false;
+    }
 
-const { queryParams, queryParams2, form, rules } = toRefs(data);
+    /** 表单重置 */
+    const reset = () => {
+        form.value = { ...initFormData };
+        carInfoFormRef.value?.resetFields();
+    }
 
-const goadd = () => {
-    router.push("/car/work/addWork")
-}
+    /** 搜索按钮操作 */
+    const handleQuery = () => {
+        queryParams.value.pageNum = 1;
+        getList();
+    }
 
-const getSites = () => {
-    listData({ dictType: "tbl_sites" }).then(res2 => {
-        sites.value = res2.rows;
-        siteList.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 resetQuery = () => {
+        queryFormRef.value?.resetFields();
+        handleQuery();
+    }
 
-            }
-        ],
-        total: 1
+    /** 多选框选中数据 */
+    const handleSelectionChange = (selection: CarInfoVO[]) => {
+        ids.value = selection.map(item => item.id);
+        single.value = selection.length != 1;
+        multiple.value = !selection.length;
     }
-    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 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();
             }
-        ],
-        total: 1
+        });
+    }
+
+    /** 删除按钮操作 */
+    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();
     }
-    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);
+
+    /** 导出按钮操作 */
+    const handleExport = () => {
+        proxy?.download('system/carInfo/export', {
+            ...queryParams.value
+        }, `carInfo_${new Date().getTime()}.xlsx`)
+    }
+
+    const getSiteList = () => {
+        console.log(queryParams2.value.line)
+        var lineData = []
+        for (var index in carPathList.value) {
+            if (queryParams2.value.line == carPathList.value[index].id) {
+                lineData = JSON.parse(carPathList.value[index].stationList)
             }
-            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 getSiteList = () =>{
-    console.log(queryParams2.value.line)
-    var lineData = []
-    for(var index in carPathList.value){
-        if(queryParams2.value.line == carPathList.value[index].id){
-            lineData = JSON.parse(carPathList.value[index].stationList) 
-        }
-    }
-    var site = []
-    for(var i in lineData){
-        site.push(lineData[i].data)
+        var site = []
+        for (var i in lineData) {
+            site.push(lineData[i].data)
             //  if(i == 0 || i == lineData.length - 1){
             //     site.push(lineData[i].data)
             //  }else{
             //     site.push(lineData[i])
             //  }
-    }
-    console.log(site)
-    sites.value = site
-}
-
-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 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")
         }
+        console.log(site)
+        sites.value = site
     }
-    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")
+
+    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")
         }
-        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)
+        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")
             }
         }
+        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);
+            var paramobj = {
+                pageSize: 10000,
+                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")
+                }
+            }
+            if (deptId.value != null) {
+                paramobj.params["ext1$deptId"] = deptId.value
+            }
+            liststaticFlow(paramobj).then(response => {
+                xctotal.value = 0;
+                sctotal.value = 0;
+                for (var j in response.rows) {
+                    var resObj = response.rows[j];
+                    console.log(resObj.others)
+                    if (resObj.others != null) {
+                        xctotal.value += resObj.others.outcount
+                        sctotal.value += resObj.others.incount
+                    }
+                }
+                totalcount.value = xctotal.value + sctotal.value
+            })
+        })
     }
-    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
+
+    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)
                 }
-                res.rows[index].others = countData
             }
         }
-        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
+        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")
         }
-        carFlowList.value.push(data);
-    })
-}
-
-const getSiteData = (carCode, siteName, startTime, endTime) => {
-    var obj = {
-        starttime: startTime,
-        endtime: endTime
+        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);
+        })
     }
-    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
+
+    const getFlowData = (carCode, carNum) => {
+        var obj = {
+            starttime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
+            endtime: moment(dataValue.value[1]).format('YYYY-MM-DD')
         }
-        siteFlowList.value.push(data);
-    })
-}
+        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 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
+            }
+            siteFlowList.value.push(data);
+        })
     }
-    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
+
+    const getStationData = (carCode, siteName) => {
+        var obj = {
+            starttime: moment(dataValue.value[0]).format('YYYY-MM-DD'),
+            endtime: moment(dataValue.value[1]).format('YYYY-MM-DD')
         }
-        carFlowList.value.push(data);
-    })
-}
+        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>

+ 8 - 4
src/views/yunying/scheduling/index.vue

@@ -231,6 +231,7 @@ const flvPlayer = ref(null);
 const carScheduleList = ref<CarScheduleVO[]>([]);
 const timer = ref(null);
 const mapTimer = ref(null);
+const count = ref(0)
 
 const queryFormRef = ref<ElFormInstance>();
 const carInfoFormRef = ref<ElFormInstance>();
@@ -732,10 +733,13 @@ onMounted(() => {
   timer.value = setInterval(() => {
     console.log(11111);
     getScheduleList();
-    reloadData.value = false;
-    setTimeout(() => {
-      reloadData.value = true;
-    }, 500);
+    proxy.$forceUpdate();
+    return{
+      proxy
+    }// reloadData.value = false;
+    // setTimeout(() => {
+    //   reloadData.value = true;
+    // }, 500);
   }, 30000);
   // mapTimer.value = setInterval(() => {
   //     console.log(2222222222222)