From 364adbc9a93a396b74e154f910c2a0a72bfb1a0f Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 29 十一月 2025 22:10:41 +0800
Subject: [PATCH] feat: 更新车辆里程统计

---
 ruoyi-ui/src/views/system/vehicle/index.vue |  112 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 77 insertions(+), 35 deletions(-)

diff --git a/ruoyi-ui/src/views/system/vehicle/index.vue b/ruoyi-ui/src/views/system/vehicle/index.vue
index 6710c5d..40e9ca5 100644
--- a/ruoyi-ui/src/views/system/vehicle/index.vue
+++ b/ruoyi-ui/src/views/system/vehicle/index.vue
@@ -11,19 +11,20 @@
         />
       </el-form-item>
       <el-form-item label="杞﹁締绫诲瀷" prop="vehicleType">
-        <el-input
-          v-model="queryParams.vehicleType"
-          placeholder="璇疯緭鍏ヨ溅杈嗙被鍨�"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
+        <el-select v-model="queryParams.vehicleType" placeholder="璇烽�夋嫨杞﹁締绫诲瀷" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.sys_vehicle_type"
+            :key="'vtype-' + dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
       </el-form-item>
       <el-form-item label="鐘舵��" prop="status">
         <el-select v-model="queryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable size="small">
           <el-option
             v-for="dict in dict.type.sys_normal_disable"
-            :key="dict.value"
+            :key="'status-' + dict.value"
             :label="dict.label"
             :value="dict.value"
           />
@@ -33,7 +34,7 @@
         <el-select v-model="queryParams.platformCode" placeholder="璇烽�夋嫨骞冲彴" clearable size="small">
           <el-option
             v-for="dict in dict.type.sys_platform"
-            :key="dict.value"
+            :key="'platform-' + dict.value"
             :label="dict.label"
             :value="dict.value"
           />
@@ -42,7 +43,7 @@
       <el-form-item label="褰掑睘閮ㄩ棬" prop="deptId">
         <el-select v-model="queryParams.deptId" placeholder="璇烽�夋嫨閮ㄩ棬" clearable size="small">
           <el-option
-            v-for="dept in deptOptions"
+            v-for="dept in deptList"
             :key="dept.deptId"
             :label="dept.deptName"
             :value="dept.deptId"
@@ -105,7 +106,11 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="杞﹁締ID" align="center" prop="vehicleId" />
       <el-table-column label="杞︾墝鍙�" align="center" prop="vehicleNo" />
-      <el-table-column label="杞﹁締绫诲瀷" align="center" prop="vehicleType" />
+      <el-table-column label="杞﹁締绫诲瀷" align="center" prop="vehicleType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_vehicle_type" :value="scope.row.vehicleType"/>
+        </template>
+      </el-table-column>
       <el-table-column label="杞﹁締鍝佺墝" align="center" prop="vehicleBrand" />
       <el-table-column label="杞﹁締鍨嬪彿" align="center" prop="vehicleModel" />
       <el-table-column label="骞冲彴鏍囪瘑" align="center" prop="platformCode">
@@ -113,7 +118,14 @@
           <dict-tag :options="dict.type.sys_platform" :value="scope.row.platformCode"/>
         </template>
       </el-table-column>
-      <el-table-column label="褰掑睘閮ㄩ棬" align="center" prop="deptName" />
+      <el-table-column label="褰掑睘鍒嗗叕鍙�" align="center" prop="deptNames" width="200">
+        <template slot-scope="scope">
+          <span v-if="scope.row.deptNames && scope.row.deptNames.length > 0">
+            {{ scope.row.deptNames.join('銆�') }}
+          </span>
+          <span v-else>-</span>
+        </template>
+      </el-table-column>
       <el-table-column label="鐘舵��" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
@@ -159,7 +171,14 @@
           <el-input v-model="form.vehicleNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" />
         </el-form-item>
         <el-form-item label="杞﹁締绫诲瀷" prop="vehicleType">
-          <el-input v-model="form.vehicleType" placeholder="璇疯緭鍏ヨ溅杈嗙被鍨�" />
+          <el-select v-model="form.vehicleType" placeholder="璇烽�夋嫨杞﹁締绫诲瀷" clearable style="width: 100%">
+            <el-option
+              v-for="dict in dict.type.sys_vehicle_type"
+              :key="'form-vtype-' + dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="杞﹁締鍝佺墝" prop="vehicleBrand">
           <el-input v-model="form.vehicleBrand" placeholder="璇疯緭鍏ヨ溅杈嗗搧鐗�" />
@@ -171,19 +190,9 @@
           <el-select v-model="form.platformCode" placeholder="璇烽�夋嫨骞冲彴" clearable>
             <el-option
               v-for="dict in dict.type.sys_platform"
-              :key="dict.value"
+              :key="'form-platform-' + dict.value"
               :label="dict.label"
               :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="褰掑睘閮ㄩ棬" prop="deptId">
