Commit c786a7781c21cdfd63fe7b9477fb72768c816eaa
Merge branch 'fix/alarm-list-device-query' into 'main_dev'
fix: 修复告警组件设备列表查询接口变更 See merge request yunteng/thingskit-scada!196
Showing
2 changed files
with
89 additions
and
84 deletions
| 1 | 1 | <script setup lang="ts"> |
| 2 | 2 | import { Button, Divider } from 'ant-design-vue' |
| 3 | 3 | import { onMounted, ref, unref } from 'vue' |
| 4 | -import { AlarmListFieldsEnum, formSchemas } from './form.config' | |
| 4 | +import { AlarmListFieldsEnum, getFormSchemas } from './form.config' | |
| 5 | 5 | import { FormLayoutEnum } from '@/components/Form/src/enum' |
| 6 | 6 | import { BasicForm, useForm } from '@/components/Form' |
| 7 | 7 | import { useMessage } from '@/hooks/web/useMessage' |
| ... | ... | @@ -25,7 +25,7 @@ const nodeDataActinType = useNodeData({ cell: props.cell!, immediate: true }) |
| 25 | 25 | const { getNodeData, getNodeAllData, saveNodeAllData } = nodeDataActinType |
| 26 | 26 | |
| 27 | 27 | const [registerForm, formActionType] = useForm({ |
| 28 | - schemas: formSchemas, | |
| 28 | + schemas: getFormSchemas(), | |
| 29 | 29 | showActionButtonGroup: false, |
| 30 | 30 | layout: FormLayoutEnum.VERTICAL, |
| 31 | 31 | getPopupContainer: () => document.body, | ... | ... |
| 1 | 1 | import { unref } from 'vue' |
| 2 | 2 | import dayjs from 'dayjs' |
| 3 | 3 | import { TableColumnFieldEnum } from './types' |
| 4 | -import { getListByDeviceProfileIds } from '@/api/device' | |
| 4 | +import { getListByConfigurationId, getListByDeviceProfileIds } from '@/api/device' | |
| 5 | 5 | import type { DeviceItemType } from '@/api/device/model' |
| 6 | 6 | import type { FormSchema } from '@/components/Form' |
| 7 | 7 | import { ComponentEnum } from '@/components/Form/src/enum' |
| ... | ... | @@ -9,8 +9,7 @@ import { useContentDataStoreWithOut } from '@/store/modules/contentData' |
| 9 | 9 | import { DateFormatEnum } from '@/enums/timeEnum' |
| 10 | 10 | import type { BasicColumn } from '@/components/Table' |
| 11 | 11 | import { AlarmStatusEnum, type CodeTypeEnum, type ContentDataFieldsEnum } from '@/enums/datasource' |
| 12 | - | |
| 13 | -const contentDataStore = useContentDataStoreWithOut() | |
| 12 | +import { useParseParams } from '@/core/LoadData' | |
| 14 | 13 | |
| 15 | 14 | export const tableColumns: BasicColumn[] = [ |
| 16 | 15 | { |
| ... | ... | @@ -73,88 +72,94 @@ const rangePresets = [ |
| 73 | 72 | { label: '360天之前', value: [dayjs().add(-360, 'd'), dayjs()] }, |
| 74 | 73 | ] |
| 75 | 74 | |
| 76 | -export const formSchemas: FormSchema[] = [ | |
| 77 | - { | |
| 78 | - field: AlarmListFieldsEnum.DEVICE_PROFILE_ID, | |
| 79 | - label: AlarmListFieldsNameEnum.DEVICE_PROFILE_ID, | |
| 80 | - component: ComponentEnum.INPUT, | |
| 81 | - ifShow: false, | |
| 82 | - }, | |
| 83 | - { | |
| 84 | - field: AlarmListFieldsEnum.DEVICE_ID, | |
| 85 | - label: AlarmListFieldsNameEnum.DEVICE_ID, | |
| 86 | - component: ComponentEnum.API_SELECT, | |
| 87 | - required: true, | |
| 88 | - componentProps: ({ formModel }) => { | |
| 89 | - const organizationId = window.useParseParams().organizationId | |
| 90 | - if (!organizationId) return | |
| 91 | - return { | |
| 92 | - mode: 'multiple', | |
| 93 | - showSearch: true, | |
| 94 | - api: getListByDeviceProfileIds, | |
| 95 | - params: { | |
| 96 | - deviceProfileIds: unref(contentDataStore.getProductIds), | |
| 97 | - organizationId, | |
| 98 | - }, | |
| 99 | - aliasField: 'alias', | |
| 100 | - fieldNames: { label: 'name', value: 'id' }, | |
| 101 | - maxTagCount: 4, | |
| 102 | - onSelect(value: string, option: DeviceItemType) { | |
| 103 | - formModel[AlarmListFieldsEnum.DEVICE_PROFILE_ID] = value ? option.deviceProfileId : null | |
| 104 | - }, | |
| 105 | - filterOption: (inputValue: string, option: DeviceItemType) => | |
| 106 | - option.alias?.includes?.(inputValue) || option.name?.includes?.(inputValue), | |
| 107 | - } | |
| 75 | +export const getFormSchemas = (): FormSchema[] => { | |
| 76 | + const contentDataStore = useContentDataStoreWithOut() | |
| 77 | + const isTemplateLink = contentDataStore.getIsTemplateLink | |
| 78 | + return [ | |
| 79 | + { | |
| 80 | + field: AlarmListFieldsEnum.DEVICE_PROFILE_ID, | |
| 81 | + label: AlarmListFieldsNameEnum.DEVICE_PROFILE_ID, | |
| 82 | + component: ComponentEnum.INPUT, | |
| 83 | + ifShow: false, | |
| 108 | 84 | }, |
| 109 | - }, | |
| 110 | - { | |
| 111 | - field: AlarmListFieldsEnum.ALARM_LIST_QUERY_DATE, | |
| 112 | - label: AlarmListFieldsNameEnum.ALARM_LIST_QUERY_DATE, | |
| 113 | - component: ComponentEnum.RANGE_PICKER, | |
| 114 | - required: true, | |
| 115 | - componentProps: () => { | |
| 116 | - return { | |
| 117 | - showSearch: true, | |
| 118 | - format: DateFormatEnum.YYYY_MM_DD_HH_MM_SS, | |
| 119 | - presets: rangePresets, | |
| 120 | - placement: 'topRight', | |
| 121 | - showTime: true, | |
| 122 | - } | |
| 85 | + { | |
| 86 | + field: AlarmListFieldsEnum.DEVICE_ID, | |
| 87 | + label: AlarmListFieldsNameEnum.DEVICE_ID, | |
| 88 | + component: ComponentEnum.API_SELECT, | |
| 89 | + required: true, | |
| 90 | + componentProps: ({ formModel }) => { | |
| 91 | + const { organizationId, configurationId } = useParseParams() | |
| 92 | + if (!organizationId) return | |
| 93 | + return { | |
| 94 | + mode: 'multiple', | |
| 95 | + showSearch: true, | |
| 96 | + api: async (params: Recordable) => { | |
| 97 | + return isTemplateLink ? await getListByConfigurationId(configurationId!) : await getListByDeviceProfileIds(params) | |
| 98 | + }, | |
| 99 | + params: { | |
| 100 | + deviceProfileIds: unref(contentDataStore.getProductIds), | |
| 101 | + organizationId, | |
| 102 | + }, | |
| 103 | + aliasField: 'alias', | |
| 104 | + fieldNames: { label: 'name', value: 'id' }, | |
| 105 | + maxTagCount: 4, | |
| 106 | + onSelect(value: string, option: DeviceItemType) { | |
| 107 | + formModel[AlarmListFieldsEnum.DEVICE_PROFILE_ID] = value ? option.deviceProfileId : null | |
| 108 | + }, | |
| 109 | + filterOption: (inputValue: string, option: DeviceItemType) => | |
| 110 | + option.alias?.includes?.(inputValue) || option.name?.includes?.(inputValue), | |
| 111 | + } | |
| 112 | + }, | |
| 123 | 113 | }, |
| 124 | - }, | |
| 125 | - { | |
| 126 | - field: AlarmListFieldsEnum.ALARM_LIST_AUTO_PLAY, | |
| 127 | - label: AlarmListFieldsNameEnum.ALARM_LIST_AUTO_PLAY, | |
| 128 | - component: ComponentEnum.SWITCH, | |
| 129 | - required: false, | |
| 130 | - }, | |
| 131 | - { | |
| 132 | - field: AlarmListFieldsEnum.ALARM_LIST_INTERVAL, | |
| 133 | - label: AlarmListFieldsNameEnum.ALARM_LIST_INTERVAL, | |
| 134 | - component: ComponentEnum.INPUT_NUMBER, | |
| 135 | - required: false, | |
| 136 | - componentProps: { | |
| 137 | - min: 0, | |
| 114 | + { | |
| 115 | + field: AlarmListFieldsEnum.ALARM_LIST_QUERY_DATE, | |
| 116 | + label: AlarmListFieldsNameEnum.ALARM_LIST_QUERY_DATE, | |
| 117 | + component: ComponentEnum.RANGE_PICKER, | |
| 118 | + required: true, | |
| 119 | + componentProps: () => { | |
| 120 | + return { | |
| 121 | + showSearch: true, | |
| 122 | + format: DateFormatEnum.YYYY_MM_DD_HH_MM_SS, | |
| 123 | + presets: rangePresets, | |
| 124 | + placement: 'topRight', | |
| 125 | + showTime: true, | |
| 126 | + } | |
| 127 | + }, | |
| 138 | 128 | }, |
| 139 | - renderComponentContent: () => { | |
| 140 | - return { | |
| 141 | - addonAfter: () => '秒', | |
| 142 | - } | |
| 129 | + { | |
| 130 | + field: AlarmListFieldsEnum.ALARM_LIST_AUTO_PLAY, | |
| 131 | + label: AlarmListFieldsNameEnum.ALARM_LIST_AUTO_PLAY, | |
| 132 | + component: ComponentEnum.SWITCH, | |
| 133 | + required: false, | |
| 143 | 134 | }, |
| 144 | - }, | |
| 145 | - { | |
| 146 | - field: AlarmListFieldsEnum.ALARM_LIST_POLLING, | |
| 147 | - label: AlarmListFieldsNameEnum.ALARM_LIST_POLLING, | |
| 148 | - component: ComponentEnum.INPUT_NUMBER, | |
| 149 | - defaultValue: 30, | |
| 150 | - required: false, | |
| 151 | - componentProps: { | |
| 152 | - min: 1, | |
| 135 | + { | |
| 136 | + field: AlarmListFieldsEnum.ALARM_LIST_INTERVAL, | |
| 137 | + label: AlarmListFieldsNameEnum.ALARM_LIST_INTERVAL, | |
| 138 | + component: ComponentEnum.INPUT_NUMBER, | |
| 139 | + required: false, | |
| 140 | + componentProps: { | |
| 141 | + min: 0, | |
| 142 | + }, | |
| 143 | + renderComponentContent: () => { | |
| 144 | + return { | |
| 145 | + addonAfter: () => '秒', | |
| 146 | + } | |
| 147 | + }, | |
| 153 | 148 | }, |
| 154 | - renderComponentContent: () => { | |
| 155 | - return { | |
| 156 | - addonAfter: () => '秒', | |
| 157 | - } | |
| 149 | + { | |
| 150 | + field: AlarmListFieldsEnum.ALARM_LIST_POLLING, | |
| 151 | + label: AlarmListFieldsNameEnum.ALARM_LIST_POLLING, | |
| 152 | + component: ComponentEnum.INPUT_NUMBER, | |
| 153 | + defaultValue: 30, | |
| 154 | + required: false, | |
| 155 | + componentProps: { | |
| 156 | + min: 1, | |
| 157 | + }, | |
| 158 | + renderComponentContent: () => { | |
| 159 | + return { | |
| 160 | + addonAfter: () => '秒', | |
| 161 | + } | |
| 162 | + }, | |
| 158 | 163 | }, |
| 159 | - }, | |
| 160 | -] | |
| 164 | + ] | |
| 165 | +} | ... | ... |