whyczyk
2022-02-08 9d692b302a79012b538d796c5419e33015550bf5
优化项目结构
5 文件已重命名
3个文件已修改
1个文件已删除
6个文件已添加
813 ■■■■ 已修改文件
src/assets/js/api.js 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/axios.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/randomString.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/rejectReplay.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarm/alarm-details.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarm/alarm-handle.vue 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarm/alarm-list.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarm/js/api.js 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarm/user-list.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/login/js/api.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/login/login.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/monitoring/js/api.js 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/monitoring/real-monitoring.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/user-list.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/routes.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/api.js
@@ -1,59 +1,4 @@
import axios from "./axios";
import md5 from "js-md5";
/**
 * 登录系统
 * 参数 "uinf.UName="+用户名+"&uinf.Upassword="+密码+"&uinf.UId="+是否记住密码(0,1)
 * 密码需要使用hex_md5加密
 */
export const login = (username, password) => {
    return axios({
        method: "post",
        url: `LoginAction_login?uinf.UName=${username}&uinf.Upassword=${md5(password)}&uinf.UId=0`,
        data: null
    })
}
//查询系统名称
export const searchPlatformName = (data) => {
    return axios({
        method: 'post',
        url: 'PageParamAction!findByCategoryId',
        data: 'json=' + JSON.stringify({ categoryId: 5 })
    })
}
/**
 * 获取维护员告警列表
 */
export const searchAllByUserIdAndStatus = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!searchAllByUserIdAndStatus`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 查询订单当前最新状态
 */
export const updateWorkAlarm = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!updateWorkAlarm`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 开始处理更新状态
 */
export const searchStatusById = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!searchStatusById`,
        data: 'json=' + JSON.stringify(data)
    })
}
import axios from "@/assets/js/axios";
/**
 * 文件上传
@@ -80,144 +25,3 @@
    })
}
/**
 * 更新告警处理
 */
export const updateUserWork = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!updateUserWork`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 查询告警处理详情
 */
