From 75eca7d0dc17a17313d6e0f4ad6f174ed1a18a43 Mon Sep 17 00:00:00 2001 From: xieyonghong <18010623010@163.com> Date: Thu, 9 Mar 2023 15:19:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=BA=E6=99=AF=E8=81=94=E5=8A=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0ParamsDropdown=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/jetlinks.ts | 2 +- src/components/ValueItem/index.vue | 31 ++++ src/components/index.ts | 4 +- .../Scene/Save/components/DropdownButton.vue | 153 ----------------- .../DropdownButton/DropdownButton.vue | 143 ++++++++++++++++ .../Save/components/DropdownButton/Menus.vue | 81 +++++++++ .../Save/components/DropdownButton/Time.vue | 89 ++++++++++ .../Save/components/DropdownButton/index.less | 44 +++++ .../Save/components/DropdownButton/index.ts | 9 + .../Save/components/DropdownButton/util.ts | 42 +++++ .../Scene/Save/components/ParamsDropdown.vue | 13 -- .../Save/components/ParamsDropdown/Double.vue | 49 ++++++ .../Save/components/ParamsDropdown/index.ts | 8 + .../Save/components/ParamsDropdown/index.vue | 159 ++++++++++++++++++ .../Save/components/ParamsDropdown/typings.ts | 58 +++++++ .../Save/components/Terms/ParamsItem.vue | 79 ++++++--- .../Scene/Save/components/Terms/Terms.vue | 22 +-- .../Scene/Save/components/Terms/TermsItem.vue | 4 +- .../Scene/Save/components/Terms/util.ts | 3 +- vite.config.ts | 1 - 20 files changed, 786 insertions(+), 208 deletions(-) delete mode 100644 src/views/rule-engine/Scene/Save/components/DropdownButton.vue create mode 100644 src/views/rule-engine/Scene/Save/components/DropdownButton/DropdownButton.vue create mode 100644 src/views/rule-engine/Scene/Save/components/DropdownButton/Menus.vue create mode 100644 src/views/rule-engine/Scene/Save/components/DropdownButton/Time.vue create mode 100644 src/views/rule-engine/Scene/Save/components/DropdownButton/index.less create mode 100644 src/views/rule-engine/Scene/Save/components/DropdownButton/index.ts create mode 100644 src/views/rule-engine/Scene/Save/components/DropdownButton/util.ts delete mode 100644 src/views/rule-engine/Scene/Save/components/ParamsDropdown.vue create mode 100644 src/views/rule-engine/Scene/Save/components/ParamsDropdown/Double.vue create mode 100644 src/views/rule-engine/Scene/Save/components/ParamsDropdown/index.ts create mode 100644 src/views/rule-engine/Scene/Save/components/ParamsDropdown/index.vue create mode 100644 src/views/rule-engine/Scene/Save/components/ParamsDropdown/typings.ts diff --git a/plugin/jetlinks.ts b/plugin/jetlinks.ts index 6edf3d95..47286c81 100644 --- a/plugin/jetlinks.ts +++ b/plugin/jetlinks.ts @@ -100,7 +100,7 @@ const matchComponents: IMatcher[] = [ }, { pattern: /^TimePicker|^TimeRangePicker/, - styleDir: 'TimeTicker' + styleDir: 'TimePicker' }, { pattern: /^Radio/, diff --git a/src/components/ValueItem/index.vue b/src/components/ValueItem/index.vue index 06bceb58..938e1132 100644 --- a/src/components/ValueItem/index.vue +++ b/src/components/ValueItem/index.vue @@ -7,6 +7,15 @@ :options="options" allowClear style="width: 100%" + @change='selectChange' + /> + @@ -60,6 +72,7 @@ type="text" v-model:value="myValue" style="width: 100%" + @change='inputChange' /> @@ -92,6 +105,7 @@ import { FILE_UPLOAD } from '@/api/comm'; type Emits = { (e: 'update:modelValue', data: string | number | boolean): void; + (e: 'change', data: any, item?: any): void; }; const emit = defineEmits(); @@ -169,6 +183,23 @@ const handleFileChange = (info: UploadChangeParam>) => { emit('update:modelValue', url); } }; + +const selectChange = (e: string, option: any) => { + emit('change', e, option) +} + +const timeChange = (e: any) => { + emit('change', e) +} + +const inputChange = (e: any) => { + emit('change', e.target.value) +} + +const dateChange = (e: any) => { + emit('change', e) +} + 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 @@ - - - - - {{ label }} - - - - - - {{ item.label }} - - - - - - - - - - - - - \ 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 @@ + + + + + {{ label }} + + + + + + + + + + + {{ name }} + {{ description }} + + + + + + + + + + + + + + + + \ 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 @@ + + + + {{ item.label }} + + + + + + + \ 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 @@ + + + + + {{ label }} + + + + + + + + + + + + + {{ name }} + {{ description }} + + + + + + + + + + + + + + \ 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 @@