From 106374208e6e7265db3c00ddfa948c39b7c252ea Mon Sep 17 00:00:00 2001 From: he wei <858544502@qq.com> Date: 星期五, 08 十一月 2024 11:19:26 +0800 Subject: [PATCH] U 修改批量操作 --- src/views/test/ytjRtInfo.vue | 82 ++++++++++--- src/views/test/testBatch.vue | 190 ++++++++++++++++++++++++------- src/views/login/index.vue | 2 src/views/test/devCard.vue | 35 +++-- src/hooks/useElement.js | 1 src/views/test/paramContent.vue | 14 +- 6 files changed, 237 insertions(+), 87 deletions(-) diff --git a/src/hooks/useElement.js b/src/hooks/useElement.js index ca3bcbc..9ff5857 100644 --- a/src/hooks/useElement.js +++ b/src/hooks/useElement.js @@ -7,6 +7,7 @@ ElMessageBox.confirm(title, "绯荤粺鎻愮ず", { confirmButtonText: "纭畾", type: "warning", + showCancelButton: false, center: true, }) .then(() => { diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 5e974d0..c5d0eb3 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -79,7 +79,7 @@ setId(res.data2.uid); setName(res.data2.uname); - // TODO 瀵嗙爜瑕佸姞瀵� 鍙栧嚭鍚庡啀瑙e瘑 + // 鏄惁璁颁綇瀵嗙爜 if (remember.value) { add(); } else { diff --git a/src/views/test/devCard.vue b/src/views/test/devCard.vue index a86dc3a..18bdf4b 100644 --- a/src/views/test/devCard.vue +++ b/src/views/test/devCard.vue @@ -3,6 +3,10 @@ import { ref, computed } from "vue"; import formatSeconds from "@/assets/js/tools/formatSeconds"; +import toFixed from "@/assets/js/tools/toFixed.js"; +import const_digits from "@/assets/js/const/const_digits"; +const { VOL, GROUPVOL, CURR_YT, CURR_JH } = const_digits; + const props = defineProps({ devIdcode: { type: [String, Number], @@ -17,20 +21,25 @@ info: { type: Object, required: true, - } + }, }); const testStates = computed(() => { if (1 == props.devType) { - return ["--", "鏀剧數娴嬭瘯", "鍏呯數娴嬭瘯"][props.info.state?.testType]; + if (props.info.state.testPause) { + return "鏆傚仠涓�"; + } else if (props.info.state.isTesting) { + return ["--", "鏀剧數娴嬭瘯", "鍏呯數娴嬭瘯"][props.info.state?.testType]; + } else { + return "--"; + } } else { - let states = ["鍏呯數", "鏀剧數", "鍧囪 "]; - let [res1, res2] = [0, 1].map((v) => - props.info.state - ? states[props.info.state[v].workMode] || "--" - : "--" - ); - return `缁�1:${res1}, 缁�2: ${res2}`; + // let states = ["鍏呯數", "鏀剧數", "鍧囪 "]; + // let [res1, res2] = [0, 1].map((v) => + // props.info.state ? states[props.info.state[v].workMode] || "--" : "--" + // ); + let [res1, res2] = [0, 1].map((v) => props.info.state[v].moduleStatus); + return `缁�1:${res1}, 缁�2: ${res2}`; } }); </script> @@ -59,11 +68,11 @@ <div class="info"> <template v-if="1 == props.devType"> <div class="item"> - {{ info.state.storageVoltage }}V + {{ toFixed(info.state.storageVoltage, GROUPVOL) }}V <div class="link"></div> </div> <div class="item"> - {{ info.state.testCurrent }}A + {{ toFixed(info.state.testCurrent, CURR_YT) }}A <div class="link"></div> </div> <div class="item"> @@ -104,7 +113,9 @@ {{ onLine ? "鍦ㄧ嚎" : "绂荤嚎" }} </div> <div class="wrap" v-else> - <div class="workstate">{{ info.state.isTesting ? testStates : '--' }}</div> + <div class="workstate"> + {{ testStates }} + </div> <icon-arrow-right class="icon"></icon-arrow-right> </div> </div> diff --git a/src/views/test/paramContent.vue b/src/views/test/paramContent.vue index 5d13399..9e4388e 100644 --- a/src/views/test/paramContent.vue +++ b/src/views/test/paramContent.vue @@ -392,13 +392,13 @@ } }); if (code && data && successList.length) { - console.log( - "failList", - failList, - "successList", - successList, - "=============" - ); + // console.log( + // "failList", + // failList, + // "successList", + // successList, + // "=============" + // ); list.successList = successList; $message.success("鎿嶄綔鎴愬姛"); if (failList.length) { diff --git a/src/views/test/testBatch.vue b/src/views/test/testBatch.vue index 923d9ef..e17ce52 100644 --- a/src/views/test/testBatch.vue +++ b/src/views/test/testBatch.vue @@ -7,7 +7,12 @@ import { useRoute, useRouter } from "vue-router"; import battCountContent from "./battCountContent.vue"; -import { cancelContPl, controllerActmParam, stopA200ParamPl, pauseA200ParamPl } from "./api.js"; +import { + cancelContPl, + controllerActmParam, + stopA200ParamPl, + pauseA200ParamPl, +} from "./api.js"; import useElement from "@/hooks/useElement.js"; const { $alert, $loading, $message, $confirm } = useElement(); @@ -38,6 +43,80 @@ 2: getItem(2), }; }); + +// TODO 鍧囪 浠湁鍑犵粍 鍙栭�変腑鍒楄〃涓涓�鍙板湪绾跨殑璁惧鐨勬暟鎹� +const onlyOneGroup = computed(() => { + if ( + selectData.value[2].length == 0 || + !selectData.value[2].filter((v) => v.devOnline == 1).length + ) { + return true; + } + return ( + selectData.value[2].filter((v) => v.devOnline == 1)[0].state[0] + .batteryCount == 1 + ); +}); + +// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 鍏叡鏂规硶 +function computeYT(someFn) { + return computed(() => { + let _type = devType.value; + if ( + 1 != _type || + !selectData.value[1].filter((v) => v.devOnline == 1).length + ) { + return false; + } else { + return selectData.value[1] + .filter((v) => v.devOnline == 1) + .some(someFn); + } + }); +} +// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 鍚姩 +const canStartYT = computeYT((v) => v.state.isTesting == 0); +// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 鏆傚仠 +const canPauseYT = computeYT((v) => v.state.isTesting == 1 && v.state.testPause == 0); +// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 缁х画 +const canContinueYT = computeYT((v) => v.state.testPause == 1); +// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 鍋滄 +const canStopYT = computeYT((v) => v.state.isTesting == 1); + +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍏叡鏂规硶 +function computeJH(someFn) { + return computed(() => { + let _type = devType.value; + if ( + 2 != _type || + !selectData.value[2].filter((v) => v.devOnline == 1).length + ) { + return false; + } else { + return selectData.value[2] + .filter((v) => v.devOnline == 1) + .some(someFn); + } + }); +} +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍚姩缁�1 +const canStartJH1 = computeJH((v) => v.state[0].isTesting == 0); +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍚姩缁�2 +const canStartJH2 = computeJH((v) => v.state[1].isTesting == 0); +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鏆傚仠缁�1 +const canPauseJH1 = computeJH((v) => v.state[0].isTesting == 1 && v.state[0].isTestPause == 0); +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鏆傚仠缁�2 +const canPauseJH2 = computeJH((v) => v.state[1].isTesting == 1 && v.state[1].isTestPause == 0); +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 缁х画缁�1 +const canContinueJH1 = computeJH((v) => v.state[0].isTestPause == 1); +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 缁х画缁�2 +const canContinueJH2 = computeJH((v) => v.state[1].isTestPause == 1); + +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍋滄缁�1 +const canStopJH1 = computeJH((v) => v.state[0].isTesting == 1); +// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍋滄缁�2 +const canStopJH2 = computeJH((v) => v.state[1].isTesting == 1); + watch(devList, (val, old) => { // console.log("val ch", val, old, "============="); if ((val[1].length || val[2].length) && !(old[1].length || old[2].length)) { @@ -152,7 +231,7 @@ } const devs = computed(() => { - return selectData.value[devType.value]; + return selectData.value[devType.value].filter((v) => v.devOnline == 1); }); function goDetails(dev) { @@ -173,7 +252,9 @@ } function stopTest(groupIdx) { - let devIds = devs.value.map((v) => v.devId); + let devIds = devs.value + .filter((v) => v.devOnline == 1 && v.state.isTesting == 1) + .map((v) => v.devId); let loading = $loading(); stopA200ParamPl(devIds) .then((res) => { @@ -235,7 +316,14 @@ } function pauseYtj(type) { - let devIds = devs.value.map((v) => v.devId); + let devIds = devs.value; + if (type == 1) { + devIds = devIds.filter( + (v) => v.devOnline == 1 && v.state.isTesting == 1 && v.state.testPause == 0 + ).map((v) => v.devId); + } else { + devIds = devIds.filter((v) => v.devOnline == 1 && v.state.testPause == 1).map((v) => v.devId); + } let loading = $loading(); pauseA200ParamPl(devIds, type) .then((res) => { @@ -271,7 +359,10 @@ }); } -onMounted(() => {}); +onMounted(() => { + // $alert("璇风‘璁ゅ弬涓庢壒閲忔祴璇曠殑璁惧涓庣數姹犻�傚悎鎵归噺娴嬭瘯"); + $alert("璇风‘璁ゅ弬涓庢壒閲忔祴璇曡澶囩殑娴嬭瘯鍙傛暟涓庣數姹犺鏍煎尮閰�"); +}); onActivated(() => { if ($route.query.devType) { devType.value = $route.query.devType * 1; @@ -352,20 +443,28 @@ > <el-button size="small" - :disabled="!selectData[devType].length" + :disabled="!canStartYT" class="btn-start" @click="test" >鍚姩娴嬭瘯</el-button > - <el-button size="small" class="btn-start" @click="pauseYtj(1)" + <el-button + size="small" + class="btn-start" + @click="pauseYtj(1)" + :disabled="!canPauseYT" >鏆傚仠娴嬭瘯</el-button > - <el-button size="small" class="btn-start" @click="pauseYtj(2)" + <el-button + size="small" + class="btn-start" + @click="pauseYtj(2)" + :disabled="!canContinueYT" >缁х画娴嬭瘯</el-button > <el-button size="small" - :disabled="!selectData[devType].length" + :disabled="!canStopYT" class="btn-start" @click="stopTest" >鍋滄娴嬭瘯</el-button @@ -375,6 +474,9 @@ <el-button size="small" class="btn-start btn-grp1" + :disabled=" + !selectData[devType].filter((v) => v.devOnline == 1).length + " @click="setBattCount" >璁剧疆缁勬暟</el-button > @@ -389,74 +491,65 @@ <el-dropdown class="control-group grp1" type="primary" + :disabled="!selectData[devType].length" trigger="click" > 缁�1鎺у埗 <template #dropdown> <el-dropdown-menu> - <el-dropdown-item @click="test(0)">鍚姩缁�1</el-dropdown-item> - <el-dropdown-item @click="controlTest(0, 2)" + <el-dropdown-item @click="test(0)" :disabled="!canStartJH1" + >鍚姩缁�1</el-dropdown-item + > + <el-dropdown-item + @click="controlTest(0, 2)" + :disabled="!canPauseJH1" >鏆傚仠缁�1</el-dropdown-item > - <el-dropdown-item @click="controlTest(0, 3)" + <el-dropdown-item + @click="controlTest(0, 3)" + :disabled="!canContinueJH1" >缁х画缁�1</el-dropdown-item > - <el-dropdown-item @click="controlTest(0, 4)" + <el-dropdown-item + @click="controlTest(0, 4)" + :disabled="!canStopJH1" >鍋滄缁�1</el-dropdown-item > </el-dropdown-menu> </template> </el-dropdown> - <!-- <el-button - size="small" - :disabled="!selectData[devType].length" - class="btn-start btn-grp1" - @click="test(0)" - >鍚姩缁�1</el-button - > - <el-button - size="small" - :disabled="!selectData[devType].length" - class="btn-start btn-grp1" - @click="test(0)" - >鏆傚仠缁�1</el-button - > --> <!-- 缁�2鎺у埗 --> <el-dropdown class="control-group grp2" type="primary" + :disabled="!selectData[devType].length" + v-if="!onlyOneGroup" trigger="click" > 缁�2鎺у埗 <template #dropdown> <el-dropdown-menu> - <el-dropdown-item @click="test(1)">鍚姩缁�2</el-dropdown-item> - <el-dropdown-item @click="controlTest(1, 2)" + <el-dropdown-item @click="test(1)" :disabled="!canStartJH2" + >鍚姩缁�2</el-dropdown-item + > + <el-dropdown-item + @click="controlTest(1, 2)" + :disabled="!canPauseJH2" >鏆傚仠缁�2</el-dropdown-item > - <el-dropdown-item @click="controlTest(1, 3)" + <el-dropdown-item + @click="controlTest(1, 3)" + :disabled="!canContinueJH2" >缁х画缁�2</el-dropdown-item > - <el-dropdown-item @click="controlTest(1, 4)" + <el-dropdown-item + @click="controlTest(1, 4)" + :disabled="!canStopJH2" >鍋滄缁�2</el-dropdown-item > </el-dropdown-menu> </template> </el-dropdown> - <!-- <el-button - size="small" - :disabled="!selectData[devType].length" - class="btn-start btn-grp2" - @click="test(1)" - >鍚姩缁�2</el-button - > - <el-button - size="small" - :disabled="!selectData[devType].length" - class="btn-start btn-grp2" - @click="test(1)" - >鍋滄缁�2</el-button - > --> </template> </template> <div class="card-content"> @@ -711,7 +804,7 @@ &.grp1 { margin-left: 8px; } - cursor: pointer; + // cursor: pointer; & > :deep(span) { color: #000; display: inline-block; @@ -724,6 +817,11 @@ background: rgb(0, 231, 112); } } + &.is-disabled { + & > :deep(span) { + background: #ccc; + } + } } } </style> diff --git a/src/views/test/ytjRtInfo.vue b/src/views/test/ytjRtInfo.vue index 80be170..9e2e04f 100644 --- a/src/views/test/ytjRtInfo.vue +++ b/src/views/test/ytjRtInfo.vue @@ -1,5 +1,5 @@ <script setup> -import { ref, computed, watch, onMounted } from "vue"; +import { ref, computed, watch, onMounted, onActivated } from "vue"; import ycCard from "@/components/ycCard.vue"; import useWebSocket from "@/hooks/useWebSocket.js"; import bar from "@/components/echarts/bar2.vue"; @@ -41,7 +41,6 @@ return { monStates: [], devStates: {}, eventList: [] }; } }); - const logList = computed(() => { let _list = rtDatas.value.eventList; @@ -86,6 +85,13 @@ battVolChart.value?.updateChart(mons, vols); } +onActivated(() => { + let reg = /^1/; + if (reg.test(props.devId)) { + sendData(JSON.stringify({ devId: props.devId, devType: 1 })); + } +}); + onMounted(() => { // sendData(JSON.stringify({ devId: props.devId, devType: 1 })); }); @@ -110,14 +116,35 @@ <transition-group :duration="300" name="slide-left"> <div class="tab-content test-content" v-if="infoTab == 0"> <div class="state" v-if="rtDatas.devStates.isTesting"> - <div :class="['item', { active: rtDatas.devStates.isTesting && 2 == rtDatas.devStates.testType }]"> + <div + :class="[ + 'item', + { + active: + rtDatas.devStates.isTesting && + 2 == rtDatas.devStates.testType, + }, + ]" + > 鍏呯數娴嬭瘯 </div> - <div :class="['item', { active: rtDatas.devStates.isTesting && 1 == rtDatas.devStates.testType }]"> + <div + :class="[ + 'item', + { + active: + rtDatas.devStates.isTesting && + 1 == rtDatas.devStates.testType, + }, + ]" + > 鏀剧數娴嬭瘯 </div> </div> - <div class="stop-reason" v-else><span class="label">鍋滄鍘熷洜:</span>{{ rtDatas.devStates.stopReason }}</div> + <div class="stop-reason" v-else> + <span class="label">鍋滄鍘熷洜:</span + >{{ rtDatas.devStates.stopReason }} + </div> <div class="content"> <div class="item item1"> <div class="label">Umax</div> @@ -132,8 +159,12 @@ </div> </div> <div class="item"> - <div class="label"><el-icon><icon-avg class="avg-icon" /></el-icon>U</div> - <div class="value">{{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V</div> + <div class="label"> + <el-icon><icon-avg class="avg-icon" /></el-icon>U + </div> + <div class="value"> + {{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V + </div> </div> <div class="item-big"> {{ toFixed(rtDatas.devStates.storageVoltage, GROUPVOL) }} @@ -157,9 +188,7 @@ </div> </div> <div class="border border-center"> - <div class="i label"> - 鐢佃姱鍘嬪樊 - </div> + <div class="i label">鐢佃姱鍘嬪樊</div> <div class="value"> {{ rtDatas.devStates.diffBatteryVoltage }} mV </div> @@ -197,7 +226,9 @@ </div> </div> <div class="item"> - <div class="label"><el-icon><icon-avg class="avg-icon" /></el-icon>T</div> + <div class="label"> + <el-icon><icon-avg class="avg-icon" /></el-icon>T + </div> <div class="value">{{ rtDatas.devStates.avgMonTmp }}鈩�</div> </div> </div> @@ -214,7 +245,9 @@ {{ toFixed(rtDatas.devStates.minBatteryVoltage, VOL) }}V </div> <div class="label">骞冲潎鍊�</div> - <div class="value">{{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V</div> + <div class="value"> + {{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V + </div> </div> <div class="list-wrap posR"> <div class="pos-full scroll"> @@ -251,7 +284,9 @@ {{ toFixed(rtDatas.devStates.minBatteryVoltage, VOL) }}V </div> <div class="label">骞冲潎鍊�</div> - <div class="value">{{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V</div> + <div class="value"> + {{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V + </div> </div> <div class="chart-wrap"> <bar ref="battVolChart" unit="V"></bar> @@ -349,10 +384,10 @@ text-align: center; background: #02a7f0; &.max { - background: #438D29; + background: #438d29; } &.min { - background: #DBD608; + background: #dbd608; } } } @@ -386,10 +421,10 @@ text-align: center; background: #02a7f0; &.max { - background: #438D29; + background: #438d29; } &.min { - background: #DBD608; + background: #dbd608; } } } @@ -421,10 +456,10 @@ padding: 2px 10px; border-radius: 6px; &.max { - background: #438D29; + background: #438d29; } &.min { - background: #DBD608; + background: #dbd608; } } } @@ -638,7 +673,12 @@ /* 浣跨敤@keyframes瀹氫箟鍔ㄧ敾 */ @keyframes colorChange { - 0%, 100% { color: red; } /* 寮�濮嬪拰缁撴潫鏃剁殑棰滆壊 */ - 50% { color: #0ff; } /* 涓棿鐘舵�佺殑棰滆壊 */ + 0%, + 100% { + color: red; + } /* 寮�濮嬪拰缁撴潫鏃剁殑棰滆壊 */ + 50% { + color: #0ff; + } /* 涓棿鐘舵�佺殑棰滆壊 */ } </style> -- Gitblit v1.9.1