whychdw
2019-09-10 2acef99780e5909f5a7bbaf365f36021bd1fb0d3
提交内容
4个文件已修改
1个文件已添加
289 ■■■■■ 已修改文件
src/App.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/HCollapse.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/SquareBox.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/libs/common.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/monitor/history.vue 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue
@@ -24,7 +24,7 @@
                <div class="blade-card-mask-before"></div>
                <div class="blade-card-content" style="text-align: right">
                  <div class="user-info">
                    <Dropdown>
                    <!-- <Dropdown>
                      <a href="javascript:void(0)">
                        <Avatar style="background-color: #87d068" icon="ios-person" />
                        <span class="user-name">hdw</span>
@@ -33,7 +33,7 @@
                        <DropdownItem>密码修改</DropdownItem>
                        <DropdownItem>退出系统</DropdownItem>
                      </DropdownMenu>
                    </Dropdown>
                    </Dropdown> -->
                  </div>
                </div>
            </div>
@@ -90,6 +90,7 @@
import HeaderDecorateLeft from './components/HeaderDecorateLeft'
import HeaderDecorateRight from './components/HeaderDecorateRight'
import HTabPane from './components/HTabPane'
import {ajax} from './libs/common'
export default {
  name: 'app',
  components: {
@@ -170,8 +171,21 @@
          break;
        }
      }
    }
  }
    },
    searchUsername: function() {
      var self = this;
      ajax({
        url: 'User_infAction!searchUname',
        data: null,
        success: function(res) {
          console.log(res);
        }
      });
    },
  },
  mounted() {
    //this.searchUsername();
  },
}
</script>
<style scoped>
src/components/HCollapse.vue
New file
@@ -0,0 +1,105 @@
<template>
    <square-box minHeight="300px" title="电池充电记录">
        <div class="collapse-content" style="height: 300px; margin-left: -12px; margin-right: -12px;">
            <Collapse theme="dark">
                <Panel v-for="(obj, key) in data" :key="key">
                    {{obj.name}}
                    <Badge
                    show-zero
                    :count="obj.items.length"></Badge>
                    <div slot="content">
                        <ul v-if="obj.items.length" class="item-content">
                            <li
                            v-for="(item, item_key) in obj.items"
                            :key="item_key"
                            @click="handleClick(item, key, item_key)">
                                <a>{{item.txt}}</a>
                            </li>
                        </ul>
                        <div v-else class="no-item item-content">暂无{{obj.name}}</div>
                    </div>
                </Panel>
            </Collapse>
        </div>
    </square-box>
</template>
<script>
import SquareBox from './SquareBox'
import HList from './HList'
import $ from 'jquery'
export default {
    components: {
        SquareBox
    },
    props:{
        data: {
            type: Array,
            default() {
                return []
            }
        },
        max: {
            type: Number,
            default: 99
        }
    },
    methods: {
        getItemsLen: function(items) {
            var len, result = items;
            if(len > this.max) {
                result = this.max+'+';
            }
            return result;
        },
        handleClick: function(data, key, item_key) {
            var root = $(this.$el);
            var $lis = root.find('.item-content').eq(key).find('li');
            // 根据key和item_key定位道点击的元素
            var $li = $lis.eq(item_key);
            if(!$li.hasClass('item-active')) {
                $lis.removeClass('item-active');
                $li.addClass('item-active');
                this.$emit('on-select-change', data)
            }
        },
    },
    mounted() {
    },
}
</script>
<style scoped>
    .collapse-content {
        padding: 0 8px;
        overflow-y: auto;
    }
    .ivu-badge {
        position: absolute;
        top: 10px;
        right: 16px;
    }
    .no-item {
        font-weight: bold;
        text-align: center;
    }
    .item-content li {
        list-style: none;
    }
    .item-content li:hover {
        background-color: #DDDDDD;
    }
    .item-content li.item-active {
        background-color: #2db7f5;
    }
    .item-content a{
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        display: block;
        text-indent: .5em;
        line-height: 32px;
        color: #000000;
    }
