From d8f712471faf555ece43c3794c5d812b9b477e54 Mon Sep 17 00:00:00 2001 From: qiaochuLei <124648559+qiaochuLei@users.noreply.github.com> Date: Thu, 14 Sep 2023 09:28:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20bug#18148;=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: bug#13639、17665 * fix: bug#18148 * fix: 回退上次版本 * fix: 解决合并冲突 --- .../device/Instance/Detail/EdgeMap/index.vue | 2 +- .../Detail/Info/components/Config/index.vue | 25 ++++++- .../components/EditTable/PatchMapping.vue | 9 ++- .../device/components/Metadata/Base/Base.vue | 5 +- .../components/Metadata/Base/columns.tsx | 3 +- .../Metadata/Base/components/Source.vue | 2 +- src/views/edge/Device/index.vue | 2 +- .../AccessConfig/components/Network/index.vue | 1 + src/views/media/Device/Save/index.vue | 20 +++-- .../system/DataSource/Management/index.vue | 73 ++++++++++--------- .../components/Save/components/NotifyWay.vue | 7 ++ 11 files changed, 96 insertions(+), 53 deletions(-) diff --git a/src/views/device/Instance/Detail/EdgeMap/index.vue b/src/views/device/Instance/Detail/EdgeMap/index.vue index 5c22dc13..968f2ce2 100644 --- a/src/views/device/Instance/Detail/EdgeMap/index.vue +++ b/src/views/device/Instance/Detail/EdgeMap/index.vue @@ -316,7 +316,7 @@ const handleSearch = async (_array: any[]) => { const differ = array.every((i:any)=>{ return item.metadataId !== i.metadataId }) - if(!differ){ + if(differ){ array.push(item) } }) diff --git a/src/views/device/Instance/Detail/Info/components/Config/index.vue b/src/views/device/Instance/Detail/Info/components/Config/index.vue index 141f1087..7de56f52 100644 --- a/src/views/device/Instance/Detail/Info/components/Config/index.vue +++ b/src/views/device/Instance/Detail/Info/components/Config/index.vue @@ -67,10 +67,31 @@ " >****** + + {{ + item.type.elements?.filter((i)=> + i.value === instanceStore.current?.configuration?.[ + item.property + ] + )[0].text + }} + + {{ - instanceStore.current?.configuration?.[item.property] || - '' + item.type.elements?.filter((i)=> + i.value === instanceStore.current?.configuration?.[ + item.property + ] + )[0].text }} ([]); const dataSource = ref([]); const loading = ref(false); -const handleData = (data: any[], type: string) => { +const handleData = (data: any[], type: string,provider?:string) => { data.forEach((item) => { item.key = item.id; item.title = item.name; item.checkable = type === 'collectors'; + provider ? item.provider = provider : '' if ( item.collectors && Array.isArray(item.collectors) && item.collectors.length ) { - item.children = handleData(item.collectors, 'collectors'); + item.children = handleData(item.collectors, 'collectors',item.provider); } if (item.points && Array.isArray(item.points) && item.points.length) { item.children = handleData(item.points, 'points'); @@ -134,6 +135,7 @@ const _delete = (_key: string) => { }; const handleClick = async () => { + if (!rightList.value.length) { onlyMessage('请选择采集器', 'warning'); } else { @@ -146,10 +148,11 @@ const handleClick = async () => { metadataType: 'property', metadataId: (_props.metaData as any[]).find((i: any) => i.name === element.name) ?.metadataId, - provider: _props.type + provider: item.provider })); params.push(...array); }); + const filterParms = params.filter((item) => !!item.metadataId); if (filterParms && filterParms.length !== 0) { const res = await saveMapping(_props.deviceId, _props.type, filterParms); diff --git a/src/views/device/components/Metadata/Base/Base.vue b/src/views/device/components/Metadata/Base/Base.vue index f6d98594..00355f71 100644 --- a/src/views/device/components/Metadata/Base/Base.vue +++ b/src/views/device/components/Metadata/Base/Base.vue @@ -247,6 +247,7 @@ import type { ProductItem, } from '@/views/device/Product/typings'; import type { PropType } from 'vue'; +import { TOKEN_KEY } from '@/utils/variable' import {useRouter, onBeforeRouteUpdate} from 'vue-router' import { useMetadata, useOperateLimits } from './hooks'; import {TypeStringMap, useColumns} from './columns'; @@ -259,7 +260,7 @@ import { useProductStore } from '@/store/product'; import { asyncUpdateMetadata, updateMetadata } from '../metadata'; import { useMetadataStore } from '@/store/metadata'; import { DeviceInstance } from '@/views/device/Instance/typings'; -import { onlyMessage } from '@/utils/comm'; +import { onlyMessage , LocalStore} from '@/utils/comm'; import {omit} from "lodash-es"; import { PropertiesModal, FunctionModal, EventModal, TagsModal } from './DetailModal' import { Modal } from 'jetlinks-ui-components' @@ -510,7 +511,7 @@ const handleSaveClick = async (next?: Function) => { const tabsChange = inject('tabsChange') const parentTabsChange = (next?: Function) => { - if (editStatus.value && permissionStore.hasPermission(`${props.permission}:update`)) { + if (editStatus.value && permissionStore.hasPermission(`${props.permission}:update`) && LocalStore.get(TOKEN_KEY)) { const modal = Modal.confirm({ content: '页面改动数据未保存', okText: '保存', diff --git a/src/views/device/components/Metadata/Base/columns.tsx b/src/views/device/components/Metadata/Base/columns.tsx index 36412237..fd0227f3 100644 --- a/src/views/device/components/Metadata/Base/columns.tsx +++ b/src/views/device/components/Metadata/Base/columns.tsx @@ -85,8 +85,9 @@ export const handleTypeValue = (type:string, value: any = {}) => { obj.format = value break; case 'string': + obj.maxLength = JSON.stringify(value) === '{}' ? undefined : value case 'password': - obj.maxLength = value + obj.maxLength = JSON.stringify(value) === '{}' ? undefined : value break; default: obj = value diff --git a/src/views/device/components/Metadata/Base/components/Source.vue b/src/views/device/components/Metadata/Base/components/Source.vue index fc892971..020907ec 100644 --- a/src/views/device/components/Metadata/Base/components/Source.vue +++ b/src/views/device/components/Metadata/Base/components/Source.vue @@ -236,7 +236,7 @@ const confirm = async () => { // } // } const resetRules = async() =>{ - let res:any = await resetRule(instanceStore.current?.productId,instanceStore.current?.id,props.value?.id) + let res:any = await resetRule(instanceStore.current?.productId,instanceStore.current?.id,[props.value?.id]) if(res.status === 200){ onlyMessage('操作成功!') } diff --git a/src/views/edge/Device/index.vue b/src/views/edge/Device/index.vue index e6abbfaa..0acd4d41 100644 --- a/src/views/edge/Device/index.vue +++ b/src/views/edge/Device/index.vue @@ -101,7 +101,7 @@ :key="i" > 新增 diff --git a/src/views/media/Device/Save/index.vue b/src/views/media/Device/Save/index.vue index 21d6a7f3..3ce0bd4e 100644 --- a/src/views/media/Device/Save/index.vue +++ b/src/views/media/Device/Save/index.vue @@ -426,20 +426,24 @@ const handleSubmit = () => { formRef.value ?.validate() .then(async () => { - const resq:any = await DeviceApi.validateId(id) - if(resq.status === 200 && resq?.result?.passed){ btnLoading.value = true; - const res = !route.query.id - ? await DeviceApi.save(params) - : await DeviceApi.update(params); + let res; + if(!route.query.id){ + const resp:any = await DeviceApi.validateId(id) + if(resp.status === 200 && resp?.result?.passed){ + res = await DeviceApi.save(params) + }else{ + notification.error({ key: 'error', message: '设备ID已重复'}) + } + }else{ + res = await DeviceApi.update(params); + } if (res?.success) { onlyMessage('保存成功'); history.back(); } - }else{ - notification.error({ key: 'error', message: '设备ID已重复'}) } - }) + ) .catch((err: any) => { console.log('err: ', err); }) diff --git a/src/views/system/DataSource/Management/index.vue b/src/views/system/DataSource/Management/index.vue index 999784d8..bd8f023a 100644 --- a/src/views/system/DataSource/Management/index.vue +++ b/src/views/system/DataSource/Management/index.vue @@ -9,41 +9,43 @@ style="margin-bottom: 24px" /> - - + +
@@ -507,7 +509,10 @@ const checkName = (_: any, value: any) => box-sizing: border-box; width:300px; height:100%; - overflow-y: auto; + .tree{ + max-height: 680px; + overflow-y: auto; + } } .right { width: calc(100% - 280px); diff --git a/src/views/system/NoticeRule/components/Save/components/NotifyWay.vue b/src/views/system/NoticeRule/components/Save/components/NotifyWay.vue index 930f2e67..ff093d3b 100644 --- a/src/views/system/NoticeRule/components/Save/components/NotifyWay.vue +++ b/src/views/system/NoticeRule/components/Save/components/NotifyWay.vue @@ -73,6 +73,13 @@ onMounted(() => { emit('update:value', options.value?.[0]?.value); emit('update:name', options.value?.[0]?.label); emit('change', {label: options.value?.[0]?.label, value: options.value?.[0]?.value}); + }else{ + options.value.find((item:any)=>{ + if(item.value === props.value){ + emit('update:name',item.label) + return true + } + }) } } loading.value = false; From 566df47ce8c348ecee2b6fe555973e4a40d47f4e Mon Sep 17 00:00:00 2001 From: qiaochuLei <124648559+qiaochuLei@users.noreply.github.com> Date: Wed, 20 Sep 2023 10:04:14 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E8=BE=B9=E7=BC=98=E7=AB=AF=E6=98=A0?= =?UTF-8?q?=E5=B0=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 物联网卡首页图片加载失败 * fix: 边缘端映射bug --- .../device/Instance/Detail/EdgeMap/index.vue | 84 ++++++++++--------- .../Detail/Info/components/Config/index.vue | 11 +-- src/views/device/Product/index.vue | 6 -- src/views/home/components/BootCardSmall.vue | 2 +- .../system/DataSource/Management/index.vue | 3 +- vite.config.ts | 3 +- 6 files changed, 54 insertions(+), 55 deletions(-) diff --git a/src/views/device/Instance/Detail/EdgeMap/index.vue b/src/views/device/Instance/Detail/EdgeMap/index.vue index 968f2ce2..1ab47757 100644 --- a/src/views/device/Instance/Detail/EdgeMap/index.vue +++ b/src/views/device/Instance/Detail/EdgeMap/index.vue @@ -210,6 +210,7 @@ import PatchMapping from './PatchMapping.vue'; import { onlyMessage } from '@/utils/comm'; import { cloneDeep } from 'lodash-es'; import { usePermissionStore } from '@/store/permission'; +import { dataTool } from 'echarts'; const columns = [ { title: '名称', @@ -250,6 +251,7 @@ const columns = [ const permissionStore = usePermissionStore(); +const data:any = ref([]) const isPermission = permissionStore.hasPermission('device/Instance:update'); const current = ref(1); @@ -260,10 +262,11 @@ const metadata = JSON.parse(instanceStore.current?.metadata || '{}'); const loading = ref(false); const channelList = ref([]); -const _properties = computed(() => { - const _cur = current.value >= 1 ? current.value : 1; - return metadata.properties?.slice((_cur - 1) * 10, _cur * 10) || []; -}); +// const _properties = computed(() => { +// const _cur = current.value >= 1 ? current.value : 1; +// const _pageSize = pageSize.value +// return metadata.properties?.slice((_cur - 1) * _pageSize, _cur * _pageSize) || []; +// }); const modelRef = reactive<{ dataSource: any[]; @@ -287,14 +290,21 @@ const getChannel = async () => { } }; -const handleSearch = async (_array: any[]) => { +const handleSearch = async () => { loading.value = true; - const _metadata: any[] = _array.map((item: any) => ({ - metadataId: item.id, - metadataName: `${item.name}(${item.id})`, - metadataType: 'property', - name: item.name, - })); + const _metadataMap = new Map () + const _metadata: any[] = metadata.properties.map((item: any) => { + const value = { + metadataId: item.id, + metadataName: `${item.name}(${item.id})`, + metadataType: 'property', + name: item.name, + } + _metadataMap.set(item.id,value) + return value + }); + + if (_metadata && _metadata.length) { const resp: any = await getEdgeMap( instanceStore.current?.parentId || '', @@ -307,32 +317,25 @@ const handleSearch = async (_array: any[]) => { loading.value = false; }); if (resp.status === 200) { - const array = _metadata.map((item: any) => { - const metadataId = resp.result?.[0].find((x: any) => x.metadataId === item.metadataId); - Object.assign(item, metadataId); - return item - }) - resp.result?.[0].forEach((item:any)=>{ - const differ = array.every((i:any)=>{ - return item.metadataId !== i.metadataId - }) - if(differ){ - array.push(item) - } - }) - // const array = resp.result?.[0].reduce((x: any, y: any) => { - // const metadataId = _metadata.find( - // (item: any) => item.metadataId === y.metadataId, - // ); - // if (metadataId) { - // Object.assign(metadataId, y); - // } else { - // x.push(y); + // const array = _metadata.map((item: any) => { + // const metadataId = resp.result?.[0].find((x: any) => x.metadataId === item.metadataId); + // Object.assign(item, metadataId); + // return item + // }) + // resp.result?.[0].forEach((item:any)=>{ + // const differ = array.every((i:any)=>{ + // return item.metadataId !== i.metadataId + // }) + // if(differ){ + // array.push(item) // } - // return x; - // }, _metadata); - console.log(array) - modelRef.dataSource = array; + // }) + + resp.result?.[0].forEach((item:any)=>{ + _metadataMap.has(item.metadataId) ? _metadataMap.set(item.metadataId,Object.assign(_metadataMap.get(item.metadataId),item)) : _metadataMap.set(item.metadataId,item) + }) + data.value = [..._metadataMap.values()] + onPageChange() } } loading.value = false; @@ -350,7 +353,7 @@ const unbind = async (id: string) => { ); if (resp.status === 200) { onlyMessage('操作成功!', 'success'); - handleSearch(_properties.value); + handleSearch(); } } }; @@ -371,11 +374,14 @@ const onChannelChange = (_index: number, type: 'collector' | 'channel') => { onMounted(() => { getChannel(); - handleSearch(_properties.value); + handleSearch(); }); const onPageChange = () => { - handleSearch(_properties.value); + const _cur = current.value >= 1 ? current.value : 1; + const _pageSize = pageSize.value + const array = data.value.slice((_cur - 1) * _pageSize, _cur * _pageSize) || []; + modelRef.dataSource = array; }; const onSave = () => { diff --git a/src/views/device/Instance/Detail/Info/components/Config/index.vue b/src/views/device/Instance/Detail/Info/components/Config/index.vue index 7de56f52..7fd6e1d2 100644 --- a/src/views/device/Instance/Detail/Info/components/Config/index.vue +++ b/src/views/device/Instance/Detail/Info/components/Config/index.vue @@ -69,11 +69,11 @@ > {{ - item.type.elements?.filter((i)=> + item.type.elements?.find((i)=> i.value === instanceStore.current?.configuration?.[ item.property ] - )[0].text + )?.text || '' }} {{ - item.type.elements?.filter((i)=> - i.value === instanceStore.current?.configuration?.[ - item.property - ] - )[0].text + instanceStore.current?.configuration?.[item.property] || + '' }} { onlyMessage('文件内容不能为空','error') return false; } - try { const data = JSON.parse(text); // 设置导入的产品状态为未发布 data.state = 0; - if (Array.isArray(data)) { onlyMessage('请上传正确格式文件', 'error'); return false; @@ -418,10 +416,6 @@ const beforeUpload = (file: any) => { tableRef.value?.reload(); } return true; - } catch(e) { - onlyMessage('请上传正确格式文件', 'error'); - } - return true; }; return false; }; diff --git a/src/views/home/components/BootCardSmall.vue b/src/views/home/components/BootCardSmall.vue index 49995b67..52b6bc8f 100644 --- a/src/views/home/components/BootCardSmall.vue +++ b/src/views/home/components/BootCardSmall.vue @@ -17,7 +17,7 @@
- +
diff --git a/src/views/system/DataSource/Management/index.vue b/src/views/system/DataSource/Management/index.vue index bd8f023a..c3a1e21b 100644 --- a/src/views/system/DataSource/Management/index.vue +++ b/src/views/system/DataSource/Management/index.vue @@ -95,6 +95,7 @@ ]" > @@ -510,7 +511,7 @@ const checkName = (_: any, value: any) => width:300px; height:100%; .tree{ - max-height: 680px; + height: 680px; overflow-y: auto; } } diff --git a/vite.config.ts b/vite.config.ts index f58bbf87..2c89d95c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -96,8 +96,9 @@ export default defineConfig(({ mode}) => { // target: 'http://192.168.32.244:8881', // target: 'http://192.168.32.163:8844', //张季本地 // target: 'http://120.77.179.54:8844', // 120测试 - target: 'http://192.168.33.46:8844', // 本地开发环境 + // target: 'http://192.168.33.46:8844', // 本地开发环境 // target: 'http://192.168.32.5:8848', // 刘本地 + target: 'http://192.168.32.187:8844', // 刘本地 ws: 'ws://192.168.33.46:8844', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') From 1b4ebe5297505f293059fae6c866d8832e60ae2f Mon Sep 17 00:00:00 2001 From: XieYongHong <18010623010@163.com> Date: Wed, 20 Sep 2023 13:45:45 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=BD=8E=E7=A0=81?= =?UTF-8?q?=E5=9B=9E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/iframe/index.vue | 11 +++++++++-- vite.config.ts | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/views/iframe/index.vue b/src/views/iframe/index.vue index ecead7ec..5a43002a 100644 --- a/src/views/iframe/index.vue +++ b/src/views/iframe/index.vue @@ -1,19 +1,23 @@ -