| | |
| | | "randomfill": "^1.0.3" |
| | | } |
| | | }, |
| | | "crypto-js": { |
| | | "version": "4.1.1", |
| | | "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", |
| | | "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", |
| | | "dev": true |
| | | }, |
| | | "css": { |
| | | "version": "2.2.4", |
| | | "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", |
| | |
| | | "@vue/cli-plugin-eslint": "^3.1.1", |
| | | "@vue/cli-service": "^3.12.1", |
| | | "babel-eslint": "^10.1.0", |
| | | "crypto-js": "^4.1.1", |
| | | "eslint": "^6.7.2", |
| | | "eslint-plugin-vue": "^6.2.2", |
| | | "less": "^3.12.2", |
| | |
| | | ,data: 'json=' + JSON.stringify(data) |
| | | }); |
| | | } |
| | | ,changeDataSource(id, num) { |
| | | return axios({ |
| | | method: 'POST' |
| | | ,url: 'Fbs9100_setparamAction_action_SetNowBatt' |
| | | ,data: 'json=' + JSON.stringify({ |
| | | op_cmd: 186, |
| | | dev_id: id, |
| | | BattGroupNum: num |
| | | }) |
| | | }); |
| | | } |
| | | } |
| | |
| | | startShowPicture(devId) { |
| | | return axios({ |
| | | method: "POST", |
| | | url: 'Fgcd_filedownloadAction_action_readA059Pictrue', |
| | | url: 'Fbs9100_setparamAction_action_StartOrStopShowPic', |
| | | data: "json="+JSON.stringify({ |
| | | op_cmd: 188, |
| | | dev_id: devId, |
| | |
| | | stopShowPicture(devId) { |
| | | return axios({ |
| | | method: "POST", |
| | | url: 'Fgcd_filedownloadAction_action_readA059Pictrue', |
| | | url: 'Fbs9100_setparamAction_action_StartOrStopShowPic', |
| | | data: "json="+JSON.stringify({ |
| | | op_cmd: 190, |
| | | dev_id: devId, |
| | |
| | | import axios from 'axios' |
| | | import md5 from "js-md5"; |
| | | import AES from "@/common/AES"; |
| | | export default { |
| | | checkNetwork() { |
| | | return axios({ |
| | |
| | | return axios({ |
| | | method: 'post', |
| | | url: 'User_infAction!updatePassword', |
| | | data: "uif.USnId="+ pwd, |
| | | data: "uif.USnId="+ AES.encrypt(pwd), |
| | | }); |
| | | }, |
| | | updateUserPwd2(name, oldPwd, newPwd) { |
| | |
| | | UName: name, |
| | | Upassword: md5(oldPwd), |
| | | UNote: md5(newPwd), |
| | | USnId: newPwd, |
| | | USnId: AES.encrypt(newPwd), |
| | | }), |
| | | }); |
| | | }, |
New file |
| | |
| | | import CryptoJS from "crypto-js"; |
| | | |
| | | export default { |
| | | /** |
| | | * 加密 |
| | | * @param word 需要加密的字符串 |
| | | * @returns {*} 加密后的结果 |
| | | */ |
| | | encrypt(word) { |
| | | let key = CryptoJS.enc.Latin1.parse("www.whyctech.com"); |
| | | let iv = CryptoJS.enc.Latin1.parse("eoaocsdafeaeoaol"); |
| | | let srcs = CryptoJS.enc.Latin1.parse(word); |
| | | return CryptoJS.AES.encrypt(srcs, key, {iv:iv, mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.ZeroPadding}).toString(); |
| | | }, |
| | | /** |
| | | * 解密 |
| | | * @param word 需要解密的字符串 |
| | | * @returns {*} 解密后的结果 |
| | | */ |
| | | decrypt(word) { |
| | | let key = CryptoJS.enc.Latin1.parse("www.whyctech.com"); |
| | | let iv = CryptoJS.enc.Latin1.parse("eoaocsdafeaeoaol"); |
| | | let decrypt = CryptoJS.AES.decrypt(word, key, {iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding}); |
| | | return CryptoJS.enc.Latin1.stringify(decrypt).toString(); |
| | | } |
| | | } |
| | |
| | | </el-carousel> |
| | | </div> |
| | | <div class="endoscope-image-footer"> |
| | | <el-button type="success" size="small" @click="startShowPicture">启动更新</el-button> |
| | | <el-button type="danger" size="small" @click="stopShowPicture">停止更新</el-button> |
| | | <el-button type="primary" size="small" @click="searchPicture">刷新</el-button> |
| | | {{stateInfo.message}} |
| | | <el-button type="success" size="small" :disabled="stateInfo.disabledStart" @click="startShowPicture">启动更新</el-button> |
| | | <el-button type="danger" size="small" :disabled="stateInfo.disabledStop" @click="stopShowPicture">停止更新</el-button> |
| | | <el-button type="primary" size="small" :disabled="stateInfo.disabledFlush" @click="searchPicture">刷新</el-button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | devId: { |
| | | type: [String, Number], |
| | | default: 805900001 |
| | | }, |
| | | state: { |
| | | type: Number, |
| | | default: -1 |
| | | }, |
| | | }, |
| | | data() { |
| | |
| | | computed: { |
| | | imagesList() { |
| | | return this.images.map(item=>{ |
| | | return getWebUrl()+"A059/images/"+this.devId+"/"+item; |
| | | return getWebUrl()+"A059/images/"+this.devId+"/"+item+"?t="+new Date().getTime(); |
| | | }); |
| | | }, |
| | | stateInfo() { |
| | | let num = this.state; |
| | | let info = { |
| | | disabledStart: true, |
| | | disabledStop: true, |
| | | disabledFlush: true, |
| | | message: "通讯异常" |
| | | }; |
| | | switch(num) { |
| | | case 0: |
| | | info = { |
| | | disabledStart: false, |
| | | disabledStop: true, |
| | | disabledFlush: false, |
| | | message: "图片停止更新" |
| | | }; |
| | | break; |
| | | case 1: |
| | | info = { |
| | | disabledStart: true, |
| | | disabledStop: false, |
| | | disabledFlush: false, |
| | | message: "图片更新中..." |
| | | }; |
| | | break; |
| | | } |
| | | return info; |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | </div> |
| | | <div class="page-content"> |
| | | <div class="page-content-tools" v-if="control.show && isCanTest"> |
| | | <el-cascader |
| | | v-model="dataSource.value" |
| | | size="mini" |
| | | :disabled="esState==-1" |
| | | :options="dataSource.options" |
| | | @change="changeDataSource"></el-cascader> |
| | | <el-popover placement="bottom" trigger="hover"> |
| | | <div class="hdw-menu-list"> |
| | | <ul> |
| | |
| | | <!-- </el-dialog>--> |
| | | <el-dialog title="内窥镜" width="960px" :visible.sync="videoDialog.show" :close-on-click-modal="false" |
| | | top="0" class="dialog-center" :modal-append-to-body="false"> |
| | | <endoscope-image v-if="videoDialog.show" :dev-id="batt.FBSDeviceId"></endoscope-image> |
| | | <endoscope-image v-if="videoDialog.show" :dev-id="batt.FBSDeviceId" :state="esState"></endoscope-image> |
| | | </el-dialog> |
| | | <!-- 停电放电确认 --> |
| | | <el-dialog :title="confirmDialog.title" width="480px" :visible.sync="confirmDialog.show" :close-on-click-modal="false" |
| | |
| | | stateList: stateList, |
| | | esVideoDialog: false, |
| | | esVideoSn: "", |
| | | esState: -1, // -1通讯故障, 0停止显示 1开始显示 |
| | | // k4状态 |
| | | main: false, |
| | | confirmBtnShow: 0, |
| | |
| | | // 储能状态 |
| | | isCharge: true, |
| | | count: 0, |
| | | flag: false |
| | | flag: false, |
| | | dataSource: { |
| | | value: ["source", 0], |
| | | options: [ |
| | | { |
| | | value: 'source', |
| | | label: '数据来源', |
| | | children: [ |
| | | { |
| | | value: 0, |
| | | label: "未设置" |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: "电池组1" |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "电池组2" |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | }, |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | let isOutTime = true; //通讯中断 判断设备是否通讯中断 true:中断 false:正常 |
| | | if (rs.code == 1) { |
| | | let data = rs.data[0]; |
| | | // 设置内窥镜图片更新状态 |
| | | this.esState = data.dev_station_poff_cnt; |
| | | // 设置数据来源 |
| | | this.$set(this.dataSource, 'value', ['source', data.dev_onlinevollow]); |
| | | // 烟感报警 > 0为报警状态 |
| | | // this.stateList[4].value = data.dev_temp > 0 ? 1 : 0; |
| | | this.setStateList('alarm', data.dev_temp > 0 ? 1 : 0); |
| | |
| | | this.setStateList("workState", "未连接"); |
| | | this.diagram.desc = '设备未连接'; |
| | | this.main = false; |
| | | // 设置内窥镜图片更新状态 |
| | | this.esState = -1; |
| | | }, |
| | | // 基础信息 |
| | | setEquipBase(data) { |
| | |
| | | resetState () { |
| | | this.count = 0; |
| | | this.isCharge = true; |
| | | }, |
| | | changeDataSource() { |
| | | let batt = this.batt; |
| | | let num = this.dataSource.value[1]; |
| | | this.timer.stop(); |
| | | let loading = this.$layer.loading(); |
| | | this.$apis.aio.realtime.changeDataSource(batt.FBSDeviceId, num).then(res=>{ |
| | | this.$layer.close(loading); |
| | | let rs = JSON.parse(res.data.result); |
| | | let timeLong = 4000; |
| | | if(rs.code == 1) { |
| | | this.$layer.msg("切换电池组成功"); |
| | | }else { |
| | | this.$layer.msg("切换电池组失败"); |
| | | timeLong = 0; |
| | | } |
| | | setTimeout(()=>{ |
| | | this.startTimer(); |
| | | }, timeLong); |
| | | |
| | | }).catch(error=>{ |
| | | this.$layer.close(loading); |
| | | this.startTimer(); |
| | | this.$layer.msg("切换电池组失败"); |
| | | }); |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | this.timer2.open(); |
| | | }, |
| | | beforeDestroy () { |
| | | this.timer.stop(); |
| | | this.timer2.stop(); |
| | | stop(); |
| | | } |
| | |
| | | /* color: #ffe329aa; */ |
| | | } |
| | | } |
| | | .data-source { |
| | | font-size: 14px; |
| | | cursor: pointer; |
| | | } |
| | | </style> |
| | |
| | | <script> |
| | | import { searchProvince } from "../../assets/js/api"; |
| | | import const_user from "@/assets/js/const/const_user"; |
| | | import AES from "@/common/AES"; |
| | | |
| | | export default { |
| | | // name:'addEdit', |
| | | props: ["status", "opt", "index", "seft"], |
| | |
| | | // 新增用户 |
| | | addUser(data) { |
| | | let vm = this; |
| | | data.USnId = data.Upassword; |
| | | data.USnId = AES.encrypt(data.Upassword); |
| | | data.Upassword = data.USnId; |
| | | if(data.type == 1) { |
| | | data.expirationTime = null; |
| | | }else { |