浏览代码

修改bug

Anthony 15 小时之前
父节点
当前提交
5040803000

+ 11 - 5
package-lock.json

@@ -2071,6 +2071,13 @@
             "source-map": "^0.6.1"
           }
         },
+        "prettier": {
+          "version": "2.8.8",
+          "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+          "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+          "dev": true,
+          "optional": true
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -12166,11 +12173,10 @@
       "dev": true
     },
     "prettier": {
-      "version": "2.8.8",
-      "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
-      "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
-      "dev": true,
-      "optional": true
+      "version": "3.6.2",
+      "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.6.2.tgz",
+      "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
+      "dev": true
     },
     "prettier-linter-helpers": {
       "version": "1.0.0",

+ 5 - 0
src/App.vue

@@ -49,4 +49,9 @@ export default {
   },
 };
 </script>
+<style scoped>
+/deep/ .owner-label .el-form-item__label {
+  color: #000000 !important;
+}
+</style>
 

+ 20 - 1
src/api/militaryvehicleManagement/thebusApply.js

@@ -1,5 +1,6 @@
 import request from '@/utils/request'
 
+
 // 查询用车申请列表
 export function listThebusApply(query) {
   return request({
@@ -132,10 +133,19 @@ export function zaiweiCar(query) {
 export function addKeChuChe(data) {
   return request({
     url: '/militaryvehicleManagement/thebusApply/addchuchequren',
+    method: 'put',
+    data: data
+  })
+}
+
+export function updateKeChuChe(data) {
+  return request({
+    url: '/militaryvehicleManagement/thebusApply/updatechuchequren',
     method: 'post',
     data: data
   })
 }
+
 // 新增可出车列表添加
 export function sb(query) {
   return request({
@@ -160,4 +170,13 @@ export function guiDui(data) {
     method: 'put',
     data
   })
-}
+}
+
+//删除可出车记录
+export function delThebus(id) {
+  return request({
+    url: '/militaryvehicleManagement/thebusApply/single/' + id,
+    method: 'delete'
+    // data: data
+  })
+}

+ 198 - 0
src/views/doorcarManage/carManage/index.vue

@@ -0,0 +1,198 @@
+<template>
+  <div>
+    <!-- 查询区 -->
+    <el-card style="background-color: transparent">
+      <el-form :inline="true" :model="searchForm" label-width="80px">
+        <el-form-item class="che" label="车牌号码">
+          <el-input v-model="searchForm.plateNo" placeholder="请输入车牌号码" />
+        </el-form-item>
+        <el-form-item label="车辆类型">
+          <el-select v-model="searchForm.type" placeholder="全部" clearable>
+            <el-option label="小型车" value="small" />
+            <el-option label="大型车" value="large" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="车主姓名">
+          <el-input v-model="searchForm.ownerName" placeholder="请输入车主姓名" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="fetchCars">查询</el-button>
+          <el-button @click="resetForm">重置</el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
+
+
+    <!-- 操作按钮 -->
+    <div style="margin: 10px 0;">
+      <el-button type="primary" @click="addCar">添加</el-button>
+      <el-button>导入</el-button>
+      <el-button>导出</el-button>
+    </div>
+
+    <!-- 数据展示表格 -->
+    <el-table :data="carList" border style="width: 100%;" height="500">
+      <el-table-column prop="ownerName" label="车主姓名" width="120"/>
+      <el-table-column prop="plateNumber" label="车牌号码" width="120"/>
+      <el-table-column prop="orgName" label="所属组织" width="180"/>
+      <el-table-column prop="isTemporary" label="是否临时车" width="120">
+        <template #default="scope">
+          {{ scope.row.isTemporary ? '是' : '否' }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="carGroup" label="车辆群组" width="120"/>
+      <el-table-column prop="validUntil" label="有效期" width="150"/>
+      <el-table-column label="操作" width="150">
+        <template #default="scope">
+          <el-button type="text" size="small" @click="editCar(scope.row)">编辑</el-button>
+          <el-button type="text" size="small" @click="deleteCar(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 添加 / 编辑 对话框 -->
+    <el-dialog :visible.sync="dialogVisible" title="车辆信息">
+      <el-form :model="form" label-width="100px">
+        <el-form-item  label="车主姓名" class="owner-label">
+          <el-input v-model="form.ownerName" />
+        </el-form-item>
+        <el-form-item label="车牌号码" class="owner-label">
+          <el-input v-model="form.plateNumber" />
+        </el-form-item>
+        <el-form-item label="所属组织" class="owner-label">
+          <el-input v-model="form.orgName" />
+        </el-form-item>
+        <el-form-item label="车辆群组" class="owner-label">
+          <el-input v-model="form.carGroup" />
+        </el-form-item>
+<!--        <el-form-item label="有效期" class="owner-label">-->
+<!--          <el-date-picker v-model="form.validUntil" type="date" placeholder="选择日期"/>-->
+<!--        </el-form-item>-->
+        <!-- 有效期逻辑:仅在临时车辆时显示日期选择 -->
+        <el-form-item label="是否为临时车辆" class="owner-label">
+          <el-select v-model="form.isTemporary" placeholder="请选择">
+            <el-option label="是" :value="true" />
+            <el-option label="否" :value="false" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="有效期" class="owner-label" v-if="form.isTemporary">
+          <el-date-picker v-model="form.validUntil" type="date" placeholder="选择有效日期"/>
+        </el-form-item>
+        <el-form-item label="有效期" class="owner-label" v-else>
+          <el-input value="永久有效" disabled />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button @click="dialogVisible = false">取消</el-button>
+        <el-button type="primary" @click="saveCar">保存</el-button>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import request from "@/utils/request";
+
+export default {
+  data() {
+    return {
+      searchForm: {
+        plateNo: "",
+        type: "",
+        ownerName: "",
+        isTemporary: false,
+        // plateNumber: "",
+        // orgName: "",     // 所属组织
+        // carGroup: "",   // 车辆组群
+        // validUntil: "", // 有效期
+        // createTime: "",
+      },
+      carList: [], // 车辆数据
+      dialogVisible: false,
+      dialogMode: "add",   // add / edi
+      form: {} // 添加/编辑的表单数据
+    }
+  },
+  created() {
+    // 页面加载时自动拉取第一页数据
+    this.fetchCars()
+  },
+  methods: {
+    fetchCars() {
+      // TODO: 请求后端接口,获取数据
+      request({
+        url: "/car/info/list",
+        method: "get",
+      }).then(res => {
+        console.log("获取res数据", res)
+        this.carList = res
+        console.log("获取数据", this.carList)
+      })
+    },
+    resetForm() {
+      this.searchForm = { plateNo: "", type: "", ownerName: "" }
+      this.fetchCars()
+    },
+    addCar() {
+      this.form = {
+        isTemporary: false,  // ✅ 默认值
+        validUntil: null
+      }
+      this.dialogMode = "add"
+      this.dialogVisible = true
+    },
+    editCar(row) {
+      this.form = { ...row }
+      this.form.isTemporary = row.isTemporary === true || row.isTemporary === "true"
+      this.dialogMode = "edit"
+      this.dialogVisible = true
+    },
+    deleteCar(row) {
+      this.$confirm("确定删除该车辆吗?", "提示", { type: "warning" })
+        .then(() => {
+          request({
+            url: `/car/info/delete/${row.id}`,
+            method: "delete",
+            // data: { id: row.id }
+            }).then(res => {
+            this.fetchCars()
+            console.log("删除成功", res)
+          })
+          // TODO: 调用删除接口
+          // this.fetchCars()
+          console.log("删除车辆:", row)
+        })
+    },
+    saveCar() {
+      this.form.isTemporary = this.form.isTemporary === true || this.form.isTemporary === "true"
+
+      // 如果不是临时车,清空有效期
+      if (!this.form.isTemporary) {
+        this.form.validUntil = null
+      }
+      const url = this.dialogMode === "edit"
+        ? `/car/info/update`
+        : "/car/info/add"
+      const method = this.dialogMode === "edit" ? "put" : "post"
+      request({
+        url,
+        method,
+        data: this.form
+      }).then(res => {
+        console.log("保存成功", res)
+        this.fetchCars()
+        this.dialogVisible = false
+      })
+      // TODO: 保存接口
+      console.log("保存车辆信息:", this.form)
+      // this.fetchCars()
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
+
+

+ 216 - 0
src/views/doorcarManage/car_eventManage/index.vue

@@ -0,0 +1,216 @@
+<template>
+  <div class="car-event-page">
+    <!-- 左侧查询条件 -->
+    <div class="query-panel">
+      <el-form :model="queryForm" label-width="100px">
+        <el-form-item label="车牌号码">
+          <el-input v-model="queryForm.plateNumber" placeholder="请输入车牌号码" />
+        </el-form-item>
+
+        <el-form-item label="车主姓名">
+          <el-input v-model="queryForm.ownerName" placeholder="请输入车主姓名" />
+        </el-form-item>
+
+        <el-form-item label="电话号码">
+          <el-input v-model="queryForm.phoneNumber" placeholder="请输入电话号码" />
+        </el-form-item>
+
+        <el-form-item label="事件类型">
+          <el-select v-model="queryForm.eventType" placeholder="请选择事件类型">
+            <el-option label="全部" value="" />
+            <el-option label="进门" value="IN" />
+            <el-option label="出门" value="OUT" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="车辆类型">
+          <el-select v-model="queryForm.carType" placeholder="请选择车辆类型">
+            <el-option label="全部" value="" />
+            <el-option label="固定车" value="FIXED" />
+            <el-option label="授权车" value="AUTHORIZED" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="车辆群组">
+          <el-input v-model="queryForm.carGroup" placeholder="请输入所属群组" />
+        </el-form-item>
+
+        <el-form-item label="开始时间">
+          <el-date-picker
+            v-model="queryForm.startTime"
+            type="datetime"
+            placeholder="选择开始时间"
+            style="width: 100%;"
+          />
+        </el-form-item>
+
+        <el-form-item label="结束时间">
+          <el-date-picker
+            v-model="queryForm.endTime"
+            type="datetime"
+            placeholder="选择结束时间"
+            style="width: 100%;"
+          />
+        </el-form-item>
+
+        <!-- 快捷时间按钮 -->
+        <div class="quick-btns">
+          <el-button @click="setQuickTime('yesterday')">昨天</el-button>
+          <el-button @click="setQuickTime('today')">今天</el-button>
+          <el-button @click="setQuickTime('month')">本月</el-button>
+        </div>
+
+        <!-- 搜索按钮 -->
+        <el-button type="primary" @click="fetchData" style="margin-top: 10px;">搜索</el-button>
+      </el-form>
+    </div>
+
+    <!-- 右侧表格 -->
+    <div class="table-panel">
+      <el-table :data="tableData" border style="width: 100%;">
+        <el-table-column type="index" label="序号" width="60" />
+        <el-table-column prop="ownerName" label="车主姓名" width="120" />
+        <el-table-column prop="plateNumber" label="车牌号码" width="120" />
+        <el-table-column prop="phoneNumber" label="电话号码" width="150" />
+        <el-table-column prop="eventType" label="事件类型" width="100">
+          <template #default="scope">
+            {{ scope.row.eventType === 'IN' ? '进门' : scope.row.eventType === 'OUT' ? '出门' : '-' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="carType" label="车辆类型" width="120">
+          <template #default="scope">
+            {{ scope.row.carType === 'FIXED' ? '固定车' : '授权车' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="carGroup" label="车辆群组" width="150" />
+        <el-table-column prop="eventTime" label="事件时间" width="180">
+          <template #default="scope">
+            {{ new Date(scope.row.eventTime).toLocaleString() }}
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <!-- 分页 -->
+      <div class="pagination">
+        <el-pagination
+          background
+          layout="total, prev, pager, next"
+          :total="total"
+          :page-size="queryForm.pageSize"
+          :current-page.sync="queryForm.pageNum"
+          @current-change="fetchData"
+        />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import request from "@/utils/request";
+
+export default {
+  name: "CarEventLogPage",
+  data() {
+    return {
+      queryForm: {
+        plateNumber: "",
+        ownerName: "",
+        phoneNumber: "",
+        eventType: "",
+        carType: "",
+        carGroup: "",
+        startTime: "",
+        endTime: "",
+        pageNum: 1,
+        pageSize: 24
+      },
+      tableData: [],
+      total: 0
+    }
+  },
+  created() {
+    this.fetchData()
+  },
+  methods: {
+    fetchData() {
+      // const params = {
+      //   ...this.queryForm,
+      //   pageNum: Number(this.queryForm.pageNum),    // 转数字
+      //   pageSize: Number(this.queryForm.pageSize),  // 转数字
+      //   startTime: this.queryForm.startTime ? this.queryForm.startTime.getTime() : null, // 转时间戳
+      //   endTime: this.queryForm.endTime ? this.queryForm.endTime.getTime() : null
+      // }
+      const params = {
+        plateNumber: this.queryForm.plateNumber || undefined,
+        ownerName: this.queryForm.ownerName || undefined,
+        phoneNumber: this.queryForm.phoneNumber || undefined,
+        eventType: this.queryForm.eventType || undefined,
+        carType: this.queryForm.carType || undefined,
+        carGroup: this.queryForm.carGroup || undefined,
+        pageNum: Number(this.queryForm.pageNum),
+        pageSize: Number(this.queryForm.pageSize),
+        startTime: this.queryForm.startTime ? this.queryForm.startTime.getTime() : undefined,
+        endTime: this.queryForm.endTime ? this.queryForm.endTime.getTime() : undefined,
+      }
+
+      Object.keys(this.queryForm).forEach(key => {
+        if (this.queryForm[key] === "" || this.queryForm[key] === null) {
+          delete params[key]
+        }
+      })
+
+      request({
+        url: "/car/event/log/list",
+        method: "get",
+        params: this.queryForm
+        // params
+      }).then(res => {
+        this.tableData = res.records || []
+        this.total = res.total || 0
+        console.log("车辆进出记录数据:", res)
+      })
+    },
+    setQuickTime(type) {
+      const now = new Date()
+      if (type === "today") {
+        this.queryForm.startTime = new Date(now.setHours(0, 0, 0, 0))
+        this.queryForm.endTime = new Date()
+      } else if (type === "yesterday") {
+        const y = new Date()
+        y.setDate(y.getDate() - 1)
+        this.queryForm.startTime = new Date(y.setHours(0, 0, 0, 0))
+        this.queryForm.endTime = new Date(y.setHours(23, 59, 59, 999))
+      } else if (type === "month") {
+        const first = new Date(now.getFullYear(), now.getMonth(), 1)
+        this.queryForm.startTime = first
+        this.queryForm.endTime = new Date()
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+.car-event-page {
+  display: flex;
+  padding: 10px;
+}
+.query-panel {
+  width: 280px;
+  padding: 10px;
+  border-right: 1px solid #ddd;
+}
+.table-panel {
+  flex: 1;
+  padding: 10px;
+}
+.quick-btns {
+  display: flex;
+  gap: 6px;
+  margin: 6px 0;
+}
+.pagination {
+  margin-top: 10px;
+  text-align: right;
+}
+</style>

+ 267 - 0
src/views/doorcarManage/car_infoManage/index.vue

@@ -0,0 +1,267 @@
+<template>
+  <div class="dashboard">
+    <el-row :gutter="20">
+      <!-- 左上角:设备状态 -->
+      <el-col :span="12">
+        <el-card>
+<!--          <el-tabs v-model=" chooseDevice" type="card" style="float:left;">-->
+<!--            <el-tab-pane label="设备1" name="device1"></el-tab-pane>-->
+<!--            <el-tab-pane label="设备2" name="device2"></el-tab-pane>-->
+<!--          </el-tabs>-->
+          <el-button
+            v-if="!deviceStatus.ok"
+            type="danger"
+            size="mini"
+            style="float:right;"
+            @click="reconnectDevice">
+            重新连接
+          </el-button>
+          <div slot="header" class="clearfix">
+            <span>设备状态</span>
+          </div>
+          <div v-if="deviceStatus.ok" style="text-align:center; padding:20px;">
+            <el-result icon="success" title="运行正常"></el-result>
+          </div>
+          <div v-else style="text-align:center; padding:20px;">
+            <el-result icon="error" title="连接失败"></el-result>
+          </div>
+
+        </el-card>
+      </el-col>
+
+      <!-- 右上角:远程控制 -->
+      <el-col :span="12">
+        <el-card>
+          <div slot="header" class="clearfix">
+            <span>远程控制</span>
+            <el-button type="primary" size="mini" style="float:right;" @click="toggleDoor">
+              {{ doorOpen ? '关门' : '开门' }}
+            </el-button>
+          </div>
+          <el-tabs v-model="activeDevice">
+            <el-tab-pane
+              v-for="d in devices"
+              :key="d.id"
+              :label="d.name"
+              :name="d.id">
+              <div style="background:#000; height:200px; display:flex; align-items:center; justify-content:center; color:white;">
+                {{ d.name }} 视频流
+              </div>
+            </el-tab-pane>
+          </el-tabs>
+        </el-card>
+      </el-col>
+    </el-row>
+
+    <!--    <el-row :gutter="20" style="margin-top:20px;">-->
+    <!--      &lt;!&ndash; 左下角:人员信息 &ndash;&gt;-->
+    <!--      <el-col :span="12">-->
+    <!--        <el-card>-->
+    <!--          <div slot="header">人员信息</div>-->
+    <!--          <p>内部人员:{{ people.internal }}</p>-->
+    <!--          <p>临时访问:{{ people.temporary }}</p>-->
+    <!--          <p>内部人脸:{{ faces.internal }}</p>-->
+    <!--          <p>外部人脸:{{ faces.external }}</p>-->
+    <!--        </el-card>-->
+    <!--      </el-col>-->
+    <!--    </el-row>-->
+    <el-col :span="12">
+      <el-card shadow="hover" class="people-card">
+        <h2 class="section-title">车辆信息总览</h2>
+        <div class="people-info">
+          <div class="info-block">
+            <img src="/resources/people1.jfif" class="info-icon" />
+            <p>已注册车辆总数</p>
+            <span>{{ carCount }}</span>
+          </div>
+          <div class="info-block">
+            <!--          <img src="/resources/face1.png" class="info-icon" />-->
+            <p>内部车辆总数</p>
+            <span>{{ registeredCount_car }}</span>
+          </div>
+          <div class="info-block">
+            <!--          <img src="/resources/face1.png" class="info-icon" />-->
+            <p>临时访问车辆总数</p>
+            <span>{{ unregisteredCount_car }}</span>
+          </div>
+        </div>
+        <!--      <el-row :gutter="20">-->
+        <!--        <el-col :span="6">-->
+        <!--          <el-card shadow="hover" class="overview-card">-->
+        <!--            <img src="/public/resources/people1.jfif" class="card-img" />-->
+        <!--            <div class="card-text">人员信息</div>-->
+        <!--          </el-card>-->
+        <!--        </el-col>-->
+
+        <!--        <el-col :span="6">-->
+        <!--          <el-card shadow="hover" class="overview-card">-->
+        <!--            <img src="/public/resources/face1.png" class="card-img" />-->
+        <!--            <div class="card-text">人脸信息</div>-->
+        <!--          </el-card>-->
+        <!--        </el-col>-->
+
+        <!--        <el-col :span="6">-->
+        <!--          <el-card shadow="hover" class="overview-card">-->
+        <!--            <img src="/public/resources/device.png" class="card-img" />-->
+        <!--            <div class="card-text">设备信息</div>-->
+        <!--          </el-card>-->
+        <!--        </el-col>-->
+
+        <!--        <el-col :span="6">-->
+        <!--          <el-card shadow="hover" class="overview-card">-->
+        <!--            <img src="/public/resources/other.png" class="card-img" />-->
+        <!--            <div class="card-text">其他信息</div>-->
+        <!--          </el-card>-->
+        <!--        </el-col>-->
+        <!--      </el-row>-->
+      </el-card>
+<!--      <el-card shadow="hover" class="face-card">-->
+<!--        <h2 class="section-title">人脸信息总览</h2>-->
+<!--        <div class="face-info">-->
+<!--          <div class="info-block">-->
+<!--            <img src="/resources/face1.png" class="info-icon" />-->
+<!--            <p>人员总数</p>-->
+<!--            <span>{{ faceCount }}</span>-->
+<!--          </div>-->
+<!--          <div class="info-block">-->
+
+<!--            <p>内部人脸总数</p>-->
+<!--            <span>{{ registeredCount_face }}</span>-->
+<!--          </div>-->
+<!--          <div class="info-block">-->
+<!--            &lt;!&ndash;            <img src="/resources/face1.png" class="info-icon" />&ndash;&gt;-->
+<!--            <p>临时访问人脸总数</p>-->
+<!--            <span>{{ unregisteredCount_face }}</span>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--      </el-card>-->
+    </el-col>
+
+    <!--      &lt;!&ndash; 右下角:实时事件 &ndash;&gt;-->
+    <el-col :span="12">
+      <el-card>
+        <div slot="header">实时事件</div>
+        <el-table :data="events" size="mini" height="400" border>
+          <el-table-column prop="eventTime" label="时间" width="150"/>
+          <el-table-column prop="ownerName" label="车主姓名" width="100"/>
+          <el-table-column prop="plateNumber" label="车牌号码" width="120" />
+          <el-table-column prop="eventType" label="进出类型"/>
+        </el-table>
+      </el-card>
+    </el-col>
+
+  </div>
+</template>
+
+<script>
+import request from "@/utils/request";
+
+export default {
+  name: "Dashboard",
+  data() {
+    return {
+      deviceStatus: {
+        device1: { ok: true },
+        device2: { ok: false }
+      },
+      doorOpen: false,
+      chooseDevice: "device1",
+      activeDevice: '1',
+      devices: [
+        { id: '1', name: '进门车辆监控' },
+        { id: '2', name: '出门闸道监控' }
+      ],
+      people: { internal: 10, temporary: 2 },
+      faces: { internal: 8, external: 5 },
+
+      events: [
+      ],
+      // total: 0,
+      carCount: 0,
+      registeredCount_car: 0,
+      unregisteredCount_car: 0,
+      registeredCount_face: 0,
+      unregisteredCount_face: 0,
+    }
+  },
+  created() {
+    // 页面加载时自动拉取第一页数据
+    this.fetchData()
+    this.peopleData()
+    this.fetchPeople()
+  },
+  methods: {
+    fetchData() {
+      request({
+        url: "/car/event/log/list",
+        method: "get",
+      }).then(res => {
+
+        this.events = res.records || []
+        console.log("数据",res)
+        console.log("总条数",res.total)
+        this.total = res.total || 0
+      })
+    },
+    peopleData() {
+      request({
+        url: "/car/info/total",
+        method: "get",
+      }).then(res => {
+        console.log("接口返回:", res)
+        // this.carCount = res.total || []
+        this.carCount = res
+        console.log("人员总数...............",res)
+
+      })
+    },
+    reconnectDevice() {
+      // TODO: 调后端接口
+      this.deviceStatus.ok = true
+    },
+    toggleDoor() {
+      // TODO: 调后端接口
+      this.doorOpen = !this.doorOpen
+    },
+
+    fetchPeople() {
+      this.loading = true
+      request({
+        url: `/car/info/list/`,  // ✅ 模板字符串
+        method: 'GET',
+      }).then(res => {
+
+        // // 内部人员数量 (is_temporary == 0)
+        // this.internalCount = data.filter(p => p.is_temporary == 0).length
+        //
+        // // 临时访问人员数量 (is_temporary == 1)
+        // this.tempCount = data.filter(p => p.is_temporary == 1).length
+        console.log("车辆信息返回:", res)
+        let data = res
+        this.peopleList = data
+        console.log("车辆信息:", this.peopleList)
+        console.log("第一条车辆数据:", data[0])
+        // 内部车辆数量 (is_temporary == 0)
+        this.registeredCount_car = data.filter(p => p.isTemporary  === false).length
+
+        // 临时访问车辆数量 (is_temporary == 1)
+        this.unregisteredCount_car = data.filter(p => p.isTemporary  === true).length
+        console.log("内部人员:", this.registeredCount_car)
+
+      }).finally(() => { this.loading = false })
+    },
+  }
+}
+</script>
+
+<style scoped>
+.dashboard {
+  padding: 20px;
+}
+.info-icon {
+  width: 60px;         /* 图片宽度 */
+  height: 60px;        /* 图片高度 */
+  object-fit: contain; /* 保持比例 */
+  margin-bottom: 8px;  /* 图片和文字之间的间距 */
+}
+</style>

+ 77 - 78
src/views/doormanManage/car_eventManage/index.vue

@@ -1,42 +1,38 @@
 <template>
-  <div class="event-page">
+  <div class="car-event-page">
     <!-- 左侧查询条件 -->
     <div class="query-panel">
       <el-form :model="queryForm" label-width="100px">
-        <el-form-item label="事件类型">
-          <el-select v-model="queryForm.eventType" placeholder="请选择事件类型">
-            <el-option label="全部" value="" />
-            <el-option label="门禁事件" value="access" />
-            <el-option label="报警事件" value="alarm" />
-          </el-select>
+        <el-form-item label="车牌号码">
+          <el-input v-model="queryForm.plateNumber" placeholder="请输入车牌号码" />
         </el-form-item>
 
-        <el-form-item label="主类型">
-          <el-select v-model="queryForm.mainType" placeholder="请选择主类型">
-            <el-option label="全部" value="" />
-            <el-option label="类型1" value="type1" />
-            <el-option label="类型2" value="type2" />
-          </el-select>
+        <el-form-item label="车主姓名">
+          <el-input v-model="queryForm.ownerName" placeholder="请输入车主姓名" />
         </el-form-item>
 
-        <el-form-item label="次类型">
-          <el-select v-model="queryForm.subType" placeholder="请选择次类型">
-            <el-option label="全部" value="" />
-            <el-option label="子类型1" value="sub1" />
-            <el-option label="子类型2" value="sub2" />
-          </el-select>
+        <el-form-item label="电话号码">
+          <el-input v-model="queryForm.phoneNumber" placeholder="请输入电话号码" />
         </el-form-item>
 
-        <el-form-item label="人员ID">
-          <el-input v-model="queryForm.personId" placeholder="请输入人员ID" />
+        <el-form-item label="事件类型">
+          <el-select v-model="queryForm.eventType" placeholder="请选择事件类型">
+            <el-option label="全部" value="" />
+            <el-option label="进门" value="IN" />
+            <el-option label="出门" value="OUT" />
+          </el-select>
         </el-form-item>
 
-        <el-form-item label="工号">
-          <el-input v-model="queryForm.jobNumber" placeholder="请输入工号" />
+        <el-form-item label="车辆类型">
+          <el-select v-model="queryForm.carType" placeholder="请选择车辆类型">
+            <el-option label="全部" value="" />
+            <el-option label="固定车" value="FIXED" />
+            <el-option label="授权车" value="AUTHORIZED" />
+          </el-select>
         </el-form-item>
 
-        <el-form-item label="姓名">
-          <el-input v-model="queryForm.name" placeholder="请输入姓名" />
+        <el-form-item label="车辆群组">
+          <el-input v-model="queryForm.carGroup" placeholder="请输入所属群组" />
         </el-form-item>
 
         <el-form-item label="开始时间">
@@ -57,7 +53,7 @@
           />
         </el-form-item>
 
-        <!-- 快捷按钮 -->
+        <!-- 快捷时间按钮 -->
         <div class="quick-btns">
           <el-button @click="setQuickTime('yesterday')">昨天</el-button>
           <el-button @click="setQuickTime('today')">今天</el-button>
@@ -71,27 +67,27 @@
 
     <!-- 右侧表格 -->
     <div class="table-panel">
-      <el-table
-        :data="tableData"
-        border
-        style="width: 100%;"
-      >
+      <el-table :data="tableData" border style="width: 100%;">
         <el-table-column type="index" label="序号" width="60" />
-        <el-table-column prop="personId" label="人员id" width="120" />
-        <el-table-column prop="jobNumber" label="工号" width="120" />
-        <el-table-column prop="name" label="姓名" width="120" />
-        <el-table-column prop="cardNumber" label="卡号" width="120" />
-        <el-table-column prop="door" label="门" width="100" />
-        <el-table-column prop="eventType" label="事件类型" width="150" />
-        <el-table-column prop="eventTime" label="时间" width="180">
+        <el-table-column prop="ownerName" label="车主姓名" width="120" />
+        <el-table-column prop="plateNumber" label="车牌号码" width="120" />
+        <el-table-column prop="phoneNumber" label="电话号码" width="150" />
+        <el-table-column prop="eventType" label="事件类型" width="100">
+          <template #default="scope">
+            {{ scope.row.eventType === 'IN' ? '进门' : scope.row.eventType === 'OUT' ? '出门' : '-' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="carType" label="车辆类型" width="120">
+          <template #default="scope">
+            {{ scope.row.carType === 'FIXED' ? '固定车' : '授权车' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="carGroup" label="车辆群组" width="150" />
+        <el-table-column prop="eventTime" label="事件时间" width="180">
           <template #default="scope">
             {{ new Date(scope.row.eventTime).toLocaleString() }}
           </template>
         </el-table-column>
-        <el-table-column prop="remoteHost" label="远程主机地址" width="160" />
-        <el-table-column prop="reader" label="读卡器" width="120" />
-        <el-table-column prop="detectorId" label="探测器ID" width="120" />
-        <el-table-column prop="operation" label="操作" min-width="120" />
       </el-table>
 
       <!-- 分页 -->
@@ -113,74 +109,77 @@
 import request from "@/utils/request";
 
 export default {
-  name: "EventPage",
+  name: "CarEventLogPage",
   data() {
     return {
       queryForm: {
-        id: "",    //id
-        personId: "",   // 人员ID
-        jobNumber: "",  // 工号
-        name: "",
-        cardNumber: "",
-        door: "",
-        remoteHost: "",
-        reader: "",
-        detectorId: "",
-        operation: "",
+        plateNumber: "",
+        ownerName: "",
+        phoneNumber: "",
         eventType: "",
-        eventTime: "",
-        createTime: "",
+        carType: "",
+        carGroup: "",
         startTime: "",
         endTime: "",
         pageNum: 1,
         pageSize: 24
       },
-      // private Long id;
-      // private String personId;     // 人员ID
-      // private String jobNumber;    // 工号
-      // private String name;         // 姓名
-      // private String cardNumber;   // 卡号
-      // private String door;         // 门
-      // private String remoteHost;   // 远程主机地址
-      // private String reader;       // 读卡器
-      // private String detectorId;   // 探测器ID
-      // private String operation;    // 操作
-      // private String eventType;    // 事件类型
-      // private LocalDateTime eventTime;  // 事件发生时间
-      // private LocalDateTime createTime; // 记录创建时间
       tableData: [],
       total: 0
     }
   },
   created() {
-    // 页面加载时自动拉取第一页数据
     this.fetchData()
   },
   methods: {
     fetchData() {
+      // const params = {
+      //   ...this.queryForm,
+      //   pageNum: Number(this.queryForm.pageNum),    // 转数字
+      //   pageSize: Number(this.queryForm.pageSize),  // 转数字
+      //   startTime: this.queryForm.startTime ? this.queryForm.startTime.getTime() : null, // 转时间戳
+      //   endTime: this.queryForm.endTime ? this.queryForm.endTime.getTime() : null
+      // }
+      const params = {
+        plateNumber: this.queryForm.plateNumber || undefined,
+        ownerName: this.queryForm.ownerName || undefined,
+        phoneNumber: this.queryForm.phoneNumber || undefined,
+        eventType: this.queryForm.eventType || undefined,
+        carType: this.queryForm.carType || undefined,
+        carGroup: this.queryForm.carGroup || undefined,
+        pageNum: Number(this.queryForm.pageNum),
+        pageSize: Number(this.queryForm.pageSize),
+        startTime: this.queryForm.startTime ? this.queryForm.startTime.getTime() : undefined,
+        endTime: this.queryForm.endTime ? this.queryForm.endTime.getTime() : undefined,
+      }
+
+      Object.keys(this.queryForm).forEach(key => {
+        if (this.queryForm[key] === "" || this.queryForm[key] === null) {
+          delete params[key]
+        }
+      })
+
       request({
-        url: "/event/list",
+        url: "/car/event/log/list",
         method: "get",
         params: this.queryForm
+        // params
       }).then(res => {
         this.tableData = res.records || []
-        console.log("数据",res)
-        // console.log("总条数",res.total)
         this.total = res.total || 0
+        console.log("车辆进出记录数据:", res)
       })
-
-
     },
     setQuickTime(type) {
       const now = new Date()
       if (type === "today") {
-        this.queryForm.startTime = new Date(now.setHours(0,0,0,0))
+        this.queryForm.startTime = new Date(now.setHours(0, 0, 0, 0))
         this.queryForm.endTime = new Date()
       } else if (type === "yesterday") {
         const y = new Date()
         y.setDate(y.getDate() - 1)
-        this.queryForm.startTime = new Date(y.setHours(0,0,0,0))
-        this.queryForm.endTime = new Date(y.setHours(23,59,59,999))
+        this.queryForm.startTime = new Date(y.setHours(0, 0, 0, 0))
+        this.queryForm.endTime = new Date(y.setHours(23, 59, 59, 999))
       } else if (type === "month") {
         const first = new Date(now.getFullYear(), now.getMonth(), 1)
         this.queryForm.startTime = first
@@ -192,7 +191,7 @@ export default {
 </script>
 
 <style scoped>
-.event-page {
+.car-event-page {
   display: flex;
   padding: 10px;
 }

+ 48 - 30
src/views/doormanManage/infoManage/index.vue

@@ -39,15 +39,28 @@
             </el-button>
           </div>
           <el-tabs v-model="activeDevice">
-            <el-tab-pane
-              v-for="d in devices"
-              :key="d.id"
-              :label="d.name"
-              :name="d.id">
-              <div style="background:#000; height:200px; display:flex; align-items:center; justify-content:center; color:white;">
-                {{ d.name }} 视频流
+            <el-tab-pane label="大门设备">
+              <div style="display: flex; gap: 10px;">
+                <div
+                  v-for="d in new_devices"
+                  :key="d.id"
+                  style="background:#000; width: 50%; height:200px; display:flex; align-items:center; justify-content:center; color:white;">
+                  {{ d.name }} 视频流
+                </div>
               </div>
             </el-tab-pane>
+
+            <el-tab-pane label="机关楼设备">
+              <div style="display: flex; gap: 10px;">
+                <div
+                  v-for="d in new_devices"
+                  :key="d.id"
+                  style="background:#000; width: 50%; height:200px; display:flex; align-items:center; justify-content:center; color:white;">
+                  {{ d.name }} 视频流
+                </div>
+              </div>
+            </el-tab-pane>
+
           </el-tabs>
         </el-card>
       </el-col>
@@ -115,26 +128,26 @@
 <!--        </el-col>-->
 <!--      </el-row>-->
     </el-card>
-      <el-card shadow="hover" class="face-card">
-        <h2 class="section-title">人脸信息总览</h2>
-        <div class="face-info">
-          <div class="info-block">
-            <img src="/resources/face1.png" class="info-icon" />
-            <p>人员总数</p>
-            <span>{{ faceCount }}</span>
-          </div>
-          <div class="info-block">
-
-            <p>内部人脸总数</p>
-            <span>{{ registeredCount }}</span>
-          </div>
-          <div class="info-block">
+<!--      <el-card shadow="hover" class="face-card">-->
+<!--        <h2 class="section-title">人脸信息总览</h2>-->
+<!--        <div class="face-info">-->
+<!--          <div class="info-block">-->
 <!--            <img src="/resources/face1.png" class="info-icon" />-->
-            <p>临时访问人脸总数</p>
-            <span>{{ unregisteredCount }}</span>
-          </div>
-        </div>
-      </el-card>
+<!--            <p>人员总数</p>-->
+<!--            <span>{{ faceCount }}</span>-->
+<!--          </div>-->
+<!--          <div class="info-block">-->
+
+<!--            <p>内部人脸总数</p>-->
+<!--            <span>{{ registeredCount_face }}</span>-->
+<!--          </div>-->
+<!--          <div class="info-block">-->
+<!--&lt;!&ndash;            <img src="/resources/face1.png" class="info-icon" />&ndash;&gt;-->
+<!--            <p>临时访问人脸总数</p>-->
+<!--            <span>{{ unregisteredCount_face }}</span>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--      </el-card>-->
     </el-col>
 
     <!--      &lt;!&ndash; 右下角:实时事件 &ndash;&gt;-->
@@ -171,6 +184,10 @@ export default {
         { id: '1', name: '设备1' },
         { id: '2', name: '设备2' }
       ],
+      new_devices: [
+        { id: '1', name: '进门监控' },
+        { id: '2', name: '出门监控' }
+      ],
       people: { internal: 10, temporary: 2 },
       faces: { internal: 8, external: 5 },
 
@@ -180,6 +197,8 @@ export default {
       peopleCount: 0,
       registeredCount_people: 0,
       unregisteredCount_people: 0,
+      registeredCount_face: 0,
+      unregisteredCount_face: 0,
     }
   },
   created() {
@@ -202,8 +221,6 @@ export default {
       })
     },
     peopleData() {
-
-
       request({
         url: "/person/info/total",
         method: "get",
@@ -240,11 +257,12 @@ export default {
         let data = res
         this.peopleList = data
         console.log("人员信息:", this.peopleList)
+        console.log("第一条数据:", data[0])
         // 内部人员数量 (is_temporary == 0)
-        this.registeredCount_people = data.filter(p => p.is_temporary == false).length
+        this.registeredCount_people = data.filter(p => p.isTemporary  === false).length
 
         // 临时访问人员数量 (is_temporary == 1)
-        this.unregisteredCount_people = data.filter(p => p.is_temporary === true).length
+        this.unregisteredCount_people = data.filter(p => p.isTemporary  === true).length
         console.log("内部人员:", this.registeredCount_people)
 
       }).finally(() => { this.loading = false })

+ 109 - 0
src/views/militaryvehicleManagement/carManage/index.vue

@@ -0,0 +1,109 @@
+<template>
+  <div class="tabs">
+    <div class="tab-titles">
+      <div
+        v-for="(tab, index) in tabs"
+        :key="index"
+        :class="['tab-title', { active: activeTab === index }]"
+        @click="setActiveTab(index)"
+      >
+        {{ tab.name }}
+      </div>
+    </div>
+    <div class="tab-content">
+      <component :is="tabs[activeTab].component" />
+    </div>
+  </div>
+</template>
+
+<script>
+import TheBus from '../thebus/index.vue';
+import PrivateCar from '../privateCar/index.vue';
+
+export default {
+  data() {
+    return {
+      activeTab: 0, // 默认选中的 tab
+      tabs: [
+        { name: '军车管理', component: TheBus },
+        { name: '私家车管理', component: PrivateCar }
+      ]
+    };
+  },
+  methods: {
+    setActiveTab(index) {
+      this.activeTab = index;
+    }
+  }
+};
+</script>
+
+<style scoped>
+.tabs {
+  width: 100%;
+  height: 100%;
+  margin: 0 auto;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.tab-titles {
+  display: flex;
+  cursor: pointer;
+  margin-bottom: 20px;
+  border-bottom: 2px solid #ddd; /* Tab 底部增加一条边框 */
+}
+
+.tab-title {
+  padding: 12px 20px;
+  margin-right: 10px;
+  background-color: #f0f0f0;
+  border-radius: 8px 8px 0 0;
+  transition: background-color 0.3s, transform 0.3s;
+  font-weight: 500;
+  font-size: 16px;
+}
+
+.tab-title:hover {
+  background-color: #e0e0e0; /* hover时稍微变色 */
+  transform: scale(1.05); /* 提高一点点击感 */
+}
+
+.tab-title.active {
+  background-color: #007BFF;
+  color: white;
+  box-shadow: 0 2px 8px rgba(0, 123, 255, 0.3);
+}
+
+.tab-content {
+  width: 100%;
+  padding: 20px;
+  border: 1px solid #ccc;
+  border-radius: 8px;
+  background-color: #f9f9f9;
+  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); /* 添加内容区阴影 */
+  transition: opacity 0.3s ease, transform 0.3s ease;
+  margin-top: 20px;
+  min-height: 200px; /* 保证内容区有最小高度 */
+}
+
+/* 响应式样式 */
+@media (max-width: 768px) {
+  .tab-titles {
+    flex-direction: column; /* 小屏幕时让 Tab 垂直排列 */
+    align-items: center;
+  }
+
+  .tab-title {
+    margin-bottom: 10px;
+    width: 100%;
+    text-align: center;
+  }
+
+  .tab-content {
+    padding: 15px;
+    min-height: 150px;
+  }
+}
+</style>

+ 109 - 0
src/views/militaryvehicleManagement/catInAndOut/index.vue

@@ -0,0 +1,109 @@
+<template>
+  <div class="tabs">
+    <div class="tab-titles">
+      <div
+        v-for="(tab, index) in tabs"
+        :key="index"
+        :class="['tab-title', { active: activeTab === index }]"
+        @click="setActiveTab(index)"
+      >
+        {{ tab.name }}
+      </div>
+    </div>
+    <div class="tab-content">
+      <component :is="tabs[activeTab].component" />
+    </div>
+  </div>
+</template>
+
+<script>
+import ThebusAccessLog from '../thebusAccessLog/index.vue';
+import PrivateAccessLog from '../privateAccessLog/index.vue';
+
+export default {
+  data() {
+    return {
+      activeTab: 0, // 默认选中的 tab
+      tabs: [
+        { name: '军车进出查询', component: ThebusAccessLog },
+        { name: '私家车进出查询', component: PrivateAccessLog }
+      ]
+    };
+  },
+  methods: {
+    setActiveTab(index) {
+      this.activeTab = index;
+    }
+  }
+};
+</script>
+
+<style scoped>
+.tabs {
+  width: 100%;
+  height: 100%;
+  margin: 0 auto;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.tab-titles {
+  display: flex;
+  cursor: pointer;
+  margin-bottom: 20px;
+  border-bottom: 2px solid #ddd; /* Tab 底部增加一条边框 */
+}
+
+.tab-title {
+  padding: 12px 20px;
+  margin-right: 10px;
+  background-color: #f0f0f0;
+  border-radius: 8px 8px 0 0;
+  transition: background-color 0.3s, transform 0.3s;
+  font-weight: 500;
+  font-size: 16px;
+}
+
+.tab-title:hover {
+  background-color: #e0e0e0; /* hover时稍微变色 */
+  transform: scale(1.05); /* 提高一点点击感 */
+}
+
+.tab-title.active {
+  background-color: #007BFF;
+  color: white;
+  box-shadow: 0 2px 8px rgba(0, 123, 255, 0.3);
+}
+
+.tab-content {
+  width: 100%;
+  padding: 20px;
+  border: 1px solid #ccc;
+  border-radius: 8px;
+  background-color: #f9f9f9;
+  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); /* 添加内容区阴影 */
+  transition: opacity 0.3s ease, transform 0.3s ease;
+  margin-top: 20px;
+  min-height: 200px; /* 保证内容区有最小高度 */
+}
+
+/* 响应式样式 */
+@media (max-width: 768px) {
+  .tab-titles {
+    flex-direction: column; /* 小屏幕时让 Tab 垂直排列 */
+    align-items: center;
+  }
+
+  .tab-title {
+    margin-bottom: 10px;
+    width: 100%;
+    text-align: center;
+  }
+
+  .tab-content {
+    padding: 15px;
+    min-height: 150px;
+  }
+}
+</style>

+ 88 - 29
src/views/militaryvehicleManagement/thebusList/index.vue

@@ -148,6 +148,20 @@
             v-hasPermi="['militaryvehicleManagement:thebusApply:edit']"
             >归队</el-button
           >
+          <!-- 修改按钮 -->
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleUpdate(scope.row)"
+          >修改</el-button>
+
+          <!-- 删除按钮 -->
+          <el-button
+            size="mini"
+            type="text"
+            style="color: red"
+            @click="handleDelete(scope.row)"
+          >删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -610,8 +624,10 @@ import {
   zaiweiCar,
   chuCarList,
   addKeChuChe,
+  updateKeChuChe,
   sb,
   guiDui,
+  delThebus
 } from "@/api/militaryvehicleManagement/thebusApply";
 // 查询字典
 import { getDicts } from "@/api/system/dict/data";
@@ -733,6 +749,31 @@ export default {
     this.chePai();
   },
   methods: {
+    /** 修改按钮 **/
+    handleUpdate(row) {
+      // 先把表单重置
+      // this.resetForm("form");
+      // 打开弹窗
+      this.openes = true;
+      this.title = "修改出车记录";
+      // 回显数据
+      // this.form = Object.assign({}, row);
+      this.fomr1 = { ...row };
+    },
+
+    /** 删除按钮 **/
+    handleDelete(row) {
+      this.$modal.confirm('确定要删除这条出车记录吗?')
+        .then(() => {
+          return delThebus(row.id);   // 这里调用后端删除接口
+        })
+        .then(() => {
+          this.$modal.msgSuccess("删除成功");
+          this.getList(); // 重新加载列表
+        })
+        .catch(() => {});
+    },
+
     // 获取带车人信息
     getDaiAll() {
       getAll().then((res) => {
@@ -986,9 +1027,9 @@ export default {
       this.getTreeList();
       const id = row.id || this.ids;
       getThebusApply(id).then((response) => {
-        this.form = response.data;
+        this.fomr1 = { ...this.fomr1, ...response.data };
         this.getRen(this.form.unitId);
-        this.open = true;
+        this.openes = true;
         this.title = "修改可出车列表";
       });
     },
@@ -1013,41 +1054,59 @@ export default {
     },
     // 新增提交按钮
     submitForm1() {
-      this.$refs["form1"].validate((valid) => {
-        if (valid) {
-          if (this.checkShop.length) {
-            this.fomr1.bdglDepartureInfos = this.checkShops;
-            this.checkShops.forEach((item) => {
-              this.arr.push(item.bdglThebusId);
-            });
-          }
-          if (this.arr.length) {
-            this.fomr1.thebusId = this.arr.join(",");
-          }
-          this.fomr1.outstatus = "1";
-          addKeChuChe(this.fomr1).then((response) => {
+      // this.$refs["form1"].validate((valid) => {
+      //   if (valid) {
+      //     if (this.checkShop.length) {
+      //       this.fomr1.bdglDepartureInfos = this.checkShops;
+      //       this.checkShops.forEach((item) => {
+      //         this.arr.push(item.bdglThebusId);
+      //       });
+      //     }
+      //     if (this.arr.length) {
+      //       this.fomr1.thebusId = this.arr.join(",");
+      //     }
+      //     this.fomr1.outstatus = "1";
+      //     addKeChuChe(this.fomr1).then((response) => {
+      //       this.$modal.msgSuccess("新增成功");
+      //       this.openes = false;
+      //       this.getList();
+      //       this.arr = [];
+      //     });
+      //   }
+      // });
+      this.$refs["form1"].validate(valid => {
+        if (!valid) return;
+        if (this.fomr1.id) {
+          // 有 id 表示是修改
+          updateKeChuChe(this.fomr1).then(res => {
+            this.$modal.msgSuccess("修改成功");
+            this.openes = false;
+            this.getList();
+          });
+        } else {
+          // 无 id 表示是新增
+          addKeChuChe(this.fomr1).then(res => {
             this.$modal.msgSuccess("新增成功");
             this.openes = false;
             this.getList();
-            this.arr = [];
           });
         }
       });
     },
     /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal
-        .confirm("是否确认删除可出车列表的数据项?")
-        .then(function () {
-          return delThebusApply(ids);
-        })
-        .then(() => {
-          this.getList();
-          this.$modal.msgSuccess("删除成功");
-        })
-        .catch(() => {});
-    },
+    // handleDelete(row) {
+    //   const ids = row.id || this.ids;
+    //   this.$modal
+    //     .confirm("是否确认删除可出车列表的数据项?")
+    //     .then(function () {
+    //       return delThebusApply(ids);
+    //     })
+    //     .then(() => {
+    //       this.getList();
+    //       this.$modal.msgSuccess("删除成功");
+    //     })
+    //     .catch(() => {});
+    // },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;

+ 19 - 1
src/views/pt.vue

@@ -141,6 +141,7 @@
               str.includes('检查督导') ||
               str.includes('人员进出') ||
               str.includes('安防监控') ||
+              str.includes('车行闸道') ||
               str.includes('门岗管理') ||
               str.includes('门禁管理') ||
               str.includes('手机管理')
@@ -187,6 +188,16 @@
                 <a href="#" class="a">安防监控</a>
               </div>
             </li>
+            <li v-if="str.includes('车行闸道') || str.includes('admin')">
+              <div class="demo-box">
+                <div class="demo active" v-on:click="chexingfun" data-url="/diary?ref=addtabs">
+                  <img src="../images/ag.png" alt />
+                </div>
+              </div>
+              <div class="demo-a">
+                <a href="#" class="a">车行闸道</a>
+              </div>
+            </li>
             <li v-if="str.includes('门岗管理') || str.includes('admin')">
               <div class="demo-box">
                 <div class="demo active" v-on:click="mengangfun" data-url="/diary?ref=addtabs">
@@ -232,6 +243,7 @@
                 str.includes('检查督导') ||
                 str.includes('人员进出') ||
                 str.includes('安防监控') ||
+                str.includes('车行闸道') ||
                 str.includes('门岗管理') ||
                 str.includes('门禁管理') ||
                 str.includes('手机管理')
@@ -969,6 +981,12 @@ export default {
         .catch(() => {});
       Cookies.set("shuaxin", "false");
     },
+    chexingfun() {
+      this.$router
+        .push({ path: "/index", query: { name: "/doorcarManage" } })
+        .catch(() => {});
+      Cookies.set("shuaxin", "false");
+    },
     mengangfun() {
       this.$router
         .push({ path: "/index", query: { name: "/doormanManage" } })
@@ -1581,7 +1599,7 @@ hr {
   width: 355px;
   height: 36px;
   background: #004d86;
-  color: #fff;
+  color: #000000;
   border: 1px solid #fff !important;
 }
 ::v-deep .el-textarea__inner {