Browse Source

fix: 临时车改为名称判断——按VehicleType.Name而非硬编码ID=1;临时车类型不可编辑删除

lq 1 tháng trước cách đây
mục cha
commit
9270028588

+ 2 - 0
frontend/src/view/parking/carInfo.vue

@@ -266,11 +266,13 @@
             <el-button
               text
               type="primary"
+              :disabled="scope.row.name === '临时车'"
               @click="openTypeForm($t.value.modify, scope.row)"
             >{{ $t.value.modify }}</el-button>
             <el-button
               text
               type="danger"
+              :disabled="scope.row.name === '临时车'"
               @click="deleteType(scope.row.ID)"
             >{{ $t.value.remove }}</el-button>
           </template>

+ 4 - 0
internal/initialize/seed.go

@@ -176,6 +176,10 @@ func SeedSystemData() {
 		{MenuId: "31", AuthorityId: "618"}, {MenuId: "31", AuthorityId: "888"}, {MenuId: "31", AuthorityId: "9527"},
 	}
 	db.Create(&authMenus)
+		// --- vehicle_type (默认车辆类型) ---
+		db.FirstOrCreate(&dao.VehicleType{},
+			dao.VehicleType{Name: "临时车", Remarks: "系统默认类型,不可编辑删除"},
+		)
 
 	// --- sys_apis (active only, skipping soft-deleted ids 44-66,84,90-98) ---
 	apis := []dao.SysApi{

+ 1 - 1
internal/service/parking/passage.go

@@ -70,7 +70,7 @@ func (s *PassageService) HandlePassage(req common.PassageRequest) (*common.Passa
 	if err != nil || v.ID == 0 {
 		isTempVehicle = true
 	} else if v.VehicleType != nil {
-		isTempVehicle = (v.VehicleTypeID == 1) // 1=临时车
+		isTempVehicle = (v.VehicleType.Name == "临时车")
 	} else {
 		isTempVehicle = true
 	}

+ 7 - 3
internal/service/vehicle/vehicle.go

@@ -159,11 +159,15 @@ func (s *VehicleService) VehicleEntry(req request.VehicleEntry) (request.Vehicle
 	// 检查车辆是否存在
 	vehicle, err := s.GetVehicleByPlateNumber(req.PlateNumber, req.RFIDTag)
 	if err != nil {
-		// 如果车辆不存在,创建新车辆,默认使用ID为1的车辆类型(临时车)
+		// 如果车辆不存在,创建新车辆,自动归类为"临时车"
+		var tempType dao.VehicleType
+		if global.GVA_DB.Where("name = ?", "临时车").First(&tempType).Error != nil {
+			return request.VehicleEntryResponse{}, errors.New("系统错误:临时车类型未配置")
+		}
 		createReq := request.VehicleCreate{
 			PlateNumber:   req.PlateNumber,
-			VehicleTypeID: 1, // 默认类型ID为1(临时车)
-			OwnerId:       0, // 默认无车主
+			VehicleTypeID: tempType.ID,
+			OwnerId:       0,
 		}
 		err = s.CreateVehicle(createReq)
 		if err != nil {

+ 10 - 0
internal/service/vehicle/vehicle_type.go

@@ -33,6 +33,11 @@ func (s *VehicleTypeService) UpdateVehicleType(req request.VehicleTypeUpdate) er
 		return errors.New("车辆类型不存在")
 	}
 
+	// 禁止编辑系统默认类型"临时车"
+	if vehicleType.Name == "临时车" {
+		return errors.New("临时车是系统默认类型,不可编辑")
+	}
+
 	var existingType dao.VehicleType
 	result = global.GVA_DB.Where("name = ? AND id != ?", req.Name, req.ID).First(&existingType)
 	if result.RowsAffected > 0 {
@@ -87,6 +92,11 @@ func (s *VehicleTypeService) DeleteVehicleType(id uint) error {
 		return errors.New("车辆类型不存在")
 	}
 
+	// 禁止删除系统默认类型"临时车"
+	if vehicleType.Name == "临时车" {
+		return errors.New("临时车是系统默认类型,不可删除")
+	}
+
 	var vehicleCount int64
 	global.GVA_DB.Model(&dao.Vehicle{}).Where("vehicle_type_id = ?", id).Count(&vehicleCount)
 	if vehicleCount > 0 {