<template>
<el-dialog
:title="!dataForm.id ? '新增电池信息' : '修改电池信息'"
:visible.sync="visible"
width="90%"
top="5vh"
custom-class="battery-form-dialog"
>
<!-- 使用标签页布局 -->
<el-tabs v-model="activeTab" type="card" tab-position="top">
<!-- 电池基本信息 -->
<el-tab-pane label="基本信息" name="1">
<div class="form-grid">
<el-form-item label="电池ID" prop="batteryId">
<el-input v-model="dataForm.batteryId" disabled>
<i slot="prefix" class="el-icon-files"></i>
</el-input>
</el-form-item>
<el-form-item label="电压(V)" prop="batteryVoltage">
<el-input v-model="dataForm.batteryVoltage" type="number" disabled>
<i slot="prefix" class="el-icon-data-line"></i>
</el-input>
</el-form-item>
<el-form-item label="电流(A)" prop="batteryCurrent">
<el-input v-model="dataForm.batteryCurrent" type="number" disabled>
<i slot="prefix" class="el-icon-sort"></i>
</el-input>
</el-form-item>
<el-form-item label="SOC(%)" prop="batterySoc">
<el-input v-model="dataForm.batterySoc" type="number" min="0" max="100" disabled>
<i slot="prefix" class="el-icon-pie-chart"></i>
</el-input>
</el-form-item>
<el-form-item label="硬件版本" prop="batteryHardVersion">
<el-input v-model="dataForm.batteryHardVersion" disabled>
<i slot="prefix" class="el-icon-cpu"></i>
</el-input>
</el-form-item>
<el-form-item label="软件版本" prop="batterySoftVersion">
<el-input v-model="dataForm.batterySoftVersion" disabled>
<i slot="prefix" class="el-icon-setting"></i>
</el-input>
</el-form-item>
</div>
</el-tab-pane>
<!-- 电池状态信息 -->
<el-tab-pane label="状态信息" name="2">
<div class="form-grid">
<el-form-item label="工作模式" prop="batteryWorkMode">
<el-select v-model="dataForm.batteryWorkMode" disabled>
<el-option label="放电模式 (0x01)" value="1"></el-option>
<el-option label="充电模式 (0x10)" value="16"></el-option>
<el-option label="保护模式 (0x21)" value="33"></el-option>
<el-option label="待机无输出模式 (0x30)" value="48"></el-option>
<el-option label="待机预放电模式 (0x31)" value="49"></el-option>
<el-option label="故障需返厂 (0xFF)" value="255"></el-option>
</el-select>
</el-form-item>
<el-form-item label="电池类型" prop="batteryKind">
<el-select v-model="dataForm.batteryKind">
<el-option label="运营" value="0"></el-option>
<el-option label="售后" value="1"></el-option>
<el-option label="内测" value="2"></el-option>
<el-option label="报废" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="保护状态码" prop="batteryProtectCode">
<el-tooltip effect="dark" placement="top">
<div slot="content">
bit0: 放电低温 | bit1: 放电高温 | bit2: 充电高温<br>
bit3: 充电低温 | bit4: 放电过流 | bit5: 放电欠压<br>
bit6: 充电过流 | bit7: 充电过压 | bit8: 短路<br>
bit9: 温差过大 | bit10: 压差过大 | bit11: 智能充电通信超时<br>
bit12: IC保护 | bit13: 预放电失败 | bit14: BMS与Tracker通讯超时<br>
bit15: Gsensor故障 | bit16~31: 保留
</div>
<el-input v-model="dataForm.batteryProtectCode" disabled>
<i slot="prefix" class="el-icon-warning"></i>
</el-input>
</el-tooltip>
</el-form-item>
<el-form-item label="错误状态码" prop="batteryErrorCode">
<el-tooltip effect="dark" placement="top">
<div slot="content">
低8位故障状态码:<br>
bit0: 保留 | bit1: 采样线故障 | bit2: 温度传感器损坏<br>
bit3: IC损坏 | bit4: 充电MOS损坏 | bit5: 放电MOS损坏<br>
bit6: 失衡 | bit7: 失效<br>
高8位工作状态:<br>
bit8: G sensor损坏 | bit9: BMS与Tracker通讯故障
</div>
<el-input v-model="dataForm.batteryErrorCode" disabled>
<i slot="prefix" class="el-icon-warning-outline"></i>
</el-input>
</el-tooltip>
</el-form-item>
</div>
</el-tab-pane>
<!-- 温度电压信息 -->
<el-tab-pane label="温度电压" name="3">
<div class="form-grid">
<el-form-item label="最高温度(℃)" prop="batteryTemperatureMax">
<el-input v-model="dataForm.batteryTemperatureMax" type="number" disabled>
<i slot="prefix" class="el-icon-sunny"></i>
</el-input>
</el-form-item>
<el-form-item label="最低温度(℃)" prop="batteryTemperatureMin">
<el-input v-model="dataForm.batteryTemperatureMin" type="number" disabled>
<i slot="prefix" class="el-icon-cold-drink"></i>
</el-input>
</el-form-item>
<el-form-item label="最高电压(V)" prop="batteryVoltageMax">
<el-input v-model="dataForm.batteryVoltageMax" type="number" disabled>
<i slot="prefix" class="el-icon-top"></i>
</el-input>
</el-form-item>
<el-form-item label="最低电压(V)" prop="batteryVoltageMin">
<el-input v-model="dataForm.batteryVoltageMin" type="number" disabled>
<i slot="prefix" class="el-icon-bottom"></i>
</el-input>
</el-form-item>
</div>
</el-tab-pane>
<!-- 设备信息 -->
<el-tab-pane label="设备信息" name="4">
<div class="form-grid">
<el-form-item label="设备型号" prop="model">
<el-input v-model="dataForm.model" disabled>
<i slot="prefix" class="el-icon-mobile"></i>
</el-input>
</el-form-item>
<el-form-item label="制造商" prop="manufacture">
<el-input v-model="dataForm.manufacture" disabled>
<i slot="prefix" class="el-icon-office-building"></i>
</el-input>
</el-form-item>
<el-form-item label="IMEI" prop="imei">
<el-input v-model="dataForm.imei" disabled>
<i slot="prefix" class="el-icon-phone"></i>
</el-input>
</el-form-item>
<el-form-item label="IMSI" prop="imsi">
<el-input v-model="dataForm.imsi" disabled>
<i slot="prefix" class="el-icon-sim-card"></i>
</el-input>
</el-form-item>
<el-form-item label="ICCID" prop="iccid">
<el-input v-model="dataForm.iccid" disabled>
<i slot="prefix" class="el-icon-credit-card"></i>
</el-input>
</el-form-item>
</div>
</el-tab-pane>
<!-- GPS定位信息 -->
<el-tab-pane label="GPS定位" name="5">
<div class="form-grid">
<el-form-item label="经度" prop="longitude">
<el-input v-model="dataForm.longitude" type="number" disabled>
<i slot="prefix" class="el-icon-place"></i>
</el-input>
</el-form-item>
<el-form-item label="经度方向" prop="longitudeDirection">
<el-select v-model="dataForm.longitudeDirection" disabled>
<el-option label="东经" value="E"></el-option>
<el-option label="西经" value="W"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纬度" prop="latitude">
<el-input v-model="dataForm.latitude" type="number" disabled>
<i slot="prefix" class="el-icon-place"></i>
</el-input>
</el-form-item>
<el-form-item label="纬度方向" prop="latitudeDirection">
<el-select v-model="dataForm.latitudeDirection" disabled>
<el-option label="北纬" value="N"></el-option>
<el-option label="南纬" value="S"></el-option>
</el-select>
</el-form-item>
</div>
</el-tab-pane>
<!-- 业务信息 -->
<el-tab-pane label="业务信息" name="6">
<div class="form-grid">
<el-form-item label="业务模式" prop="businessmode">
<el-select v-model="dataForm.businessmode" disabled>
<el-option v-for="mode in businessModes"
:key="mode.value"
:label="mode.label"
:value="mode.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="处理状态" prop="handled">
<el-select v-model="dataForm.handled" disabled>
<el-option label="已处理" :value="1"></el-option>
<el-option label="待处理" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="执行方式" prop="todoNow">
<el-select v-model="dataForm.todoNow" disabled>
<el-option label="立即执行" :value="1"></el-option>
<el-option label="等待执行" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="需要回复" prop="needack">
<el-select v-model="dataForm.needack" disabled>
<el-option label="是" :value="1"></el-option>
<el-option label="否" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="消息类型" prop="flag">
<el-select v-model="dataForm.flag" disabled>
<el-option label="设备主动请求或上报" :value="1"></el-option>
<el-option label="平台主动推送或下指令" :value="2"></el-option>
<el-option label="平台指令反馈的结果" :value="3"></el-option>
</el-select>
</el-form-item>
</div>
</el-tab-pane>
<!-- 其他信息 -->
<el-tab-pane label="其他信息" name="7">
<div class="form-grid">
<el-form-item label="原始数据" prop="payload">
<el-input v-model="dataForm.payload" type="textarea" :rows="4" disabled></el-input>
</el-form-item>
</div>
</el-tab-pane>
</el-tabs>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
data() {
return {
visible: false,
activeTab: '1',
dataForm: {
id: 0,
batteryId: '',
batteryVoltage: '',
batteryCurrent: '',
batterySoc: '',
batteryHardVersion: '',
batterySoftVersion: '',
batteryWorkMode: '',
batteryKind: "0",
batteryProtectCode: '',
batteryErrorCode: '',
batteryTemperatureMax: '',
batteryTemperatureMin: '',
batteryVoltageMax: '',
batteryVoltageMin: '',
mosStatus: '',
mosTemp: '',
batteryCycleTimes: '',
steadyStatus: '',
cellVoltage: '',
model: '',
manufacture: '',
imei: '',
imsi: '',
iccid: '',
trackerHardwareVersion: '',
trackerSoftwareVersion: '',
csq: '',
networkType: '',
locationMode: '',
longitude: '',
longitudeDirection: '',
latitude: '',
latitudeDirection: '',
gpsSpeed: '',
gpsSignal: '',
satelliteNum: '',
accuracy: '',
flag: '',
clientId: '',
topic: '',
productKey: '',
handled: '',
todoNow: '',
needack: '',
businessmode: '',
uploadTime: '',
createTime: '',
updateTime: '',
payload: ''
},
businessModes: [
{ value: 1, label: "关机模式" },
{ value: 2, label: "运营模式" },
{ value: 3, label: "运输模式" },
{ value: 4, label: "通讯充电模式" },
{ value: 5, label: "盲充模式" },
{ value: 6, label: "存储模式" },
{ value: 7, label: "搜寻模式" },
{ value: 8, label: "返厂模式" }
],
/*
dataRule: {
batteryId: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batteryVoltage: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batteryCurrent: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batterySoc: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batteryHardVersion: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batterySoftVersion: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batteryWorkMode: [
{ required: true, message: '0x01(1):放电模式 0x10(16):充电模式 0x21(33):保护模式 0x30(48):待机无输出模式 0x31(49):待机预放电模式 0xFF(255):故障需返厂不能为空', trigger: 'blur' }
],
batteryProtectCode: [
{ required: true, message: '保护状态 bit16~bit 31 保留 bit15:Gsensor 故障 bit14:BMS 与 Tracker通讯超时 bit13: 预放电失败 bit12: IC保护 bit11: 智能充电通信超时 bit10:压差过大 bit9:温差过大 bit8:短路 bit7:充电过压 bit6:充电过流 bit5:放电欠压 bit4:放电过流 bit3:充电低温 bit2:充电高温 bit1:放电高温 bit0:放电低温不能为空', trigger: 'blur' }
],
batteryErrorCode: [
{ required: true, message: '转成2进制, 总共为16位,高8位为电池包工作状态,低8位为故障状态码 bit9BMS 与 Tracker通讯故障,bit8BMS 板 G sensor损坏,(8/9无效)bit7:失效,bit6:失衡,bit5:放电 MOS 损坏,bit4:充电 MOS 损坏,bit3IC 损坏,bit2:温度传感器损坏,bit1:采样线断线,虚焊等故障 保留,置 0,bit0:保留不能为空', trigger: 'blur' }
],
batteryTemperatureMax: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batteryTemperatureMin: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batteryVoltageMax: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batteryVoltageMin: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
mosStatus: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
mosTemp: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
batteryCycleTimes: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
steadyStatus: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
cellVoltage: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
model: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
manufacture: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
imei: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
imsi: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
iccid: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
trackerHardwareVersion: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
trackerSoftwareVersion: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
csq: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
networkType: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
locationMode: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
longitude: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
longitudeDirection: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
latitude: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
latitudeDirection: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
gpsSpeed: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
gpsSignal: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
satelliteNum: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
accuracy: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
flag: [
{ required: true, message: '1:设备主动请求或上报 2:平台主动推送或下指令 3:平台指令反馈的结果不能为空', trigger: 'blur' }
],
clientId: [
{ required: true, message: 'MQTT发布消息所需的clientId不能为空', trigger: 'blur' }
],
topic: [
{ required: true, message: 'MQTT主题不能为空', trigger: 'blur' }
],
productKey: [
{ required: true, message: '主题名称中需要的productKey不能为空', trigger: 'blur' }
],
handled: [
{ required: true, message: '配置是否处理 1:已处理 0:待处理不能为空', trigger: 'blur' }
],
todoNow: [
{ required: true, message: '是否立即执行 0:等待执行 1:立即执行不能为空', trigger: 'blur' }
],
needack: [
{ required: true, message: '是否回复不能为空', trigger: 'blur' }
],
businessmode: [
{ required: true, message: '业务模式 1:关机模式 2:运营模式 3:运输模式 4:通讯充电模式 5:盲充模式 6:存储模式 7:搜寻模式 8:返厂模式不能为空', trigger: 'blur' }
],
uploadTime: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
createTime: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
updateTime: [
{ required: true, message: '更新时间不能为空', trigger: 'blur' }
],
payload: [
{ required: true, message: '原始数据不能为空', trigger: 'blur' }
]
}
*/
}
},
computed: {
// 处理状态标签
handledLabel() {
return this.dataForm.handled === 1 ? "已处理" :
this.dataForm.handled === 0 ? "待处理" : "";
},
// 执行方式标签
todoNowLabel() {
return this.dataForm.todoNow === 1 ? "立即执行" :
this.dataForm.todoNow === 0 ? "等待执行" : "";
},
// 需要回复标签
needackLabel() {
return this.dataForm.needack === 1 ? "是" :
this.dataForm.needack === 0 ? "否" : "";
},
// 业务模式标签
businessModeLabel() {
const mode = this.businessModes.find(m => m.value == this.dataForm.businessmode);
return mode ? mode.label : "";
},
// 消息类型标签
flagLabel() {
switch (this.dataForm.flag) {
case 1: return "设备主动请求或上报";
case 2: return "平台主动推送或下指令";
case 3: return "平台指令反馈的结果";
default: return "";
}
}
},
methods: {
init (id) {
this.dataForm.id = id || 0
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.$http({
url: this.$http.adornUrl(`/maya/mybatteryinfo/info/${this.dataForm.id}`),
method: 'get',
params: this.$http.adornParams()
}).then(({data}) => {
if (data && data.code === 0) {
this.dataForm.batteryId = data.myBatteryInfo.batteryId
this.dataForm.batteryVoltage = data.myBatteryInfo.batteryVoltage
this.dataForm.batteryCurrent = data.myBatteryInfo.batteryCurrent
this.dataForm.batterySoc = data.myBatteryInfo.batterySoc
this.dataForm.batteryHardVersion = data.myBatteryInfo.batteryHardVersion
this.dataForm.batterySoftVersion = data.myBatteryInfo.batterySoftVersion
this.dataForm.batteryWorkMode = data.myBatteryInfo.batteryWorkMode
this.dataForm.batteryKind = String(data.myBatteryInfo.batteryKind);
this.dataForm.batteryProtectCode = data.myBatteryInfo.batteryProtectCode
this.dataForm.batteryErrorCode = data.myBatteryInfo.batteryErrorCode
this.dataForm.batteryTemperatureMax = data.myBatteryInfo.batteryTemperatureMax
this.dataForm.batteryTemperatureMin = data.myBatteryInfo.batteryTemperatureMin
this.dataForm.batteryVoltageMax = data.myBatteryInfo.batteryVoltageMax
this.dataForm.batteryVoltageMin = data.myBatteryInfo.batteryVoltageMin
this.dataForm.mosStatus = data.myBatteryInfo.mosStatus
this.dataForm.mosTemp = data.myBatteryInfo.mosTemp
this.dataForm.batteryCycleTimes = data.myBatteryInfo.batteryCycleTimes
this.dataForm.steadyStatus = data.myBatteryInfo.steadyStatus
this.dataForm.cellVoltage = data.myBatteryInfo.cellVoltage
this.dataForm.model = data.myBatteryInfo.model
this.dataForm.manufacture = data.myBatteryInfo.manufacture
this.dataForm.imei = data.myBatteryInfo.imei
this.dataForm.imsi = data.myBatteryInfo.imsi
this.dataForm.iccid = data.myBatteryInfo.iccid
this.dataForm.trackerHardwareVersion = data.myBatteryInfo.trackerHardwareVersion
this.dataForm.trackerSoftwareVersion = data.myBatteryInfo.trackerSoftwareVersion
this.dataForm.csq = data.myBatteryInfo.csq
this.dataForm.networkType = data.myBatteryInfo.networkType
this.dataForm.locationMode = data.myBatteryInfo.locationMode
this.dataForm.longitude = data.myBatteryInfo.longitude
this.dataForm.longitudeDirection = data.myBatteryInfo.longitudeDirection
this.dataForm.latitude = data.myBatteryInfo.latitude
this.dataForm.latitudeDirection = data.myBatteryInfo.latitudeDirection
this.dataForm.gpsSpeed = data.myBatteryInfo.gpsSpeed
this.dataForm.gpsSignal = data.myBatteryInfo.gpsSignal
this.dataForm.satelliteNum = data.myBatteryInfo.satelliteNum
this.dataForm.accuracy = data.myBatteryInfo.accuracy
this.dataForm.flag = data.myBatteryInfo.flag
this.dataForm.clientId = data.myBatteryInfo.clientId
this.dataForm.topic = data.myBatteryInfo.topic
this.dataForm.productKey = data.myBatteryInfo.productKey
this.dataForm.handled = data.myBatteryInfo.handled
this.dataForm.todoNow = data.myBatteryInfo.todoNow
this.dataForm.needack = data.myBatteryInfo.needack
this.dataForm.businessmode = data.myBatteryInfo.businessmode
this.dataForm.uploadTime = data.myBatteryInfo.uploadTime
this.dataForm.createTime = data.myBatteryInfo.createTime
this.dataForm.updateTime = data.myBatteryInfo.updateTime
this.dataForm.payload = data.myBatteryInfo.payload
}
})
}
})
},
// 表单提交
dataFormSubmit () {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.$http({
url: this.$http.adornUrl(`/maya/mybatteryinfo/${!this.dataForm.id ? 'save' : 'update'}`),
method: 'post',
data: this.$http.adornData({
'id': this.dataForm.id || undefined,
'batteryId': this.dataForm.batteryId,
'batteryVoltage': this.dataForm.batteryVoltage,
'batteryCurrent': this.dataForm.batteryCurrent,
'batterySoc': this.dataForm.batterySoc,
'batteryHardVersion': this.dataForm.batteryHardVersion,
'batterySoftVersion': this.dataForm.batterySoftVersion,
'batteryWorkMode': this.dataForm.batteryWorkMode,
'batteryKind': Number(this.dataForm.batteryKind),
'batteryProtectCode': this.dataForm.batteryProtectCode,
'batteryErrorCode': this.dataForm.batteryErrorCode,
'batteryTemperatureMax': this.dataForm.batteryTemperatureMax,
'batteryTemperatureMin': this.dataForm.batteryTemperatureMin,
'batteryVoltageMax': this.dataForm.batteryVoltageMax,
'batteryVoltageMin': this.dataForm.batteryVoltageMin,
'mosStatus': this.dataForm.mosStatus,
'mosTemp': this.dataForm.mosTemp,
'batteryCycleTimes': this.dataForm.batteryCycleTimes,
'steadyStatus': this.dataForm.steadyStatus,
'cellVoltage': this.dataForm.cellVoltage,
'model': this.dataForm.model,
'manufacture': this.dataForm.manufacture,
'imei': this.dataForm.imei,
'imsi': this.dataForm.imsi,
'iccid': this.dataForm.iccid,
'trackerHardwareVersion': this.dataForm.trackerHardwareVersion,
'trackerSoftwareVersion': this.dataForm.trackerSoftwareVersion,
'csq': this.dataForm.csq,
'networkType': this.dataForm.networkType,
'locationMode': this.dataForm.locationMode,
'longitude': this.dataForm.longitude,
'longitudeDirection': this.dataForm.longitudeDirection,
'latitude': this.dataForm.latitude,
'latitudeDirection': this.dataForm.latitudeDirection,
'gpsSpeed': this.dataForm.gpsSpeed,
'gpsSignal': this.dataForm.gpsSignal,
'satelliteNum': this.dataForm.satelliteNum,
'accuracy': this.dataForm.accuracy,
'flag': this.dataForm.flag,
'clientId': this.dataForm.clientId,
'topic': this.dataForm.topic,
'productKey': this.dataForm.productKey,
'handled': this.dataForm.handled,
'todoNow': this.dataForm.todoNow,
'needack': this.dataForm.needack,
'businessmode': this.dataForm.businessmode,
'uploadTime': this.dataForm.uploadTime,
'createTime': this.dataForm.createTime,
'updateTime': this.dataForm.updateTime,
'payload': this.dataForm.payload
})
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
} else {
this.$message.error(data.msg)
}
})
}
})
}
}
}
</script>
<style>
.battery-form-dialog {
font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
color: #1a1a1a;
}
/* 标签页样式优化 */
.battery-form-dialog .el-tabs__item {
font-weight: 600 !important;
font-size: 15px !important;
padding: 0 20px !important;
height: 40px;
line-height: 40px;
color: #555;
}
.battery-form-dialog .el-tabs__item.is-active {
color: #1a73e8 !important;
border-bottom: 3px solid #1a73e8 !important;
}
.battery-form-dialog .el-tabs__header {
margin-bottom: 20px;
}
/* 网格布局 - 横向排列 */
.form-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 20px 30px;
padding: 15px;
}
/* 表单标签优化 */
.battery-form-dialog .el-form-item__label {
display: block;
font-weight: 600 !important;
color: #1a1a1a !important;
font-size: 14px !important;
padding-bottom: 6px !important;
margin-bottom: 0 !important;
letter-spacing: 0.5px;
}
/* 输入框优化 */
.battery-form-dialog .el-input__inner,
.battery-form-dialog .el-textarea__inner,
.battery-form-dialog .el-select .el-input__inner {
font-size: 15px !important;
color: #222 !important;
font-weight: 500 !important;
border: 1px solid #dcdfe6 !important;
background-color: #f8fafc !important;
height: 40px;
line-height: 40px;
border-radius: 4px;
}
/* 文本域样式 */
.battery-form-dialog .el-textarea__inner {
min-height: 100px;
line-height: 1.5;
padding: 10px 15px;
font-family: monospace;
}
/* 禁用状态优化 */
.battery-form-dialog .el-input.is-disabled .el-input__inner,
.battery-form-dialog .el-textarea.is-disabled .el-textarea__inner,
.battery-form-dialog .el-select.is-disabled .el-input__inner {
color: #444 !important;
background-color: #f0f4f8 !important;
border-color: #e4e7ed !important;
opacity: 1;
}
/* 图标颜色优化 */
.battery-form-dialog .el-input__prefix {
color: #1a73e8 !important;
font-size: 16px;
display: flex;
align-items: center;
padding-left: 8px;
}
/* 按钮优化 */
.battery-form-dialog .el-button {
font-weight: 600;
padding: 10px 20px;
border-radius: 4px;
font-size: 14px;
min-width: 100px;
transition: all 0.3s;
}
.battery-form-dialog .el-button--default {
border-color: #dcdfe6;
}
.battery-form-dialog .el-button--primary {
background-color: #1a73e8;
border-color: #1a73e8;
}
.battery-form-dialog .el-button--primary:hover {
background-color: #0d62c9;
border-color: #0d62c9;
}
/* 标题优化 */
.battery-form-dialog .el-dialog__title {
font-size: 18px !important;
font-weight: 700 !important;
color: #1a1a1a !important;
letter-spacing: 0.5px;
}
/* 提示工具样式 */
.battery-form-dialog .el-tooltip__popper {
max-width: 400px;
font-size: 13px;
line-height: 1.6;
background-color: #2c3e50;
color: #ecf0f1;
}
.battery-form-dialog .el-tooltip__popper[x-placement^="top"] .popper__arrow {
border-top-color: #2c3e50;
}
/* 错误提示样式 */
.battery-form-dialog .el-form-item__error {
color: #f56c6c;
font-size: 12px;
padding-top: 4px;
}
/* 响应式调整 */
@media (max-width: 1200px) {
.form-grid {
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
}
@media (max-width: 992px) {
.form-grid {
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}
}
@media (max-width: 768px) {
.battery-form-dialog {
width: 95% !important;
}
.form-grid {
grid-template-columns: 1fr;
}
.battery-form-dialog .el-tabs__item {
font-size: 13px !important;
padding: 0 10px !important;
}
}
</style>修复该页面,并给我完整胡代码
最新发布