export const serchByCondition = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!serchByCondition`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 查询维护员告警列表
 */
export const getTaskListWithFlag = (data) => {
    return axios({
        method: "post",
        url: `WorkAlarmAction!getTaskListWithFlag`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 根据站点查询相关人员
 */
export const getUserInfoByStationId = (data) => {
    return axios({
        method: "post",
        url: `User_infAction!getUserInfoByStationId`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 确认指派任务订单
 */
export const dispatchTask = (data) => {
    return axios({
        method: "post",
        url: `WorkAlarmAction!dispatchTask`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 查询机房信息
 * 参数:json = {"StationName1":"北京市","StationName2":"市辖区","StationName5":"海淀区"}
 */
export const searchStation = (params) => {
    return axios({
        method: "post",
        url: "BattInfAction!serchAllStationName",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 查询电池组信息
 * 参数:json = {"StationName1":"北京市","StationName2":"市辖区","StationName5":"海淀区","StationName3":"紫晶科技机房"}
 */
export const searchBattInfo = (params) => {
    return axios({
        method: "post",
        url: "BattInfAction!serchAllBattinf",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 根据电池组ID查询电池组信息
 * @param data
 * @returns {AxiosPromise}
 */
export const getBattGroupInfo = (params) => {
    return axios({
        method: 'post',
        url: 'BattInfAction!findByBattGroupId',
        data: 'bif.BattGroupId=' + params,
    })
}
/**
 * 查询电池告警参数
 * 参数:json={"dev_id":910000022}
 */
export const realTimeAlarm = (params) => {
    return axios({
        method: "post",
        url: "Dev_paramAction!serchParamById",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 根据电池组id查询该电池组中所有电池信息  (图表数据)
 * json={"BattGroupId":1005074}
 */
export const realTimeSearch = (params) => {
    return axios({
        method: "post",
        url: "Batt_rtdataAction_serchByCondition",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 根据电池组id查询电池组实时组端信息
 * 参数:rtstate.battGroupId=1005074
 */
export const realTimeGroup = (params) => {
    return axios({
        method: "post",
        url: "Batt_rtstateAction_serchByCondition",
        data: "rtstate.battGroupId=" + params
    })
}
/**
 * 查询历史实时数据
 * @param json:{"dev_id":618500002}
 * @returns {AxiosPromise}
 */
export const JhStateActionSerchByCondition = (params) => {
    // 查询后台
    return axios({
        method: "post",
        url: "JhStateAction_action_serchByCondition",
        data: "json=" + JSON.stringify(params)
    });
}
src/assets/js/axios.js
@@ -1,15 +1,25 @@
import Vue from 'vue';
import axios from 'axios';
import rejectReplay from "@/assets/js/rejectReplay";
if (process.env.NODE_ENV == 'dev') {
    // 跨域请求
    axios.defaults.baseURL = 'http://localhost:8919/fg/';
    axios.defaults.withCredentials = true; // 保持请求头
    axios.defaults.withCredentials = true;  // 保持请求头
}
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 防重放操作
    let rejectReplayStr = rejectReplay();
    let url = config.url;
    if (url.indexOf("?") == -1) {
        url = url.trim() + "?" + rejectReplayStr;
    } else {
        url = url.trim() + "&" + rejectReplayStr;
    }
    config.url = url;
    // 在发送请求之前做些什么
    return config;
}, function (error) {
src/assets/js/randomString.js
New file
@@ -0,0 +1,10 @@
function randomString(length) {
  var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  var result = '';
  for (var i = length; i > 0; --i) {
    result += str[Math.floor(Math.random() * str.length)];
  }
  return result;
}
export default randomString;
src/assets/js/rejectReplay.js
New file
@@ -0,0 +1,40 @@
import randomString from "@/assets/js/randomString";
import md5 from "js-md5";
function rejectReplay() {
  let t = sessionStorage.getItem("serverStamp") || new Date().getTime() + "";
  let rd = randomString(10);
  let sign = getSign(t, rd);
  return 't=' + t + "&sign=" + sign + "&rd=" + rd;
}
function getSign(time, randomStr) {
  let usefulNum = randomStr;
  //加盐方式,根据末尾的值进行不同的加密规则
  let lastChar = time.charAt(12);
  let lastNum = Number(lastChar);
  let reg = new RegExp(lastChar, 'g');
  switch (lastNum) {
    //在第一位加字符串 rd@c3doed
    case 0: usefulNum += time.replace(reg, "rd@c3dozero"); break;
    case 1: usefulNum += time.replace(reg, "rd@c3doenoe"); break;
    case 2: usefulNum += time.replace(reg, "rd@c3doktwo"); break;
    case 3: usefulNum += time.replace(reg, "rd@c3dolthree"); break;
    case 4: usefulNum += time.replace(reg, "rd@c3doexfour"); break;
    case 5: usefulNum += time.replace(reg, "rd@c3doedefive"); break;
    case 6: usefulNum += time.replace(reg, "rd@c3doedhsix"); break;
    case 7: usefulNum += time.replace(reg, "rd@c3doedtseven"); break;
    case 8: usefulNum += time.replace(reg, "rd@c3doedbeight"); break;
    case 9: usefulNum += time.replace(reg, "rd@c3doedrnine"); break;
  }
  //MD5加密后
  let signNow = md5(usefulNum);
  let sb = "";
  for (let i = 0; i < 10; i++) {
    sb += signNow.charAt(i * 2);
  }
  let signResult = sb + signNow;
  return signResult;
}
export default rejectReplay;
src/pages/alarm/alarm-details.vue
File was renamed from src/pages/alarm-details.vue
@@ -185,7 +185,7 @@
    searchStatusById,
    dispatchTask,
    updateUserWork,
} from "@/assets/js/api"
} from "@/pages/alarm/js/api"
import { mapState } from "vuex"
import vUpload from "@/components/v-upload.vue"
export default {
src/pages/alarm/alarm-handle.vue
File was renamed from src/pages/alarm-handle.vue
@@ -1,63 +1,20 @@
<template>
    <div class="alarm-handle">
        <van-nav-bar
            title="告警处理"
            @click-left="$router.back()"
            left-arrow
            fixed
            safe-area-inset-top
            placeholder
        >
        <van-nav-bar title="告警处理" @click-left="$router.back()" left-arrow fixed safe-area-inset-top placeholder>
        </van-nav-bar>
        <div class="handleCon">
            <div class="textareaCon">
                <van-field
                    v-model="alarmInfo.description"
                    rows="2"
                    autosize
                    label="告警描述"
                    type="textarea"
                    placeholder="请输入告警描述…"
                    show-word-limit
                />
                <v-upload
                    :value="alarmInfo.imageBefore"
                    @valChange="beforeUploadChange"
                    :stationId="stationId"
                    afterOrBefore="before"
                    class="upload"
                >
                <van-field v-model="alarmInfo.description" rows="2" autosize label="告警描述" type="textarea" placeholder="请输入告警描述…" show-word-limit />
                <v-upload :value="alarmInfo.imageBefore" @valChange="beforeUploadChange" :stationId="stationId" afterOrBefore="before" class="upload">
                </v-upload>
            </div>
            <div class="textareaCon">
                <van-field
                    v-model="alarmInfo.workWay"
                    rows="2"
                    autosize
                    label="处理方法"
                    type="textarea"
                    placeholder="请输入处理方法…"
                    show-word-limit
                />
                <v-upload
                    :value="alarmInfo.imageAfter"
                    @valChange="afterUploadChange"
                    :stationId="stationId"
                    afterOrBefore="after"
                    class="upload"
                >
                <van-field v-model="alarmInfo.workWay" rows="2" autosize label="处理方法" type="textarea" placeholder="请输入处理方法…" show-word-limit />
                <v-upload :value="alarmInfo.imageAfter" @valChange="afterUploadChange" :stationId="stationId" afterOrBefore="after" class="upload">
                </v-upload>
            </div>
            <div class="textareaCon">
                <van-field
                    v-model="alarmInfo.workSuggest"
                    rows="2"
                    autosize
                    label="意见建议"
                    type="textarea"
                    placeholder="请输入意见建议…"
                    show-word-limit
                />
                <van-field v-model="alarmInfo.workSuggest" rows="2" autosize label="意见建议" type="textarea" placeholder="请输入意见建议…" show-word-limit />
            </div>
            <div class="btnCon">
                <div class="subBtn" @click="submit(1)">保存</div>
@@ -69,7 +26,7 @@
<script>
import vUpload from "@/components/v-upload.vue"
import { updateUserWork, serchByCondition } from "@/assets/js/api"
import { updateUserWork, serchByCondition } from "@/pages/alarm/js/api"
export default {
    components: {
        vUpload,
src/pages/alarm/alarm-list.vue
File was renamed from src/pages/alarm-list.vue
@@ -31,7 +31,7 @@
import {
    searchAllByUserIdAndStatus,
    getTaskListWithFlag
} from '@/assets/js/api'
} from "@/pages/alarm/js/api"
import {
    mapState,
} from 'vuex';
src/pages/alarm/js/api.js
New file
@@ -0,0 +1,115 @@
import axios from "@/assets/js/axios";
/**
 * 获取维护员告警列表
 */
export const searchAllByUserIdAndStatus = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!searchAllByUserIdAndStatus`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 查询订单当前最新状态
 */
