Vue.js入门 0x3 表单与v-model

本文详细介绍了Vue.js中v-model指令在表单控件上的应用,包括输入框、单选、多选、下拉选择等场景,以及如何通过v-model实现数据的实时双向绑定。

    表单类控件承载了一个网页数据的录入与交互。在实际业务较为常见,比如单选、多选、下拉选择、输入框等,用它们可以完成数据的录入、校验、提交等。 Vue扣 提供了 v-model 指令,用于在表单类元素上双向绑定数据,例如在输入框上使用时,输入的内容会实时映射到绑定的数据上。

基本用法 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Hello Vue</title>
    </head>
    <body>
        <div id="app">
            <input type="text" v-model="message" placeholder="输入...">
            <p>输入的内容是:{{message}}</p>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script>
            new Vue({
                el:'#app',
                data:{
                    message:''
                }
            })
        </script>
    </body>
</html>

     使用v-model后,表单控件显示的值只依赖所绑定的数据,不再关心初始化时的value属性,对于在<textarea></textarea>之间插入的值,也不会生效。

<div id="app">
    <textarea v-model="text" placeholder="输入..."></textarea>
    <p>输入的内容是:</p>
    <p style="white-space:pre">{{text}}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            text:''
        }
    })
</script>

     使用v-model时,如果是用中文输入法输入中文,一般在没有选定词组前,也就是在拼音阶段,Vue是不会更新数据的,当敲下汉字时才会触发更新。如果希望总是实时更新,可以用@input来代替v-model。

<div id="app">
    <input type="text" @input="handleInput" placeholder="输入...">
    <p>输入的内容是:{{message}}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            message:''
        },
        methods:{
            handleInput:function(e){
                this.message = e.target.value;
            }
        }
    })
</script>

 

     单选按钮

<div id="app">
    <input type="radio" v-model="picked" value="html" id="html">
    <label for="html">HTML</label>
    <br>
    <input type="radio" v-model="picked" value="js" id="js">
    <label for="js">JavaScript</label>
    <br>
    <input type="radio" v-model="picked" value="css" id="css">
    <label for="css">CSS</label>
    <br>
    <p>选择的项是:{{picked}}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            picked:'js'
        }
    })
</script>

     复选框

<div id="app">
    <input type="checkbox" v-model="checked" value="html" id="html">
    <label for="html">HTML</label>
    <br>
    <input type="checkbox" v-model="checked" value="js" id="js">
    <label for="js">JavaScript</label>
    <br>
    <input type="checkbox" v-model="checked" value="css" id="css">
    <label for="css">CSS</label>
    <br>
    <p>选择的项是:{{checked}}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            checked:['html','css']
        }
    })
</script>

     选择列表

<div id="app">
    <select v-model="selected">
        <option 
            v-for="option in options"
            :value="option.value">{{option.text}}</option>
    </select>
    <p>选择的项是:{{selected}}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            selected:'html',
            options:[
                {text:'HTML',value:'html'},
                {text:'JavaScript',value:'js'},
                {text:'CSS',value:'css'}
            ]
        }
    })
</script>

绑定值

    单选按钮、复选框和选择列表在单独使用或单选的模式下 , v-model 绑定的值是一个静态字符串或布尔值, 但在业务中,有时需要绑定一个动态的数据 , 这时可以用 v-bind 来实现。

    单选按钮

        在选中时,app.picked === app.value ,值都是123

<div id="app">
    <input type="radio" v-model="picked" :value="value">
    <label>单选按钮</lable>
    <p>{{picked}}</p>
    <p>{{value}}</p>
</div>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            picked:false,
            value:123
        }
    })
</script>

    复选框

        勾选时,app.toggle===app.valuel:未勾选时,app.toggle===app.value2。

div id="app">
    <input 
        type="checkbox" 
        v-model="toggle" 
        :true-value="value1"
        :false-value="value2">
    <label>复选框</lable>
    <p>{{toggle}}</p>
    <p>{{value1}}</p>
    <p>{{value1}}</p>
</div>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            toggle:false,
            value1:'a',
            value2:'b'
        }
    })
</script>

    选择列表

    当选中时,app.selected是一个Object,所以app.selected.number===123。

<div id="app">
    <select v-model="selected">
        <option :value="{number:123}">123</option>
    </select>
    {{selected.number}}
