From 135f1626f7952f5783ccf081378eb0167c278e20 Mon Sep 17 00:00:00 2001 From: 100011797 <2642441182@qq.com> Date: Fri, 14 Jul 2023 16:42:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Layout/components/NoticeInfo.vue | 1 + .../Layout/components/NoticeItem.vue | 8 ++ .../Northbound/AliCloud/Detail/index.vue | 72 ++++++++------ src/views/Northbound/DuerOS/Detail/index.vue | 26 +++-- .../Northbound/components/MSelect/index.vue | 3 +- .../Detail/Running/Property/ValueRender.vue | 4 +- .../Metadata/Base/components/Source.vue | 97 ++++++++++--------- .../action/Notify/VariableDefinitions.vue | 2 +- .../Scene/Save/action/Notify/index.vue | 1 + 9 files changed, 123 insertions(+), 91 deletions(-) diff --git a/src/components/Layout/components/NoticeInfo.vue b/src/components/Layout/components/NoticeInfo.vue index 60172786..7c3fffcf 100644 --- a/src/components/Layout/components/NoticeInfo.vue +++ b/src/components/Layout/components/NoticeInfo.vue @@ -20,6 +20,7 @@ @@ -275,7 +277,6 @@ v-if="modelRef.mappings.length" :activeKey="activeKey" @change="onCollChange" - > @@ -481,13 +485,16 @@ import _ from 'lodash'; import { onlyMessage } from '@/utils/comm'; import MSelect from '../../components/MSelect/index.vue'; import { _deploy } from '@/api/device/product'; +import { usePermissionStore } from '@/store/permission'; const router = useRouter(); const route = useRoute(); const formRef = ref(); -const _error = ref(''); -const _set = new Set() +const _errorSet = ref>(new Set()); + +const hasPermission = usePermissionStore().hasPermission; +const productPermission = () => hasPermission(`device/Product:action`); const modelRef = reactive({ id: undefined, @@ -587,33 +594,34 @@ const onCollChange = (_key: string[]) => { activeKey.value = _key; }; -const onActiveProduct = () => { - const arr = [..._set].map(async (i: any) => { - return await _deploy(i) - }) - Promise.all(arr).then((res) => { - if(res.map(i => i?.status === 200).length === _set.size) { - onlyMessage('操作成功!') - _error.value = '' +const _error = computed(() => { + return _errorSet.value.size ? `当前选择的部分产品为禁用状态` : '' +}) + +const onActiveProduct = async () => { + [..._errorSet.value.values()].forEach(async (i: any) => { + const resp = await _deploy(i).catch((error) => { + onlyMessage('操作失败', 'error'); + }); + if(resp?.status === 200) { + _errorSet.value.delete(i) + onlyMessage('操作成功!'); } - _set.clear() - }).catch((error) => { - onlyMessage('操作失败', 'error') - }) + }); + await getProduct(); }; +const onPlatError = (val: any) => { + const _item = productList.value.find((item) => item.id === val); + if (val && _item && !_item?.state) { + _errorSet.value.add(val) + } +}; const _validator = (_rule: any, value: string): Promise => new Promise((resolve, reject) => { const _item = productList.value.find((item) => item.id === value); if (!_item) { return reject('关联产品已被删除,请重新选择'); - } else { - if (!_item?.state) { - _set.add(value) - _error.value = `当前选择的部分产品为禁用状态`; - } else { - _error.value = ''; - } } return resolve(''); }); @@ -661,7 +669,9 @@ watch( getAliyunProduct(_data?.accessConfig); } Object.assign(modelRef, _data); - activeKey.value = (_data?.mappings || []).map((_: any, index: number) => index) + activeKey.value = (_data?.mappings || []).map( + (_: any, index: number) => index, + ); } }, { immediate: true, deep: true }, diff --git a/src/views/Northbound/DuerOS/Detail/index.vue b/src/views/Northbound/DuerOS/Detail/index.vue index 727f3a67..31577fa8 100644 --- a/src/views/Northbound/DuerOS/Detail/index.vue +++ b/src/views/Northbound/DuerOS/Detail/index.vue @@ -7,7 +7,7 @@
@@ -26,14 +26,16 @@ " >{{ _error }} - - 立即启用 - + 立即启用 +
@@ -461,7 +463,9 @@ " type="target" :options=" - getProductProperties(item.target) + getProductProperties( + item.target, + ) " /> @@ -547,12 +551,16 @@ import { useMenuStore } from '@/store/menu'; import { onlyMessage } from '@/utils/comm'; import MSelect from '../../components/MSelect/index.vue'; import { _deploy } from '@/api/device/product'; +import { usePermissionStore } from '@/store/permission'; const menuStory = useMenuStore(); const route = useRoute(); const formRef = ref(); +const hasPermission = usePermissionStore().hasPermission; +const productPermission = () => hasPermission(`device/Product:action`); + const modelRef = reactive({ id: undefined, name: undefined, diff --git a/src/views/Northbound/components/MSelect/index.vue b/src/views/Northbound/components/MSelect/index.vue index 5b99b916..8155a30d 100644 --- a/src/views/Northbound/components/MSelect/index.vue +++ b/src/views/Northbound/components/MSelect/index.vue @@ -39,7 +39,7 @@ const props = defineProps({ } }) -const emits = defineEmits(['update:value', 'change']); +const emits = defineEmits(['update:value', 'change', 'error']); const formItemContext = Form.useInjectFormItemContext() @@ -65,6 +65,7 @@ watchEffect(() => { if(props.value){ formTouchOff() } + emits('error', props.value) } }) diff --git a/src/views/device/Instance/Detail/Running/Property/ValueRender.vue b/src/views/device/Instance/Detail/Running/Property/ValueRender.vue index c239b737..1731fffc 100644 --- a/src/views/device/Instance/Detail/Running/Property/ValueRender.vue +++ b/src/views/device/Instance/Detail/Running/Property/ValueRender.vue @@ -86,7 +86,9 @@ " :class="valueClass" > - {{ JSON.stringify(value?.formatValue) }} +
+ {{ JSON.stringify(value?.formatValue) }} +
diff --git a/src/views/device/components/Metadata/Base/components/Source.vue b/src/views/device/components/Metadata/Base/components/Source.vue index 92c35110..dec3128a 100644 --- a/src/views/device/components/Metadata/Base/components/Source.vue +++ b/src/views/device/components/Metadata/Base/components/Source.vue @@ -8,32 +8,37 @@ :disabled="disabled" > - - - - - - + + + + + +