whyczyk
2021-08-10 4231b4406ee43a42234ce47d41bcf4b94c48c138
参数设置界面开发
4个文件已修改
1190 ■■■■■ 已修改文件
src/assets/js/api.js 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/site/siteList.vue 145 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/functionList/functionList.vue 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/parameter/parameter.vue 943 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/api.js
@@ -71,9 +71,9 @@
 */
export const checkUserPwd = (data) => {
    return axios({
        method: "post",
        url: "User_infAction!checkUserPass",
        data: "addjson="+ md5(data),
        method: 'post',
        url: 'User_infAction!checkUserPass',
        data: "addjson=" + md5(data),
    });
}
/**
@@ -81,11 +81,11 @@
 * @param data 传入json:{dev_id,op_cmd}
 * @returns {AxiosPromise}
 */
 export const getParams = (data) => {
export const getParams = (data) => {
    return axios({
        method: 'POST'
        ,url: 'Fbs9100_setparamAction_action_searchA059Param'
        ,data: 'json=' + JSON.stringify(data)
        method: 'POST',
        url: 'Fbs9100_setparamAction_action_searchA059Param',
        data: 'json=' + JSON.stringify(data)
    });
}
/**
@@ -93,18 +93,31 @@
 * @param data 启动命令
 * @returns {AxiosPromise}
 */
 export const start = (data) => {
export const start = (data) => {
    return axios({
        method: 'post',
        url: 'Fbs9100_setparamAction_action_serchbyDev_id',
        data: 'json='+JSON.stringify(data),
        data: 'json=' + JSON.stringify(data),
    });
}
/**
 * 设定
 * @param data 启动命令
 * @returns {AxiosPromise}
 */
export const setParams = (data) => {
    return axios({
        method: 'POST',
        url: 'Fbs9100_setparamAction_action_updateA059Param',
        data: 'json=' + JSON.stringify(data)
    });
}
/**
 * 查询电池组信息
 * 参数:json = {"StationName1":"北京市","StationName2":"市辖区","StationName5":"海淀区","StationName3":"紫晶科技机房"}
 */
 export const searchBattInfo = (params) => {
export const searchBattInfo = (params) => {
    return axios({
        method: "post",
        url: "BattInfAction!serchAllBattinf",
src/components/site/siteList.vue
@@ -4,7 +4,8 @@
            <van-collapse-item v-for="(item,i) in dataList" :key="i" :title="item.label" :name="i">
                <span>
                    <ul>
                        <li v-for="(element,i) in item.list" class="group_name" @click="toRouter(element)">{{ element.BattGroupName }}</li>
                        <li v-for="(element,i) in item.list" class="group_name" @click="toRouter(element)" :key="i">
                            {{ element.BattGroupName }}</li>
                    </ul>
                </span>
            </van-collapse-item>
@@ -19,102 +20,106 @@
    </div>
</template>
<script>
import { searchStation,searchBattInfo } from "@/assets/js/api";
export default {
    data(){
        return {
            finished: false,
            dataList:[],
            activeNames:[],
        }
    },
    mounted(){
        this.searchStation();
    },
    methods:{
        searchStation:function(){
            let self = this;
    import {
        searchStation,
        searchBattInfo
    } from "@/assets/js/api";
    export default {
        data() {
            return {
                finished: false,
                dataList: [],
                activeNames: [],
            }
        },
        mounted() {
            this.searchStation();
        },
        methods: {
            searchStation: function () {
                let self = this;
                searchStation({
                    StationName1:"",
                    StationName2:"",
                    StationName5:"",
                }).then((res)=>{
                    StationName1: "",
                    StationName2: "",
                    StationName5: "",
                }).then((res) => {
                    let rs = JSON.parse(res.data.result);
                    let data = [];
                    if(rs.code == 1) {
                    if (rs.code == 1) {
                        data = rs.data;
                        console.log(data)
                    }
                    // 格式化数据
                    this.formatData(data);
                });
        },
        formatData(data) {
            let self = this;
            let homeList = [];
            // 遍历数据构造树状
            data.forEach((item,i)=>{
                let tmp = {};
                tmp.label = item.StationName1+"-"+item.StationName2+"-"+item.StationName5+"-"+item.StationName3;
                tmp.key = item.FBSDeviceId+Math.random();
                tmp.id = item.FBSDeviceId;
                tmp.data = item;
                let index = this.checkValIsIn(tmp.label, homeList);
                if(index == -1) {
                    tmp.list = [];
                    homeList.push(tmp);
            },
            formatData(data) {
                let self = this;
                let homeList = [];
                // 遍历数据构造树状
                data.forEach((item, i) => {
                    let tmp = {};
                    tmp.label = item.StationName1 + "-" + item.StationName2 + "-" + item.StationName5 + "-" +
                        item.StationName3;
                    tmp.key = item.FBSDeviceId + Math.random();
                    tmp.id = item.FBSDeviceId;
                    tmp.data = item;
                    let index = this.checkValIsIn(tmp.label, homeList);
                    if (index == -1) {
                        tmp.list = [];
                        homeList.push(tmp);
                    }
                });
                self.dataList = homeList;
                self.finished = true;
            },
            checkValIsIn(val, arr) {
                for (let i = 0; i < arr.length; i++) {
                    if (arr[i].label == val) {
                        return i;
                    }
                }
            });
            self.dataList = homeList;
            self.finished = true;
        },
        checkValIsIn(val, arr) {
            for(let i=0; i<arr.length; i++) {
                if(arr[i].label == val) {
                    return i;
                }
            }
            return -1;
        },
        // 查询电池组
        changeList(){
            let self = this;
                self.$nextTick(()=>{
                return -1;
            },
            // 查询电池组
            changeList() {
                let self = this;
                self.$nextTick(() => {
                    self.activeNames.forEach(item => {
                        let arr = self.dataList[item].list;
                        if(arr.length<1){
                        if (arr.length < 1) {
                            console.log(self.dataList[item])
                            let objs = self.dataList[item].data;
                            searchBattInfo({
                                StationName1:objs.StationName1,
                                StationName2:objs.StationName2,
                                StationName5:objs.StationName5,
                                StationName3:objs.StationName3
                            }).then(res=>{
                                StationName1: objs.StationName1,
                                StationName2: objs.StationName2,
                                StationName5: objs.StationName5,
                                StationName3: objs.StationName3
                            }).then(res => {
                                let re = JSON.parse(res.data.result)
                                    re.data.forEach(element => {
                                        self.dataList[item].list.push(element);
                                    });
                                re.data.forEach(element => {
                                    self.dataList[item].list.push(element);
                                });
                            })
                        }
                    });
                })
        },
        // 跳转
        toRouter(element){
            let self = this;
            },
            // 跳转
            toRouter(element) {
                let self = this;
                self.$router.push({
                    path: '/functionList',
                    query:element
                    query: element
                })
            }
        }
    }
}
    }
</script>
<style scoped>
    .group_name{
    .group_name {
        margin-bottom: 14px;
        margin-left: 10px;
    }
src/pages/functionList/functionList.vue
@@ -1,46 +1,49 @@
<template>
    <!-- <van-nav-bar title="首页" left-arrow></van-nav-bar> -->
    <van-grid>
        <van-grid-item @click="ok(0)">
            <van-image :src=" require('../../assets/img/home-charge.png')"/>
            <span>文字</span>
        </van-grid-item>
        <van-grid-item @click="ok(1)">
            <van-image :src=" require('../../assets/img/home-charge.png')"/>
            <span>文字</span>
        </van-grid-item>
        <van-grid-item @click="ok(2)">
            <van-image :src=" require('../../assets/img/home-charge.png')"/>
            <span>文字</span>
        </van-grid-item>
        <!-- <van-grid-item icon="photo-o" text="文字" />
    <div class="">
        <van-nav-bar title="站点" left-arrow @click-left="$router.back()"></van-nav-bar>
        <van-grid>
            <van-grid-item @click="ok(0)">
                <van-image :src=" require('../../assets/img/home-charge.png')" />
                <span>充电参数</span>
            </van-grid-item>
            <van-grid-item @click="ok(1)">
                <van-image :src=" require('../../assets/img/home-charge.png')" />
                <span>放电参数</span>
            </van-grid-item>
            <van-grid-item @click="ok(2)">
                <van-image :src=" require('../../assets/img/home-charge.png')" />
                <span>活化参数</span>
            </van-grid-item>
            <!-- <van-grid-item icon="photo-o" text="文字" />
        <van-grid-item icon="photo-o" text="文字" />
        <van-grid-item icon="photo-o" text="文字" /> -->
    </van-grid>
        </van-grid>
    </div>
</template>
<script>
export default {
    data(){
        return {
    export default {
        data() {
            return {
        }
    },
    mounted(){
    },
    methods: {
        ok:function(val){
            let self = this;
            let obj = this.$route.query;
            }
        },
        mounted() {
        },
        methods: {
            ok: function (val) {
                let self = this;
                let obj = this.$route.query;
                obj.num = val;
                self.$router.push({
                    path: '/parameter',
                    query:obj
                    query: obj
                })
        }
    },
}
            }
        },
    }
</script>
<style scoped>
src/pages/parameter/parameter.vue
@@ -1,445 +1,586 @@
<template>
    <div>
        <van-nav-bar title="参数" left-arrow @click-left="$router.back()"></van-nav-bar>
        <van-form>
            <van-field
                v-model="groupName"
                label="电池组名称:"
                label-width="120"
                placeholder="请输入电池组名称"
                name="电池组名称"
            />
            <van-field
                v-model="FBSDeviceId"
                label="设备ID:"
                label-width="120"
                placeholder="请输入设备ID"
                name="设备ID"
            />
            <van-field
                v-model="GroupIndexInFBSDevice"
                label="电池组编号:"
                label-width="120"
                placeholder="请输入电池组编号"
                name="电池组编号"
            />
            <van-field
                v-model="groupInfo"
                label="电池组信息:"
                label-width="120"
                placeholder="请输入电池组信息"
                name="电池组信息"
            />
            <van-field v-model="otherParams.groupName" label="电池组名称:" label-width="120" placeholder="请输入电池组名称"
                name="电池组名称" />
            <van-field v-model="otherParams.FBSDeviceId" label="设备ID:" label-width="120" placeholder="请输入设备ID"
                name="设备ID" />
            <van-field v-model="otherParams.GroupIndexInFBSDevice" label="电池组编号:" label-width="120"
                placeholder="请输入电池组编号" name="电池组编号" />
            <van-field v-model="otherParams.groupInfo" label="电池组信息:" label-width="120" placeholder="请输入电池组信息"
                name="电池组信息" />
            <van-field v-model="params.CharHighTmp" label="温度告警(℃):" label-width="120" placeholder="请输入温度告警(℃)"
                name="温度告警(℃)" />
        </van-form>
        <van-tabs v-model="active">
            <!-- 放电参数 -->
            <van-tab title="充电参数" :disabled="!(0 == opt.num)">
                <van-field
                    v-model="OnLineVol_Low"
                    label="充电电压(V):"
                    label-width="120"
                    placeholder="请输入充电电压(V)"
                    name="充电电压(V)"
                />
                <van-field
                    v-model="ChargeCurrSet"
                    label="充电电流(A):"
                    label-width="120"
                    placeholder="请输入充电电流(A)"
                    name="充电电流(A)"
                />
                <van-field
                    v-model="AutoTestStartVol"
                    label="浮充电压(V):"
                    label-width="120"
                    placeholder="请输入浮充电压(V)"
                    name="浮充电压(V)"
                />
                <van-field
                    v-model="CharHighTmp"
                    label="充电过温(℃):"
                    label-width="120"
                    placeholder="请输入充电过温(℃)"
                    name="充电过温(℃)"
                />
                <van-field
                    v-model="CharSotpCurr"
                    label="截止电流(A):"
                    label-width="120"
                    placeholder="请输入截止电流(A)"
                    name="截止电流(A)"
                />
                <van-field
                    v-model="CharCap"
                    label="充电容量(AH):"
                    label-width="120"
                    placeholder="请输入充电容量(AH)"
                    name="充电容量(AH)"
                />
                <van-field
                    v-model="MonVolHightLimit"
                    label="单体上限(V):"
                    label-width="120"
                    placeholder="请输入单体上限(V)"
                    name="单体上限(V)"
                />
                <van-field
                    v-model="DCVolHighLimit"
                    label="组端上限(V):"
                    label-width="120"
                    placeholder="请输入组端上限(V)"
                    name="组端上限(V)"
                />
                <van-field
                    v-model="MonVolHightLimitCount"
                    label="单体上限数量(个):"
                    label-width="120"
                    placeholder="请输入单体上限数量(个)"
                    name="单体上限数量(个)"
                />
                <van-field
                    v-model="CharTimeLong"
                    label="充电时长(分钟):"
                    label-width="120"
                    placeholder="请输入充电时长(分钟)"
                    name="充电时长(分钟)"
                />
                <van-field
                    v-model="FloatCharTimeLong"
                    label="浮充时长(分钟):"
                    label-width="120"
                    placeholder="请输入浮充时长(分钟)"
                    name="浮充时长(分钟)"
                />
            <van-tab title="充电参数" :disabled="!(0 == batt.num)">
                <van-field v-model="params.OnLineVol_Low" label="恒压电压(V):" label-width="120" placeholder="请输入恒压电压(V)"
                    name="恒压电压(V)" />
                <van-field v-model="params.ChargeCurrSet" label="恒压电流(A):" label-width="120" placeholder="请输入恒压电流(A)"
                    name="恒压电流(A)" />
                <van-field v-model="params.CharTimeLong" label="恒压时长(分钟):" label-width="120" placeholder="请输入恒压时长(分钟)"
                    name="恒压时长(分钟)" />
                <van-field v-model="params.AutoTestStartVol" label="浮充电压(V):" label-width="120" placeholder="请输入浮充电压(V)"
                    name="浮充电压(V)" />
                <van-field v-model="params.CharSotpCurr" label="浮充电流(A):" label-width="120" placeholder="请输入浮充电流(A)"
                    name="浮充电流(A)" />
                <van-field v-model="params.FloatCharTimeLong" label="浮充时长(分钟):" label-width="120"
                    placeholder="请输入浮充时长(分钟)" name="浮充时长(分钟)" />
                <van-field v-model="params.MonVolHightLimit" label="单体上限(V):" label-width="120" placeholder="请输入单体上限(V)"
                    name="单体上限(V)" />
                <van-field v-model="params.MonVolHightLimitCount" label="单体上限数量(个):" label-width="120"
                    placeholder="请输入单体上限数量(个)" name="单体上限数量(个)" />
                <van-field v-model="params.DCVolHighLimit" label="保护电压(V):" label-width="120" placeholder="请输入保护电压(V)"
                    name="保护电压(V)" />
                <van-field readonly clickable name="picker" :value="params.FlowOver_Count" label="恒流阶段总数:"
                    placeholder="点击恒流阶段总数" @click="showPicker = true" />
                <van-popup v-model="showPicker" position="bottom">
                    <van-picker show-toolbar :columns="flowOverCount" @confirm="onConfirm1"
                        @cancel="showPicker = false" />
                </van-popup>
                <van-field v-model="params.FlowOver_CharCurr_1" label="恒流1阶段充电电流:" label-width="120"
                    placeholder="请输入恒流1阶段充电电流" name="恒流1阶段充电电流" />
                <van-field v-model="params.FlowOver_CharCurr_2" :disabled="params.FlowOver_Count < 2" label="恒流2阶段充电电流:"
                    label-width="120" placeholder="请输入恒流2阶段充电电流" name="恒流2阶段充电电流" />
                <van-field v-model="params.FlowOver_CharCurr_3" :disabled="params.FlowOver_Count < 3" label="恒流3阶段充电电流:"
                    label-width="120" placeholder="请输入恒流3阶段充电电流" name="恒流3阶段充电电流" />
                <van-field v-model="params.FlowOver_CharTime_1" label="恒流1阶段充电时长:" label-width="120"
                    placeholder="请输入恒流1阶段充电时长" name="恒流1阶段充电时长" />
                <van-field v-model="params.FlowOver_CharTime_2" :disabled="params.FlowOver_Count < 2" label="恒流2阶段充电时长:"
                    label-width="120" placeholder="请输入恒流2阶段充电时长" name="恒流2阶段充电时长" />
                <van-field v-model="params.FlowOver_CharTime_3" :disabled="params.FlowOver_Count < 3" label="恒流3阶段充电时长:"
                    label-width="120" placeholder="请输入恒流3阶段充电时长" name="恒流3阶段充电时长" />
            </van-tab>
            <!-- 放电参数 -->
            <van-tab title="放电参数" :disabled="!(1 == opt.num)">
                <van-field
                    readonly
                    clickable
                    name="picker"
                    :value="OnlineLowAction"
                    label="放电模式:"
                    placeholder="点击选择放电模式"
                    @click="showPicker = true"
                />
            <van-tab title="放电参数" :disabled="!(1 == batt.num)">
                <van-field readonly clickable name="picker" :value="params.OnlineLowAction" label="放电模式:"
                    placeholder="点击选择放电模式" @click="showPicker = true" />
                <van-popup v-model="showPicker" position="bottom">
                    <van-picker
                        show-toolbar
                        :columns="columns"
                        @confirm="onConfirm"
                        @cancel="showPicker = false"
                    />
                    <van-picker show-toolbar :columns="testType" @confirm="onConfirm2" @cancel="showPicker = false" />
                </van-popup>
                <van-field
                    v-model="DisCurr"
                    label="放电电流(A):"
                    label-width="120"
                    placeholder="请输入放电电流(A)"
                    name="放电电流(A)"
                />
                <van-field
                    v-model="DisCap"
                    label="放电容量(AH):"
                    label-width="120"
                    placeholder="请输入放电容量(AH)"
                    name="放电容量(AH)"
                />
                <van-field
                    readonly
                    clickable
                    name="picker"
                    :value="HourRate"
                    label="放电小时率:"
                    placeholder="点击选择放电小时率"
                    @click="showPicker2 = true"
                />
                <van-field v-model="params.DisCurr" label="预放电流(A):" label-width="120" placeholder="请输入预放电流(A)"
                    name="预放电流(A)" />
                <van-field v-model="params.DisCap" label="预放容量(AH):" label-width="120" placeholder="请输入预放容量(AH)"
                    name="预放容量(AH)" />
                <van-field readonly clickable name="picker" :value="params.HourRate" label="放电小时率:"
                    placeholder="点击选择放电小时率" @click="showPicker2 = true" />
                <van-popup v-model="showPicker2" position="bottom">
                    <van-picker
                        show-toolbar
                        :columns="columns2"
                        @confirm="onConfirm2"
                        @cancel="showPicker2 = false"
                    />
                    <van-picker show-toolbar :columns="HourRate" @confirm="onConfirm3" @cancel="showPicker2 = false" />
                </van-popup>
                <van-field
                    v-model="DisPreRes"
                    label="放电阻值(mΩ):"
                    label-width="120"
                    placeholder="请输入放电阻值(mΩ)"
                    name="放电阻值(mΩ)"
                />
                <van-field
                    v-model="DisPower"
                    label="预放功率(KW):"
                    label-width="120"
                    placeholder="请输入预放功率(KW)"
                    name="预放功率(KW)"
                />
                <van-field
                    v-model="DisTime"
                    label="放电时长(分钟):"
                    label-width="120"
                    placeholder="请输入放电时长(分钟)"
                    name="放电时长(分钟)"
                />
                <van-field
                    v-model="MonomerTmp_High"
                    label="放电过温:"
                    label-width="120"
                    placeholder="请输入放电过温"
                    name="放电过温"
                />
                <van-field
                    v-model="GroupVol_Low"
                    label="组端下限(V):"
                    label-width="120"
                    placeholder="请输入组端下限(V)"
                    name="组端下限(V)"
                />
                <van-field
                    v-model="MonomerVol_Low"
                    label="单体下限(V):"
                    label-width="120"
                    placeholder="请输入单体下限(V)"
                    name="单体下限(V)"
                />
                <van-field
                    v-model="MonomerLowCount"
                    label="单体下限数量(个):"
                    label-width="120"
                    placeholder="请输入单体下限数量(个)"
                    name="单体下限数量(个)"
                />
                <van-field v-model="params.DisPreRes" label="预放阻值(mΩ):" label-width="120" placeholder="请输入预放阻值(mΩ)"
                    name="预放阻值(mΩ)" />
                <van-field v-model="params.DisPower" label="预放功率(KW):" label-width="120" placeholder="请输入预放功率(KW)"
                    name="预放功率(KW)" />
                <van-field v-model="params.DisTime" label="预放时间(分钟):" label-width="120" placeholder="请输入预放时间(分钟)"
                    name="预放时间(分钟)" />
                <!-- <van-field v-model="MonomerTmp_High" label="放电过温:" label-width="120" placeholder="请输入放电过温"
                        name="放电过温" /> -->
                <van-field v-model="params.GroupVol_Low" label="组端下限(V):" label-width="120" placeholder="请输入组端下限(V)"
                    name="组端下限(V)" />
                <van-field v-model="params.MonomerVol_Low" label="单体下限(V):" label-width="120" placeholder="请输入单体下限(V)"
                    name="单体下限(V)" />
                <van-field v-model="params.MonomerLowCount" label="下限个数(个):" label-width="120" placeholder="请输入下限个数(个)"
                    name="下限个数(个)" />
            </van-tab>
            <!-- 活化参数 -->
            <van-tab title="活化参数" :disabled="!(2 == opt.num)">
                <van-field
                    readonly
                    clickable
                    name="picker"
                    :value="OffLineYHOnceCycle"
                    label="活化起点:"
                    placeholder="点击选择活化起点"
                    @click="showPicker3 = true"
                />
            <van-tab title="活化参数" :disabled="!(2 == batt.num)">
                <van-field readonly clickable name="picker" :value="params.OffLineYHOnceCycle" label="活化起点:"
                    placeholder="点击选择活化起点" @click="showPicker3 = true" />
                <van-popup v-model="showPicker3" position="bottom">
                    <van-picker
                        show-toolbar
                        :columns="columns3"
                        @confirm="onConfirm3"
                        @cancel="showPicker3 = false"
                    />
                    <van-picker show-toolbar :columns="cycleStart" @confirm="onConfirm4"
                        @cancel="showPicker3 = false" />
                </van-popup>
                <van-field
                    v-model="OffLineYHTimes"
                    label="活化次数(次):"
                    label-width="120"
                    placeholder="请输入活化次数(次)"
                    name="活化次数(次)"
                />
                <van-field
                    v-model="DisWaitTime"
                    label="充完静置(分钟):"
                    label-width="120"
                    placeholder="请输入充完静置(分钟)"
                    name="充完静置(分钟)"
                />
                <van-field
                    v-model="CharWaitTime"
                    label="放完静置(分钟):"
                    label-width="120"
                    placeholder="请输入放完静置(分钟)"
                    name="放完静置(分钟)"
                />
                <van-field v-model="params.OffLineYHTimes" label="循环次数(次):" label-width="120" placeholder="请输入循环次数(次)"
                    name="循环次数(次)" />
                <van-field v-model="params.DisWaitTime" label="充完静置(分钟):" label-width="120" placeholder="请输入充完静置(分钟)"
                    name="充完静置(分钟)" />
                <van-field v-model="params.CharWaitTime" label="放完静置(分钟):" label-width="120" placeholder="请输入放完静置(分钟)"
                    name="放完静置(分钟)" />
            </van-tab>
        </van-tabs>
        <!-- 两端对齐 -->
        <van-row type="flex" justify="end">
            <van-col span="6"><van-button type="primary" size="mini" style="width:95%" @click="startTest">启动</van-button></van-col>
            <van-col span="6"><van-button type="info" size="mini" style="width:95%" @click="getData()">读取</van-button></van-col>
            <van-col span="6"><van-button type="warning" size="mini" style="width:95%">设定</van-button></van-col>
        <van-row type="flex" justify="center" class="bottom">
            <van-col span="6">
                <van-button type="primary" :disabled="!startTestFlag" size="mini" style="width:95%" @click="show=true">
                    启动{{typeStr}}</van-button>
            </van-col>
            <van-col span="6">
                <van-button type="info" size="mini" style="width:95%" @click="getParams">读取</van-button>
            </van-col>
            <van-col span="6">
                <van-button type="warning" size="mini" style="width:95%" :disabled="!setTestFlag" @click="submitFrom">设定
                </van-button>
            </van-col>
        </van-row>
        <van-dialog v-model="show" title="输入启动口令,并确认" show-cancel-button @confirm="confirm()">
            <van-field
                class="passty"
                v-model="pass"
                label-width="120"
                placeholder="请输入启动口令"
            />
            <van-field class="passty" v-model="pass" label-width="120" placeholder="请输入启动口令" />
        </van-dialog>
    </div>
</template>
<script>
 import { checkUserPwd,start,getParams } from "@/assets/js/api";
import  const_aio from "@/assets/js/const_aio"
export default {
    data(){
        let cmd = const_aio.cmd;
        // let testType = const_aio.testType;
        // let rules = const_aio.dischargeRules;
        // let cycleStart = const_aio.cycleStart;
        // let HourRate = const_aio.HourRate;
        return {
            cmd:cmd,
            show:false,
            pass:"",//启动口令
            opt:{//路由参数
            },
            groupName:"",//电池组名称
            FBSDeviceId:"",//设备ID
            GroupIndexInFBSDevice:"",//电池组编号
            groupInfo:"",//电池组信息
            active:0,//选项卡下标
            // 充电参数
            OnLineVol_Low:"",//充电电压(V)
            ChargeCurrSet:"",//充电电流(A)
            AutoTestStartVol:"",//浮充电压(V)
            CharHighTmp:"",//充电过温(℃)
            CharSotpCurr:"",//截止电流(A)
            CharCap:"",//充电容量(AH)
            MonVolHightLimit:"",//单体上限(V)
            DCVolHighLimit:"",//组端上限(V)
            MonVolHightLimitCount:"",//单体上限数量(个)
            CharTimeLong:"",//充电时长(分钟)
            FloatCharTimeLong:"",//浮充时长(分钟)
            // 放电参数
            columns: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
            showPicker: false,
            columns2: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
            showPicker2: false,
            OnlineLowAction:"",
            DisCurr:"",
            DisCap:"",
            HourRate:"",
            DisPreRes:"",
            DisPower:"",
            DisTime:"",
            MonomerTmp_High:"",
            GroupVol_Low:"",
            MonomerVol_Low:"",
            MonomerLowCount:"",
            // 活化参数
            columns3: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
            showPicker3: false,
            OffLineYHOnceCycle:"",//活化起点
            OffLineYHTimes:"",//活化次数
            DisWaitTime:"",//充完静置
            CharWaitTime:"",//放完静置
        }
    },
    mounted() {
        let self = this ;
            self.opt = this.$route.query;
            self.$nextTick(()=>{
                self.active = self.opt.num;
                self.getData();//获取参数
            })
        console.log(this.$route.query)
    },
    methods: {
        // 下拉 放电模式
        onConfirm(value) {
            this.OnlineLowAction = value;
            this.showPicker = false;
        },
        // 下拉2 放电小时率
        onConfirm2(value) {
            this.HourRate = value;
            this.showPicker2 = false;
        },
        // 下拉3 放电小时率
        onConfirm3(value) {
            this.OffLineYHOnceCycle = value;
            this.showPicker3 = false;
        },
        // 获取参数
        getData(){
            let self = this;
                getParams({
                    dev_id:"618500001",//self.opt.id,
                    op_cmd:self.cmd.getParams
                }).then(res=>{
                    let rs = JSON.parse(res.data.result);
                    if(rs.code == 1) {
                        let fsparam = rs.data[0];
                            console.log(fsparam)
                        // // 遍历参数属性并赋值
                        // for (let key in this.params) {
                        //     this.params[key] = fsparam[key];
                        // }
                        // // 设置的命令和dev_id
                        // this.params.op_cmd = this.cmd.setParams;
                        // this.$layer.msg('读取成功!');
                    }else {
                        console.log(rs)
                        // this.$layer.msg('读取失败!');
    import {
        checkUserPwd,
        start,
        getParams,
        setParams
    } from "@/assets/js/api";
    import const_aio from "@/assets/js/const_aio"
    let rules = const_aio.dischargeRules;
    export default {
        data() {
            let cmd = const_aio.cmd;
            let testType = const_aio.testType;
            let cycleStart = const_aio.cycleStart;
            let HourRate = const_aio.HourRate;
            return {
                active: 0, //选项卡下标
                show: false,
                pass: "", //启动口令
                showPicker: false,
                showPicker2: false,
                showPicker3: false,
                batt: {
                    num: 0
                },
                flowOverCount: const_aio.flowOverCount,
                cmd: cmd, // 操作命令
                startTestFlag: false, // 启动测试的状态
                setTestFlag: false, // 设置参数的状态
                testType: testType, // 测试类型
                cycleStart: cycleStart, // 活化起点
                HourRate: HourRate, // 放电小时率
                acTabs: 'activate',
                params: {
                    AutoTestStartVol: 0, //浮充电压(V)
                    BattGroupNum: 0, //电池组编号
                    CharCap: 0, //充电容量(AH)(不显示)
                    CharHighTmp: 0, //充电过温
                    CharSotpCurr: 0, //截止电流
                    CharTimeLong: 0, //充电时长
                    CharWaitTime: 0, //放完静置
                    ChargeCurrSet: 0, //充电电流
                    DCVolHighLimit: 5, //组端上限
                    DisCap: 0, //放电容量
                    DisCurr: 0, //放电电流
                    DisPower: 0, //预放功率
                    DisPreRes: 0, //放电阻值
                    DisTime: 0, //放电时长
                    DisWaitTime: 0, //充完静置
                    FloatCharTimeLong: 0, //浮充时长
                    GroupVol_Low: 0, //组端下限
                    HourRate: 0, //放电小时率
                    MonCount: 0, //单体数量
                    MonVol: 0, //单体电压
                    MonVolHightLimit: 0, //单体上限
                    MonVolHightLimitCount: 0, //单体上限数量
                    MonomerLowCount: 0, //单体下限数量
                    MonomerTmp_High: 0, //放电过温
                    MonomerVol_Low: 0, //单体下限
                    OffLineYHOnceCycle: 1, //活化起点
                    OffLineYHTimes: 1, //活化次数
                    OffLineYH_Cycle: 0, //电池组标称容量
                    FlowOver_Count: 1, //恒流总阶段数
                    FlowOver_CharCurr_1: 0, //恒流1阶段充电电流
                    FlowOver_CharCurr_2: 0, //恒流2阶段充电电流
                    FlowOver_CharCurr_3: 0, //恒流3阶段充电电流
                    FlowOver_CharTime_1: 0, //恒流3阶段充电时长
                    FlowOver_CharTime_2: 0, //恒流3阶段充电时长
                    FlowOver_CharTime_3: 0, //恒流3阶段充电时长
                    OffLineYHstarttime: "2000-01-01 00:00:00", //养护开始时间
                    OnLineVol_Low: 0, //充电电压
                    OnlineLowAction: 0, //测试类型 0:恒电流,1:恒功率,2:恒电阻
                    TestCmd: 0, //备用
                    dev_id: 0, //设备id
                    dev_ip: "127.0.0.0", //设备ip
                    op_cmd: cmd.setParams, //指令
                },
                ranges: {
                    GroupVol_Low: {
                        name: '组端电压下限',
                        unit: 'V',
                        min: rules.GroupVol_Low.min,
                        max: rules.GroupVol_Low.max
                    },
                    MonomerVol_Low: {
                        name: '单体电压下限',
                        unit: 'V',
                        min: rules.MonomerVol_Low.min,
                        max: rules.MonomerVol_Low.max
                    }
                }).catch(err=>{
                })
        },
        typeStr(){
            let self = this;
            let res = '';
            switch (self.opt.num) {
                case '0':
                    res = '充电';
                    break;
                case '1':
                    res = '放电';
                    break;
                case '2':
                    res = '活化';
                    break;
                },
                rules: {
                    AutoTestStartVol: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.AutoTestStartVol)
                        },
                        trigger: 'change'
                    }],
                    // CharCap: [{
                    //     validator(rule, value, callback) {
                    //         testVal(rule, value, callback, rules.CharCap)
                    //     },
                    //     trigger: 'change'
                    // }],
                    CharHighTmp: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.CharHighTmp)
                        },
                        trigger: 'change'
                    }],
                    CharSotpCurr: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.CharSotpCurr)
                        },
                        trigger: 'change'
                    }],
                    CharWaitTime: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.CharWaitTime)
                        },
                        trigger: 'change'
                    }],
                    ChargeCurrSet: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.ChargeCurrSet)
                        },
                        trigger: 'change'
                    }],
                    DCVolHighLimit: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.DCVolHighLimit)
                        },
                        trigger: 'change'
                    }],
                    DisCap: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.DisCap)
                        },
                        trigger: 'change'
                    }],
                    DisCurr: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.DisCurr)
                        },
                        trigger: 'change'
                    }],
                    DisPower: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.DisPower)
                        },
                        trigger: 'change'
                    }],
                    DisPreRes: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.DisPreRes)
                        },
                        trigger: 'change'
                    }],
                    DisTime: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.DisTime)
                        },
                        trigger: 'change'
                    }],
                    DisWaitTime: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.DisWaitTime)
                        },
                        trigger: 'change'
                    }],
                    // FloatCharTimeLong: [{
                    //     validator(rule, value, callback) {
                    //         testVal(rule, value, callback, rules.FloatCharTimeLong)
                    //     },
                    //     trigger: 'change'
                    // }],
                    GroupVol_Low: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.GroupVol_Low)
                        },
                        trigger: 'change'
                    }],
                    MonVolHightLimit: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.MonVolHightLimit)
                        },
                        trigger: 'change'
                    }],
                    MonVolHightLimitCount: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.MonVolHightLimitCount)
                        },
                        trigger: 'change'
                    }],
                    MonomerLowCount: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.MonomerLowCount)
                        },
                        trigger: 'change'
                    }],
                    // MonomerTmp_High: [{
                    //     validator(rule, value, callback) {
                    //         testVal(rule, value, callback, rules.MonomerTmp_High)
                    //     },
                    //     trigger: 'change'
                    // }],
                    MonomerVol_Low: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.MonomerVol_Low)
                        },
                        trigger: 'change'
                    }],
                    OffLineYHTimes: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.OffLineYHTimes)
                        },
                        trigger: 'change'
                    }],
                    OnLineVol_Low: [{
                        validator(rule, value, callback) {
                            testVal(rule, value, callback, rules.OnLineVol_Low)
                        },
                        trigger: 'change'
                    }]
                },
            }
            return res;
        },
        // 确认口令
        confirm(){
        mounted() {
            let self = this;
            self.batt = this.$route.query;
            self.$nextTick(() => {
                self.active = self.batt.num;
                self.getParams(); //获取参数
            })
        },
        computed: {
            otherParams() {
                let batt = this.batt;
                let groupInfo = '单体数量:' + this.batt.MonCount + ";电压(V):" +
                    this.batt.MonVolStd + ";容量(AH):" + this.batt.MonCapStd;
                return {
                    groupName: batt.StationName + "-" + batt.BattGroupName,
                    FBSDeviceId: batt.FBSDeviceId,
                    groupInfo: groupInfo,
                    GroupIndexInFBSDevice: this.batt.GroupIndexInFBSDevice + 1,
                }
            },
            rangeLabel() {
                let ranges = this.ranges;
                let result = {};
                for (let key in ranges) {
                    let item = ranges[key];
                    result[key] = item.name + "(" + item.min + "~" + item.max + item.unit + ")";
                }
                return result;
            },
            typeStr() {
                let res = '';
                switch (Number(this.batt.num)) {
                    case 0:
                        res = '充电';
                        break;
                    case 1:
                        res = '放电';
                        break;
                    case 2:
                        res = '活化';
                        break;
                }
                return res;
            }
        },
        methods: {
            initParams() {
                // 初始化参数
                this.params = {
                    AutoTestStartVol: 0, //浮充电压(V)
                    BattGroupNum: 0, //电池组编号
                    CharCap: 0, //充电容量(AH)
                    CharHighTmp: 0, //充电过温
                    CharSotpCurr: 0, //截止电流
                    CharTimeLong: 0, //充电时长
                    CharWaitTime: 0, //放完静置
                    ChargeCurrSet: 0, //充电电流
                    DCVolHighLimit: 5, //组端上限
                    DisCap: 0, //放电容量
                    DisCurr: 0, //放电电流
                    DisPower: 0, //预放功率
                    DisPreRes: 0, //放电阻值
                    DisTime: 0, //放电时长
                    DisWaitTime: 0, //充完静置
                    FloatCharTimeLong: 0, //浮充时长
                    GroupVol_Low: 0, //组端下限
                    HourRate: 0, //放电小时率
                    MonCount: 0, //单体数量
                    MonVol: 0, //单体电压
                    MonVolHightLimit: 0, //单体上限
                    MonVolHightLimitCount: 0, //单体上限数量
                    MonomerLowCount: 0, //单体下限数量
                    MonomerTmp_High: 0, //放电过温
                    MonomerVol_Low: 0, //单体下限
                    OffLineYHOnceCycle: 1, //活化起点
                    OffLineYHTimes: 1, //活化次数
                    OffLineYH_Cycle: 0, //电池组标称容量
                    FlowOver_Count: 1, //恒流总阶段数
                    FlowOver_CharCurr_1: 0, //恒流1阶段充电电流
                    FlowOver_CharCurr_2: 0, //恒流2阶段充电电流
                    FlowOver_CharCurr_3: 0, //恒流3阶段充电电流
                    FlowOver_CharTime_1: 0, //恒流3阶段充电时长
                    FlowOver_CharTime_2: 0, //恒流3阶段充电时长
                    FlowOver_CharTime_3: 0, //恒流3阶段充电时长
                    OffLineYHstarttime: "2000-01-01 00:00:00", //养护开始时间
                    OnLineVol_Low: 0, //充电电压
                    OnlineLowAction: 0, //测试类型 0:恒电流,1:恒功率,2:恒电阻
                    TestCmd: 0, //备用
                    dev_id: 0, //设备id
                    dev_ip: "127.0.0.0", //设备ip
                    op_cmd: const_aio.cmd.setParams, //指令
                };
            },
            // 下拉 放电模式
            onConfirm1(value) {
                this.OnlineLowAction = value;
                this.showPicker = false;
            },
            // 下拉 放电模式
            onConfirm2(value) {
                this.OnlineLowAction = value;
                this.showPicker = false;
            },
            // 下拉2 放电小时率
            onConfirm3(value) {
                this.HourRate = value;
                this.showPicker2 = false;
            },
            // 下拉3 放电小时率
            onConfirm4(value) {
                this.OffLineYHOnceCycle = value;
                this.showPicker3 = false;
            },
            // 获取参数
            getParams() {
                let self = this;
                // 启动按钮不可点击
                this.startTestFlag = false;
                getParams({
                    dev_id: self.batt.FBSDeviceId,
                    op_cmd: self.cmd.getParams
                }).then(res => {
                    let rs = JSON.parse(res.data.result);
                    console.log(rs)
                    if (rs.code == 1) {
                        let fsparam = rs.data[0];
                        // 遍历参数属性并赋值
                        for (let key in this.params) {
                            this.params[key] = fsparam[key];
                        }
                        // 设置的命令和dev_id
                        this.params.op_cmd = this.cmd.setParams;
                        this.$toast("读取成功!");
                        // 设置按钮可点击
                        this.setTestFlag = true;
                    } else {
                        this.setTestFlag = !0 || false;
                        this.$toast("读取失败!");
                    }
                }).catch(err => {
                    console.log(error);
                    // 初始化参数
                    this.initParams();
                    // 设置按钮不可点击
                    this.setTestFlag = false;
                    this.$toast("读取失败,读取请求异常!");
                })
            },
            // 确认口令
            confirm() {
                let self = this;
                self.show = true;
                // 核对口令
                checkUserPwd(self.pass).then(res=>{
                checkUserPwd(self.pass).then(res => {
                    let rs = JSON.parse(res.data.result);
                        if(rs.code == 1) {
                            self.$toast("密码检测通过,启动测试");
                            // 启动测试
                            // this.startTest();
                        }else {
                            self.$toast("启动口令错误!");
                        }
                }).catch(err=>{
                    if (rs.code == 1) {
                        self.$toast("密码检测通过,启动测试");
                        // 启动测试
                        this.startTestCheck();
                    } else {
                        self.$toast("启动口令错误!");
                    }
                }).catch(err => {
                    self.$toast("网络请求异常");
                })
        },
        // 启动程序运行
        startTest(){
            let self = this;
            },
            // 启动程序运行
            startTestCheck() {
                let self = this;
                let num = 0;
                switch (this.batt.num) {
                    case 0:
                        num = this.cmd.startCharge;
                        break;
                    case 1:
                        num = this.cmd.startDisCharge;
                        break;
                    case 2:
                        num = this.cmd.startActivate;
                        break;
                }
                start({
                    num:self.cmd,
                    dev_id:self.opt.id,
                    BattGroupNum:self.opt
                }).then(res=>{
                    num: num,
                    dev_id: this.batt.FBSDeviceId,
                    BattGroupNum: this.batt.GroupIndexInFBSDevice + 1
                }).then(res => {
                    let rs = JSON.parse(res.data.result);
                }).catch(err=>{
                    if (rs.code == 1) {
                        // 提示信息
                        this.$toast('启动测试成功');
                    } else {
                        // 提示信息
                        this.$toast('启动测试失败!');
                    }
                }).catch(err => {
                    this.$toast('启动测试失败,启动测试请求异常!');
                })
            },
            submitFrom() {
                setParams(this.params).then(res => {
                    let rs = JSON.parse(res.data.result);
                    if (rs.code == 1) {
                        // 启动按钮可点击
                        this.startTestFlag = true;
                        // 提示信息
                        this.$toast('设置成功');
                    } else {
                        // 启动按钮不可点击
                        this.startTestFlag = false;
                        // 提示信息
                        this.$toast('设置失败!');
                    }
                }).catch(error => {
                    console.log(error);
                    // 启动按钮不可点击
                    this.startTestFlag = false;
                    // 提示信息
                    this.$toast('设置失败,设置请求异常!');
                });
            },
        },
    },
}
    }
</script>
<style scoped>
    .passty /deep/.van-field__control{
    .passty /deep/.van-field__control {
        text-align: center;
    }
    .bottom {
        height: 48px;
        border-top: 1px solid #dddddd;
        align-content: center;
    }
</style>