public/theme/science-jyh.css | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/layout/components/Navbar.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/layout/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dataTest/history.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/login/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
public/theme/science-jyh.css
@@ -35,7 +35,7 @@ .el-science-blue, .pages-config { background-size: 100% 100%; background-color: rgba(11, 25, 60); background-color: rgba(11, 25, 60, 0.9); color: #ffffff; } @@ -53,7 +53,7 @@ } .el-science-blue .el-tabs--border-card > .el-tabs__header { background: linear-gradient(to left, #3aa9ef, #005de2); background: linear-gradient(to right, #005DE2, #3AA9EF); color: #FFFFFF; } @@ -644,7 +644,7 @@ } .el-science-blue .content-box-title { background: linear-gradient(to left, #3aa9ef, #005de2); background: linear-gradient(to right, #005DE2, #3AA9EF); color: #FFFFFF; } @@ -881,7 +881,7 @@ /*science box*/ .el-science-blue .science-box { background: #005de2 !important; background: #005de280 !important; } .science-box .box-header { color: #fffd1e; @@ -984,7 +984,7 @@ .scroll-container > .el-scrollbar__wrap > .el-scrollbar__view { font-size: 0; background: linear-gradient(to left, #3aa9ef, #005de2); background: linear-gradient(to right, #005DE2, #3AA9EF); color: #FFFFFF; } @@ -1015,7 +1015,7 @@ margin-right: 8px; margin-top: 8px; border-radius: 4px; background: linear-gradient(to left, #3aa9ef, #005de2); background: linear-gradient(to right, #005DE2, #3AA9EF); padding: 6px 8px 10px 8px; } .el-science-blue .big-screen-card-header .big-screen-card-title{ src/layout/components/Navbar.vue
@@ -1,5 +1,5 @@ <template> <div class="page-header"> <div class="page-header" v-if="!$store.state.user.autoLogin"> <div class="page-header-container"> <flex-layout direction="row"> <div class="page-header-left" slot="header"> src/layout/index.vue
@@ -55,7 +55,7 @@ import config from "@/assets/js/config"; let timer; import createWs from "@/assets/js/websocket/plus"; import { pingpong } from "@/views/login/js/api"; import {loginOutAPI, pingpong} from "@/views/login/js/api"; import Utils from "@/components/diagram/js/common.js"; const { throttle } = Utils; import AlarmPopup from "@/layout/components/AlarmPopup"; src/views/dataTest/history.vue
@@ -135,6 +135,30 @@ </div> </el-tooltip> </div> <div slot="box-tools" class="box-tools" v-if="isShowAi"> <el-tooltip class="item" effect="dark" content="AI智能预估" placement="bottom"> <div class="tooltip-content"> <el-button type="success" size="mini" v-if="aiState === -1" @click="startCreateAIHistory">启动AI</el-button> <el-button type="success" size="mini" @click="getAIHistory" v-else-if="aiState >= 100">查看AI</el-button> <el-button type="primary" size="mini" disabled v-else>AI智能生成中...</el-button> </div> </el-tooltip> </div> <div slot="box-tools" class="box-tools"> <el-tooltip class="item" effect="dark" content="AI智能预估" placement="bottom"> <div class="tooltip-content"> <el-button type="primary" size="mini" @click="hdwAiPredict">智能预估</el-button> </div> </el-tooltip> </div> <flex-layout :no-bg="true"> <div class="content-header" slot="header"> <div class="table-layout"> @@ -872,10 +896,153 @@ aiInfo: { battGroupId: 0, testRecordCount: 0 } }, isHasAi: false }; }, methods: { async hdwAiPredict() { let testRecord = this.getTestRecord(); if(testRecord === -1) { this.$message.warning("请选择一组放电数据"); return; } if(this.isHasAi) { this.$message.error("AI智能预测数据已生成!!!"); return; } try { this.loading =true; let res = await searchHistory({ battGroupId: 1, testRecordCount: 10, dataNew: Math.floor(3060), }); this.loading = false; res = res.data; let data = []; // 数据 if (res.code) { data = res.data.list; } this.formateStandardHisData(data); this.isHasAi = true; }catch (e) { this.loading = false; console.log(e); } }, // 格式化历史信息数据 formateStandardHisData(data) { let recordTime = -1; // 记录时间 let recordNum = -100; // 记录笔数 // 获取标准曲线的和当前曲线对应的最后一笔数据 let endRecordNum = -100; let endList = []; let allDataEndMon = []; monBarData.vol[monBarData.vol.length-1].map(item=>{ allDataEndMon.push(item[1]); }); data.forEach((item) => { if(item.testTimelong > allData.endData.testTimelong) { if(endRecordNum === -100) { endRecordNum = item.recordNum; } if(endRecordNum === item.recordNum) { endList.push(item); } } }); let differList = allDataEndMon.map((item,key)=>{ return (endList[key].monVol - item).toHold(VOL); }); let isGood = true; data.forEach((item) => { let monNum = item.monNum; let testTimeLong = formatSeconds(item.testTimelong); if(item.testTimelong > allData.endData.testTimelong) { if(endRecordNum === -100) { endRecordNum = item.recordNum; } if(endRecordNum === item.recordNum) { endList.push(item); } if(isGood && this.checkRecordNumIsGood(item.recordNum, data, differList)) { // 获取组端电压,在线电压,组端电流的信息和开辟一个单体柱状图 if (recordNum !== item.recordNum) { recordTime = item.recordTime; recordNum = item.recordNum; allData.groupVol.push([testTimeLong, item.groupVol]); allData.onlineVol.push([testTimeLong, item.onlineVol]); allData.testCurr.push([testTimeLong, item.testCurr]); allData.recordTime.push(testTimeLong); allData.testTimeLong.push(item.testTimelong); allData.testCap.push(item.testCap); allData.dataList.push(item); this.testTimeLong.push(item.testTimelong); // 开辟空间 monBarData.vol.push([]); monBarData.temp.push([]); monBarData.realCap.push([]); monBarData.resCap.push([]); monBarData.preCap.push([]); } // 单体电压柱状图设置 let monNum_text = "#" + monNum; let monBarVol = monBarData.vol[monBarData.vol.length - 1]; monBarVol.push([monNum_text, (item.monVol-differList[monNum-1]).toHold(VOL)]); // 单体温度柱状图 let monBarTemp = monBarData.temp[monBarData.temp.length - 1]; monBarTemp.push([monNum_text, item.monTmp]); // 设置单体折线图信息 if (typeof monLineData.vol[monNum - 1] != "object") { let index = monNum - 1; // 开辟空间 monLineData.vol[index] = []; monLineData.temp[index] = []; monLineData.resCap[index] = []; } // 获取到需要使用的空间 let monLineVol = monLineData.vol[monNum - 1]; monLineVol.push([testTimeLong, item.monVol]); let monLineTemp = monLineData.temp[monNum - 1]; monLineTemp.push([testTimeLong, item.monTmp]); }else { isGood = false } } }); // 初始化图表的配置项 this.initChartOptions(); // 设置容量 this.setCapList(); // 设置折线图表 this.setLineChart(); // 执行滑动事件 this.sliderInput(); }, checkRecordNumIsGood(num, list, differList) { let isGood = true; for(let i = 0; i< list.length; i++) { let item = list[i]; if(item.recordNum === num && (item.monVol-differList[item.monNum-1]).toHold(VOL)<1.8) { isGood = false; break; } } return isGood; }, sendMessage(battGroupId, testRecordCount) { this.aiState = -1; let params = { @@ -886,9 +1053,9 @@ }, onWSMessage(res) { let batt = this.batt; console.log(batt); //console.log(batt); res = JSON.parse(res.data); console.log(res); //console.log(res); if(res.code === 1 && res.data) { if(this.aiState === -1 && res.data2 !== -1 && res.data2 !== batt.monCount) { this.loading = false; @@ -1553,6 +1720,7 @@ }, // 切换测试信息 testRecordChange() { this.isHasAi = false; let testRecord = this.getTestRecord(); // 只有核容放电 并且测试时不小于1小时才处理 let cutFlag = 2 == testRecord.testType && testRecord.testTimelong >= 3600; src/views/login/index.vue
@@ -215,6 +215,7 @@ import ziluolanImg from "@/assets/images/login-img-ziluolan.png"; import qrCode from "@/assets/js/outside/qrCode"; import CONFIG from "@/assets/js/config"; import {getBattGroupInfo} from "@/views/dataMager/js/battGroupMager"; export default { components: { UkeyBind, @@ -294,7 +295,12 @@ this.normalLogin(); } }, normalLogin() { normalLogin(isAutoLogin) { if(isAutoLogin) { this.loginForm.username = 'admin'; this.loginForm.password = '123456'; this.loginForm.verify = this.verifyCode; } // 校验用户 if (this.loginForm.username && this.loginForm.password) { // 开启等待框 @@ -314,7 +320,7 @@ // 用户登录状态 0-其他(不做动作) 2-首次登录 3-密码长时间未登录 //sessionStorage.setItem("useLoginState", "2"); // 对结果进行处理 this.handleLogin({ data: res }); this.handleLogin({ data: res }, isAutoLogin); } else { // 关闭等待 this.loading = false; @@ -332,7 +338,7 @@ this.$message.error("用户名或密码不能为空"); } }, changeVerifyCode() { changeVerifyCode(isLogin) { let loading = this.$layer.loading(); getLoginVerity() .then((res) => { @@ -345,7 +351,9 @@ } this.loginForm.verify = ""; // 自动登录 this.autoLogin(); if(isLogin) { this.autoLogin(); } }) .catch((error) => { this.$layer.close(loading); @@ -420,20 +428,28 @@ this.$message.error("用户名或密码不能为空"); } }, handleLogin(res) { handleLogin(res, isAutoLogin) { // 关闭等待 //this.loading = false; res = res.data; if (res.data) { this.$message.success("登录成功"); if(!isAutoLogin) { this.$message.success("登录成功"); } sessionStorage.setItem("username", res.data2[0].uname); sessionStorage.setItem("userId", res.data2[0].uid); sessionStorage.setItem("userPower", res.data2[0].urole); sessionStorage.setItem("userPowerGroup", res.data2[1]); sessionStorage.setItem("isInGroup", res.data2[2] ? 1 : 0); if(isAutoLogin) { this.$store.dispatch("user/changeAutoLogin", 1); let pageName = this.$route.query.pageName; this.$store.dispatch("user/changePage", pageName); } // 自动登录无法返回登录页 if (this.$store.state.user.autoLogin) { this.$router.replace({ path: this.redirect || "/home" }); let battGroupId = this.$route.query.id; this.getBattGroupInfo(battGroupId); } else { this.$router.push({ path: this.redirect || "/home" }); } @@ -467,28 +483,8 @@ let autoLogin = this.$route.query.autoLogin; let uid = this.$route.query.uid; let pageName = this.$route.query.pageName; if (autoLogin && uid) { this.isAutoLogin = true; getUserLoginInfo(uid) .then((res) => { let rs = res.data; if (rs.code === 1) { let data = rs.data; this.$store.dispatch("user/changeAutoLogin", 1); this.$store.dispatch("user/changePage", pageName); this.loginForm.username = data.UName; this.loginForm.password = data.USnId; this.handleLogin(res); } }) .catch((error) => { console.log(error); this.$notify.error({ title: "错误", message: "输入信息无效,请手动登录!", }); console.log(error); }); if (autoLogin) { this.normalLogin(true); } else { this.isAutoLogin = false; } @@ -570,7 +566,37 @@ if (sysConfig.clientName.name == "sxty") { this.setQRCode(); } this.changeVerifyCode(); this.changeVerifyCode(true); }, getBattGroupInfo(battGroupId) { this.homeListShow = false; getBattGroupInfo(battGroupId) .then((res) => { res = res.data; if (res.code) { let batt = res.data[0]; let search = "?province=" + batt.stationName1 + "&city=" + batt.stationName2 + "&county=" + batt.stationName5 + "&home=" + batt.stationName3 + "&batt=" + batt.battGroupId + // list组件重载 "&listReload=1"; this.$router.push("/dataTest/movingRingSystem" + search); } else { this.isAutoLogin = false; this.$router.push({ path: this.redirect || "/home" }); } }).catch((error) => { this.isAutoLogin = false; console.log(error); }); }, }, computed: {