diff --git a/src/api/iot-card/cardManagement.ts b/src/api/iot-card/cardManagement.ts index ed75ce6e..4297f5b6 100644 --- a/src/api/iot-card/cardManagement.ts +++ b/src/api/iot-card/cardManagement.ts @@ -58,7 +58,7 @@ export const resumptionBatch = (data: any) => server.get(`/network/card/_resumpt /** * 同步物联卡状态 */ -export const sync = () => server.get(`/network/card/state/_sync`); +export const sync = (data: any) => server.get(`/network/card/state/_sync`,data); /** * 批量删除物联卡 diff --git a/src/views/iot-card/CardManagement/Detail/index.vue b/src/views/iot-card/CardManagement/Detail/index.vue index 4ca3b42d..3e5c49fc 100644 --- a/src/views/iot-card/CardManagement/Detail/index.vue +++ b/src/views/iot-card/CardManagement/Detail/index.vue @@ -282,19 +282,34 @@ const getDataTotal = () => { dayOptions.value = resp.sortArray; }); getData(mTime[0], mTime[1]).then((resp) => { - monthTotal.value = resp.data - .reduce((r, n) => r + Number(n), 0) - .toFixed(2); - monthOptions.value = resp.sortArray; - }); - getData(yTime[0], yTime[1]).then((resp) => { - yearTotal.value = resp.data - .reduce((r, n) => r + Number(n), 0) - .toFixed(2); - yearOptions.value = resp.sortArray; - }); + const monthData = resp.data; + monthTotal.value = monthData + .reduce((r, n) => r + Number(n), 0) + .toFixed(2); + monthOptions.value = resp.sortArray; + console.log('monthTotal.value:' + monthTotal.value); + console.log('monthData.length:' + monthData.length); + // 如果只有一个月有数据,将本年统计的值设置为本月统计的值 + if (monthData.length <=31) { + yearTotal.value = monthTotal.value; + yearOptions.value = monthOptions.value; + console.log('yearTotal.value:' + yearTotal.value); + + } else { + getData(yTime[0], yTime[1]).then((resp) => { + yearTotal.value = resp.data + .reduce((r, n) => r + Number(n), 0) + .toFixed(2); + yearOptions.value = resp.sortArray; + console.log('yearTotal.value:' + yearTotal.value); + }); + } +}); + + }; + /** * 流量统计 * @param data @@ -302,7 +317,7 @@ const getDataTotal = () => { const getEcharts = (data: any) => { let startTime = data.start; let endTime = data.end; - if (data.type === 'week' || data.type === 'month') { + if (data.type === 'week' || data.type === 'month'||data.type === 'year') { startTime = moment(data.start).startOf('days').valueOf(); endTime = moment(data.end).startOf('days').valueOf(); } diff --git a/src/views/iot-card/CardManagement/index.vue b/src/views/iot-card/CardManagement/index.vue index d0aec5b9..317cee49 100644 --- a/src/views/iot-card/CardManagement/index.vue +++ b/src/views/iot-card/CardManagement/index.vue @@ -900,13 +900,20 @@ const handleResumption = () => { /** * 同步状态 */ -const handleSync = () => { - sync().then((res: any) => { - if (res.status === 200) { + const handleSync = async() => { + if (!_selectedRowKeys.value.length) { + onlyMessage('请选择数据', 'error'); + return; + } + const resp = await sync( + _selectedRowKeys.value.map((v) => ({ id: v })), + ); + + if (resp.status === 200) { + _selectedRowKeys.value = []; cardManageRef.value?.reload(); onlyMessage('同步状态成功'); } - }); }; /** @@ -991,9 +998,11 @@ const batchActions: BatchActionsType[] = [ type: 'primary', permission: 'iot-card/CardManagement:sync', icon: 'SwapOutlined', - popConfirm: { - title: '确认同步状态吗?', - onConfirm: handleSync, + selected:{ + popConfirm: { + title: '确认同步状态吗?', + onConfirm: handleSync, + }, }, }, { diff --git a/src/views/iot-card/Dashboard/index.vue b/src/views/iot-card/Dashboard/index.vue index 6dae491d..15dfcc79 100644 --- a/src/views/iot-card/Dashboard/index.vue +++ b/src/views/iot-card/Dashboard/index.vue @@ -45,7 +45,7 @@
-
本年流量消耗
+
本年流量消耗1
@@ -40,6 +40,7 @@ const props = defineProps({ title: { type: String, default: '' }, // 图表数据 chartData: { type: Array, default: () => [] }, + }); // 统计时间维度 @@ -55,10 +56,14 @@ const dateRange = ref([ const chartRef = ref(); const createChart = () => { nextTick(() => { + if (!chartRef.value) { + return; // 如果不存在,直接返回,不执行初始化操作 + } const myChart = echarts.init(chartRef.value as HTMLElement); const sData: number[] = props.chartData.map( (m: any) => m.value && m.value.toFixed(0), ); + const maxY = Math.max.apply(null, sData.length ? sData : [0]); const options = { grid: { @@ -130,12 +135,13 @@ const createChart = () => { }, ], }; - + myChart.setOption(options); window.addEventListener('resize', function () { myChart.resize(); }); }); + }; watch( @@ -145,6 +151,7 @@ watch( }, { deep: true }, ); + watch( () => dateRange.value, (val) => { diff --git a/src/views/media/SplitScreen/tree.vue b/src/views/media/SplitScreen/tree.vue index e6b103a8..ca76b073 100644 --- a/src/views/media/SplitScreen/tree.vue +++ b/src/views/media/SplitScreen/tree.vue @@ -87,16 +87,19 @@ const getDeviceList = async () => { ...extra, }; }); - getChildren(treeData.value[0].id,{ - pageIndex: 0, - pageSize: 100, - terms: [ - { - column: 'deviceId', - value: treeData.value[0].id, - }, - ], - },true) + if (treeData.value.length > 0 && treeData.value[0]) { + getChildren(treeData.value[0].id,{ + pageIndex: 0, + pageSize: 100, + terms: [ + { + column: 'deviceId', + value: treeData.value[0].id, + }, + ], + },true) + } + } }; getDeviceList(); diff --git a/src/views/rule-engine/DashBoard/index.vue b/src/views/rule-engine/DashBoard/index.vue index 75968d9a..078c9f34 100644 --- a/src/views/rule-engine/DashBoard/index.vue +++ b/src/views/rule-engine/DashBoard/index.vue @@ -445,60 +445,64 @@ const selectChange = () => { sData.push(item.data.value); }); const data:any = JSON.parse(JSON.stringify(sData)) - const maxY = data.sort((a,b)=>{ - return b-a - })[0] - alarmStatisticsOption.value = { - xAxis: { - type: 'category', - boundaryGap: false, - data: xData.reverse(), - }, - yAxis: { - type: 'value', - }, - tooltip: { - trigger: 'axis', - // axisPointer: { - // type: 'shadow', - // }, - }, - grid: { - top: '2%', - bottom: '5%', - left: maxY < 1000 ? 50 : maxY.toString().length * 10, - right: '48px', - }, - series: [ - { - name: tip, - data: sData.reverse(), - type: 'line', - smooth: true, - color: '#ADC6FF', - areaStyle: { - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [ - { - offset: 0, - color: '#ADC6FF', // 100% 处的颜色 - }, - { - offset: 1, - color: '#FFFFFF', // 0% 处的颜色 - }, - ], - global: false, // 缺省为 false + if (data && data.length > 0 ) { + const maxY = data.sort((a,b)=>{ + return b-a + })[0] + alarmStatisticsOption.value = { + xAxis: { + type: 'category', + boundaryGap: false, + data: xData.reverse(), + }, + yAxis: { + type: 'value', + }, + tooltip: { + trigger: 'axis', + // axisPointer: { + // type: 'shadow', + // }, + }, + grid: { + top: '2%', + bottom: '5%', + left: maxY < 1000 ? 50 : maxY.toString().length * 10, + right: '48px', + }, + series: [ + { + name: tip, + data: sData.reverse(), + type: 'line', + smooth: true, + color: '#ADC6FF', + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: '#ADC6FF', // 100% 处的颜色 + }, + { + offset: 1, + color: '#FFFFFF', // 0% 处的颜色 + }, + ], + global: false, // 缺省为 false + }, }, }, - }, - ], - }; + ], + }; + }else{ + console.log('data is empty ') + } state.ranking = res.result ?.filter( (item: any) => diff --git a/src/views/system/Basis/index.vue b/src/views/system/Basis/index.vue index 8ca78858..8990964a 100644 --- a/src/views/system/Basis/index.vue +++ b/src/views/system/Basis/index.vue @@ -371,6 +371,16 @@ const form = reactive({ message: '请输入base-path', trigger: 'blur', }, + { + validator: (rule, value, callback) => { + if (value && value.includes('localhost')) { + callback('输入内容不能包含 localhost'); + } else { + callback(); + } + }, + trigger: 'blur', + }, ], }, logoLoading: false, // logo加载状态 diff --git a/src/views/system/Dictionary/components/Left/save/index.vue b/src/views/system/Dictionary/components/Left/save/index.vue index 17306c29..7069439c 100644 --- a/src/views/system/Dictionary/components/Left/save/index.vue +++ b/src/views/system/Dictionary/components/Left/save/index.vue @@ -8,7 +8,7 @@ :maskClosable="false" :confirmLoading="loading" > - + @@ -76,9 +76,16 @@ const form = reactive({ const rules = { id: [ - { required:true,message:'请输入ID'}, - { validator: validateInput, trigger: 'blur' }, + { required:true,message:'请输入ID',trigger: 'blur' }, { max: 64, message: '最多可输入64位字符', trigger: 'change' }, + { validator: (rule: Rule, value: string) => { + // 判断是否满足执行后续验证逻辑的条件 + if (value && value.length <= 64) { + return validateInput(rule, value); + } else { + return Promise.reject(); + } + }, trigger: 'blur' }, ], name: [ { required: true, message: '请输入名称', trigger: 'blur' }, diff --git a/src/views/system/NoticeRule/components/Role/index.vue b/src/views/system/NoticeRule/components/Role/index.vue index 7188b5ed..ecba9ee3 100644 --- a/src/views/system/NoticeRule/components/Role/index.vue +++ b/src/views/system/NoticeRule/components/Role/index.vue @@ -32,6 +32,7 @@
+ -