</style>
src/components/SquareBox.vue
@@ -37,7 +37,7 @@
        showTitle: {
            type: Boolean,
            default: true
        }
        },
    },
    data() {
        return {
@@ -45,7 +45,7 @@
                minHeight: this.minHeight
            }
        }
    }
    },
}
</script>
<style scoped>
@@ -76,6 +76,10 @@
    .square-box-content {
       margin: 15px;
    }
    .square-box-content.no-margin{
        margin-left: 0;
        margin-right: 0;
    }
    .square-box-left-top {
        position: absolute;
        left: 0;
src/libs/common.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
const CORS= 'http://localhost:8080/LD_9/';        // 开启跨域请求(调试时开启)
//const CORS='';           // 关闭跨域请求(发布时开启)
// const CORS='';           // 关闭跨域请求(发布时开启)
//定义计时器
function Interval() {
src/views/monitor/history.vue
@@ -8,11 +8,14 @@
                    </science-card>
                </div>
                <div class="view-layout-middle">
                    <science-card width="100%" height="100%">
                        <square-box style="margin: 8px" minHeight="400px" title="充放电状态" :show-title=false>
                            <home-state-list></home-state-list>
                        </square-box>
                    </science-card>
                    <h-collapse
                    :data="records"
                    @on-select-change="recordSelect"
                    v-show="states.fbs"></h-collapse>
                    <square-box
                    v-show="states.ld9">
                    </square-box>
                </div>
                <div class="view-layout-right">
                    <science-card width="100%" height="100%">
@@ -28,29 +31,154 @@
import HomeTree from "../../components/HomeTree"
import SquareBox from "../../components/SquareBox"
import HomeStateList from "../../components/HomeStateList"
import HCollapse from "../../components/HCollapse"
import {ajax} from "../../libs/common"
export default {
    components: {
        ScienceCard,
        HomeTree,
        SquareBox,
        HomeStateList
        HomeStateList,
        HCollapse,
    },
    data() {
        return {
            batt: '',
            states: {
                fbs: true,
                ld9: false,
            },
            testList:{
                active: 1,
                data:[]
            }
            },
            records: [
                {
                    name: '核容放电',
                    items: []
                },
                {
                    name: '监测放电',
                    items: []
                },
                {
                    name: '核容充电',
                    items: []
                },
                {
                    name: '监测充电',
                    items: []
                }
            ]
        }
    },
    methods: {
        handlerSelectChange: function(item) {
            if(item.type == 'group') {
                console.log(item);
            if(item && item.type == 'group') {
                this.batt = item;
                var isSpecail = this.regFbsId(item.FBSDeviceId);
                if(isSpecail) {
                    this.states.fbs = false;
                    this.states.ld9 = true;
                }else {
                    this.states.ld9 = false;
                    this.states.fbs = true;
                    this.searchRecords(item);   // 查询电池的充电电记录
                }
            }
        },
        handlerTestList: function(item) {
            console.log(item);
        initRecords: function() {
            var records = this.records;
            for(var i=0; i<records.length; i++) {
                var record = records[i];
                record.item = [];
            }
        },
        setRecords: function(nuclearDis, controlDis, nuclearCharge, controlCharge) {
            this.initRecords();
            var records = this.records;
            this.formaterRecords(records[0].name, nuclearDis);
            this.formaterRecords(records[1].name, controlDis);
            this.formaterRecords(records[2].name, nuclearCharge);
            this.formaterRecords(records[3].name, controlCharge);
            // console.log(nuclearDis);
            records[0].items = nuclearDis;
            records[1].items = controlDis;
            records[2].items = nuclearCharge;
            records[3].items = controlCharge;
        },
        formaterRecords: function(title, data) {
            for(var i=0; i<data.length; i++) {
                var _data = data[i];
                _data.txt = (i+1)+'.'+title+'-'+_data.test_starttime;
            }
        },
        searchRecords: function(batt) {     // 查询充电放电记录
            var self = this;
            var searchParams = {
                num: batt.FBSDeviceId,
                BattGroupId: batt.BattGroupId
            };
            // console.log(searchParams);
            // 查询后台
            ajax({
                url: 'Batttestdata_infAction_searchBattTestInfDataById',
                data: 'json='+JSON.stringify(searchParams),
                success: function(res) {
                    var rs = JSON.parse(res.result);
                    self.initRecords();     // 初始化充放电记录
                    var nuclearDis = [];        // 核容放电
                    var controlDis = [];        // 监测放电
                    var nuclearCharge = [];     // 核容充电
                    var controlCharge = [];     // 监测充电
                    if(rs.code == 1) {
                        var data = rs.data;
                        for(var i=0; i<data.length; i++) {
                            var _data = data[i];
                            if(_data.test_type == 3) {
                                if(_data.test_starttype == 3) {
                                    nuclearDis.push(_data);
                                }else {
                                    controlDis.push(_data);
                                }
                            }else if(_data.test_type == 2) {
                                if(_data.test_starttype == 3) {
                                    nuclearCharge.push(_data);
                                }else {
                                    controlCharge.push(_data);
                                }
                            }
                        }
                    }
                    self.setRecords(nuclearDis, controlDis, nuclearCharge, controlCharge);
                }
            });
        },
        recordSelect: function(record) {
            if(record) {
                var searchParams = {
                    BattGroupId: record.BattGroupId,
                    test_record_count: record.test_record_count,
                };
                ajax({
                    url: 'BatttestdataAction!findhistory',
                    data: 'json='+JSON.stringify(searchParams),
                    success: function(res) {
                        var rs = JSON.parse(res.result);
                        if(rs.code == 1) {
                            var data =rs.data;
                            console.log(data);
                        }
                    }
                });
                console.log(searchParams);
            }
        },
        regFbsId: function(id) {
            var rs = true;
            var pattern = /^40190/;
            rs = pattern.test(id);
            return rs;
        }
    }
}
@@ -68,6 +196,8 @@
    .view-layout-middle {
        float: left;
        width: 360px;
        margin-left: 8px;
        margin-right: 8px;
        height: 100%;
        overflow-y: auto;
    }