From 9529220c815bfe6e43c992fde2f392be823450eb Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 11 十一月 2025 20:27:33 +0800
Subject: [PATCH] feat:增加天地图接口,并增加车辆GPS统计
---
ruoyi-ui/src/views/system/vehicle/index.vue | 132 ++++++++++++++++++++++++++++++++++++++------
1 files changed, 114 insertions(+), 18 deletions(-)
diff --git a/ruoyi-ui/src/views/system/vehicle/index.vue b/ruoyi-ui/src/views/system/vehicle/index.vue
index dd8660a..e1fdf89 100644
--- a/ruoyi-ui/src/views/system/vehicle/index.vue
+++ b/ruoyi-ui/src/views/system/vehicle/index.vue
@@ -11,13 +11,14 @@
/>
</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="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">
@@ -31,8 +32,22 @@
</el-form-item>
<el-form-item label="骞冲彴鏍囪瘑" prop="platformCode">
<el-select v-model="queryParams.platformCode" placeholder="璇烽�夋嫨骞冲彴" clearable size="small">
- <el-option label="A骞冲彴" value="A" />
- <el-option label="B骞冲彴" value="B" />
+ <el-option
+ v-for="dict in dict.type.sys_platform"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="褰掑睘閮ㄩ棬" prop="deptId">
+ <el-select v-model="queryParams.deptId" placeholder="璇烽�夋嫨閮ㄩ棬" clearable size="small">
+ <el-option
+ v-for="dept in deptList"
+ :key="dept.deptId"
+ :label="dept.deptName"
+ :value="dept.deptId"
+ />
</el-select>
</el-form-item>
<el-form-item>
@@ -91,12 +106,24 @@
<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">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_platform" :value="scope.row.platformCode"/>
+ </template>
+ </el-table-column>
+ <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">
@@ -144,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="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="璇疯緭鍏ヨ溅杈嗗搧鐗�" />
@@ -153,9 +187,13 @@
<el-input v-model="form.vehicleModel" placeholder="璇疯緭鍏ヨ溅杈嗗瀷鍙�" />
</el-form-item>
<el-form-item label="骞冲彴鏍囪瘑" prop="platformCode">
- <el-select v-model="form.platformCode" placeholder="璇烽�夋嫨骞冲彴">
- <el-option label="A骞冲彴" value="A" />
- <el-option label="B骞冲彴" value="B" />
+ <el-select v-model="form.platformCode" placeholder="璇烽�夋嫨骞冲彴" clearable>
+ <el-option
+ v-for="dict in dict.type.sys_platform"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
</el-select>
</el-form-item>
<el-form-item label="鐘舵��" prop="status">
@@ -166,6 +204,16 @@
: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="璇疯緭鍏ュ唴瀹�" />
@@ -181,10 +229,11 @@
<script>
import { listVehicle, getVehicle, delVehicle, addVehicle, updateVehicle } from "@/api/system/vehicle";
+import { listDept } from "@/api/system/dept";
export default {
name: "Vehicle",
- dicts: ['sys_normal_disable', 'sys_platform'],
+ dicts: ['sys_normal_disable', 'sys_platform', 'sys_vehicle_type'],
data() {
return {
// 閬僵灞�
@@ -201,6 +250,8 @@
total: 0,
// 杞﹁締淇℃伅琛ㄦ牸鏁版嵁
vehicleList: [],
+ // 閮ㄩ棬鍒楄〃鏁版嵁
+ deptList: [],
// 寮瑰嚭灞傛爣棰�
title: "",
// 鏄惁鏄剧ず寮瑰嚭灞�
@@ -214,10 +265,22 @@
vehicleBrand: null,
vehicleModel: null,
status: null,
- platformCode: null
+ platformCode: null,
+ deptId: null
},
// 琛ㄥ崟鍙傛暟
- form: {},
+ form: {
+ vehicleId: null,
+ vehicleNo: null,
+ vehicleType: null,
+ vehicleBrand: null,
+ vehicleModel: null,
+ status: "0",
+ remark: null,
+ platformCode: null,
+ deptId: null,
+ deptIds: [] // 澶氫釜鍒嗗叕鍙窱D鏁扮粍
+ },
// 琛ㄥ崟鏍¢獙
rules: {
vehicleNo: [
@@ -225,12 +288,19 @@
],
status: [
{ required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "change" }
+ ],
+ platformCode: [
+ { required: true, message: "骞冲彴鏍囪瘑涓嶈兘涓虹┖", trigger: "change" }
+ ],
+ deptIds: [
+ { required: true, message: "褰掑睘鍒嗗叕鍙镐笉鑳戒负绌�", trigger: "change", type: 'array' }
]
}
};
},
created() {
this.getList();
+ this.getDeptList();
},
methods: {
/** 鏌ヨ杞﹁締淇℃伅鍒楄〃 */
@@ -240,6 +310,17 @@
this.vehicleList = response.rows;
this.total = response.total;
this.loading = false;
+ });
+ },
+ /** 鑾峰彇閮ㄩ棬鍒楄〃锛堝彧鏄剧ず鍒嗗叕鍙革細parent_id=100锛� */
+ getDeptList() {
+ listDept({ parentId: 100 }).then(response => {
+ // 杩囨护鍑哄垎鍏徃锛坧arent_id=100鐨勯儴闂級
+ if (response.data) {
+ this.deptList = response.data.filter(dept => dept.parentId === 100);
+ } else {
+ this.deptList = [];
+ }
});
},
// 鍙栨秷鎸夐挳
@@ -257,7 +338,9 @@
vehicleModel: null,
status: "0",
remark: null,
- platformCode: null
+ platformCode: null,
+ deptId: null,
+ deptIds: [] // 閲嶇疆涓虹┖鏁扮粍
};
this.resetForm("form");
},
@@ -289,6 +372,14 @@
const vehicleId = row.vehicleId || this.ids
getVehicle(vehicleId).then(response => {
this.form = response.data;
+ // 濡傛灉娌℃湁deptIds锛屽垯浠� deptId 鍜� deptName 涓濉�
+ if (!this.form.deptIds || this.form.deptIds.length === 0) {
+ if (this.form.deptId) {
+ this.form.deptIds = [this.form.deptId];
+ } else {
+ this.form.deptIds = [];
+ }
+ }
this.open = true;
this.title = "淇敼杞﹁締淇℃伅";
});
@@ -297,6 +388,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