</div>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            selected:''
        }
    })
</script>

 

<template> <el-dialog :title="!dataForm.id ? &#39;新增&#39; : &#39;修改&#39;" :close-on-click-modal="false" :visible.sync="visible"> <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px"> <el-form-item label="" prop="batteryId"> <el-input v-model="dataForm.batteryId" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batteryVoltage"> <el-input v-model="dataForm.batteryVoltage" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batteryCurrent"> <el-input v-model="dataForm.batteryCurrent" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batterySoc"> <el-input v-model="dataForm.batterySoc" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batteryHardVersion"> <el-input v-model="dataForm.batteryHardVersion" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batterySoftVersion"> <el-input v-model="dataForm.batterySoftVersion" placeholder=""></el-input> </el-form-item> <el-form-item label="0x01(1):放电模式 0x10(16):充电模式 0x21(33):保护模式 0x30(48):待机无输出模式 0x31(49):待机预放电模式 0xFF(255):故障需返厂" prop="batteryWorkMode"> <el-input v-model="dataForm.batteryWorkMode" placeholder="0x01(1):放电模式 0x10(16):充电模式 0x21(33):保护模式 0x30(48):待机无输出模式 0x31(49):待机预放电模式 0xFF(255):故障需返厂"></el-input> </el-form-item> <el-form-item label="保护状态 bit16~bit 31 保留 bit15:Gsensor 故障 bit14:BMS Tracker通讯超时 bit13: 预放电失败 bit12: IC保护 bit11: 智能充电通信超时 bit10:压差过大 bit9:温差过大 bit8:短路 bit7:充电过压 bit6:充电过流 bit5:放电欠压 bit4:放电过流 bit3:充电低温 bit2:充电高温 bit1:放电高温 bit0:放电低温" prop="batteryProtectCode"> <el-input v-model="dataForm.batteryProtectCode" placeholder="保护状态 bit16~bit 31 保留 bit15:Gsensor 故障 bit14:BMS Tracker通讯超时 bit13: 预放电失败 bit12: IC保护 bit11: 智能充电通信超时 bit10:压差过大 bit9:温差过大 bit8:短路 bit7:充电过压 bit6:充电过流 bit5:放电欠压 bit4:放电过流 bit3:充电低温 bit2:充电高温 bit1:放电高温 bit0:放电低温"></el-input> </el-form-item> <el-form-item label="转成2进制, 总共为16位,高8位为电池包工作状态,低8位为故障状态码 bit9BMS Tracker通讯故障,bit8BMS 板 G sensor损坏,(8/9无效)bit7:失效,bit6:失衡,bit5:放电 MOS 损坏,bit4:充电 MOS 损坏,bit3IC 损坏,bit2:温度传感器损坏,bit1:采样线断线,虚焊等故障 保留,置 0,bit0:保留" prop="batteryErrorCode"> <el-input v-model="dataForm.batteryErrorCode" placeholder="转成2进制, 总共为16位,高8位为电池包工作状态,低8位为故障状态码 bit9BMS Tracker通讯故障,bit8BMS 板 G sensor损坏,(8/9无效)bit7:失效,bit6:失衡,bit5:放电 MOS 损坏,bit4:充电 MOS 损坏,bit3IC 损坏,bit2:温度传感器损坏,bit1:采样线断线,虚焊等故障 保留,置 0,bit0:保留"></el-input> </el-form-item> <el-form-item label="" prop="batteryTemperatureMax"> <el-input v-model="dataForm.batteryTemperatureMax" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batteryTemperatureMin"> <el-input v-model="dataForm.batteryTemperatureMin" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batteryVoltageMax"> <el-input v-model="dataForm.batteryVoltageMax" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batteryVoltageMin"> <el-input v-model="dataForm.batteryVoltageMin" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="mosStatus"> <el-input v-model="dataForm.mosStatus" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="mosTemp"> <el-input v-model="dataForm.mosTemp" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="batteryCycleTimes"> <el-input v-model="dataForm.batteryCycleTimes" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="steadyStatus"> <el-input v-model="dataForm.steadyStatus" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="cellVoltage"> <el-input v-model="dataForm.cellVoltage" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="model"> <el-input v-model="dataForm.model" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="manufacture"> <el-input v-model="dataForm.manufacture" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="imei"> <el-input v-model="dataForm.imei" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="imsi"> <el-input v-model="dataForm.imsi" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="iccid"> <el-input v-model="dataForm.iccid" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="trackerHardwareVersion"> <el-input v-model="dataForm.trackerHardwareVersion" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="trackerSoftwareVersion"> <el-input v-model="dataForm.trackerSoftwareVersion" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="reportreason"> <el-input v-model="dataForm.reportreason" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="detstatus"> <el-input v-model="dataForm.detstatus" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="csq"> <el-input v-model="dataForm.csq" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="networkType"> <el-input v-model="dataForm.networkType" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="locationMode"> <el-input v-model="dataForm.locationMode" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="longitude"> <el-input v-model="dataForm.longitude" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="longitudeDirection"> <el-input v-model="dataForm.longitudeDirection" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="latitude"> <el-input v-model="dataForm.latitude" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="latitudeDirection"> <el-input v-model="dataForm.latitudeDirection" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="gpsSpeed"> <el-input v-model="dataForm.gpsSpeed" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="gpsSignal"> <el-input v-model="dataForm.gpsSignal" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="satelliteNum"> <el-input v-model="dataForm.satelliteNum" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="accuracy"> <el-input v-model="dataForm.accuracy" placeholder=""></el-input> </el-form-item> <el-form-item label="业务模式 1:关机模式 2:运营模式 3:运输模式 4:通讯充电模式 5:盲充模式 6:存储模式 7:搜寻模式 8:返厂模式" prop="businessmode"> <el-input v-model="dataForm.businessmode" placeholder="业务模式 1:关机模式 2:运营模式 3:运输模式 4:通讯充电模式 5:盲充模式 6:存储模式 7:搜寻模式 8:返厂模式"></el-input> </el-form-item> <el-form-item label="1:设备主动请求或上报 2:平台主动推送或下指令 3:平台指令反馈的结果" prop="flag"> <el-input v-model="dataForm.flag" placeholder="1:设备主动请求或上报 2:平台主动推送或下指令 3:平台指令反馈的结果"></el-input> </el-form-item> <el-form-item label="" prop="uploadTime"> <el-input v-model="dataForm.uploadTime" placeholder=""></el-input> </el-form-item> <el-form-item label="" prop="createTime"> <el-input v-model="dataForm.createTime" placeholder=""></el-input> </el-form-item> <el-form-item label="更新时间" prop="updateTime"> <el-input v-model="dataForm.updateTime" placeholder="更新时间"></el-input> </el-form-item> </el-form> <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, dataForm: { id: 0, batteryId: &#39;&#39;, batteryVoltage: &#39;&#39;, batteryCurrent: &#39;&#39;, batterySoc: &#39;&#39;, batteryHardVersion: &#39;&#39;, batterySoftVersion: &#39;&#39;, batteryWorkMode: &#39;&#39;, batteryProtectCode: &#39;&#39;, batteryErrorCode: &#39;&#39;, batteryTemperatureMax: &#39;&#39;, batteryTemperatureMin: &#39;&#39;, batteryVoltageMax: &#39;&#39;, batteryVoltageMin: &#39;&#39;, mosStatus: &#39;&#39;, mosTemp: &#39;&#39;, batteryCycleTimes: &#39;&#39;, steadyStatus: &#39;&#39;, cellVoltage: &#39;&#39;, model: &#39;&#39;, manufacture: &#39;&#39;, imei: &#39;&#39;, imsi: &#39;&#39;, iccid: &#39;&#39;, trackerHardwareVersion: &#39;&#39;, trackerSoftwareVersion: &#39;&#39;, reportreason: &#39;&#39;, detstatus: &#39;&#39;, csq: &#39;&#39;, networkType: &#39;&#39;, locationMode: &#39;&#39;, longitude: &#39;&#39;, longitudeDirection: &#39;&#39;, latitude: &#39;&#39;, latitudeDirection: &#39;&#39;, gpsSpeed: &#39;&#39;, gpsSignal: &#39;&#39;, satelliteNum: &#39;&#39;, accuracy: &#39;&#39;, businessmode: &#39;&#39;, flag: &#39;&#39;, uploadTime: &#39;&#39;, createTime: &#39;&#39;, updateTime: &#39;&#39; }, dataRule: { batteryId: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryVoltage: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryCurrent: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batterySoc: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryHardVersion: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batterySoftVersion: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryWorkMode: [ { required: true, message: &#39;0x01(1):放电模式 0x10(16):充电模式 0x21(33):保护模式 0x30(48):待机无输出模式 0x31(49):待机预放电模式 0xFF(255):故障需返厂不能为空&#39;, trigger: &#39;blur&#39; } ], batteryProtectCode: [ { required: true, message: &#39;保护状态 bit16~bit 31 保留 bit15:Gsensor 故障 bit14:BMS Tracker通讯超时 bit13: 预放电失败 bit12: IC保护 bit11: 智能充电通信超时 bit10:压差过大 bit9:温差过大 bit8:短路 bit7:充电过压 bit6:充电过流 bit5:放电欠压 bit4:放电过流 bit3:充电低温 bit2:充电高温 bit1:放电高温 bit0:放电低温不能为空&#39;, trigger: &#39;blur&#39; } ], batteryErrorCode: [ { required: true, message: &#39;转成2进制, 总共为16位,高8位为电池包工作状态,低8位为故障状态码 bit9BMS Tracker通讯故障,bit8BMS 板 G sensor损坏,(8/9无效)bit7:失效,bit6:失衡,bit5:放电 MOS 损坏,bit4:充电 MOS 损坏,bit3IC 损坏,bit2:温度传感器损坏,bit1:采样线断线,虚焊等故障 保留,置 0,bit0:保留不能为空&#39;, trigger: &#39;blur&#39; } ], batteryTemperatureMax: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryTemperatureMin: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryVoltageMax: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryVoltageMin: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], mosStatus: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], mosTemp: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryCycleTimes: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], steadyStatus: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], cellVoltage: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], model: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], manufacture: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], imei: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], imsi: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], iccid: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], trackerHardwareVersion: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], trackerSoftwareVersion: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], reportreason: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], detstatus: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], csq: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], networkType: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], locationMode: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], longitude: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], longitudeDirection: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], latitude: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], latitudeDirection: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], gpsSpeed: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], gpsSignal: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], satelliteNum: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], accuracy: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], businessmode: [ { required: true, message: &#39;业务模式 1:关机模式 2:运营模式 3:运输模式 4:通讯充电模式 5:盲充模式 6:存储模式 7:搜寻模式 8:返厂模式不能为空&#39;, trigger: &#39;blur&#39; } ], flag: [ { required: true, message: &#39;1:设备主动请求或上报 2:平台主动推送或下指令 3:平台指令反馈的结果不能为空&#39;, trigger: &#39;blur&#39; } ], uploadTime: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], createTime: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], updateTime: [ { required: true, message: &#39;更新时间不能为空&#39;, trigger: &#39;blur&#39; } ] } } }, methods: { init (id) { this.dataForm.id = id || 0 this.visible = true this.$nextTick(() => { this.$refs[&#39;dataForm&#39;].resetFields() if (this.dataForm.id) { this.$http({ url: this.$http.adornUrl(`/maya/mybatteryinfolastest/info/${this.dataForm.id}`), method: &#39;get&#39;, params: this.$http.adornParams() }).then(({data}) => { if (data && data.code === 0) { this.dataForm.batteryId = data.myBatteryInfoLastest.batteryId this.dataForm.batteryVoltage = data.myBatteryInfoLastest.batteryVoltage this.dataForm.batteryCurrent = data.myBatteryInfoLastest.batteryCurrent this.dataForm.batterySoc = data.myBatteryInfoLastest.batterySoc this.dataForm.batteryHardVersion = data.myBatteryInfoLastest.batteryHardVersion this.dataForm.batterySoftVersion = data.myBatteryInfoLastest.batterySoftVersion this.dataForm.batteryWorkMode = data.myBatteryInfoLastest.batteryWorkMode this.dataForm.batteryProtectCode = data.myBatteryInfoLastest.batteryProtectCode this.dataForm.batteryErrorCode = data.myBatteryInfoLastest.batteryErrorCode this.dataForm.batteryTemperatureMax = data.myBatteryInfoLastest.batteryTemperatureMax this.dataForm.batteryTemperatureMin = data.myBatteryInfoLastest.batteryTemperatureMin this.dataForm.batteryVoltageMax = data.myBatteryInfoLastest.batteryVoltageMax this.dataForm.batteryVoltageMin = data.myBatteryInfoLastest.batteryVoltageMin this.dataForm.mosStatus = data.myBatteryInfoLastest.mosStatus this.dataForm.mosTemp = data.myBatteryInfoLastest.mosTemp this.dataForm.batteryCycleTimes = data.myBatteryInfoLastest.batteryCycleTimes this.dataForm.steadyStatus = data.myBatteryInfoLastest.steadyStatus this.dataForm.cellVoltage = data.myBatteryInfoLastest.cellVoltage this.dataForm.model = data.myBatteryInfoLastest.model this.dataForm.manufacture = data.myBatteryInfoLastest.manufacture this.dataForm.imei = data.myBatteryInfoLastest.imei this.dataForm.imsi = data.myBatteryInfoLastest.imsi this.dataForm.iccid = data.myBatteryInfoLastest.iccid this.dataForm.trackerHardwareVersion = data.myBatteryInfoLastest.trackerHardwareVersion this.dataForm.trackerSoftwareVersion = data.myBatteryInfoLastest.trackerSoftwareVersion this.dataForm.reportreason = data.myBatteryInfoLastest.reportreason this.dataForm.detstatus = data.myBatteryInfoLastest.detstatus this.dataForm.csq = data.myBatteryInfoLastest.csq this.dataForm.networkType = data.myBatteryInfoLastest.networkType this.dataForm.locationMode = data.myBatteryInfoLastest.locationMode this.dataForm.longitude = data.myBatteryInfoLastest.longitude this.dataForm.longitudeDirection = data.myBatteryInfoLastest.longitudeDirection this.dataForm.latitude = data.myBatteryInfoLastest.latitude this.dataForm.latitudeDirection = data.myBatteryInfoLastest.latitudeDirection this.dataForm.gpsSpeed = data.myBatteryInfoLastest.gpsSpeed this.dataForm.gpsSignal = data.myBatteryInfoLastest.gpsSignal this.dataForm.satelliteNum = data.myBatteryInfoLastest.satelliteNum this.dataForm.accuracy = data.myBatteryInfoLastest.accuracy this.dataForm.businessmode = data.myBatteryInfoLastest.businessmode this.dataForm.flag = data.myBatteryInfoLastest.flag this.dataForm.uploadTime = data.myBatteryInfoLastest.uploadTime this.dataForm.createTime = data.myBatteryInfoLastest.createTime this.dataForm.updateTime = data.myBatteryInfoLastest.updateTime } }) } }) }, // 表单提交 dataFormSubmit () { this.$refs[&#39;dataForm&#39;].validate((valid) => { if (valid) { this.$http({ url: this.$http.adornUrl(`/maya/mybatteryinfolastest/${!this.dataForm.id ? &#39;save&#39; : &#39;update&#39;}`), method: &#39;post&#39;, data: this.$http.adornData({ &#39;id&#39;: this.dataForm.id || undefined, &#39;batteryId&#39;: this.dataForm.batteryId, &#39;batteryVoltage&#39;: this.dataForm.batteryVoltage, &#39;batteryCurrent&#39;: this.dataForm.batteryCurrent, &#39;batterySoc&#39;: this.dataForm.batterySoc, &#39;batteryHardVersion&#39;: this.dataForm.batteryHardVersion, &#39;batterySoftVersion&#39;: this.dataForm.batterySoftVersion, &#39;batteryWorkMode&#39;: this.dataForm.batteryWorkMode, &#39;batteryProtectCode&#39;: this.dataForm.batteryProtectCode, &#39;batteryErrorCode&#39;: this.dataForm.batteryErrorCode, &#39;batteryTemperatureMax&#39;: this.dataForm.batteryTemperatureMax, &#39;batteryTemperatureMin&#39;: this.dataForm.batteryTemperatureMin, &#39;batteryVoltageMax&#39;: this.dataForm.batteryVoltageMax, &#39;batteryVoltageMin&#39;: this.dataForm.batteryVoltageMin, &#39;mosStatus&#39;: this.dataForm.mosStatus, &#39;mosTemp&#39;: this.dataForm.mosTemp, &#39;batteryCycleTimes&#39;: this.dataForm.batteryCycleTimes, &#39;steadyStatus&#39;: this.dataForm.steadyStatus, &#39;cellVoltage&#39;: this.dataForm.cellVoltage, &#39;model&#39;: this.dataForm.model, &#39;manufacture&#39;: this.dataForm.manufacture, &#39;imei&#39;: this.dataForm.imei, &#39;imsi&#39;: this.dataForm.imsi, &#39;iccid&#39;: this.dataForm.iccid, &#39;trackerHardwareVersion&#39;: this.dataForm.trackerHardwareVersion, &#39;trackerSoftwareVersion&#39;: this.dataForm.trackerSoftwareVersion, &#39;reportreason&#39;: this.dataForm.reportreason, &#39;detstatus&#39;: this.dataForm.detstatus, &#39;csq&#39;: this.dataForm.csq, &#39;networkType&#39;: this.dataForm.networkType, &#39;locationMode&#39;: this.dataForm.locationMode, &#39;longitude&#39;: this.dataForm.longitude, &#39;longitudeDirection&#39;: this.dataForm.longitudeDirection, &#39;latitude&#39;: this.dataForm.latitude, &#39;latitudeDirection&#39;: this.dataForm.latitudeDirection, &#39;gpsSpeed&#39;: this.dataForm.gpsSpeed, &#39;gpsSignal&#39;: this.dataForm.gpsSignal, &#39;satelliteNum&#39;: this.dataForm.satelliteNum, &#39;accuracy&#39;: this.dataForm.accuracy, &#39;businessmode&#39;: this.dataForm.businessmode, &#39;flag&#39;: this.dataForm.flag, &#39;uploadTime&#39;: this.dataForm.uploadTime, &#39;createTime&#39;: this.dataForm.createTime, &#39;updateTime&#39;: this.dataForm.updateTime }) }).then(({data}) => { if (data && data.code === 0) { this.$message({ message: &#39;操作成功&#39;, type: &#39;success&#39;, duration: 1500, onClose: () => { this.visible = false this.$emit(&#39;refreshDataList&#39;) } }) } else { this.$message.error(data.msg) } }) } }) } } } </script> 帮我优化该页面ui,并添加/** * 电池类型: 0-运营、1-售后、2-内测、3-报废 */ private Integer batteryKind;字段
07-19
<template> <el-dialog :title="!dataForm.id ? &#39;新增电池信息&#39; : &#39;修改电池信息&#39;" :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: BMSTracker通讯超时<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: BMSTracker通讯故障 </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: &#39;1&#39;, dataForm: { id: 0, batteryId: &#39;&#39;, batteryVoltage: &#39;&#39;, batteryCurrent: &#39;&#39;, batterySoc: &#39;&#39;, batteryHardVersion: &#39;&#39;, batterySoftVersion: &#39;&#39;, batteryWorkMode: &#39;&#39;, batteryKind: "0", batteryProtectCode: &#39;&#39;, batteryErrorCode: &#39;&#39;, batteryTemperatureMax: &#39;&#39;, batteryTemperatureMin: &#39;&#39;, batteryVoltageMax: &#39;&#39;, batteryVoltageMin: &#39;&#39;, mosStatus: &#39;&#39;, mosTemp: &#39;&#39;, batteryCycleTimes: &#39;&#39;, steadyStatus: &#39;&#39;, cellVoltage: &#39;&#39;, model: &#39;&#39;, manufacture: &#39;&#39;, imei: &#39;&#39;, imsi: &#39;&#39;, iccid: &#39;&#39;, trackerHardwareVersion: &#39;&#39;, trackerSoftwareVersion: &#39;&#39;, csq: &#39;&#39;, networkType: &#39;&#39;, locationMode: &#39;&#39;, longitude: &#39;&#39;, longitudeDirection: &#39;&#39;, latitude: &#39;&#39;, latitudeDirection: &#39;&#39;, gpsSpeed: &#39;&#39;, gpsSignal: &#39;&#39;, satelliteNum: &#39;&#39;, accuracy: &#39;&#39;, flag: &#39;&#39;, clientId: &#39;&#39;, topic: &#39;&#39;, productKey: &#39;&#39;, handled: &#39;&#39;, todoNow: &#39;&#39;, needack: &#39;&#39;, businessmode: &#39;&#39;, uploadTime: &#39;&#39;, createTime: &#39;&#39;, updateTime: &#39;&#39;, payload: &#39;&#39; }, 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: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryVoltage: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryCurrent: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batterySoc: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryHardVersion: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batterySoftVersion: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryWorkMode: [ { required: true, message: &#39;0x01(1):放电模式 0x10(16):充电模式 0x21(33):保护模式 0x30(48):待机无输出模式 0x31(49):待机预放电模式 0xFF(255):故障需返厂不能为空&#39;, trigger: &#39;blur&#39; } ], batteryProtectCode: [ { required: true, message: &#39;保护状态 bit16~bit 31 保留 bit15:Gsensor 故障 bit14:BMS Tracker通讯超时 bit13: 预放电失败 bit12: IC保护 bit11: 智能充电通信超时 bit10:压差过大 bit9:温差过大 bit8:短路 bit7:充电过压 bit6:充电过流 bit5:放电欠压 bit4:放电过流 bit3:充电低温 bit2:充电高温 bit1:放电高温 bit0:放电低温不能为空&#39;, trigger: &#39;blur&#39; } ], batteryErrorCode: [ { required: true, message: &#39;转成2进制, 总共为16位,高8位为电池包工作状态,低8位为故障状态码 bit9BMS Tracker通讯故障,bit8BMS 板 G sensor损坏,(8/9无效)bit7:失效,bit6:失衡,bit5:放电 MOS 损坏,bit4:充电 MOS 损坏,bit3IC 损坏,bit2:温度传感器损坏,bit1:采样线断线,虚焊等故障 保留,置 0,bit0:保留不能为空&#39;, trigger: &#39;blur&#39; } ], batteryTemperatureMax: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryTemperatureMin: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryVoltageMax: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryVoltageMin: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], mosStatus: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], mosTemp: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], batteryCycleTimes: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], steadyStatus: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], cellVoltage: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], model: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], manufacture: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], imei: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], imsi: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], iccid: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], trackerHardwareVersion: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], trackerSoftwareVersion: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], csq: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], networkType: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], locationMode: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], longitude: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], longitudeDirection: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], latitude: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], latitudeDirection: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], gpsSpeed: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], gpsSignal: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], satelliteNum: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], accuracy: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], flag: [ { required: true, message: &#39;1:设备主动请求或上报 2:平台主动推送或下指令 3:平台指令反馈的结果不能为空&#39;, trigger: &#39;blur&#39; } ], clientId: [ { required: true, message: &#39;MQTT发布消息所需的clientId不能为空&#39;, trigger: &#39;blur&#39; } ], topic: [ { required: true, message: &#39;MQTT主题不能为空&#39;, trigger: &#39;blur&#39; } ], productKey: [ { required: true, message: &#39;主题名称中需要的productKey不能为空&#39;, trigger: &#39;blur&#39; } ], handled: [ { required: true, message: &#39;配置是否处理 1:已处理 0:待处理不能为空&#39;, trigger: &#39;blur&#39; } ], todoNow: [ { required: true, message: &#39;是否立即执行 0:等待执行 1:立即执行不能为空&#39;, trigger: &#39;blur&#39; } ], needack: [ { required: true, message: &#39;是否回复不能为空&#39;, trigger: &#39;blur&#39; } ], businessmode: [ { required: true, message: &#39;业务模式 1:关机模式 2:运营模式 3:运输模式 4:通讯充电模式 5:盲充模式 6:存储模式 7:搜寻模式 8:返厂模式不能为空&#39;, trigger: &#39;blur&#39; } ], uploadTime: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], createTime: [ { required: true, message: &#39;不能为空&#39;, trigger: &#39;blur&#39; } ], updateTime: [ { required: true, message: &#39;更新时间不能为空&#39;, trigger: &#39;blur&#39; } ], payload: [ { required: true, message: &#39;原始数据不能为空&#39;, trigger: &#39;blur&#39; } ] } */ } }, 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[&#39;dataForm&#39;].resetFields() if (this.dataForm.id) { this.$http({ url: this.$http.adornUrl(`/maya/mybatteryinfo/info/${this.dataForm.id}`), method: &#39;get&#39;, 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[&#39;dataForm&#39;].validate((valid) => { if (valid) { this.$http({ url: this.$http.adornUrl(`/maya/mybatteryinfo/${!this.dataForm.id ? &#39;save&#39; : &#39;update&#39;}`), method: &#39;post&#39;, data: this.$http.adornData({ &#39;id&#39;: this.dataForm.id || undefined, &#39;batteryId&#39;: this.dataForm.batteryId, &#39;batteryVoltage&#39;: this.dataForm.batteryVoltage, &#39;batteryCurrent&#39;: this.dataForm.batteryCurrent, &#39;batterySoc&#39;: this.dataForm.batterySoc, &#39;batteryHardVersion&#39;: this.dataForm.batteryHardVersion, &#39;batterySoftVersion&#39;: this.dataForm.batterySoftVersion, &#39;batteryWorkMode&#39;: this.dataForm.batteryWorkMode, &#39;batteryKind&#39;: Number(this.dataForm.batteryKind), &#39;batteryProtectCode&#39;: this.dataForm.batteryProtectCode, &#39;batteryErrorCode&#39;: this.dataForm.batteryErrorCode, &#39;batteryTemperatureMax&#39;: this.dataForm.batteryTemperatureMax, &#39;batteryTemperatureMin&#39;: this.dataForm.batteryTemperatureMin, &#39;batteryVoltageMax&#39;: this.dataForm.batteryVoltageMax, &#39;batteryVoltageMin&#39;: this.dataForm.batteryVoltageMin, &#39;mosStatus&#39;: this.dataForm.mosStatus, &#39;mosTemp&#39;: this.dataForm.mosTemp, &#39;batteryCycleTimes&#39;: this.dataForm.batteryCycleTimes, &#39;steadyStatus&#39;: this.dataForm.steadyStatus, &#39;cellVoltage&#39;: this.dataForm.cellVoltage, &#39;model&#39;: this.dataForm.model, &#39;manufacture&#39;: this.dataForm.manufacture, &#39;imei&#39;: this.dataForm.imei, &#39;imsi&#39;: this.dataForm.imsi, &#39;iccid&#39;: this.dataForm.iccid, &#39;trackerHardwareVersion&#39;: this.dataForm.trackerHardwareVersion, &#39;trackerSoftwareVersion&#39;: this.dataForm.trackerSoftwareVersion, &#39;csq&#39;: this.dataForm.csq, &#39;networkType&#39;: this.dataForm.networkType, &#39;locationMode&#39;: this.dataForm.locationMode, &#39;longitude&#39;: this.dataForm.longitude, &#39;longitudeDirection&#39;: this.dataForm.longitudeDirection, &#39;latitude&#39;: this.dataForm.latitude, &#39;latitudeDirection&#39;: this.dataForm.latitudeDirection, &#39;gpsSpeed&#39;: this.dataForm.gpsSpeed, &#39;gpsSignal&#39;: this.dataForm.gpsSignal, &#39;satelliteNum&#39;: this.dataForm.satelliteNum, &#39;accuracy&#39;: this.dataForm.accuracy, &#39;flag&#39;: this.dataForm.flag, &#39;clientId&#39;: this.dataForm.clientId, &#39;topic&#39;: this.dataForm.topic, &#39;productKey&#39;: this.dataForm.productKey, &#39;handled&#39;: this.dataForm.handled, &#39;todoNow&#39;: this.dataForm.todoNow, &#39;needack&#39;: this.dataForm.needack, &#39;businessmode&#39;: this.dataForm.businessmode, &#39;uploadTime&#39;: this.dataForm.uploadTime, &#39;createTime&#39;: this.dataForm.createTime, &#39;updateTime&#39;: this.dataForm.updateTime, &#39;payload&#39;: this.dataForm.payload }) }).then(({data}) => { if (data && data.code === 0) { this.$message({ message: &#39;操作成功&#39;, type: &#39;success&#39;, duration: 1500, onClose: () => { this.visible = false this.$emit(&#39;refreshDataList&#39;) } }) } else { this.$message.error(data.msg) } }) } }) } } } </script> <style> .battery-form-dialog { font-family: &#39;Segoe UI&#39;, &#39;PingFang SC&#39;, &#39;Microsoft YaHei&#39;, 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>修复该页面,并给我完整胡代码
07-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值