|
|
@@ -1,222 +1,503 @@
|
|
|
<template>
|
|
|
<el-dialog
|
|
|
- :title="isEdit ? '修改人脸' : '新增人脸'"
|
|
|
- :visible.sync="visible"
|
|
|
- width="1200px"
|
|
|
- class="user-edit-dialog"
|
|
|
- :before-close="handleClose"
|
|
|
+ :visible.sync="localVisible"
|
|
|
+ :title="isEdit ? '修改车辆信息' : '新增车辆信息'"
|
|
|
+ @close="handleCancel"
|
|
|
+ custom-class="custom-dialog"
|
|
|
>
|
|
|
<el-form
|
|
|
- :model="form"
|
|
|
- :rules="rules"
|
|
|
- ref="vehicleForm"
|
|
|
+ ref="carForm"
|
|
|
+ :model="formData"
|
|
|
+ :rules="formRules"
|
|
|
label-width="150px"
|
|
|
- class="vehicle-form"
|
|
|
+ class="user-form"
|
|
|
>
|
|
|
- <!-- 车牌与卡信息 -->
|
|
|
+ <!-- 一、车牌信息 -->
|
|
|
+ <el-divider content-position="center">车牌信息</el-divider>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="车牌号码" prop="plateNumber">
|
|
|
- <el-input v-model="form.plateNumber" placeholder="请输入车牌号码" />
|
|
|
+ <el-input
|
|
|
+ v-model="formData.plateNumber"
|
|
|
+ placeholder="请输入车牌号码"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="车牌颜色" prop="plateColor">
|
|
|
- <el-select v-model="form.plateColor" placeholder="请选择车牌颜色">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.plateColor"
|
|
|
+ placeholder="请选择车牌颜色"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ class="full-width-select"
|
|
|
+ >
|
|
|
<el-option label="蓝色" value="blue" />
|
|
|
<el-option label="黄色" value="yellow" />
|
|
|
<el-option label="绿色" value="green" />
|
|
|
<el-option label="白色" value="white" />
|
|
|
<el-option label="黑色" value="black" />
|
|
|
+ <el-option label="红色" value="red" />
|
|
|
+ <el-option label="灰色" value="gray" />
|
|
|
+ <el-option label="橙色" value="orange" />
|
|
|
+ <el-option label="棕色" value="brown" />
|
|
|
+ <el-option label="粉色" value="pink" />
|
|
|
+ <el-option label="紫色" value="purple" />
|
|
|
+ <el-option label="其他" value="other" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="卡号" prop="cardNo">
|
|
|
- <el-input v-model="form.cardNo" placeholder="请输入卡号" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="卡片类型" prop="cardType">
|
|
|
- <el-select v-model="form.cardType" placeholder="请选择卡片类型">
|
|
|
- <el-option label="IC卡" value="IC" />
|
|
|
- <el-option label="ID卡" value="ID" />
|
|
|
- <el-option label="虚拟卡" value="virtual" />
|
|
|
+ <el-form-item label="车牌类型" prop="plateType">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.plateType"
|
|
|
+ placeholder="请选择车牌类型"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ class="full-width-select"
|
|
|
+ >
|
|
|
+ <el-option label="普通车牌" value="normal" />
|
|
|
+ <el-option label="临时车牌" value="temporary" />
|
|
|
+ <el-option label="新能源车牌" value="newEnergy" />
|
|
|
+ <el-option label="军车牌" value="military" />
|
|
|
+ <el-option label="警车牌" value="police" />
|
|
|
+ <el-option label="教练车牌" value="coach" />
|
|
|
+ <el-option label="挂车牌" value="trailer" />
|
|
|
+ <el-option label="领馆车牌" value="consulate" />
|
|
|
+ <el-option label="港澳车牌" value="hkMacao" />
|
|
|
+ <el-option label="应急车牌" value="emergency" />
|
|
|
+ <el-option label="其他" value="other" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
+ <!-- 二、车辆信息 -->
|
|
|
+ <el-divider content-position="center">车辆信息</el-divider>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="工本费(元)" prop="cardFee">
|
|
|
- <el-input-number v-model="form.cardFee" :min="0" />
|
|
|
+ <el-form-item label="车辆类型" prop="vehicleType">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.vehicleType"
|
|
|
+ placeholder="请选择车辆类型"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ class="full-width-select"
|
|
|
+ >
|
|
|
+ <el-option label="小型车" value="small" />
|
|
|
+ <el-option label="大型车" value="large" />
|
|
|
+ <el-option label="中型车" value="medium" />
|
|
|
+ <el-option label="电动车" value="electric" />
|
|
|
+ <el-option label="摩托车" value="motorcycle" />
|
|
|
+ <el-option label="货车" value="truck" />
|
|
|
+ <el-option label="客车" value="bus" />
|
|
|
+ <el-option label="特种车辆" value="special" />
|
|
|
+ <el-option label="其他" value="other" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="余额(元)" prop="balance">
|
|
|
- <el-input-number v-model="form.balance" :min="0" />
|
|
|
+ <el-form-item label="车辆颜色" prop="vehicleColor">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.vehicleColor"
|
|
|
+ placeholder="请选择或输入车辆颜色"
|
|
|
+ filterable
|
|
|
+ allow-create
|
|
|
+ default-first-option
|
|
|
+ clearable
|
|
|
+ class="full-width-select"
|
|
|
+ >
|
|
|
+ <el-option label="白色" value="white" />
|
|
|
+ <el-option label="黑色" value="black" />
|
|
|
+ <el-option label="银色" value="silver" />
|
|
|
+ <el-option label="灰色" value="gray" />
|
|
|
+ <el-option label="红色" value="red" />
|
|
|
+ <el-option label="蓝色" value="blue" />
|
|
|
+ <el-option label="黄色" value="yellow" />
|
|
|
+ <el-option label="绿色" value="green" />
|
|
|
+ <el-option label="橙色" value="orange" />
|
|
|
+ <el-option label="棕色" value="brown" />
|
|
|
+ <el-option label="紫色" value="purple" />
|
|
|
+ <el-option label="粉色" value="pink" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <!-- 时间信息 -->
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="开始时间" prop="startTime">
|
|
|
- <el-date-picker v-model="form.startTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" />
|
|
|
+ <el-form-item label="车辆品牌" prop="vehicleBrand">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.vehicleBrand"
|
|
|
+ placeholder="请选择或输入品牌"
|
|
|
+ filterable
|
|
|
+ allow-create
|
|
|
+ clearable
|
|
|
+ default-first-option
|
|
|
+ class="full-width-select"
|
|
|
+ >
|
|
|
+ <el-option label="丰田" value="Toyota" />
|
|
|
+ <el-option label="本田" value="Honda" />
|
|
|
+ <el-option label="日产" value="Nissan" />
|
|
|
+ <el-option label="大众" value="Volkswagen" />
|
|
|
+ <el-option label="宝马" value="BMW" />
|
|
|
+ <el-option label="奔驰" value="Mercedes-Benz" />
|
|
|
+ <el-option label="奥迪" value="Audi" />
|
|
|
+ <el-option label="比亚迪" value="BYD" />
|
|
|
+ <el-option label="特斯拉" value="Tesla" />
|
|
|
+ <el-option label="福特" value="Ford" />
|
|
|
+ <el-option label="长安" value="Changan" />
|
|
|
+ <el-option label="吉利" value="Geely" />
|
|
|
+ <el-option label="五菱" value="Wuling" />
|
|
|
+ <el-option label="其他" value="other" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="截止时间" prop="endTime">
|
|
|
- <el-date-picker v-model="form.endTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" />
|
|
|
+ <el-form-item label="车辆排量" prop="displacement">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.displacement"
|
|
|
+ placeholder="请输入排量(例如:1.5T / 2.0L)"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="注册时间" prop="registerTime">
|
|
|
- <el-date-picker v-model="form.registerTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" />
|
|
|
+ <el-form-item label="发动机号" prop="engineNo">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.engineNo"
|
|
|
+ placeholder="请输入发动机号"
|
|
|
+ clearable
|
|
|
+ maxlength="30"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="卡片状态" prop="cardStatus">
|
|
|
- <el-select v-model="form.cardStatus" placeholder="请选择状态">
|
|
|
- <el-option label="启用" value="active" />
|
|
|
- <el-option label="挂失" value="lost" />
|
|
|
- <el-option label="过期" value="expired" />
|
|
|
- <el-option label="禁用" value="disabled" />
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="车架号" prop="vin">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.vin"
|
|
|
+ placeholder="请输入车架号(17位字母或数字)"
|
|
|
+ clearable
|
|
|
+ maxlength="17"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <!-- 车辆基本信息 -->
|
|
|
- <el-divider content-position="left">车辆信息</el-divider>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="车辆类型" prop="vehicleType">
|
|
|
- <el-select v-model="form.vehicleType" placeholder="请选择车辆类型">
|
|
|
- <el-option label="小型车" value="small" />
|
|
|
- <el-option label="大型车" value="large" />
|
|
|
- <el-option label="电动车" value="electric" />
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="排放量号" prop="emissionNo">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.emissionNo"
|
|
|
+ placeholder="请输入排放量号"
|
|
|
+ clearable
|
|
|
+ maxlength="20"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="车辆颜色" prop="vehicleColor">
|
|
|
- <el-input v-model="form.vehicleColor" placeholder="请输入车辆颜色" />
|
|
|
+ <el-form-item label="识别代码" prop="identifyCode">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.identifyCode"
|
|
|
+ placeholder="请输入识别代码"
|
|
|
+ clearable
|
|
|
+ maxlength="20"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="车辆品牌" prop="vehicleBrand">
|
|
|
- <el-input v-model="form.vehicleBrand" placeholder="请输入车辆品牌" />
|
|
|
+ <el-form-item label="车队名称" prop="fleetName">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.fleetName"
|
|
|
+ placeholder="请输入车队名称"
|
|
|
+ clearable
|
|
|
+ maxlength="50"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ </el-row>
|
|
|
+ <!-- 三、卡片信息 -->
|
|
|
+ <el-divider content-position="center">卡片信息</el-divider>
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="车辆排量" prop="displacement">
|
|
|
- <el-input v-model="form.displacement" placeholder="请输入车辆排量" />
|
|
|
+ <el-form-item label="发卡人员" prop="issuerName">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.issuerName"
|
|
|
+ placeholder="请输入发卡人员"
|
|
|
+ clearable
|
|
|
+ maxlength="30"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="发卡器类型" prop="issuerDeviceType">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.issuerDeviceType"
|
|
|
+ placeholder="请输入发卡器类型"
|
|
|
+ clearable
|
|
|
+ maxlength="30"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="车架号(VIN)" prop="vin">
|
|
|
- <el-input v-model="form.vin" placeholder="请输入车架号" />
|
|
|
+ <el-form-item label="停车类型" prop="parkingType">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.parkingType"
|
|
|
+ placeholder="请选择停车类型"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ class="full-width-select"
|
|
|
+ >
|
|
|
+ <el-option label="临时车" value="temp" />
|
|
|
+ <el-option label="月租车" value="monthly" />
|
|
|
+ <el-option label="固定车位" value="fixed" />
|
|
|
+ <el-option label="临时/访客车" value="visitor" />
|
|
|
+ <el-option label="员工车" value="employee" />
|
|
|
+ <el-option label="其他" value="other" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="发动机号" prop="engineNo">
|
|
|
- <el-input v-model="form.engineNo" placeholder="请输入发动机号" />
|
|
|
+ <el-form-item label="包时信息" prop="packageInfo">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.packageInfo"
|
|
|
+ placeholder="请输入包时信息"
|
|
|
+ clearable
|
|
|
+ maxlength="50"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <!-- 车主信息 -->
|
|
|
- <el-divider content-position="left">车主信息</el-divider>
|
|
|
+ <!-- 四、车主信息 -->
|
|
|
+ <el-divider content-position="center">车主信息</el-divider>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="车主姓名" prop="ownerName">
|
|
|
- <el-input v-model="form.ownerName" placeholder="请输入车主姓名" />
|
|
|
+ <el-input
|
|
|
+ v-model="formData.ownerName"
|
|
|
+ placeholder="请输入车主姓名"
|
|
|
+ clearable
|
|
|
+ maxlength="30"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="手机号码" prop="phoneNumber">
|
|
|
- <el-input v-model="form.phoneNumber" placeholder="请输入手机号" />
|
|
|
+ <el-input
|
|
|
+ v-model="formData.phoneNumber"
|
|
|
+ placeholder="请输入手机号码"
|
|
|
+ clearable
|
|
|
+ maxlength="11"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="证件号码" prop="certificateNo">
|
|
|
- <el-input v-model="form.certificateNo" placeholder="请输入证件号码" />
|
|
|
+ <el-input
|
|
|
+ v-model="formData.certificateNo"
|
|
|
+ placeholder="请输入证件号码"
|
|
|
+ clearable
|
|
|
+ maxlength="20"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="住址" prop="address">
|
|
|
- <el-input v-model="form.address" placeholder="请输入住址" />
|
|
|
+ <el-input
|
|
|
+ v-model="formData.address"
|
|
|
+ placeholder="请输入住址"
|
|
|
+ clearable
|
|
|
+ maxlength="100"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <!-- 公司组织信息 -->
|
|
|
- <el-divider content-position="left">组织信息</el-divider>
|
|
|
<el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="职位" prop="position">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.position"
|
|
|
+ placeholder="请输入职位"
|
|
|
+ clearable
|
|
|
+ maxlength="30"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="所属公司" prop="company">
|
|
|
- <el-input v-model="form.company" placeholder="请输入公司名称" />
|
|
|
+ <el-input
|
|
|
+ v-model="formData.company"
|
|
|
+ placeholder="请输入公司名称"
|
|
|
+ clearable
|
|
|
+ maxlength="50"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="所在部门" prop="departmentName">
|
|
|
- <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
|
|
|
+ <el-input
|
|
|
+ v-model="formData.departmentName"
|
|
|
+ placeholder="请输入部门名称"
|
|
|
+ clearable
|
|
|
+ maxlength="50"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
+ <!-- 五、分组与权限信息 -->
|
|
|
+ <el-divider content-position="center">分组与权限信息</el-divider>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="职位" prop="position">
|
|
|
- <el-input v-model="form.position" placeholder="请输入职位" />
|
|
|
+ <el-form-item label="分组名称" prop="groupName">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.groupName"
|
|
|
+ placeholder="请输入分组名称"
|
|
|
+ clearable
|
|
|
+ maxlength="30"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="分组名称" prop="groupName">
|
|
|
- <el-input v-model="form.groupName" placeholder="请输入分组名称" />
|
|
|
+ <el-form-item label="车辆群组" prop="vehicleGroup">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.vehicleGroup"
|
|
|
+ placeholder="请输入车辆群组"
|
|
|
+ clearable
|
|
|
+ maxlength="30"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <!-- 备注 -->
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="场库权限" prop="parkingPermission">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.parkingPermission"
|
|
|
+ multiple
|
|
|
+ placeholder="请选择场库"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ class="full-width-select"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in parkingList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="场库名称" prop="parkingName">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.parkingName"
|
|
|
+ placeholder="请输入场库名称"
|
|
|
+ clearable
|
|
|
+ maxlength="50"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="每日有效时段" prop="dailyValidTime">
|
|
|
+ <el-time-picker
|
|
|
+ is-range
|
|
|
+ v-model="formData.dailyValidTime"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始时间"
|
|
|
+ end-placeholder="结束时间"
|
|
|
+ format="HH:mm"
|
|
|
+ clearable
|
|
|
+ class="full-width-picker"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="历史有效期" prop="historyValidTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.historyValidTime"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ clearable
|
|
|
+ class="full-width-picker"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <!-- 六、其他信息 -->
|
|
|
+ <el-divider content-position="center">其他信息</el-divider>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="数据版本" prop="dataVersion">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.dataVersion"
|
|
|
+ placeholder="请输入版本号"
|
|
|
+ clearable
|
|
|
+ maxlength="20"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="备注信息" prop="remarks">
|
|
|
- <el-input v-model="form.remarks" type="textarea" rows="3" placeholder="请输入备注" />
|
|
|
+ <el-form-item label="备注" prop="remarks">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.remarks"
|
|
|
+ type="textarea"
|
|
|
+ rows="3"
|
|
|
+ placeholder="请输入备注"
|
|
|
+ clearable
|
|
|
+ maxlength="200"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="handleClose">取消</el-button>
|
|
|
- <el-button type="primary" @click="handleSubmit">{{
|
|
|
- isEdit ? "修改" : "新增"
|
|
|
- }}</el-button>
|
|
|
+ <el-button @click="handleCancel">取消</el-button>
|
|
|
+ <el-button type="primary" @click="handleSubmit">保存</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import request from "@/utils/request";
|
|
|
|
|
|
export default {
|
|
|
name: "CarEditDialog",
|
|
|
@@ -225,7 +506,7 @@ export default {
|
|
|
type: Boolean,
|
|
|
default: false,
|
|
|
},
|
|
|
- userData: Object,
|
|
|
+ carData: Object,
|
|
|
deviceId: {
|
|
|
type: [Number, String],
|
|
|
required: true,
|
|
|
@@ -233,168 +514,145 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ localVisible: this.visible,
|
|
|
isEdit: false,
|
|
|
+
|
|
|
+ parkingList: [
|
|
|
+ { id: 1, name: "A区停车场" },
|
|
|
+ { id: 2, name: "B区停车场" },
|
|
|
+ ],
|
|
|
tempRightPlan: {
|
|
|
doorNo: null,
|
|
|
planTemplateNo: "",
|
|
|
},
|
|
|
- form: {
|
|
|
- faceURL: "", // opt, string, 人脸url, 可选字段,填写人脸图片的URL
|
|
|
- faceLibType: "blackFD", // req, enum, 人脸库类型, 必填字段, 可选值: blackFD-名单库, staticFD-静态库, blackList-非授权名单人
|
|
|
- FDID: "", // req, string, 人脸库ID, 必填字段, 多个人脸库用逗号隔开, 最大长度63字节
|
|
|
- FPID: "", // opt, string, 人脸记录ID, 可选字段, 与非视频工号(人员ID)一致, 最大长度63字节
|
|
|
- name: "", // req, string, 姓名, 必填字段, 最大长度96字节
|
|
|
- gender: "male", // opt, enum, 性别, 可选字段, male-男, female-女, unknown-未知, 最大长度32
|
|
|
- bornTime: "", // req, string, 出生日期, 必填字段, 格式: yyyy-MM-dd, 最大长度20
|
|
|
- city: "", // opt, string, 出生城市编号, 可选字段, 最大长度32
|
|
|
- certificateType: "ID", // opt, enum, 证件类型, 可选字段, ID-身份证, other-其他, 最大长度10
|
|
|
- certificateNumber: "", // opt, string, 证件号, 可选字段, 最大长度32
|
|
|
- caseInfo: "", // opt, string, 备注信息, 可选字段, 最大长度192字节
|
|
|
- tag: "", // opt, string, 自定义标签, 可选字段, 逗号分隔, 每个标签最大48字节, 最多4个标签
|
|
|
- address: "", // opt, string, 住址, 可选字段, 最大长度192字节
|
|
|
- customInfo: "", // opt, string, 自定义信息, 可选字段, 最大长度192字节
|
|
|
- modelData: "", // opt, string, 目标模型数据, 可选字段, base64加密的非建模二进制数据
|
|
|
- transfer: false, // opt, bool, PBG对接, 可选字段, 是否进行转存操作
|
|
|
- operateType: "byTerminal", // opt, enum, 操作类型, 可选字段, byTerminal-按终端操作
|
|
|
- terminalNoList: [], // opt, array[int], 终端ID列表, type为byTerminal时必填
|
|
|
- saveFacePic: true, // opt, bool, 是否保存人脸底图
|
|
|
- leaderPermission: [], // opt, array[int], 首次认证权限, 取值范围1~4, 数组为空表示清空权限
|
|
|
+ formData: {
|
|
|
+ plateNumber: "",
|
|
|
+ plateColor: "",
|
|
|
+ plateType: "",
|
|
|
+ vehicleType: "",
|
|
|
+ vehicleColor: "",
|
|
|
+ vehicleBrand: "",
|
|
|
+ engineNo: "",
|
|
|
+ emissionNo: "",
|
|
|
+ vin: "",
|
|
|
+ displacement: "",
|
|
|
+ identifyCode: "",
|
|
|
+ fleetName: "",
|
|
|
+ issuerName: "",
|
|
|
+ issuerDeviceType: "",
|
|
|
+ parkingType: "",
|
|
|
+ packageInfo: "",
|
|
|
+ ownerName: "",
|
|
|
+ phoneNumber: "",
|
|
|
+ certificateNo: "",
|
|
|
+ address: "",
|
|
|
+ position: "",
|
|
|
+ company: "",
|
|
|
+ departmentName: "",
|
|
|
+ groupName: "",
|
|
|
+ vehicleGroup: "",
|
|
|
+ parkingPermission: [],
|
|
|
+ parkingName: "",
|
|
|
+ dailyValidTime: [],
|
|
|
+ historyValidTime: [],
|
|
|
+ remarks: "",
|
|
|
+ dataVersion: "",
|
|
|
},
|
|
|
- rules: {
|
|
|
- faceLibType: [
|
|
|
- { required: true, message: "请选择人脸库类型", trigger: "change" },
|
|
|
- ],
|
|
|
- FDID: [{ required: true, message: "请输入人脸库ID", trigger: "blur" }],
|
|
|
- name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
|
|
- bornTime: [
|
|
|
- { required: true, message: "请选择出生日期", trigger: "change" },
|
|
|
- ],
|
|
|
+ formRules: {
|
|
|
+ plateNumber: [{ required: true, message: "请输入车牌号码", trigger: "blur" }],
|
|
|
+ ownerName: [{ required: true, message: "请输入车主姓名", trigger: "blur" }],
|
|
|
},
|
|
|
};
|
|
|
},
|
|
|
watch: {
|
|
|
- userData: {
|
|
|
+ visible(val) {
|
|
|
+ this.localVisible = val;
|
|
|
+ },
|
|
|
+ localVisible(val) {
|
|
|
+ this.$emit('update:visible', val)
|
|
|
+ },
|
|
|
+ carData: {
|
|
|
immediate: true,
|
|
|
- handler(val) {
|
|
|
- this.isEdit = true;
|
|
|
- if (val && Object.keys(val).length) {
|
|
|
- console.log("userData is not null");
|
|
|
- this.form = {
|
|
|
- ...val,
|
|
|
- };
|
|
|
- } else {
|
|
|
- console.log("userData is null");
|
|
|
- this.isEdit = false;
|
|
|
- // 重置表单
|
|
|
- this.form = {
|
|
|
- faceURL: "", // opt, string, 人脸url, 可选字段,填写人脸图片的URL
|
|
|
- faceLibType: "blackFD", // req, enum, 人脸库类型, 必填字段, 可选值: blackFD-名单库, staticFD-静态库, blackList-非授权名单人
|
|
|
- FDID: "", // req, string, 人脸库ID, 必填字段, 多个人脸库用逗号隔开, 最大长度63字节
|
|
|
- FPID: "", // opt, string, 人脸记录ID, 可选字段, 与非视频工号(人员ID)一致, 最大长度63字节
|
|
|
- name: "", // req, string, 姓名, 必填字段, 最大长度96字节
|
|
|
- gender: "male", // opt, enum, 性别, 可选字段, male-男, female-女, unknown-未知, 最大长度32
|
|
|
- bornTime: "", // req, string, 出生日期, 必填字段, 格式: yyyy-MM-dd, 最大长度20
|
|
|
- city: "", // opt, string, 出生城市编号, 可选字段, 最大长度32
|
|
|
- certificateType: "ID", // opt, enum, 证件类型, 可选字段, ID-身份证, other-其他, 最大长度10
|
|
|
- certificateNumber: "", // opt, string, 证件号, 可选字段, 最大长度32
|
|
|
- caseInfo: "", // opt, string, 备注信息, 可选字段, 最大长度192字节
|
|
|
- tag: "", // opt, string, 自定义标签, 可选字段, 逗号分隔, 每个标签最大48字节, 最多4个标签
|
|
|
- address: "", // opt, string, 住址, 可选字段, 最大长度192字节
|
|
|
- customInfo: "", // opt, string, 自定义信息, 可选字段, 最大长度192字节
|
|
|
- modelData: "", // opt, string, 目标模型数据, 可选字段, base64加密的非建模二进制数据
|
|
|
- transfer: false, // opt, bool, PBG对接, 可选字段, 是否进行转存操作
|
|
|
- operateType: "byTerminal", // opt, enum, 操作类型, 可选字段, byTerminal-按终端操作
|
|
|
- terminalNoList: [], // opt, array[int], 终端ID列表, type为byTerminal时必填
|
|
|
- saveFacePic: true, // opt, bool, 是否保存人脸底图
|
|
|
- leaderPermission: [], // opt, array[int], 首次认证权限, 取值范围1~4, 数组为空表示清空权限
|
|
|
- };
|
|
|
- }
|
|
|
- },
|
|
|
+ handler(newVal) {
|
|
|
+ this.isEdit = newVal && Object.keys(newVal).length > 0;
|
|
|
+ this.formData = {
|
|
|
+ ...this.getEmptyForm(),
|
|
|
+ ...(this.isEdit ? newVal : {})
|
|
|
+ };
|
|
|
+ console.log(this.isEdit ? '修改this.carData' : '新增this.carData', this.formData);
|
|
|
+ }
|
|
|
},
|
|
|
},
|
|
|
methods: {
|
|
|
- addRightPlan() {
|
|
|
- if (!this.tempRightPlan.doorNo || !this.tempRightPlan.planTemplateNo) {
|
|
|
- this.$message.warning("请填写门编号和计划模板编号");
|
|
|
- return;
|
|
|
- }
|
|
|
- // 深拷贝一份到数组
|
|
|
- this.form.RightPlan.push({ ...this.tempRightPlan });
|
|
|
- // 清空临时表单
|
|
|
- this.tempRightPlan.doorNo = null;
|
|
|
- this.tempRightPlan.planTemplateNo = "";
|
|
|
- },
|
|
|
- removeRightPlan(row) {
|
|
|
- const index = this.form.RightPlan.indexOf(row);
|
|
|
- if (index > -1) this.form.RightPlan.splice(index, 1);
|
|
|
+ handleCancel() {
|
|
|
+ this.$emit("cancel");
|
|
|
},
|
|
|
- handleClose() {
|
|
|
- this.$emit("update:visible", false);
|
|
|
- },
|
|
|
- async handleSubmit() {
|
|
|
- this.$refs.userForm.validate(async (valid) => {
|
|
|
- if (!valid) return;
|
|
|
-
|
|
|
+ handleSubmit() {
|
|
|
+ this.$refs.carForm.validate((valid) => {
|
|
|
+ if (!valid) {
|
|
|
+ this.$message.error("请检查表单填写项");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
const payload = {
|
|
|
- UserInfo: {
|
|
|
- employeeNo: this.form.employeeNo,
|
|
|
- name: this.form.name,
|
|
|
- userType: this.form.userType,
|
|
|
- gender: this.form.gender,
|
|
|
- Valid: {
|
|
|
- enable: true,
|
|
|
- beginTime: this.form.ValidTimes[0] + "+08:00",
|
|
|
- endTime: this.form.ValidTimes[1] + "+08:00",
|
|
|
- timeType: "local",
|
|
|
- },
|
|
|
- roomNumber: this.form.roomNumber,
|
|
|
- floorNumber: this.form.floorNumber,
|
|
|
- doorRight: this.form.doorRight,
|
|
|
- userVerifyMode: this.form.userVerifyMode,
|
|
|
- dynamicCode: this.form.dynamicCode,
|
|
|
- belongGroup: this.form.belongGroup,
|
|
|
- checkUser: true,
|
|
|
- operateType: "byTerminal",
|
|
|
- terminalNoList: [this.deviceId],
|
|
|
- },
|
|
|
+ ...this.formData,
|
|
|
};
|
|
|
-
|
|
|
- console.log("payload", payload);
|
|
|
-
|
|
|
- // try {
|
|
|
- // let url, method;
|
|
|
- // if (this.isEdit) {
|
|
|
- // url = "/ISAPI/AccessControl/UserInfo/Modify?format=json";
|
|
|
- // method = "PUT";
|
|
|
- // } else {
|
|
|
- // url = "/ISAPI/AccessControl/UserInfo/Record?format=json";
|
|
|
- // method = "POST";
|
|
|
- // }
|
|
|
- //
|
|
|
- // const res = await request({ url, method, data: payload });
|
|
|
- // if (res.statusCode === 1) {
|
|
|
- // this.$message.success(this.isEdit ? "修改成功" : "新增成功");
|
|
|
- // this.$emit("success");
|
|
|
- // this.handleClose();
|
|
|
- // } else {
|
|
|
- // this.$message.error(`操作失败: ${res.errorMsg}`);
|
|
|
- // }
|
|
|
- // } catch (e) {
|
|
|
- // this.$message.error("操作失败:" + e.message);
|
|
|
- // }
|
|
|
+ this.$emit("submit", payload);
|
|
|
});
|
|
|
},
|
|
|
+ getEmptyForm() {
|
|
|
+ return {
|
|
|
+ plateNumber: "",
|
|
|
+ plateColor: "",
|
|
|
+ plateType: "",
|
|
|
+ vehicleType: "",
|
|
|
+ vehicleColor: "",
|
|
|
+ vehicleBrand: "",
|
|
|
+ engineNo: "",
|
|
|
+ emissionNo: "",
|
|
|
+ vin: "",
|
|
|
+ displacement: "",
|
|
|
+ identifyCode: "",
|
|
|
+ fleetName: "",
|
|
|
+ issuerName: "",
|
|
|
+ issuerDeviceType: "",
|
|
|
+ parkingType: "",
|
|
|
+ packageInfo: "",
|
|
|
+ ownerName: "",
|
|
|
+ phoneNumber: "",
|
|
|
+ certificateNo: "",
|
|
|
+ address: "",
|
|
|
+ position: "",
|
|
|
+ company: "",
|
|
|
+ departmentName: "",
|
|
|
+ groupName: "",
|
|
|
+ vehicleGroup: "",
|
|
|
+ parkingPermission: [],
|
|
|
+ parkingName: "",
|
|
|
+ dailyValidTime: [],
|
|
|
+ historyValidTime: [],
|
|
|
+ remarks: "",
|
|
|
+ dataVersion: "",
|
|
|
+ };
|
|
|
+ }
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
-<style scoped>
|
|
|
-.user-form {
|
|
|
- background-color: #0a427c;
|
|
|
+<style>
|
|
|
+.custom-dialog {
|
|
|
+ width: 1200px !important;
|
|
|
+ background-color: #003c68;
|
|
|
+}
|
|
|
+/* 设置对话框标题颜色为白色 */
|
|
|
+.custom-dialog .el-dialog__title {
|
|
|
+ color: white !important;
|
|
|
}
|
|
|
+
|
|
|
.user-form .el-form-item .el-input,
|
|
|
.user-form .el-form-item .el-input-number,
|
|
|
-.user-form .el-form-item .el-select,
|
|
|
-.user-form .el-form-item .el-date-picker {
|
|
|
- width: 250px; /* 统一右侧控件宽度 */
|
|
|
+.user-form .el-form-item .el-select {
|
|
|
+ width: 300px;
|
|
|
+}
|
|
|
+.user-form .el-form-item .el-date-editor {
|
|
|
+ width: 400px; /* 统一右侧控件宽度 */
|
|
|
}
|
|
|
</style>
|