| | |
| | | let max = Math.max(...data); |
| | | let min = Math.min(...(data.filter((item) => item != 0))); |
| | | let val = params.value; |
| | | console.log('min, max, val', min, max, val, '============='); |
| | | // console.log('min, max, val', min, max, val, '============='); |
| | | |
| | | if (val == min) { |
| | | return minColor; |
| | |
| | | myChart.setOption(option); |
| | | } |
| | | |
| | | function resize() { |
| | | myChart.resize(); |
| | | } |
| | | |
| | | onMounted(() => { |
| | | initChart(); |
| | | }); |
| | |
| | | |
| | | defineExpose({ |
| | | updateChart, |
| | | resize, |
| | | }); |
| | | </script> |
| | | |
| | |
| | | } |
| | | let label = type; |
| | | let value = v; |
| | | let children = arr.map((vv) => ({ |
| | | let children = []; |
| | | let count = arr.length; |
| | | if (devType.value == 1) { |
| | | children = arr.map((vv) => ({ |
| | | ...vv, |
| | | label: vv.testStarttime, |
| | | value: vv.testRecordCount, |
| | | })); |
| | | return { label, value, disabled: !arr.length, children }; |
| | | } else { |
| | | // 添加一级 区分是组1还是组2 |
| | | let _obj = {}; |
| | | for (let i = arr.length; i--; ) { |
| | | let item = arr[i]; |
| | | let idx = item.battIdx; |
| | | _obj[idx] = _obj[idx] || []; |
| | | _obj[idx].push(item); |
| | | } |
| | | |
| | | Object.keys(_obj).forEach((vv) => { |
| | | let item = _obj[vv]; |
| | | let idx = `组${vv * 1 + 1}`; |
| | | let _count = item.length; |
| | | children.push({ |
| | | label: idx, |
| | | count: _count, |
| | | value: `group_${vv}`, |
| | | children: item.map((vvv) => ({ |
| | | ...vvv, |
| | | label: vvv.testStarttime, |
| | | value: vvv.testRecordCount, |
| | | })), |
| | | }); |
| | | }); |
| | | // children = arr.map((vv) => ({ |
| | | // ...vv, |
| | | // label: vv.testStarttime, |
| | | // value: vv.testRecordCount, |
| | | // })); |
| | | } |
| | | return { label, value, count, disabled: !arr.length, children }; |
| | | }); |
| | | } |
| | | testRecordList.value = _list; |
| | |
| | | } |
| | | |
| | | function selectRecord() { |
| | | let res = testRecordCode.value[1]; |
| | | let res = testRecordCode.value[testRecordCode.value.length - 1]; |
| | | // console.log("res", res, "============="); |
| | | |
| | | getRecordInf(currentDevId.value, res) |
| | |
| | | @change="selectRecord" |
| | | ><template #default="{ node, data }"> |
| | | <span>{{ data.label }}</span> |
| | | <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> |
| | | <span v-if="!node.isLeaf"> ({{ data.count }}) </span> |
| | | </template></el-cascader |
| | | > |
| | | <div class="info-title"> |
| | |
| | | }, |
| | | }); |
| | | |
| | | // 是否只有一组 |
| | | const isOnlyOne = computed(() => { |
| | | return 1 == props.info.state[0].batteryCount; |
| | | }); |
| | | |
| | | const testStates = computed(() => { |
| | | if (1 == props.devType) { |
| | | if (props.info.state.testPause) { |
| | |
| | | // 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}`; |
| | | return isOnlyOne.value ? `组1:${res1}` : `组1:${res1}, 组2: ${res2}`; |
| | | } |
| | | }); |
| | | </script> |
| | |
| | | <div class="link"></div> |
| | | </div> |
| | | <div class="item index"> |
| | | #2 |
| | | {{ isOnlyOne ? "--" : "#2" }} |
| | | <div class="link"></div> |
| | | </div> |
| | | <div class="item"> |
| | | {{ info.state[1].moduleStatus }} |
| | | {{ isOnlyOne ? "--" : info.state[1].moduleStatus }} |
| | | <div class="link"></div> |
| | | </div> |
| | | </template> |
| | |
| | | return _list.filter((v) => v.devId == currentDevId.value)[0] || {}; |
| | | }); |
| | | |
| | | // 是否可以修改均衡仪电池组数 |
| | | const canChangeBattCount = computed(() => { |
| | | // !currentDev.state[0].isTesting && !currentDev.state[1].isTesting |
| | | if (1 == devType.value || !currentDev.value.state) { |
| | | return false; |
| | | } |
| | | if (onlyOneGroup.value) { |
| | | return !currentDev.value.state[0].isTesting; |
| | | } else { |
| | | return !currentDev.value.state[0].isTesting && !currentDev.value.state[1].isTesting; |
| | | } |
| | | }); |
| | | |
| | | const testMode = computed(() => { |
| | | if (1 == devType.value) { |
| | | return ["--", "放电测试", "充电测试"][currentDev.value.state?.testType]; |
| | |
| | | ? states[currentDev.value.state[v].workMode] || "--" |
| | | : "--" |
| | | ); |
| | | return `组1:${res1}, 组2: ${res2}`; |
| | | return onlyOneGroup.value ? `组1:${res1}` : `组1:${res1}, 组2: ${res2}`; |
| | | } |
| | | }); |
| | | |
| | |
| | | ? currentDev.value.state[v].moduleStatus || "--" |
| | | : "--" |
| | | ); |
| | | return `组1:${res1}, 组2: ${res2}`; |
| | | return onlyOneGroup.value ? `组1:${res1}` : `组1:${res1}, 组2: ${res2}`; |
| | | } |
| | | }); |
| | | |
| | |
| | | |
| | | function setBattCount() { |
| | | jhyBattCountVisible.value = true; |
| | | console.log("cur", currentDev, "============="); |
| | | // console.log("cur", currentDev, "============="); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | function pauseYtj(type) { |
| | | console.log("currentDev", currentDev, "============="); |
| | | // console.log("currentDev", currentDev, "============="); |
| | | if (!currentDev.value.devId) { |
| | | return false; |
| | | } |
| | |
| | | size="small" |
| | | :disabled="!currentDev.devOnline" |
| | | class="btn-start btn-grp1" |
| | | v-if="!currentDev.state[0].isTesting" |
| | | v-if="canChangeBattCount" |
| | | @click="setBattCount" |
| | | >设置组数</el-button |
| | | > |
| | |
| | | changeTab(); |
| | | }); |
| | | |
| | | watch(() => props.onlyOneGroup, (val) => { |
| | | if (battVolChart.value) { |
| | | battVolChart.value[0].resize(); |
| | | battVolChart.value[1]?.resize(); |
| | | } |
| | | }); |
| | | |
| | | function changeTab() { |
| | | if (infoTab.value == 2) { |
| | | updateChart(); |
| | |
| | | } |
| | | |
| | | onMounted(() => { |
| | | // sendData(JSON.stringify({ devId: props.devId, devType: 1 })); |
| | | // console.log('devId,' , props.devId, 'onMounted', '============='); |
| | | |
| | | let reg = /^2/; |
| | | if (reg.test(props.devId)) { |
| | | sendData(JSON.stringify({ devId: props.devId, devType: 2 })); |
| | | } |
| | | }); |
| | | </script> |
| | | |
| | |
| | | }); |
| | | |
| | | // TODO 有几组 |
| | | const onlyOneGroup = ref(false); |
| | | |
| | | const onlyOneGroup = computed(() => { |
| | | return rtDatas.value.devStates[0].batteryCount == 1; |
| | | }); |
| | | |
| | | const devInfo = ref({}); |
| | | |
| | |
| | | let [res1, res2] = [0, 1].map( |
| | | (v) => states[rtDatas.value.devStates[v].workMode] |
| | | ); |
| | | return `组1:${res1}, 组2: ${res2}`; |
| | | return onlyOneGroup.value ? `组1:${res1}` : `组1:${res1}, 组2: ${res2}`; |
| | | }); |
| | | |
| | | const testStates = computed(() => { |
| | | let [res1, res2] = [0, 1].map((v) => rtDatas.value.devStates[v].moduleStatus); |
| | | return `组1:${res1}, 组2: ${res2}`; |
| | | return onlyOneGroup.value ? `组1:${res1}` : `组1:${res1}, 组2: ${res2}`; |
| | | }); |
| | | |
| | | function getInfo() { |
| | |
| | | </div> |
| | | </div> |
| | | </yc-card> |
| | | <jhy-rt-info class="p-content" :onlyOneGroup="onlyOneGroup" :devId="devId"></jhy-rt-info> |
| | | <jhy-rt-info |
| | | class="p-content" |
| | | :onlyOneGroup="onlyOneGroup" |
| | | :devId="devId" |
| | | ></jhy-rt-info> |
| | | <!-- 弹窗 --> |
| | | <el-dialog |
| | | title="设置测试参数" |
| | |
| | | ); |
| | | }); |
| | | |
| | | // 是否可以修改均衡仪组数 |
| | | const canChangeBattCount = computed(() => { |
| | | if ( |
| | | devType.value != 2 || |
| | | selectData.value[2].length == 0 || |
| | | selectData.value[2].filter((v) => v.devOnline == 1).length == 0 |
| | | ) { |
| | | return false; |
| | | } |
| | | return selectData.value[2] |
| | | .filter((v) => v.devOnline == 1) |
| | | .every((v) => { |
| | | return onlyOneGroup.value |
| | | ? v.state[0].isTesting == 0 |
| | | : v.state[0].isTesting == 0 && v.state[1].isTesting == 0; |
| | | }); |
| | | }); |
| | | |
| | | // 一体机 按钮可用控制 公共方法 |
| | | function computeYT(someFn) { |
| | | return computed(() => { |
| | |
| | | ) { |
| | | return false; |
| | | } else { |
| | | return selectData.value[1] |
| | | .filter((v) => v.devOnline == 1) |
| | | .some(someFn); |
| | | 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 canPauseYT = computeYT( |
| | | (v) => v.state.isTesting == 1 && v.state.testPause == 0 |
| | | ); |
| | | // 一体机 按钮可用控制 继续 |
| | | const canContinueYT = computeYT((v) => v.state.testPause == 1); |
| | | // 一体机 按钮可用控制 停止 |
| | |
| | | ) { |
| | | return false; |
| | | } else { |
| | | return selectData.value[2] |
| | | .filter((v) => v.devOnline == 1) |
| | | .some(someFn); |
| | | return selectData.value[2].filter((v) => v.devOnline == 1).some(someFn); |
| | | } |
| | | }); |
| | | } |
| | |
| | | // 均衡仪 按钮可用控制 启动组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); |
| | | 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); |
| | | 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 |
| | |
| | | function pauseYtj(type) { |
| | | 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); |
| | | 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); |
| | | devIds = devIds |
| | | .filter((v) => v.devOnline == 1 && v.state.testPause == 1) |
| | | .map((v) => v.devId); |
| | | } |
| | | let loading = $loading(); |
| | | pauseA200ParamPl(devIds, type) |
| | |
| | | <el-button |
| | | size="small" |
| | | class="btn-start btn-grp1" |
| | | :disabled=" |
| | | !selectData[devType].filter((v) => v.devOnline == 1).length |
| | | " |
| | | :disabled="!canChangeBattCount" |
| | | @click="setBattCount" |
| | | >设置组数</el-button |
| | | > |
| | |
| | | v-if="jhyBattCountVisible" |
| | | :isBatch="true" |
| | | :devs="devs" |
| | | :isOnlyOne="onlyOneGroup" |
| | | ></batt-count-content> |
| | | </el-dialog> |
| | | </div> |
| | |
| | | } |
| | | |
| | | onActivated(() => { |
| | | }); |
| | | |
| | | onMounted(() => { |
| | | 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 })); |
| | | }); |
| | | </script> |