export const updateWorkAlarm = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!updateWorkAlarm`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 开始处理更新状态
 */
export const searchStatusById = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!searchStatusById`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 文件上传
 */
export const uploadAlarmFile = (data) => {
    return axios({
        method: "post",
        url: `MyFileAction!uploadAlarmFile`,
        headers: {
            "Content-Type": "multipart/form-data"
        },
        data: data
    })
}
/**
 * 删除文件
 */
export const deleteAlarmFile = (data) => {
    return axios({
        method: "post",
        url: `MyFileAction!deleteAlarmFile`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 更新告警处理
 */
export const updateUserWork = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!updateUserWork`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 查询告警处理详情
 */
export const serchByCondition = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!serchByCondition`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 查询维护员告警列表
 */
export const getTaskListWithFlag = (data) => {
    return axios({
        method: "post",
        url: `WorkAlarmAction!getTaskListWithFlag`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 根据站点查询相关人员
 */
export const getUserInfoByStationId = (data) => {
    return axios({
        method: "post",
        url: `User_infAction!getUserInfoByStationId`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 确认指派任务订单
 */
export const dispatchTask = (data) => {
    return axios({
        method: "post",
        url: `WorkAlarmAction!dispatchTask`,
        data: 'json=' + JSON.stringify(data)
    })
}
src/pages/alarm/user-list.vue
New file
@@ -0,0 +1,111 @@
<template>
    <div class="user-list">
        <van-nav-bar title="人员列表" @click-left="$router.back()" left-arrow fixed safe-area-inset-top placeholder>
        </van-nav-bar>
        <van-empty description="暂无人员" v-if='Object.keys(frindslist)==""' />
        <div v-else>
            <van-index-bar :sticky="false" highlight-color="#4B88F9">
                <div v-for="(item,key) in frindslist" :key='key'>
                    <van-index-anchor :index="key" />
                    <div v-if="item">
                        <van-cell class="cell" v-for="(user,index) in item" :key='index' @click="selectUser(user)">
                            <div class="friends-name">{{user.UName}}</div>
                        </van-cell>
                    </div>
                </div>
            </van-index-bar>
        </div>
    </div>
</template>
<script>
import {
    getUserInfoByStationId,
} from "@/pages/alarm/js/api"
export default {
    data() {
        return {
            frindslist: {}, //存储排序后的人员列表
        }
    },
    methods: {
        loadUserList() {
            let stationId = this.$route.query.stationId;
            let postData = {
                StationId: stationId
            }
            getUserInfoByStationId(postData).then((res) => {
                let resData = JSON.parse(res.data.result)
                if (resData.code == 1) {
                    this.sortUserData(resData.data);
                }
            }).catch((err) => {
                console.log(err)
            });
        },
        //把返回的数据整理成列表需要的数据
        sortUserData(data) {
            var list = data || [];
            /******通讯录成员排序按字母 start******/
            const Letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
            let obj = {}; //存储好友数据 {"A":[{},{}],"Y":[{},{}]}
            //1.给数据中添加pinyin(拼音)和initial(首字母)字段,将数据根据首字母归类在obj中
            for (var i = 0; i < list.length; i++) {
                list[i].pinyin = this.$units.convertToPinyin.pinyin.getFullChars(list[i].UName); // 名称转换为拼音
                var initial = list[i].pinyin.substr(0, 1).toUpperCase(); //首字母
                list[i].initial = Letters.indexOf(initial) > -1 ? initial : '#'; //首字母不为汉字或字母时归到#中
                if (!obj[initial]) obj[initial] = [];
                obj[initial].push(list[i]);
            }
            var initialArr = Object.keys(obj).sort(); //获取到key值并对key值排序 (3)  ["H", "L", "Y"]
            var result = [];
            //2.给values[]排序
            for (var i = 0; i < initialArr.length; i++) {
                var thisInitial = initialArr[i]; // "H"
                result = obj[thisInitial].sort(this.compare('UName')); //排序
                obj[thisInitial] = result; //排序后重新把值赋给键值对
            }
            //3.根据排序后的key遍历对象并重新赋值
            initialArr.forEach(function (key) {
                obj[key]
            })
            this.frindslist = this.objKeySort(obj);
            // console.log("obj:" + JSON.stringify(this.frindslist));
            /******通讯录成员排序按字母  end******/
        },
        //字母类中每个排序
        compare(property) {
            return function (a, b) {
                var arr = [a[property], b[property]].sort();
                return arr[0] != a[property] ? 1 : -1;
            }
        },
        //对象整体根据字母顺序排序排序
        objKeySort(obj) { //排序的函数
            var newkey = Object.keys(obj).sort();
            //先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组
            var newObj = {}; //创建一个新的对象,用于存放排好序的键值对
            for (var i = 0; i < newkey.length; i++) { //遍历newkey数组
                newObj[newkey[i]] = obj[newkey[i]]; //向新创建的对象中按照排好的顺序依次增加键值对
            }
            return newObj; //返回排好序的新对象
        },
        //选择人员
        selectUser(user) {
            sessionStorage.setItem('assignUser', JSON.stringify(user))
            this.$router.back();
        }
    },
    mounted() {
        this.loadUserList()
    },
}
</script>
<style scoped>
  .user-list {
    width: 100%;
    min-height: 100%;
    background: #F5F5F5;
  }
</style>
src/pages/login/js/api.js
New file
@@ -0,0 +1,31 @@
import axios from "@/assets/js/axios";
import md5 from "js-md5";
/**
 * 登录系统
 * 参数 "uinf.UName="+用户名+"&uinf.Upassword="+密码+"&uinf.UId="+是否记住密码(0,1)
 * 密码需要使用hex_md5加密
 */
export const login = (username, password, verity) => {
    return axios({
        method: "post",
        url: `LoginAction_login?uinf.UName=${username}&uinf.Upassword=${md5(password)}&uinf.UNote=${verity}&uinf.UId=0`,
        data: null
    });
};
export const getLoginVerity = () => {
    return axios({
        method: "post",
        url: `MessageAction!getFontDynamicCode`,
        data: null
    });
};
//查询系统名称
export const searchPlatformName = () => {
    return axios({
        method: 'post',
        url: 'PageParamAction!findByCategoryId',
        data: 'json=' + JSON.stringify({ categoryId: 5 })
    })
}
src/pages/login/login.vue
File was renamed from src/pages/login.vue
@@ -5,11 +5,11 @@
            <div class="appName">{{ platformName }}</div>
            <div class="login-title">登录</div>
            <div class="lineInput">
                <img src="../assets/img/login-ico1.png" class="ico1">
                <img src="../../assets/img/login-ico1.png" class="ico1">
                <van-field v-model="userName" placeholder="请输入账号" />
            </div>
            <div class="lineInput">
                <img src="../assets/img/login-ico2.png" class="ico2">
                <img src="../../assets/img/login-ico2.png" class="ico2">
                <van-field v-model="password" placeholder="请输入密码" type="password" />
            </div>
            <div class="subBtn" @click="submit">登录</div>
@@ -21,8 +21,9 @@
<script>
import {
    login,
    searchPlatformName
} from "@/assets/js/api";
    searchPlatformName,
    getLoginVerity
} from "@/pages/login/js/api";
import {
    mapMutations,
} from 'vuex';
@@ -31,10 +32,12 @@
        return {
            userName: '',
            password: '',
            verifyCode: '',
            platformName: "",
        }
    },
    mounted() {
        this.changeVerifyCode()
        this.searchPlatformName();
    },
    methods: {
@@ -72,13 +75,25 @@
                message: '登录中...',
                duration: 0
            })
            login(self.userName, self.password).then(res => {
            login(self.userName, self.password, self.verifyCode).then(res => {
                // 对结果进行处理
                self.handleLogin(res)
            }).catch(error => {
                // 关闭等待
                // console.log(error);
                self.$toast("网络异常");
            });
        },
        changeVerifyCode() {
            getLoginVerity().then(res => {
                let rs = JSON.parse(res.data.result);
                if (rs.code == 1) {
                    this.verifyCode = rs.data + "";
                } else {
                    this.verifyCode = "";
                }
            }).catch(error => {
                this.verifyCode = "";
            });
        },
        // 登录验证
@@ -96,6 +111,7 @@
                    path: '/menu'
                })
            } else {
                this.changeVerifyCode();
                self.$toast(rs.msg);
            }
        },
@@ -114,7 +130,7 @@
.logo-bg {
    width: 100%;
    height: 100%;
    background: url("../assets/img/logo-bg.png") 0 0 no-repeat;
    background: url("../../assets/img/logo-bg.png") 0 0 no-repeat;
    background-size: 100% 100%;
    position: absolute;
    left: 0;
src/pages/monitoring/js/api.js
New file
@@ -0,0 +1,82 @@
import axios from "@/assets/js/axios";
/**
 * 查询机房信息
 * 参数:json = {"StationName1":"北京市","StationName2":"市辖区","StationName5":"海淀区"}
 */
export const searchStation = (params) => {
    return axios({
        method: "post",
        url: "BattInfAction!serchAllStationName",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 查询电池组信息
 * 参数:json = {"StationName1":"北京市","StationName2":"市辖区","StationName5":"海淀区","StationName3":"紫晶科技机房"}
 */
export const searchBattInfo = (params) => {
    return axios({
        method: "post",
        url: "BattInfAction!serchAllBattinf",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 根据电池组ID查询电池组信息
 * @param data
 * @returns {AxiosPromise}
 */
export const getBattGroupInfo = (params) => {
    return axios({
        method: 'post',
        url: 'BattInfAction!findByBattGroupId',
        data: 'bif.BattGroupId=' + params,
    })
}
/**
 * 查询电池告警参数
 * 参数:json={"dev_id":910000022}
 */
export const realTimeAlarm = (params) => {
    return axios({
        method: "post",
        url: "Dev_paramAction!serchParamById",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 根据电池组id查询该电池组中所有电池信息  (图表数据)
 * json={"BattGroupId":1005074}
 */
export const realTimeSearch = (params) => {
    return axios({
        method: "post",
        url: "Batt_rtdataAction_serchByCondition",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 根据电池组id查询电池组实时组端信息
 * 参数:rtstate.battGroupId=1005074
 */
export const realTimeGroup = (params) => {
    return axios({
        method: "post",
        url: "Batt_rtstateAction_serchByCondition",
        data: "rtstate.battGroupId=" + params
    })
}
/**
 * 查询历史实时数据
 * @param json:{"dev_id":618500002}
 * @returns {AxiosPromise}
 */
export const JhStateActionSerchByCondition = (params) => {
    // 查询后台
    return axios({
        method: "post",
        url: "JhStateAction_action_serchByCondition",
        data: "json=" + JSON.stringify(params)
    });
}
src/pages/monitoring/real-monitoring.vue
File was renamed from src/pages/real-monitoring.vue
@@ -149,7 +149,7 @@
    realTimeSearch,
    realTimeGroup,
    JhStateActionSerchByCondition,
} from "@/assets/js/api"
} from "@/pages/monitoring/js/api"
import BarChart from "@/components/chart/BarChart";
import progressBlockVerticalBar from "@/components/chart/progress-block-vertical-bar";
import getMarkLineData from "@/components/chart/js/getMarkLineData";
src/pages/user-list.vue
File was deleted
src/router/routes.js
@@ -4,7 +4,7 @@
}, {
    path: '/login',
    meta: {},
    component: (resolve) => require(['@/pages/login.vue'], resolve)
    component: (resolve) => require(['@/pages/login/login.vue'], resolve)
}, {
    path: '/menu',
    meta: {},
@@ -12,21 +12,21 @@
}, {
    path: '/alarmList',
    meta: {},
    component: (resolve) => require(['@/pages/alarm-list.vue'], resolve)
    component: (resolve) => require(['@/pages/alarm/alarm-list.vue'], resolve)
}, {
    path: '/alarmDetails',
    meta: {},
    component: (resolve) => require(['@/pages/alarm-details.vue'], resolve)
    component: (resolve) => require(['@/pages/alarm/alarm-details.vue'], resolve)
}, {
    path: '/alarmHandle',
    meta: {},
    component: (resolve) => require(['@/pages/alarm-handle.vue'], resolve)
    component: (resolve) => require(['@/pages/alarm/alarm-handle.vue'], resolve)
}, {
    path: '/userList',
    meta: {},
    component: (resolve) => require(['@/pages/user-list.vue'], resolve)
    component: (resolve) => require(['@/pages/alarm/user-list.vue'], resolve)
}, {
    path: '/realMonitoring',
    meta: {},
    component: (resolve) => require(['@/pages/real-monitoring.vue'], resolve)
    component: (resolve) => require(['@/pages/monitoring/real-monitoring.vue'], resolve)
},];