-          <el-select v-model="form.deptId" placeholder="璇烽�夋嫨閮ㄩ棬" clearable>
-            <el-option
-              v-for="dept in deptOptions"
-              :key="dept.deptId"
-              :label="dept.deptName"
-              :value="dept.deptId"
             />
           </el-select>
         </el-form-item>
@@ -191,10 +200,20 @@
           <el-radio-group v-model="form.status">
             <el-radio
               v-for="dict in dict.type.sys_normal_disable"
-              :key="dict.value"
+              :key="'form-status-' + dict.value"
               :label="dict.value"
             >{{dict.label}}</el-radio>
           </el-radio-group>
+        </el-form-item>
+        <el-form-item label="褰掑睘鍒嗗叕鍙�" prop="deptIds">
+          <el-select v-model="form.deptIds" placeholder="璇烽�夋嫨褰掑睘鍒嗗叕鍙�" multiple clearable style="width: 100%">
+            <el-option
+              v-for="dept in deptList"
+              :key="dept.deptId"
+              :label="dept.deptName"
+              :value="dept.deptId"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="澶囨敞" prop="remark">
           <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
@@ -214,7 +233,7 @@
 
 export default {
   name: "Vehicle",
-  dicts: ['sys_normal_disable', 'sys_platform'],
+  dicts: ['sys_normal_disable', 'sys_platform', 'sys_vehicle_type'],
   data() {
     return {
       // 閬僵灞�
@@ -231,8 +250,8 @@
       total: 0,
       // 杞﹁締淇℃伅琛ㄦ牸鏁版嵁
       vehicleList: [],
-      // 閮ㄩ棬閫夐」
-      deptOptions: [],
+      // 閮ㄩ棬鍒楄〃鏁版嵁
+      deptList: [],
       // 寮瑰嚭灞傛爣棰�
       title: "",
       // 鏄惁鏄剧ず寮瑰嚭灞�
@@ -259,7 +278,8 @@
         status: "0",
         remark: null,
         platformCode: null,
-        deptId: null
+        deptId: null,
+        deptIds: []  // 澶氫釜鍒嗗叕鍙窱D鏁扮粍
       },
       // 琛ㄥ崟鏍¢獙
       rules: {
@@ -272,8 +292,8 @@
         platformCode: [
           { required: true, message: "骞冲彴鏍囪瘑涓嶈兘涓虹┖", trigger: "change" }
         ],
-        deptId: [
-          { required: true, message: "褰掑睘閮ㄩ棬涓嶈兘涓虹┖", trigger: "change" }
+        deptIds: [
+          { required: true, message: "褰掑睘鍒嗗叕鍙镐笉鑳戒负绌�", trigger: "change", type: 'array' }
         ]
       }
     };
@@ -292,10 +312,18 @@
         this.loading = false;
       });
     },
-    /** 鏌ヨ閮ㄩ棬鍒楄〃 */
+    /** 鑾峰彇閮ㄩ棬鍒楄〃锛堝彧鏄剧ず鍒嗗叕鍙革細parent_id=100锛� */
     getDeptList() {
-      listDept().then(response => {
-        this.deptOptions = response.data;
+      listDept({ parentId: 100 }).then(response => {
+        
+        // 杩囨护鍑哄垎鍏徃锛坧arent_id=100鐨勯儴闂級
+        if (response.data) {
+
+          this.deptList = response.data.filter(dept => dept.parentId === "100");
+          // console.log("deptList: ",this.deptList,response.data.filter(dept => dept.parentId === "100"));
+        } else {
+          this.deptList = [];
+        }
       });
     },
     // 鍙栨秷鎸夐挳
@@ -314,7 +342,8 @@
         status: "0",
         remark: null,
         platformCode: null,
-        deptId: null
+        deptId: null,
+        deptIds: []  // 閲嶇疆涓虹┖鏁扮粍
       };
       this.resetForm("form");
     },
@@ -346,6 +375,14 @@
       const vehicleId = row.vehicleId || this.ids
       getVehicle(vehicleId).then(response => {
         this.form = response.data;
+        // 纭繚deptIds鏄竴涓暟缁�
+        if (!this.form.deptIds) {
+          this.form.deptIds = [];
+        }
+        // 濡傛灉deptIds涓虹┖鏁扮粍锛屼絾deptId鏈夊�硷紝鍒欐坊鍔燿eptId鍒癲eptIds涓�
+        if (this.form.deptIds.length === 0 && this.form.deptId) {
+          this.form.deptIds = [this.form.deptId];
+        }
         this.open = true;
         this.title = "淇敼杞﹁締淇℃伅";
       });
@@ -354,6 +391,11 @@
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
+          // 濡傛灉閫夋嫨浜嗗涓垎鍏徃锛屽皢绗竴涓缃负deptId锛堜富鍒嗗叕鍙革級
+          if (this.form.deptIds && this.form.deptIds.length > 0) {
+            this.form.deptId = this.form.deptIds[0];
+          }
+          
           if (this.form.vehicleId != null) {
             updateVehicle(this.form).then(response => {
               this.$modal.msgSuccess("淇敼鎴愬姛");

--
Gitblit v1.9.1