wlzboy
2025-11-11 310633feef20e9b77d44fd25e0b41778e033b33b
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">
@@ -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="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="请输入车辆品牌" />
@@ -177,16 +196,6 @@
            />
          </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>
        <el-form-item label="状态" prop="status">
          <el-radio-group v-model="form.status">
            <el-radio
@@ -195,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="请输入内容" />
@@ -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: []  // 多个分公司ID数组
      },
      // 表单校验
      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,15 @@
        this.loading = false;
      });
    },
    /** 查询部门列表 */
    /** 获取部门列表(只显示分公司:parent_id=100) */
    getDeptList() {
      listDept().then(response => {
        this.deptOptions = response.data;
      listDept({ parentId: 100 }).then(response => {
        // 过滤出分公司(parent_id=100的部门)
        if (response.data) {
          this.deptList = response.data.filter(dept => dept.parentId === 100);
        } else {
          this.deptList = [];
        }
      });
    },
    // 取消按钮
@@ -314,7 +339,8 @@
        status: "0",
        remark: null,
        platformCode: null,
        deptId: null
        deptId: null,
        deptIds: []  // 重置为空数组
      };
      this.resetForm("form");
    },
@@ -346,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 = "修改车辆信息";
      });
@@ -354,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("修改成功");