From 257765cb50d8574e2d4791e490597f0d72bacac0 Mon Sep 17 00:00:00 2001 From: JiangQiming <291854119@qq.com> Date: Thu, 9 Mar 2023 15:16:22 +0800 Subject: [PATCH 1/4] =?UTF-8?q?update:=20=E7=BB=84=E4=BB=B6=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E8=87=AA=E6=B5=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/RadioCard/index.vue | 13 +++++- src/views/media/DashBoard/components/Card.vue | 14 +++--- src/views/media/Device/Channel/Save.vue | 43 ++++++++++++++++++- src/views/media/Device/index.vue | 9 ++-- 4 files changed, 66 insertions(+), 13 deletions(-) diff --git a/src/components/RadioCard/index.vue b/src/components/RadioCard/index.vue index eb07f433..4efbc621 100644 --- a/src/components/RadioCard/index.vue +++ b/src/components/RadioCard/index.vue @@ -16,10 +16,11 @@ disabled && myValue === item.value ? 'active-checked-disabled' : '', + item.disabled ? 'disabled' : '', ]" v-for="(item, index) in options" :key="index" - @click="myValue = item.value" + @click="handleRadio(item)" > {{ item.label }} @@ -86,6 +87,11 @@ const myValue = computed({ } }, }); + +const handleRadio = (item: any) => { + if (item.disabled) return; + myValue.value = item.value; +}; diff --git a/src/components/index.ts b/src/components/index.ts index a41944b2..f27cd374 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,5 +1,5 @@ import type { App } from 'vue' -import AIcon from './AIcon' +// import AIcon from './AIcon' import PermissionButton from './PermissionButton/index.vue' import JTable from './Table/index' import TitleComponent from "./TitleComponent/index.vue"; @@ -10,7 +10,7 @@ import NormalUpload from './NormalUpload/index.vue' import FileFormat from './FileFormat/index.vue' import JProUpload from './JUpload/index.vue' import { BasicLayoutPage, BlankLayoutPage } from './Layout' -import { PageContainer } from 'jetlinks-ui-components' +import { PageContainer, AIcon } from 'jetlinks-ui-components' import Ellipsis from './Ellipsis/index.vue' import JEmpty from './Empty/index.vue' import AMapComponent from './AMapComponent/index.vue' diff --git a/src/views/rule-engine/Scene/Save/components/DropdownButton.vue b/src/views/rule-engine/Scene/Save/components/DropdownButton.vue deleted file mode 100644 index 36de7ff3..00000000 --- a/src/views/rule-engine/Scene/Save/components/DropdownButton.vue +++ /dev/null @@ -1,153 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/DropdownButton/DropdownButton.vue b/src/views/rule-engine/Scene/Save/components/DropdownButton/DropdownButton.vue new file mode 100644 index 00000000..52992e07 --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/DropdownButton/DropdownButton.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/DropdownButton/Menus.vue b/src/views/rule-engine/Scene/Save/components/DropdownButton/Menus.vue new file mode 100644 index 00000000..0a48897a --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/DropdownButton/Menus.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/DropdownButton/Time.vue b/src/views/rule-engine/Scene/Save/components/DropdownButton/Time.vue new file mode 100644 index 00000000..ab9a7983 --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/DropdownButton/Time.vue @@ -0,0 +1,89 @@ + + + + + \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/DropdownButton/index.less b/src/views/rule-engine/Scene/Save/components/DropdownButton/index.less new file mode 100644 index 00000000..359d9041 --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/DropdownButton/index.less @@ -0,0 +1,44 @@ +.dropdown-button { + display: flex; + align-items: center; + padding: 6px 8px; + border: 1px solid #d9d9d9; + border-radius: 8px; + cursor: pointer; +} + +.scene-select-content { + position: relative; + min-width: 220px; + padding: 4px; + background: #fff; + border-radius: 2px; + box-shadow: 0 3px 6px -4px #0000001f, 0 6px 16px #00000014, 0 9px 28px 8px #0000000d; +} + +.column { + color: #00a4fe; + background-color: rgba(154, 219, 255, 0.3); + border-color: rgba(0, 164, 254, 0.3); +} + +.termType { + color: #2f54eb; + background-color: rgba(163, 202, 255, 0.3); + border-color: rgba(47, 84, 235, 0.3); +} + +.value { + color: #692ca7; + background-color: rgba(188, 125, 238, 0.1); + border-color: rgba(188, 125, 238, 0.5); +} + +.type { + padding: 5px 10px; +} + +.tree-title-description { + padding-left: 5px; + color: grey; +} \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/DropdownButton/index.ts b/src/views/rule-engine/Scene/Save/components/DropdownButton/index.ts new file mode 100644 index 00000000..214d6ef1 --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/DropdownButton/index.ts @@ -0,0 +1,9 @@ +import Dropdown from './DropdownButton.vue' +import DropdownMenus from './Menus.vue' +import DropdownTimePicker from './Time.vue' + +export default Dropdown + +export { + DropdownMenus, DropdownTimePicker +} \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/DropdownButton/util.ts b/src/views/rule-engine/Scene/Save/components/DropdownButton/util.ts new file mode 100644 index 00000000..ba64375e --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/DropdownButton/util.ts @@ -0,0 +1,42 @@ +export type DropdownButtonOptions = { + label: string; + value: string; + children?: DropdownButtonOptions[]; + [key: string]: any; +}; + +export const getComponent = (type: string): string => { + switch (type) { + case 'int': + case 'long': + case 'float': + case 'double': + return 'number' + case 'metric': + case 'enum': + case 'boolean': + return 'menu' + case 'date': + return 'date' + case 'tree': + return 'tree' + default: + return 'input' + } +} + +export const getOption = (data: any[], value?: string | number | boolean, key: string = 'name'): DropdownButtonOptions | any => { + let option = {} + if (!value) return option + for (let i = 0; i < data.length; i++) { + const item = data[i] + if (item[key] === value) { + option = data[i] + break + } else if (item.children && item.children.length){ + option = getOption(item.children, value, key) + if (option) break + } + } + return option +} \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/ParamsDropdown.vue b/src/views/rule-engine/Scene/Save/components/ParamsDropdown.vue deleted file mode 100644 index bc101782..00000000 --- a/src/views/rule-engine/Scene/Save/components/ParamsDropdown.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/ParamsDropdown/Double.vue b/src/views/rule-engine/Scene/Save/components/ParamsDropdown/Double.vue new file mode 100644 index 00000000..79c03073 --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/ParamsDropdown/Double.vue @@ -0,0 +1,49 @@ + + + + + \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/ParamsDropdown/index.ts b/src/views/rule-engine/Scene/Save/components/ParamsDropdown/index.ts new file mode 100644 index 00000000..dca9540f --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/ParamsDropdown/index.ts @@ -0,0 +1,8 @@ +import ParamsDropdown from './index.vue' +import DoubleParamsDropdown from './Double.vue' + +export default ParamsDropdown + +export { + DoubleParamsDropdown +} \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/ParamsDropdown/index.vue b/src/views/rule-engine/Scene/Save/components/ParamsDropdown/index.vue new file mode 100644 index 00000000..65010591 --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/ParamsDropdown/index.vue @@ -0,0 +1,159 @@ + + + + + \ No newline at end of file diff --git a/src/views/rule-engine/Scene/Save/components/ParamsDropdown/typings.ts b/src/views/rule-engine/Scene/Save/components/ParamsDropdown/typings.ts new file mode 100644 index 00000000..dfbf0a62 --- /dev/null +++ b/src/views/rule-engine/Scene/Save/components/ParamsDropdown/typings.ts @@ -0,0 +1,58 @@ +import type { PropType } from 'vue' + +export type LabelType = string | number | undefined + +export type DropdownButtonOptions = { + label: string; + value: string; + children?: DropdownButtonOptions[]; + [key: string]: any; +}; + +export type TabsOption = { + label: string; + key: string; + component: string, + options: DropdownButtonOptions[] +} +type ValueArrayType = [string, number] +export type ValueType = string | number | undefined | ValueArrayType + +export const defaultSetting = { + icon: { + type: String, + default: '' + }, + placeholder: { + type: String, + default: undefined + }, + value: { + type: [String, Number, Array] as PropType, + default: undefined + }, + valueName: { + type: String, + default: 'value' + }, + labelName: { + type: String, + default: 'label' + }, + source: { + type: String, + default: 'fixed' + }, + options: { + type: Array as PropType>, + default: () => [] + }, + metricOptions: { // 指标值 + type: Array as PropType>, + default: () => [] + }, + tabsOptions: { + type: Array as PropType>, + default: () => [] + } +} diff --git a/src/views/rule-engine/Scene/Save/components/Terms/ParamsItem.vue b/src/views/rule-engine/Scene/Save/components/Terms/ParamsItem.vue index 60c55ac2..fa8d0d84 100644 --- a/src/views/rule-engine/Scene/Save/components/Terms/ParamsItem.vue +++ b/src/views/rule-engine/Scene/Save/components/Terms/ParamsItem.vue @@ -16,8 +16,11 @@ @mouseout='mouseout' > - - - + +
-
+
@@ -48,7 +74,9 @@ + + \ No newline at end of file diff --git a/src/views/device/Instance/Detail/ChildDevice/EdgeMap/PatchMapping.vue b/src/views/device/Instance/Detail/ChildDevice/EdgeMap/PatchMapping.vue new file mode 100644 index 00000000..e28e2733 --- /dev/null +++ b/src/views/device/Instance/Detail/ChildDevice/EdgeMap/PatchMapping.vue @@ -0,0 +1,212 @@ + + + + + \ No newline at end of file diff --git a/src/views/device/Instance/Detail/ChildDevice/EdgeMap/index.vue b/src/views/device/Instance/Detail/ChildDevice/EdgeMap/index.vue new file mode 100644 index 00000000..6d3434ac --- /dev/null +++ b/src/views/device/Instance/Detail/ChildDevice/EdgeMap/index.vue @@ -0,0 +1,337 @@ + + + + + \ No newline at end of file diff --git a/src/views/device/Instance/Detail/ChildDevice/SaveChild/index.vue b/src/views/device/Instance/Detail/ChildDevice/SaveChild/index.vue new file mode 100644 index 00000000..acabb451 --- /dev/null +++ b/src/views/device/Instance/Detail/ChildDevice/SaveChild/index.vue @@ -0,0 +1,106 @@ + + + + \ No newline at end of file diff --git a/src/views/device/Instance/Detail/ChildDevice/index.vue b/src/views/device/Instance/Detail/ChildDevice/index.vue index 214a9491..14c50cdc 100644 --- a/src/views/device/Instance/Detail/ChildDevice/index.vue +++ b/src/views/device/Instance/Detail/ChildDevice/index.vue @@ -1,91 +1,113 @@ @@ -97,11 +119,17 @@ import { useInstanceStore } from '@/store/instance'; import { storeToRefs } from 'pinia'; import { message } from 'ant-design-vue'; import BindChildDevice from './BindChildDevice/index.vue'; +import { usePermissionStore } from '@/store/permission'; +import SaveChild from './SaveChild/index.vue'; const instanceStore = useInstanceStore(); const { detail } = storeToRefs(instanceStore); const router = useRouter(); - +const childVisible = ref(false); +const permissionStore = usePermissionStore(); +// watchEffect(() => { +// console.log(detail.value); +// }); const statusMap = new Map(); statusMap.set('online', 'success'); statusMap.set('offline', 'error'); @@ -111,6 +139,7 @@ const childDeviceRef = ref>({}); const params = ref>({}); const _selectedRowKeys = ref([]); const visible = ref(false); +const current = ref({}); const columns = [ { @@ -192,7 +221,7 @@ const getActions = (data: Partial>): ActionsType[] => { }, }, { - key: 'unbind', + key: 'action', text: '解绑', tooltip: { title: '解绑', @@ -215,6 +244,18 @@ const getActions = (data: Partial>): ActionsType[] => { }, }, }, + { + key: 'update', + text: '编辑', + tooltip: { + title: '编辑', + }, + icon: 'EditOutlined', + onClick: () => { + current.value = data; + childVisible.value = true; + }, + }, ]; }; @@ -252,6 +293,10 @@ const closeBindDevice = (val: boolean) => { childDeviceRef.value?.reload(); } }; + +const closeChildSave = () => { + childVisible.value = false; +};