Commit 92b5c14e5b9b63934f5ee20ba6c5f55626904854
Merge branch 'main_dev' of http://git.yunteng.com/yunteng/thingskit-front into f…
…eat/device-new-protocol
Showing
48 changed files
with
349 additions
and
176 deletions
| @@ -8,7 +8,7 @@ VITE_GLOB_PUBLIC_PATH = / | @@ -8,7 +8,7 @@ VITE_GLOB_PUBLIC_PATH = / | ||
| 8 | # Please note that no line breaks | 8 | # Please note that no line breaks |
| 9 | 9 | ||
| 10 | # 本地 | 10 | # 本地 |
| 11 | -VITE_PROXY = [["/api","http://localhost:8080/api"],["/thingskit-scada","http://localhost:3000/"],["/large-designer", "http://localhost:5555/large-designer/"]] | 11 | +VITE_PROXY = [["/api","http://localhost:8080/api"],["/thingskit-scada","http://localhost:5173/thingskit-scada"],["/large-designer", "http://localhost:5555/large-designer/"]] |
| 12 | 12 | ||
| 13 | # 实时数据的ws地址 | 13 | # 实时数据的ws地址 |
| 14 | VITE_GLOB_WEB_SOCKET = ws://localhost:8080/api/ws/plugins/telemetry?token= | 14 | VITE_GLOB_WEB_SOCKET = ws://localhost:8080/api/ws/plugins/telemetry?token= |
| @@ -8,6 +8,8 @@ export interface ConfigurationCenterItemsModal { | @@ -8,6 +8,8 @@ export interface ConfigurationCenterItemsModal { | ||
| 8 | remark: string; | 8 | remark: string; |
| 9 | publicId?: string; | 9 | publicId?: string; |
| 10 | organizationId?: string; | 10 | organizationId?: string; |
| 11 | + platform?: string; | ||
| 12 | + productIds?: string; | ||
| 11 | } | 13 | } |
| 12 | export type queryPageParams = BasicPageParams & { | 14 | export type queryPageParams = BasicPageParams & { |
| 13 | name?: Nullable<string>; | 15 | name?: Nullable<string>; |
| @@ -45,7 +45,7 @@ enum DeviceManagerApi { | @@ -45,7 +45,7 @@ enum DeviceManagerApi { | ||
| 45 | DEVICE_PUBLIC = '/customer/public/device', | 45 | DEVICE_PUBLIC = '/customer/public/device', |
| 46 | 46 | ||
| 47 | DEVICE_PRIVATE = '/customer/device', | 47 | DEVICE_PRIVATE = '/customer/device', |
| 48 | - DEVICE_COLLECT = '/device/collect ', //收藏 | 48 | + DEVICE_COLLECT = '/collect/DEVICE_COLLECT', //收藏 |
| 49 | 49 | ||
| 50 | /** | 50 | /** |
| 51 | * @description 通过设备列表获取设备信息 | 51 | * @description 通过设备列表获取设备信息 |
| @@ -62,7 +62,7 @@ export const devicePage = (params: DeviceQueryParam) => { | @@ -62,7 +62,7 @@ export const devicePage = (params: DeviceQueryParam) => { | ||
| 62 | }); | 62 | }); |
| 63 | }; | 63 | }; |
| 64 | 64 | ||
| 65 | -export const deviceCollect = (params: Array<any>) => { | 65 | +export const deviceCollect = (params: string[]) => { |
| 66 | return defHttp.post({ | 66 | return defHttp.post({ |
| 67 | url: `${DeviceManagerApi.DEVICE_COLLECT}`, | 67 | url: `${DeviceManagerApi.DEVICE_COLLECT}`, |
| 68 | params, | 68 | params, |
| 1 | import { StructJSON } from './modelOfMatterModel'; | 1 | import { StructJSON } from './modelOfMatterModel'; |
| 2 | import { BasicPageParams } from '/@/api/model/baseModel'; | 2 | import { BasicPageParams } from '/@/api/model/baseModel'; |
| 3 | -import { AlarmStatus } from '/@/views/alarm/log/config/detail.config'; | 3 | +import { AlarmStatus } from '/@/enums/alarmEnum'; |
| 4 | import { DeviceStatusEnum } from '/@/views/rule/dataFlow/cpns/config'; | 4 | import { DeviceStatusEnum } from '/@/views/rule/dataFlow/cpns/config'; |
| 5 | export enum DeviceState { | 5 | export enum DeviceState { |
| 6 | INACTIVE = 'INACTIVE', | 6 | INACTIVE = 'INACTIVE', |
| @@ -22,9 +22,11 @@ | @@ -22,9 +22,11 @@ | ||
| 22 | value: ModelOfMatterParams[]; | 22 | value: ModelOfMatterParams[]; |
| 23 | disabled: boolean; | 23 | disabled: boolean; |
| 24 | hasStructForm?: boolean; | 24 | hasStructForm?: boolean; |
| 25 | + hiddenAccessMode?: boolean; | ||
| 25 | }>(), | 26 | }>(), |
| 26 | { | 27 | { |
| 27 | value: () => [], | 28 | value: () => [], |
| 29 | + hiddenAccessMode: false, | ||
| 28 | hasStructForm: false, | 30 | hasStructForm: false, |
| 29 | } | 31 | } |
| 30 | ); | 32 | ); |
| @@ -106,11 +108,12 @@ | @@ -106,11 +108,12 @@ | ||
| 106 | <span class="mr-2"> | 108 | <span class="mr-2"> |
| 107 | <PlusOutlined /> | 109 | <PlusOutlined /> |
| 108 | </span> | 110 | </span> |
| 109 | - <span @click="!$props.disabled && handleCreateParams()">增加参数</span> | 111 | + <span @click="!disabled && handleCreateParams()">增加参数</span> |
| 110 | </div> | 112 | </div> |
| 111 | </div> | 113 | </div> |
| 112 | <StructFormModel | 114 | <StructFormModel |
| 113 | - :has-struct-form="$props.hasStructForm!" | 115 | + :has-struct-form="hasStructForm!" |
| 116 | + :hidden-access-mode="hiddenAccessMode" | ||
| 114 | :disabled="$props.disabled" | 117 | :disabled="$props.disabled" |
| 115 | :value-list="getValue" | 118 | :value-list="getValue" |
| 116 | @register="registerModal" | 119 | @register="registerModal" |
| @@ -23,6 +23,7 @@ | @@ -23,6 +23,7 @@ | ||
| 23 | disabled: boolean; | 23 | disabled: boolean; |
| 24 | hasStructForm: boolean; | 24 | hasStructForm: boolean; |
| 25 | valueList: StructRecord[]; | 25 | valueList: StructRecord[]; |
| 26 | + hiddenAccessMode: boolean; | ||
| 26 | }>(); | 27 | }>(); |
| 27 | 28 | ||
| 28 | const emit = defineEmits(['register', 'submit']); | 29 | const emit = defineEmits(['register', 'submit']); |
| @@ -31,7 +32,7 @@ | @@ -31,7 +32,7 @@ | ||
| 31 | 32 | ||
| 32 | const [register, { validate, setFieldsValue, setProps }] = useForm({ | 33 | const [register, { validate, setFieldsValue, setProps }] = useForm({ |
| 33 | labelWidth: 100, | 34 | labelWidth: 100, |
| 34 | - schemas: formSchemas(props.hasStructForm), | 35 | + schemas: formSchemas(props.hasStructForm, props.hiddenAccessMode), |
| 35 | actionColOptions: { | 36 | actionColOptions: { |
| 36 | span: 14, | 37 | span: 14, |
| 37 | }, | 38 | }, |
| @@ -28,7 +28,11 @@ export const validateJSON = (_rule, value = [] as ModelOfMatterParams[], _callba | @@ -28,7 +28,11 @@ export const validateJSON = (_rule, value = [] as ModelOfMatterParams[], _callba | ||
| 28 | return Promise.reject('JSON对象不能为空'); | 28 | return Promise.reject('JSON对象不能为空'); |
| 29 | }; | 29 | }; |
| 30 | 30 | ||
| 31 | -export const formSchemas = (hasStructForm: boolean, isTcp = false): FormSchema[] => { | 31 | +export const formSchemas = ( |
| 32 | + hasStructForm: boolean, | ||
| 33 | + hiddenAccessMode: boolean, | ||
| 34 | + isTcp = false | ||
| 35 | +): FormSchema[] => { | ||
| 32 | return [ | 36 | return [ |
| 33 | { | 37 | { |
| 34 | field: FormField.FUNCTION_NAME, | 38 | field: FormField.FUNCTION_NAME, |
| @@ -299,7 +303,7 @@ export const formSchemas = (hasStructForm: boolean, isTcp = false): FormSchema[] | @@ -299,7 +303,7 @@ export const formSchemas = (hasStructForm: boolean, isTcp = false): FormSchema[] | ||
| 299 | colProps: { | 303 | colProps: { |
| 300 | span: 24, | 304 | span: 24, |
| 301 | }, | 305 | }, |
| 302 | - ifShow: () => !hasStructForm, | 306 | + ifShow: () => !hiddenAccessMode && !hasStructForm, |
| 303 | defaultValue: 'r', | 307 | defaultValue: 'r', |
| 304 | componentProps: { | 308 | componentProps: { |
| 305 | placeholder: '请选择读写类型', | 309 | placeholder: '请选择读写类型', |
| @@ -17,6 +17,7 @@ | @@ -17,6 +17,7 @@ | ||
| 17 | icon="ion:document-text-outline" | 17 | icon="ion:document-text-outline" |
| 18 | /> | 18 | /> |
| 19 | <MenuItem | 19 | <MenuItem |
| 20 | + v-if="hasPermission('system:password:view')" | ||
| 20 | key="changePassword" | 21 | key="changePassword" |
| 21 | :text="t('layout.header.dropdownItemChangePassword')" | 22 | :text="t('layout.header.dropdownItemChangePassword')" |
| 22 | icon="ant-design:unlock-twotone" | 23 | icon="ant-design:unlock-twotone" |
| @@ -279,20 +279,20 @@ | @@ -279,20 +279,20 @@ | ||
| 279 | ref="listEl" | 279 | ref="listEl" |
| 280 | :loading="loading" | 280 | :loading="loading" |
| 281 | :data-source="cameraList" | 281 | :data-source="cameraList" |
| 282 | - class="bg-light-50 w-full h-full dark:bg-dark-900 split-mode-list" | 282 | + class="bg-light-50 w-full !h-full dark:bg-dark-900 split-mode-list" |
| 283 | :grid="(gridLayout as any)" | 283 | :grid="(gridLayout as any)" |
| 284 | :style="{ '--height': `${100 / pagination.colNumber}%` }" | 284 | :style="{ '--height': `${100 / pagination.colNumber}%` }" |
| 285 | > | 285 | > |
| 286 | <template #renderItem="{ item }"> | 286 | <template #renderItem="{ item }"> |
| 287 | <List.Item> | 287 | <List.Item> |
| 288 | - <div class="box-border w-full h-full p-1px"> | 288 | + <div class="box-border w-full !h-full p-1px"> |
| 289 | <div | 289 | <div |
| 290 | v-if="item.placeholder" | 290 | v-if="item.placeholder" |
| 291 | - class="bg-black w-full h-full overflow-hidden relative" | 291 | + class="bg-black w-full !h-full overflow-hidden relative" |
| 292 | ></div> | 292 | ></div> |
| 293 | <div | 293 | <div |
| 294 | v-if="!item.placeholder" | 294 | v-if="!item.placeholder" |
| 295 | - class="bg-black w-full h-full overflow-hidden relative video-container" | 295 | + class="bg-black w-full !h-full overflow-hidden relative video-container" |
| 296 | > | 296 | > |
| 297 | <Spin | 297 | <Spin |
| 298 | class="!absolute top-1/2 left-1/2 transform -translate-1/2" | 298 | class="!absolute top-1/2 left-1/2 transform -translate-1/2" |
| @@ -333,7 +333,7 @@ | @@ -333,7 +333,7 @@ | ||
| 333 | } | 333 | } |
| 334 | 334 | ||
| 335 | .split-screen-mode:deep(.ant-spin-container) { | 335 | .split-screen-mode:deep(.ant-spin-container) { |
| 336 | - height: 100%; | 336 | + height: 100% !important; |
| 337 | } | 337 | } |
| 338 | 338 | ||
| 339 | .video-container { | 339 | .video-container { |
| @@ -4,6 +4,7 @@ import { createImgPreview } from '/@/components/Preview'; | @@ -4,6 +4,7 @@ import { createImgPreview } from '/@/components/Preview'; | ||
| 4 | import { uploadThumbnail } from '/@/api/configuration/center/configurationCenter'; | 4 | import { uploadThumbnail } from '/@/api/configuration/center/configurationCenter'; |
| 5 | import { useComponentRegister } from '/@/components/Form'; | 5 | import { useComponentRegister } from '/@/components/Form'; |
| 6 | import { OrgTreeSelect } from '../../common/OrgTreeSelect'; | 6 | import { OrgTreeSelect } from '../../common/OrgTreeSelect'; |
| 7 | +import { getDeviceProfile } from '/@/api/alarm/position'; | ||
| 7 | 8 | ||
| 8 | useComponentRegister('OrgTreeSelect', OrgTreeSelect); | 9 | useComponentRegister('OrgTreeSelect', OrgTreeSelect); |
| 9 | export enum Platform { | 10 | export enum Platform { |
| @@ -136,6 +137,28 @@ export const formSchema: FormSchema[] = [ | @@ -136,6 +137,28 @@ export const formSchema: FormSchema[] = [ | ||
| 136 | component: 'OrgTreeSelect', | 137 | component: 'OrgTreeSelect', |
| 137 | }, | 138 | }, |
| 138 | { | 139 | { |
| 140 | + field: 'isTemplate', | ||
| 141 | + label: '模版', | ||
| 142 | + component: 'Switch', | ||
| 143 | + defaultValue: 0, | ||
| 144 | + componentProps: { | ||
| 145 | + checkedValue: 1, | ||
| 146 | + unCheckedValue: 0, | ||
| 147 | + }, | ||
| 148 | + }, | ||
| 149 | + { | ||
| 150 | + field: 'productIds', | ||
| 151 | + label: '产品', | ||
| 152 | + component: 'ApiSelect', | ||
| 153 | + required: true, | ||
| 154 | + componentProps: { | ||
| 155 | + api: getDeviceProfile, | ||
| 156 | + mode: 'multiple', | ||
| 157 | + labelField: 'name', | ||
| 158 | + valueField: 'tbProfileId', | ||
| 159 | + }, | ||
| 160 | + }, | ||
| 161 | + { | ||
| 139 | field: 'platform', | 162 | field: 'platform', |
| 140 | label: '平台', | 163 | label: '平台', |
| 141 | required: true, | 164 | required: true, |
src/views/configuration/center/help.ts
0 → 100644
| 1 | +import { Platform } from './center.data'; | ||
| 2 | +import { ConfigurationCenterItemsModal } from '/@/api/configuration/center/model/configurationCenterModal'; | ||
| 3 | +import { useGlobSetting } from '/@/hooks/setting'; | ||
| 4 | + | ||
| 5 | +export enum ScadaModeEnum { | ||
| 6 | + LIGHTBOX = 'lightbox', | ||
| 7 | + DESIGN = 'design', | ||
| 8 | + SHARE = 'share', | ||
| 9 | +} | ||
| 10 | + | ||
| 11 | +interface ScadaLinkParamsType { | ||
| 12 | + configurationId: string; | ||
| 13 | + organizationId: string; | ||
| 14 | + mode: ScadaModeEnum; | ||
| 15 | + platform: Platform; | ||
| 16 | + publicId?: string; | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +const getRandomString = () => Number(Math.random().toString().substring(2)).toString(36); | ||
| 20 | + | ||
| 21 | +export const encode = (record: Recordable) => { | ||
| 22 | + let hash = JSON.stringify(record); | ||
| 23 | + const mixinString = getRandomString() | ||
| 24 | + .slice(0, 10) | ||
| 25 | + .padEnd(10, getRandomString()) | ||
| 26 | + .split('') | ||
| 27 | + .map((item) => (Math.random() > 0.5 ? item.toUpperCase() : item)) | ||
| 28 | + .join(''); | ||
| 29 | + hash = window.btoa(hash); | ||
| 30 | + hash = hash.substring(0, 6) + mixinString + hash.substring(6); | ||
| 31 | + hash = window.btoa(hash); | ||
| 32 | + return hash; | ||
| 33 | +}; | ||
| 34 | + | ||
| 35 | +export const createScadaPageLink = ( | ||
| 36 | + record: ConfigurationCenterItemsModal, | ||
| 37 | + mode: ScadaModeEnum = ScadaModeEnum.DESIGN, | ||
| 38 | + open = true | ||
| 39 | +) => { | ||
| 40 | + const { configurationPrefix } = useGlobSetting(); | ||
| 41 | + const params: ScadaLinkParamsType = { | ||
| 42 | + configurationId: record.id, | ||
| 43 | + organizationId: record.organizationId!, | ||
| 44 | + mode: mode, | ||
| 45 | + platform: record.platform as Platform, | ||
| 46 | + }; | ||
| 47 | + | ||
| 48 | + if (mode === ScadaModeEnum.SHARE) { | ||
| 49 | + params.publicId = record.publicId; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + const href = new URL(location.origin); | ||
| 53 | + href.pathname = configurationPrefix; | ||
| 54 | + href.hash = encode(params); | ||
| 55 | + open && window.open(href.href); | ||
| 56 | + return href.href; | ||
| 57 | +}; |
| @@ -14,14 +14,12 @@ | @@ -14,14 +14,12 @@ | ||
| 14 | import { ConfigurationPermission, Platform, searchFormSchema } from './center.data'; | 14 | import { ConfigurationPermission, Platform, searchFormSchema } from './center.data'; |
| 15 | import { useMessage } from '/@/hooks/web/useMessage'; | 15 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 16 | import { Authority } from '/@/components/Authority'; | 16 | import { Authority } from '/@/components/Authority'; |
| 17 | - import { isDevMode } from '/@/utils/env'; | ||
| 18 | import ConfigurationCenterDrawer from './ConfigurationCenterDrawer.vue'; | 17 | import ConfigurationCenterDrawer from './ConfigurationCenterDrawer.vue'; |
| 19 | import { useDrawer } from '/@/components/Drawer'; | 18 | import { useDrawer } from '/@/components/Drawer'; |
| 20 | import { getBoundingClientRect } from '/@/utils/domUtils'; | 19 | import { getBoundingClientRect } from '/@/utils/domUtils'; |
| 21 | import configurationSrc from '/@/assets/icons/configuration.svg'; | 20 | import configurationSrc from '/@/assets/icons/configuration.svg'; |
| 22 | import { cloneDeep } from 'lodash'; | 21 | import { cloneDeep } from 'lodash'; |
| 23 | import { usePermission } from '/@/hooks/web/usePermission'; | 22 | import { usePermission } from '/@/hooks/web/usePermission'; |
| 24 | - import { useGlobSetting } from '/@/hooks/setting'; | ||
| 25 | import { AuthIcon, CardLayoutButton } from '/@/components/Widget'; | 23 | import { AuthIcon, CardLayoutButton } from '/@/components/Widget'; |
| 26 | import AuthDropDown from '/@/components/Widget/AuthDropDown.vue'; | 24 | import AuthDropDown from '/@/components/Widget/AuthDropDown.vue'; |
| 27 | import { ShareModal } from '/@/views/common/ShareModal'; | 25 | import { ShareModal } from '/@/views/common/ShareModal'; |
| @@ -31,6 +29,7 @@ | @@ -31,6 +29,7 @@ | ||
| 31 | import { useRole } from '/@/hooks/business/useRole'; | 29 | import { useRole } from '/@/hooks/business/useRole'; |
| 32 | import { useClipboard } from '@vueuse/core'; | 30 | import { useClipboard } from '@vueuse/core'; |
| 33 | import { Icon } from '/@/components/Icon'; | 31 | import { Icon } from '/@/components/Icon'; |
| 32 | + import { createScadaPageLink, ScadaModeEnum } from './help'; | ||
| 34 | 33 | ||
| 35 | const listColumn = ref(5); | 34 | const listColumn = ref(5); |
| 36 | 35 | ||
| @@ -130,25 +129,15 @@ | @@ -130,25 +129,15 @@ | ||
| 130 | } | 129 | } |
| 131 | }; | 130 | }; |
| 132 | 131 | ||
| 133 | - const { configurationPrefix } = useGlobSetting(); | ||
| 134 | - const isDev = isDevMode(); | ||
| 135 | - | ||
| 136 | const handlePreview = (record: ConfigurationCenterItemsModal) => { | 132 | const handlePreview = (record: ConfigurationCenterItemsModal) => { |
| 137 | if (!unref(getPreviewFlag)) return; | 133 | if (!unref(getPreviewFlag)) return; |
| 138 | - window.open( | ||
| 139 | - `${configurationPrefix}/${isDev ? '?dev=1&' : '?'}configurationId=${ | ||
| 140 | - record!.id | ||
| 141 | - }&lightbox=1&organizationId=${record.organizationId}` | ||
| 142 | - ); | 134 | + createScadaPageLink(record, ScadaModeEnum.LIGHTBOX); |
| 143 | }; | 135 | }; |
| 144 | 136 | ||
| 145 | const handleDesign = (record: ConfigurationCenterItemsModal) => { | 137 | const handleDesign = (record: ConfigurationCenterItemsModal) => { |
| 146 | if (!unref(getDesignFlag)) return; | 138 | if (!unref(getDesignFlag)) return; |
| 147 | - window.open( | ||
| 148 | - `${configurationPrefix}/${isDev ? '?dev=1&' : '?'}configurationId=${ | ||
| 149 | - record!.id | ||
| 150 | - }&organizationId=${record.organizationId}` | ||
| 151 | - ); | 139 | + |
| 140 | + createScadaPageLink(record, ScadaModeEnum.DESIGN); | ||
| 152 | }; | 141 | }; |
| 153 | 142 | ||
| 154 | const handleDelete = async (record: ConfigurationCenterItemsModal) => { | 143 | const handleDelete = async (record: ConfigurationCenterItemsModal) => { |
| @@ -165,14 +154,7 @@ | @@ -165,14 +154,7 @@ | ||
| 165 | }; | 154 | }; |
| 166 | 155 | ||
| 167 | const createShareUrl = (record: ConfigurationCenterItemsModal) => { | 156 | const createShareUrl = (record: ConfigurationCenterItemsModal) => { |
| 168 | - const searchParams = new URLSearchParams(); | ||
| 169 | - isDev && searchParams.set('dev', '1'); | ||
| 170 | - searchParams.set('share', 'SCADA'); | ||
| 171 | - searchParams.set('configurationId', record.id); | ||
| 172 | - searchParams.set('publicId', record.publicId || ''); | ||
| 173 | - searchParams.set('lightbox', '1'); | ||
| 174 | - searchParams.set('organizationId', record!.organizationId || ''); | ||
| 175 | - return `${origin}${configurationPrefix}/?${searchParams.toString()}`; | 157 | + return createScadaPageLink(record, ScadaModeEnum.SHARE, false); |
| 176 | }; | 158 | }; |
| 177 | 159 | ||
| 178 | const { copied, copy } = useClipboard({ legacy: true }); | 160 | const { copied, copy } = useClipboard({ legacy: true }); |
| @@ -16,54 +16,33 @@ | @@ -16,54 +16,33 @@ | ||
| 16 | </div> | 16 | </div> |
| 17 | </div> | 17 | </div> |
| 18 | <div class="mt-8"> | 18 | <div class="mt-8"> |
| 19 | - <a-row type="flex" align="top"> | ||
| 20 | - <a-col | ||
| 21 | - :span=" | ||
| 22 | - method === RequestMethodTypeEnum.WEBSOCKET | ||
| 23 | - ? 11 | ||
| 24 | - : httpType === RequestHttpTypeEnum.POST | ||
| 25 | - ? 6 | ||
| 26 | - : 6 | ||
| 27 | - " | ||
| 28 | - > | 19 | + <div class="flex"> |
| 20 | + <div> | ||
| 29 | <p>过滤器函数编写:</p> | 21 | <p>过滤器函数编写:</p> |
| 30 | - <AceTypeIsJsEditor | ||
| 31 | - :restData="getRestData" | ||
| 32 | - @changeAceContent="onHandleAceContent" | ||
| 33 | - ref="aceTypeIsJsEditorRef" | ||
| 34 | - /> | ||
| 35 | - </a-col> | ||
| 36 | - <a-col :span="1"> | ||
| 37 | - <a-divider type="vertical" class="divider-color" /> | ||
| 38 | - </a-col> | ||
| 39 | - <a-col | ||
| 40 | - :span=" | ||
| 41 | - method === RequestMethodTypeEnum.WEBSOCKET | ||
| 42 | - ? 12 | ||
| 43 | - : httpType === RequestHttpTypeEnum.POST | ||
| 44 | - ? 17 | ||
| 45 | - : 17 | ||
| 46 | - " | ||
| 47 | - style="position: relative" | ||
| 48 | - :style="{ | ||
| 49 | - left: | ||
| 50 | - (method === RequestMethodTypeEnum.WEBSOCKET | ||
| 51 | - ? 1.5 | ||
| 52 | - : httpType === RequestHttpTypeEnum.POST | ||
| 53 | - ? -0.25 | ||
| 54 | - : 0) + 'vw', | ||
| 55 | - }" | ||
| 56 | - > | ||
| 57 | - <a-col> | 22 | + <div class="w-90"> |
| 23 | + <AceTypeIsJsEditor | ||
| 24 | + :restData="getRestData" | ||
| 25 | + @changeAceContent="onHandleAceContent" | ||
| 26 | + ref="aceTypeIsJsEditorRef" | ||
| 27 | + /> | ||
| 28 | + </div> | ||
| 29 | + </div> | ||
| 30 | + <div><a-divider type="vertical" class="divider-color" /></div> | ||
| 31 | + <div class="flex flex-col ml-8"> | ||
| 32 | + <div> | ||
| 58 | <p>接口返回数据(res):</p> | 33 | <p>接口返回数据(res):</p> |
| 59 | - <JsonEditor style="height: 35vh" :showBtn="true" ref="jsonEditorRef" /> | ||
| 60 | - </a-col> | ||
| 61 | - <a-col class="mt-3"> | 34 | + <div> |
| 35 | + <JsonEditor class="w-100 h-100" :showBtn="true" ref="jsonEditorRef" /> | ||
| 36 | + </div> | ||
| 37 | + </div> | ||
| 38 | + <div class="mt-4"> | ||
| 62 | <p>过滤器结果:</p> | 39 | <p>过滤器结果:</p> |
| 63 | - <JsonFilterEditor style="height: 35vh" :showBtn="true" ref="jsonEditorFilterRef" /> | ||
| 64 | - </a-col> | ||
| 65 | - </a-col> | ||
| 66 | - </a-row> | 40 | + <div> |
| 41 | + <JsonFilterEditor class="w-100 h-100" :showBtn="true" ref="jsonEditorFilterRef" /> | ||
| 42 | + </div> | ||
| 43 | + </div> | ||
| 44 | + </div> | ||
| 45 | + </div> | ||
| 67 | </div> | 46 | </div> |
| 68 | </div> | 47 | </div> |
| 69 | </template> | 48 | </template> |
| @@ -78,7 +57,7 @@ | @@ -78,7 +57,7 @@ | ||
| 78 | import AceTypeIsJsEditor from '../../SimpleRequest/components/aceEditor.vue'; | 57 | import AceTypeIsJsEditor from '../../SimpleRequest/components/aceEditor.vue'; |
| 79 | import { Tag } from 'ant-design-vue'; | 58 | import { Tag } from 'ant-design-vue'; |
| 80 | import { useThrottleFn } from '@vueuse/shared'; | 59 | import { useThrottleFn } from '@vueuse/shared'; |
| 81 | - import { RequestMethodTypeEnum, RequestHttpTypeEnum } from '../../../config/enum'; | 60 | + import { RequestMethodTypeEnum } from '../../../config/enum'; |
| 82 | 61 | ||
| 83 | const emits = defineEmits(['emitExcute']); | 62 | const emits = defineEmits(['emitExcute']); |
| 84 | 63 | ||
| @@ -334,9 +313,9 @@ | @@ -334,9 +313,9 @@ | ||
| 334 | } | 313 | } |
| 335 | 314 | ||
| 336 | .divider-color { | 315 | .divider-color { |
| 337 | - height: 78.5vh; | 316 | + height: 54rem; |
| 338 | background-color: #e5e7eb; | 317 | background-color: #e5e7eb; |
| 339 | position: relative; | 318 | position: relative; |
| 340 | - left: 1.16vw; | 319 | + left: 1rem; |
| 341 | } | 320 | } |
| 342 | </style> | 321 | </style> |
| @@ -99,7 +99,7 @@ export const descSchema = (emit: EmitType): DescItem[] => { | @@ -99,7 +99,7 @@ export const descSchema = (emit: EmitType): DescItem[] => { | ||
| 99 | export const realTimeDataColumns: BasicColumn[] = [ | 99 | export const realTimeDataColumns: BasicColumn[] = [ |
| 100 | { | 100 | { |
| 101 | title: '键', | 101 | title: '键', |
| 102 | - dataIndex: 'key', | 102 | + dataIndex: 'name', |
| 103 | width: 100, | 103 | width: 100, |
| 104 | }, | 104 | }, |
| 105 | { | 105 | { |
| @@ -175,7 +175,10 @@ | @@ -175,7 +175,10 @@ | ||
| 175 | label: '取消收藏', | 175 | label: '取消收藏', |
| 176 | auth: 'api:yt:device:online:record', | 176 | auth: 'api:yt:device:online:record', |
| 177 | icon: 'ant-design:heart-outlined', | 177 | icon: 'ant-design:heart-outlined', |
| 178 | - onClick: handelCollect.bind(null, record), | 178 | + popConfirm: { |
| 179 | + title: '是否取消收藏', | ||
| 180 | + confirm: handelCollect.bind(null, record), | ||
| 181 | + }, | ||
| 179 | }, | 182 | }, |
| 180 | { | 183 | { |
| 181 | label: '删除', | 184 | label: '删除', |
| @@ -305,6 +308,7 @@ | @@ -305,6 +308,7 @@ | ||
| 305 | columns, | 308 | columns, |
| 306 | beforeFetch: (params) => { | 309 | beforeFetch: (params) => { |
| 307 | const { deviceProfileId } = params; | 310 | const { deviceProfileId } = params; |
| 311 | + if (!deviceProfileId) return; | ||
| 308 | const obj = { | 312 | const obj = { |
| 309 | ...params, | 313 | ...params, |
| 310 | ...{ | 314 | ...{ |
| @@ -106,7 +106,7 @@ export const defaultSchemas: FormSchema[] = [ | @@ -106,7 +106,7 @@ export const defaultSchemas: FormSchema[] = [ | ||
| 106 | getPopupContainer: () => document.body, | 106 | getPopupContainer: () => document.body, |
| 107 | }; | 107 | }; |
| 108 | }, | 108 | }, |
| 109 | - colProps: useGridLayout(2, 2, 2, 2, 2, 2) as unknown as ColEx, | 109 | + colProps: useGridLayout(1.5, 1.5, 1.5, 1.5, 1.5, 1.5) as unknown as ColEx, |
| 110 | }, | 110 | }, |
| 111 | { | 111 | { |
| 112 | field: SchemaFiled.AGG, | 112 | field: SchemaFiled.AGG, |
| @@ -260,6 +260,7 @@ | @@ -260,6 +260,7 @@ | ||
| 260 | }, | 260 | }, |
| 261 | beforeFetch: (params) => { | 261 | beforeFetch: (params) => { |
| 262 | const { deviceProfileId } = params; | 262 | const { deviceProfileId } = params; |
| 263 | + if (!deviceProfileId) return; | ||
| 263 | const deviceProfileIds = [deviceProfileId]; | 264 | const deviceProfileIds = [deviceProfileId]; |
| 264 | const obj = { | 265 | const obj = { |
| 265 | ...params, | 266 | ...params, |
| @@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
| 19 | 19 | ||
| 20 | const [register, { validate, resetFields, setFieldsValue, setProps }] = useForm({ | 20 | const [register, { validate, resetFields, setFieldsValue, setProps }] = useForm({ |
| 21 | labelWidth: 100, | 21 | labelWidth: 100, |
| 22 | - schemas: formSchemas(false, props.transportType === TransportTypeEnum.TCP), | 22 | + schemas: formSchemas(false, false, props.transportType === TransportTypeEnum.TCP), |
| 23 | actionColOptions: { | 23 | actionColOptions: { |
| 24 | span: 14, | 24 | span: 14, |
| 25 | }, | 25 | }, |
| @@ -143,6 +143,9 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => { | @@ -143,6 +143,9 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => { | ||
| 143 | rules: [{ message: '输入参数为必填项', required: true, type: 'array' }], | 143 | rules: [{ message: '输入参数为必填项', required: true, type: 'array' }], |
| 144 | ifShow: !tcpDeviceFlag, | 144 | ifShow: !tcpDeviceFlag, |
| 145 | colProps: { span: 24 }, | 145 | colProps: { span: 24 }, |
| 146 | + componentProps: { | ||
| 147 | + hiddenAccessMode: true, | ||
| 148 | + }, | ||
| 146 | }, | 149 | }, |
| 147 | { | 150 | { |
| 148 | field: FormField.OUTPUT_PARAM, | 151 | field: FormField.OUTPUT_PARAM, |
| @@ -151,6 +154,9 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => { | @@ -151,6 +154,9 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => { | ||
| 151 | valueField: 'value', | 154 | valueField: 'value', |
| 152 | changeEvent: 'update:value', | 155 | changeEvent: 'update:value', |
| 153 | colProps: { span: 24 }, | 156 | colProps: { span: 24 }, |
| 157 | + componentProps: { | ||
| 158 | + hiddenAccessMode: true, | ||
| 159 | + }, | ||
| 154 | }, | 160 | }, |
| 155 | { | 161 | { |
| 156 | field: FormField.REFARK, | 162 | field: FormField.REFARK, |
| @@ -218,6 +224,9 @@ export const eventSchemas: FormSchema[] = [ | @@ -218,6 +224,9 @@ export const eventSchemas: FormSchema[] = [ | ||
| 218 | valueField: 'value', | 224 | valueField: 'value', |
| 219 | changeEvent: 'update:value', | 225 | changeEvent: 'update:value', |
| 220 | colProps: { span: 24 }, | 226 | colProps: { span: 24 }, |
| 227 | + componentProps: { | ||
| 228 | + hiddenAccessMode: true, | ||
| 229 | + }, | ||
| 221 | }, | 230 | }, |
| 222 | { | 231 | { |
| 223 | field: FormField.REFARK, | 232 | field: FormField.REFARK, |
| @@ -12,6 +12,8 @@ | @@ -12,6 +12,8 @@ | ||
| 12 | import { sendSms } from '/@/api/message/template'; | 12 | import { sendSms } from '/@/api/message/template'; |
| 13 | import { useMessage } from '/@/hooks/web/useMessage'; | 13 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 14 | import { phoneRule } from '/@/utils/rules'; | 14 | import { phoneRule } from '/@/utils/rules'; |
| 15 | + import { PlateFormTypeEnum } from './template.data'; | ||
| 16 | + | ||
| 15 | const schemas: FormSchema[] = [ | 17 | const schemas: FormSchema[] = [ |
| 16 | { | 18 | { |
| 17 | field: 'id', | 19 | field: 'id', |
| @@ -142,7 +144,38 @@ | @@ -142,7 +144,38 @@ | ||
| 142 | field: 'params', | 144 | field: 'params', |
| 143 | componentProps: { | 145 | componentProps: { |
| 144 | placeholder: | 146 | placeholder: |
| 145 | - platformType.value !== 'TENCENT_CLOUD' ? '示例:{"code":"1234"}' : '示例:["123456"]', | 147 | + platformType.value !== PlateFormTypeEnum.tencent_cound |
| 148 | + ? '示例:{"code":"1234"}' | ||
| 149 | + : '示例:["123456"]', | ||
| 150 | + }, | ||
| 151 | + dynamicRules: () => { | ||
| 152 | + return [ | ||
| 153 | + { | ||
| 154 | + required: true, | ||
| 155 | + validator: (_, value) => { | ||
| 156 | + try { | ||
| 157 | + if (typeof value == 'object') { | ||
| 158 | + return Promise.resolve(); | ||
| 159 | + } else { | ||
| 160 | + if (typeof JSON.parse(value) == 'object') { | ||
| 161 | + return Promise.resolve(); | ||
| 162 | + } | ||
| 163 | + return Promise.reject( | ||
| 164 | + platformType.value !== PlateFormTypeEnum.tencent_cound | ||
| 165 | + ? '请输入JSON格式例如{"code":"1234"}' | ||
| 166 | + : '请输入这种格式["123456"]' | ||
| 167 | + ); | ||
| 168 | + } | ||
| 169 | + } catch { | ||
| 170 | + return Promise.reject( | ||
| 171 | + platformType.value !== PlateFormTypeEnum.tencent_cound | ||
| 172 | + ? '请输入JSON格式例如{"code":"1234"}' | ||
| 173 | + : '请输入这种格式["123456"]' | ||
| 174 | + ); | ||
| 175 | + } | ||
| 176 | + }, | ||
| 177 | + }, | ||
| 178 | + ]; | ||
| 146 | }, | 179 | }, |
| 147 | }); | 180 | }); |
| 148 | await resetFields(); | 181 | await resetFields(); |
| @@ -154,7 +187,7 @@ | @@ -154,7 +187,7 @@ | ||
| 154 | async function handleOK() { | 187 | async function handleOK() { |
| 155 | let smsParams: any = null; | 188 | let smsParams: any = null; |
| 156 | const values = await validate(); | 189 | const values = await validate(); |
| 157 | - if (platformType.value === 'TENCENT_CLOUD') { | 190 | + if (platformType.value === PlateFormTypeEnum.tencent_cound) { |
| 158 | //腾讯云发送格式 将字符串转为数组 | 191 | //腾讯云发送格式 将字符串转为数组 |
| 159 | smsParams = { | 192 | smsParams = { |
| 160 | tencent_param: JSON.parse(Reflect.get(values, 'params')), | 193 | tencent_param: JSON.parse(Reflect.get(values, 'params')), |
| @@ -4,6 +4,11 @@ import { findDictItemByCode } from '/@/api/system/dict'; | @@ -4,6 +4,11 @@ import { findDictItemByCode } from '/@/api/system/dict'; | ||
| 4 | import { findMessageConfig } from '/@/api/message/config'; | 4 | import { findMessageConfig } from '/@/api/message/config'; |
| 5 | import { isMessage } from '/@/views/message/config/config.data'; | 5 | import { isMessage } from '/@/views/message/config/config.data'; |
| 6 | 6 | ||
| 7 | +export enum PlateFormTypeEnum { | ||
| 8 | + ali_cound = 'ALI_CLOUD', | ||
| 9 | + tencent_cound = 'TENCENT_CLOUD', | ||
| 10 | +} | ||
| 11 | + | ||
| 7 | export const columns: BasicColumn[] = [ | 12 | export const columns: BasicColumn[] = [ |
| 8 | { | 13 | { |
| 9 | title: '模板名称', | 14 | title: '模板名称', |
| @@ -223,47 +228,33 @@ export const formSchema: FormSchema[] = [ | @@ -223,47 +228,33 @@ export const formSchema: FormSchema[] = [ | ||
| 223 | helpMessage: [], | 228 | helpMessage: [], |
| 224 | componentProps({ formActionType }) { | 229 | componentProps({ formActionType }) { |
| 225 | const { updateSchema } = formActionType; | 230 | const { updateSchema } = formActionType; |
| 231 | + updateSchema({ | ||
| 232 | + field: 'templatePurpose', | ||
| 233 | + helpMessage: [ | ||
| 234 | + `登录模板平台提供如下参数: | ||
| 235 | + { | ||
| 236 | + "code":"验证码" | ||
| 237 | + }。`, | ||
| 238 | + `忘记密码模板平台提供如下参数: | ||
| 239 | + { | ||
| 240 | + "code":"验证码" | ||
| 241 | + }。`, | ||
| 242 | + `告警通知模板平台提供如下参数: | ||
| 243 | + { | ||
| 244 | + "organization":"设备所属组织", | ||
| 245 | + "deviceName":"设备名称", | ||
| 246 | + "severity":"告警等级", | ||
| 247 | + "type":"告警类型", | ||
| 248 | + "triggerValue":"触发值", | ||
| 249 | + "createTime":"告警时间" | ||
| 250 | + }。`, | ||
| 251 | + `清除密码模板平台提供如下参数: | ||
| 252 | + { | ||
| 253 | + "code":"验证码" | ||
| 254 | + }。`, | ||
| 255 | + ], | ||
| 256 | + }); | ||
| 226 | return { | 257 | return { |
| 227 | - onChange(value) { | ||
| 228 | - if (value === 'FOR_LOGIN') { | ||
| 229 | - updateSchema({ | ||
| 230 | - field: 'templatePurpose', | ||
| 231 | - helpMessage: `登录模板平台提供如下参数: | ||
| 232 | - { | ||
| 233 | - "code":"验证码" | ||
| 234 | - }`, | ||
| 235 | - }); | ||
| 236 | - } else if (value === 'FOR_FORGET_PASSWORD') { | ||
| 237 | - updateSchema({ | ||
| 238 | - field: 'templatePurpose', | ||
| 239 | - helpMessage: `忘记密码模板平台提供如下参数: | ||
| 240 | - { | ||
| 241 | - "code":"验证码" | ||
| 242 | - }`, | ||
| 243 | - }); | ||
| 244 | - } else if (value === 'FOR_ALARM_NOTICE') { | ||
| 245 | - updateSchema({ | ||
| 246 | - field: 'templatePurpose', | ||
| 247 | - helpMessage: `告警通知模板平台提供如下参数: | ||
| 248 | - { | ||
| 249 | - "type":"告警类型", | ||
| 250 | - "deviceName":"设备名称", | ||
| 251 | - "severity":"告警等级", | ||
| 252 | - "organization":"设备所属组织", | ||
| 253 | - "createTime":"告警时间", | ||
| 254 | - "triggerValue":"触发值", | ||
| 255 | - }`, | ||
| 256 | - }); | ||
| 257 | - } else if (value === 'FOR_SET_PASSWORD') { | ||
| 258 | - updateSchema({ | ||
| 259 | - field: 'templatePurpose', | ||
| 260 | - helpMessage: `清除密码模板平台提供如下参数: | ||
| 261 | - { | ||
| 262 | - "code":"验证码" | ||
| 263 | - }`, | ||
| 264 | - }); | ||
| 265 | - } | ||
| 266 | - }, | ||
| 267 | api: findDictItemByCode, | 258 | api: findDictItemByCode, |
| 268 | params: { | 259 | params: { |
| 269 | dictCode: 'template_purpose', | 260 | dictCode: 'template_purpose', |
| @@ -86,12 +86,12 @@ export enum OriginatorTelemetryFieldsEnum { | @@ -86,12 +86,12 @@ export enum OriginatorTelemetryFieldsEnum { | ||
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | export enum OriginatorTelemetryFieldsNameEnum { | 88 | export enum OriginatorTelemetryFieldsNameEnum { |
| 89 | - LATEST_TS_KEY_NAMES = 'Latest timeseries', | 89 | + LATEST_TS_KEY_NAMES = 'Timeseries key', |
| 90 | AGGREGATION = '数据聚合功能', | 90 | AGGREGATION = '数据聚合功能', |
| 91 | FETCH_MODE = 'Fetch Mode', | 91 | FETCH_MODE = 'Fetch Mode', |
| 92 | ORDER_BY = 'Order by', | 92 | ORDER_BY = 'Order by', |
| 93 | LIMIT = 'Limit', | 93 | LIMIT = 'Limit', |
| 94 | - USE_METADATA_INTERVAL_PATTERNS = 'useMetadataIntervalPatterns', | 94 | + USE_METADATA_INTERVAL_PATTERNS = 'Use interval patterns', |
| 95 | START_INTERVAL = 'Start Interval', | 95 | START_INTERVAL = 'Start Interval', |
| 96 | START_INTERVAL_TIME_UNIT = 'Start Interval Time Unit', | 96 | START_INTERVAL_TIME_UNIT = 'Start Interval Time Unit', |
| 97 | END_INTERVAL = 'End Interval', | 97 | END_INTERVAL = 'End Interval', |
| @@ -73,6 +73,10 @@ export const formSchemas: FormSchema[] = [ | @@ -73,6 +73,10 @@ export const formSchemas: FormSchema[] = [ | ||
| 73 | getPopupContainer: () => document.body, | 73 | getPopupContainer: () => document.body, |
| 74 | placeholder: `请选择${RestApiCallFieldsEnum.PROXY_SCHEME}`, | 74 | placeholder: `请选择${RestApiCallFieldsEnum.PROXY_SCHEME}`, |
| 75 | }, | 75 | }, |
| 76 | + ifShow: ({ model }) => { | ||
| 77 | + const ifShowField = model[RestApiCallFieldsEnum.ENABLE_PROXY]; | ||
| 78 | + return ifShowField && !model[RestApiCallFieldsEnum.USE_SYSTEM_PROXY_PROPERTIES]; | ||
| 79 | + }, | ||
| 76 | }, | 80 | }, |
| 77 | { | 81 | { |
| 78 | field: RestApiCallFieldsEnum.PROXY_HOST, | 82 | field: RestApiCallFieldsEnum.PROXY_HOST, |
| @@ -83,6 +87,10 @@ export const formSchemas: FormSchema[] = [ | @@ -83,6 +87,10 @@ export const formSchemas: FormSchema[] = [ | ||
| 83 | componentProps: { | 87 | componentProps: { |
| 84 | placeholder: `请输入${RestApiCallFieldsNameEnum.PROXY_HOST}`, | 88 | placeholder: `请输入${RestApiCallFieldsNameEnum.PROXY_HOST}`, |
| 85 | }, | 89 | }, |
| 90 | + ifShow: ({ model }) => { | ||
| 91 | + const ifShowField = model[RestApiCallFieldsEnum.ENABLE_PROXY]; | ||
| 92 | + return ifShowField && !model[RestApiCallFieldsEnum.USE_SYSTEM_PROXY_PROPERTIES]; | ||
| 93 | + }, | ||
| 86 | }, | 94 | }, |
| 87 | { | 95 | { |
| 88 | field: RestApiCallFieldsEnum.PROXY_PORT, | 96 | field: RestApiCallFieldsEnum.PROXY_PORT, |
| @@ -93,6 +101,10 @@ export const formSchemas: FormSchema[] = [ | @@ -93,6 +101,10 @@ export const formSchemas: FormSchema[] = [ | ||
| 93 | componentProps: { | 101 | componentProps: { |
| 94 | placeholder: `请输入${RestApiCallFieldsNameEnum.PROXY_HOST}`, | 102 | placeholder: `请输入${RestApiCallFieldsNameEnum.PROXY_HOST}`, |
| 95 | }, | 103 | }, |
| 104 | + ifShow: ({ model }) => { | ||
| 105 | + const ifShowField = model[RestApiCallFieldsEnum.ENABLE_PROXY]; | ||
| 106 | + return ifShowField && !model[RestApiCallFieldsEnum.USE_SYSTEM_PROXY_PROPERTIES]; | ||
| 107 | + }, | ||
| 96 | }, | 108 | }, |
| 97 | { | 109 | { |
| 98 | field: RestApiCallFieldsEnum.PROXY_USER, | 110 | field: RestApiCallFieldsEnum.PROXY_USER, |
| @@ -101,6 +113,10 @@ export const formSchemas: FormSchema[] = [ | @@ -101,6 +113,10 @@ export const formSchemas: FormSchema[] = [ | ||
| 101 | componentProps: { | 113 | componentProps: { |
| 102 | placeholder: `请输入${RestApiCallFieldsNameEnum.PROXY_USER}`, | 114 | placeholder: `请输入${RestApiCallFieldsNameEnum.PROXY_USER}`, |
| 103 | }, | 115 | }, |
| 116 | + ifShow: ({ model }) => { | ||
| 117 | + const ifShowField = model[RestApiCallFieldsEnum.ENABLE_PROXY]; | ||
| 118 | + return ifShowField && !model[RestApiCallFieldsEnum.USE_SYSTEM_PROXY_PROPERTIES]; | ||
| 119 | + }, | ||
| 104 | }, | 120 | }, |
| 105 | { | 121 | { |
| 106 | field: RestApiCallFieldsEnum.PROXY_PASSWORD, | 122 | field: RestApiCallFieldsEnum.PROXY_PASSWORD, |
| @@ -109,6 +125,10 @@ export const formSchemas: FormSchema[] = [ | @@ -109,6 +125,10 @@ export const formSchemas: FormSchema[] = [ | ||
| 109 | componentProps: { | 125 | componentProps: { |
| 110 | placeholder: `请输入${RestApiCallFieldsNameEnum.PROXY_PASSWORD}`, | 126 | placeholder: `请输入${RestApiCallFieldsNameEnum.PROXY_PASSWORD}`, |
| 111 | }, | 127 | }, |
| 128 | + ifShow: ({ model }) => { | ||
| 129 | + const ifShowField = model[RestApiCallFieldsEnum.ENABLE_PROXY]; | ||
| 130 | + return ifShowField && !model[RestApiCallFieldsEnum.USE_SYSTEM_PROXY_PROPERTIES]; | ||
| 131 | + }, | ||
| 112 | }, | 132 | }, |
| 113 | { | 133 | { |
| 114 | field: RestApiCallFieldsEnum.READ_TIMEOUT_MS, | 134 | field: RestApiCallFieldsEnum.READ_TIMEOUT_MS, |
| @@ -229,7 +229,7 @@ export const trigger_condition_schema: FormSchema[] = [ | @@ -229,7 +229,7 @@ export const trigger_condition_schema: FormSchema[] = [ | ||
| 229 | placeholder: '请选择类型', | 229 | placeholder: '请选择类型', |
| 230 | labelField: 'itemText', | 230 | labelField: 'itemText', |
| 231 | valueField: 'itemValue', | 231 | valueField: 'itemValue', |
| 232 | - getPopupContainer: () => document.body, | 232 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 233 | onChange(e) { | 233 | onChange(e) { |
| 234 | if (e) { | 234 | if (e) { |
| 235 | setFieldsValue({ deviceProfileId: '' }); | 235 | setFieldsValue({ deviceProfileId: '' }); |
| @@ -256,7 +256,7 @@ export const trigger_condition_schema: FormSchema[] = [ | @@ -256,7 +256,7 @@ export const trigger_condition_schema: FormSchema[] = [ | ||
| 256 | placeholder: '请选择产品', | 256 | placeholder: '请选择产品', |
| 257 | labelField: 'name', | 257 | labelField: 'name', |
| 258 | valueField: 'id', | 258 | valueField: 'id', |
| 259 | - getPopupContainer: () => document.body, | 259 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 260 | onChange: async (e) => { | 260 | onChange: async (e) => { |
| 261 | if (e) { | 261 | if (e) { |
| 262 | setFieldsValue({ type2: '', entityId: [] }); | 262 | setFieldsValue({ type2: '', entityId: [] }); |
| @@ -315,7 +315,7 @@ export const trigger_condition_schema: FormSchema[] = [ | @@ -315,7 +315,7 @@ export const trigger_condition_schema: FormSchema[] = [ | ||
| 315 | return []; | 315 | return []; |
| 316 | }, | 316 | }, |
| 317 | placeholder: '请选择设备', | 317 | placeholder: '请选择设备', |
| 318 | - getPopupContainer: () => document.body, | 318 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 319 | filterOption: (inputValue: string, option: Record<'label' | 'value', string>) => { | 319 | filterOption: (inputValue: string, option: Record<'label' | 'value', string>) => { |
| 320 | let { label, value } = option; | 320 | let { label, value } = option; |
| 321 | label = label.toLowerCase(); | 321 | label = label.toLowerCase(); |
| @@ -450,7 +450,7 @@ export const actionSchema: FormSchema[] = [ | @@ -450,7 +450,7 @@ export const actionSchema: FormSchema[] = [ | ||
| 450 | placeholder: '请选择类型', | 450 | placeholder: '请选择类型', |
| 451 | labelField: 'itemText', | 451 | labelField: 'itemText', |
| 452 | valueField: 'itemValue', | 452 | valueField: 'itemValue', |
| 453 | - getPopupContainer: () => document.body, | 453 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 454 | onChange(e) { | 454 | onChange(e) { |
| 455 | if (e) { | 455 | if (e) { |
| 456 | setFieldsValue({ deviceProfileId: '' }); | 456 | setFieldsValue({ deviceProfileId: '' }); |
| @@ -482,7 +482,7 @@ export const actionSchema: FormSchema[] = [ | @@ -482,7 +482,7 @@ export const actionSchema: FormSchema[] = [ | ||
| 482 | placeholder: '请选择产品', | 482 | placeholder: '请选择产品', |
| 483 | labelField: 'name', | 483 | labelField: 'name', |
| 484 | valueField: 'id', | 484 | valueField: 'id', |
| 485 | - getPopupContainer: () => document.body, | 485 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 486 | onChange: (_value: string, options = {} as DeviceProfileModel) => { | 486 | onChange: (_value: string, options = {} as DeviceProfileModel) => { |
| 487 | const oldType = formModel['transportType']; | 487 | const oldType = formModel['transportType']; |
| 488 | 488 | ||
| @@ -556,7 +556,7 @@ export const actionSchema: FormSchema[] = [ | @@ -556,7 +556,7 @@ export const actionSchema: FormSchema[] = [ | ||
| 556 | return []; | 556 | return []; |
| 557 | }, | 557 | }, |
| 558 | placeholder: '请选择设备', | 558 | placeholder: '请选择设备', |
| 559 | - getPopupContainer: () => document.body, | 559 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 560 | }; | 560 | }; |
| 561 | }, | 561 | }, |
| 562 | ifShow: ({ values }) => isPart(values.device) && isDeviceOut(values.outTarget), | 562 | ifShow: ({ values }) => isPart(values.device) && isDeviceOut(values.outTarget), |
| @@ -593,7 +593,7 @@ export const actionSchema: FormSchema[] = [ | @@ -593,7 +593,7 @@ export const actionSchema: FormSchema[] = [ | ||
| 593 | dictCode: 'custom_define', | 593 | dictCode: 'custom_define', |
| 594 | }, | 594 | }, |
| 595 | numberToString: true, | 595 | numberToString: true, |
| 596 | - getPopupContainer: () => document.body, | 596 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 597 | onChange: () => { | 597 | onChange: () => { |
| 598 | setFieldsValue({ doContext: null, thingsModelId: null }); | 598 | setFieldsValue({ doContext: null, thingsModelId: null }); |
| 599 | }, | 599 | }, |
| @@ -619,7 +619,7 @@ export const actionSchema: FormSchema[] = [ | @@ -619,7 +619,7 @@ export const actionSchema: FormSchema[] = [ | ||
| 619 | }, | 619 | }, |
| 620 | labelField: 'itemText', | 620 | labelField: 'itemText', |
| 621 | valueField: 'itemValue', | 621 | valueField: 'itemValue', |
| 622 | - getPopupContainer: () => document.body, | 622 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 623 | }, | 623 | }, |
| 624 | ifShow: ({ values }) => | 624 | ifShow: ({ values }) => |
| 625 | isDeviceOut(values.outTarget) && isPartOrAll(values.device) && isDefine(values.commandType), | 625 | isDeviceOut(values.outTarget) && isPartOrAll(values.device) && isDefine(values.commandType), |
| @@ -688,7 +688,7 @@ export const actionSchema: FormSchema[] = [ | @@ -688,7 +688,7 @@ export const actionSchema: FormSchema[] = [ | ||
| 688 | }, | 688 | }, |
| 689 | labelField: 'functionName', | 689 | labelField: 'functionName', |
| 690 | valueField: 'id', | 690 | valueField: 'id', |
| 691 | - getPopupContainer: () => document.body, | 691 | + getPopupContainer: (triggerNode) => triggerNode.parentNode, |
| 692 | onChange: (_, options: ModelOfMatterParams) => { | 692 | onChange: (_, options: ModelOfMatterParams) => { |
| 693 | if (options) { | 693 | if (options) { |
| 694 | // setFieldsValue({ doContext: { ...options.functionJson, callType: options.callType } }); | 694 | // setFieldsValue({ doContext: { ...options.functionJson, callType: options.callType } }); |
| @@ -148,6 +148,7 @@ | @@ -148,6 +148,7 @@ | ||
| 148 | { value: 'DEFAULT', label: '默认' }, | 148 | { value: 'DEFAULT', label: '默认' }, |
| 149 | { value: 'SYSTEM', label: '系统' }, | 149 | { value: 'SYSTEM', label: '系统' }, |
| 150 | { value: 'REPORT', label: '报表' }, | 150 | { value: 'REPORT', label: '报表' }, |
| 151 | + { value: 'TASK_CENTER', label: '任务中心' }, | ||
| 151 | ]); | 152 | ]); |
| 152 | const optionStatus: any = ref([ | 153 | const optionStatus: any = ref([ |
| 153 | { value: '1 ', label: '成功' }, | 154 | { value: '1 ', label: '成功' }, |
| @@ -45,7 +45,7 @@ | @@ -45,7 +45,7 @@ | ||
| 45 | min: 0, | 45 | min: 0, |
| 46 | max: 100, | 46 | max: 100, |
| 47 | formatter: (e) => { | 47 | formatter: (e) => { |
| 48 | - const value = e.replace(/^0/g, ''); | 48 | + const value = e?.toString().replace(/^0/g, ''); |
| 49 | if (value) { | 49 | if (value) { |
| 50 | return value.replace(/^0/g, ''); | 50 | return value.replace(/^0/g, ''); |
| 51 | } else { | 51 | } else { |
| @@ -24,6 +24,18 @@ | @@ -24,6 +24,18 @@ | ||
| 24 | label: '文本字体大小', | 24 | label: '文本字体大小', |
| 25 | component: 'InputNumber', | 25 | component: 'InputNumber', |
| 26 | defaultValue: 14, | 26 | defaultValue: 14, |
| 27 | + componentProps: { | ||
| 28 | + min: 0, | ||
| 29 | + max: 100, | ||
| 30 | + formatter: (e) => { | ||
| 31 | + const value = e?.toString().replace(/^0/g, ''); | ||
| 32 | + if (value) { | ||
| 33 | + return value.replace(/^0/g, ''); | ||
| 34 | + } else { | ||
| 35 | + return 0; | ||
| 36 | + } | ||
| 37 | + }, | ||
| 38 | + }, | ||
| 27 | }, | 39 | }, |
| 28 | { | 40 | { |
| 29 | field: ComponentConfigFieldEnum.SHOW_DEVICE_NAME, | 41 | field: ComponentConfigFieldEnum.SHOW_DEVICE_NAME, |
| @@ -36,7 +36,19 @@ | @@ -36,7 +36,19 @@ | ||
| 36 | field: ComponentConfigFieldEnum.FONT_SIZE, | 36 | field: ComponentConfigFieldEnum.FONT_SIZE, |
| 37 | label: '文本字体大小', | 37 | label: '文本字体大小', |
| 38 | component: 'InputNumber', | 38 | component: 'InputNumber', |
| 39 | - defaultValue: option.fontSize, | 39 | + defaultValue: 14, |
| 40 | + componentProps: { | ||
| 41 | + min: 0, | ||
| 42 | + max: 100, | ||
| 43 | + formatter: (e) => { | ||
| 44 | + const value = e?.toString().replace(/^0/g, ''); | ||
| 45 | + if (value) { | ||
| 46 | + return value.replace(/^0/g, ''); | ||
| 47 | + } else { | ||
| 48 | + return 0; | ||
| 49 | + } | ||
| 50 | + }, | ||
| 51 | + }, | ||
| 40 | }, | 52 | }, |
| 41 | { | 53 | { |
| 42 | field: ComponentConfigFieldEnum.PASS_WORD, | 54 | field: ComponentConfigFieldEnum.PASS_WORD, |
| @@ -22,7 +22,19 @@ | @@ -22,7 +22,19 @@ | ||
| 22 | field: ComponentConfigFieldEnum.FONT_SIZE, | 22 | field: ComponentConfigFieldEnum.FONT_SIZE, |
| 23 | label: '文本字体大小', | 23 | label: '文本字体大小', |
| 24 | component: 'InputNumber', | 24 | component: 'InputNumber', |
| 25 | - defaultValue: option.fontSize, | 25 | + defaultValue: 14, |
| 26 | + componentProps: { | ||
| 27 | + min: 0, | ||
| 28 | + max: 100, | ||
| 29 | + formatter: (e) => { | ||
| 30 | + const value = e?.toString().replace(/^0/g, ''); | ||
| 31 | + if (value) { | ||
| 32 | + return value.replace(/^0/g, ''); | ||
| 33 | + } else { | ||
| 34 | + return 0; | ||
| 35 | + } | ||
| 36 | + }, | ||
| 37 | + }, | ||
| 26 | }, | 38 | }, |
| 27 | { | 39 | { |
| 28 | field: ComponentConfigFieldEnum.PASS_WORD, | 40 | field: ComponentConfigFieldEnum.PASS_WORD, |
| @@ -18,7 +18,19 @@ | @@ -18,7 +18,19 @@ | ||
| 18 | field: ComponentConfigFieldEnum.VALUE_SIZE, | 18 | field: ComponentConfigFieldEnum.VALUE_SIZE, |
| 19 | label: '数值字体大小', | 19 | label: '数值字体大小', |
| 20 | component: 'InputNumber', | 20 | component: 'InputNumber', |
| 21 | - defaultValue: option.fontSize, | 21 | + defaultValue: 14, |
| 22 | + componentProps: { | ||
| 23 | + min: 0, | ||
| 24 | + max: 100, | ||
| 25 | + formatter: (e) => { | ||
| 26 | + const value = e?.toString().replace(/^0/g, ''); | ||
| 27 | + if (value) { | ||
| 28 | + return value.replace(/^0/g, ''); | ||
| 29 | + } else { | ||
| 30 | + return 0; | ||
| 31 | + } | ||
| 32 | + }, | ||
| 33 | + }, | ||
| 22 | }, | 34 | }, |
| 23 | { | 35 | { |
| 24 | field: ComponentConfigFieldEnum.TEXT_COLOR, | 36 | field: ComponentConfigFieldEnum.TEXT_COLOR, |
| @@ -30,7 +30,19 @@ | @@ -30,7 +30,19 @@ | ||
| 30 | field: ComponentConfigFieldEnum.FONT_SIZE, | 30 | field: ComponentConfigFieldEnum.FONT_SIZE, |
| 31 | label: '文本字体大小', | 31 | label: '文本字体大小', |
| 32 | component: 'InputNumber', | 32 | component: 'InputNumber', |
| 33 | - defaultValue: option.fontSize, | 33 | + defaultValue: 14, |
| 34 | + componentProps: { | ||
| 35 | + min: 0, | ||
| 36 | + max: 100, | ||
| 37 | + formatter: (e) => { | ||
| 38 | + const value = e?.toString().replace(/^0/g, ''); | ||
| 39 | + if (value) { | ||
| 40 | + return value.replace(/^0/g, ''); | ||
| 41 | + } else { | ||
| 42 | + return 0; | ||
| 43 | + } | ||
| 44 | + }, | ||
| 45 | + }, | ||
| 34 | }, | 46 | }, |
| 35 | { | 47 | { |
| 36 | field: ComponentConfigFieldEnum.SHOW_DEVICE_NAME, | 48 | field: ComponentConfigFieldEnum.SHOW_DEVICE_NAME, |
| @@ -58,7 +58,7 @@ | @@ -58,7 +58,7 @@ | ||
| 58 | min: 0, | 58 | min: 0, |
| 59 | max: 100, | 59 | max: 100, |
| 60 | formatter: (e) => { | 60 | formatter: (e) => { |
| 61 | - const value = e.replace(/^0/g, ''); | 61 | + const value = e?.toString().replace(/^0/g, ''); |
| 62 | if (value) { | 62 | if (value) { |
| 63 | return value.replace(/^0/g, ''); | 63 | return value.replace(/^0/g, ''); |
| 64 | } else { | 64 | } else { |
| @@ -76,7 +76,7 @@ | @@ -76,7 +76,7 @@ | ||
| 76 | min: 0, | 76 | min: 0, |
| 77 | max: 100, | 77 | max: 100, |
| 78 | formatter: (e) => { | 78 | formatter: (e) => { |
| 79 | - const value = e.replace(/^0/g, ''); | 79 | + const value = e?.toString().replace(/^0/g, ''); |
| 80 | if (value) { | 80 | if (value) { |
| 81 | return value.replace(/^0/g, ''); | 81 | return value.replace(/^0/g, ''); |
| 82 | } else { | 82 | } else { |
| @@ -64,7 +64,7 @@ | @@ -64,7 +64,7 @@ | ||
| 64 | min: 0, | 64 | min: 0, |
| 65 | max: 100, | 65 | max: 100, |
| 66 | formatter: (e) => { | 66 | formatter: (e) => { |
| 67 | - const value = e.replace(/^0/g, ''); | 67 | + const value = e?.toString().replace(/^0/g, ''); |
| 68 | if (value) { | 68 | if (value) { |
| 69 | return value.replace(/^0/g, ''); | 69 | return value.replace(/^0/g, ''); |
| 70 | } else { | 70 | } else { |
| @@ -82,7 +82,7 @@ | @@ -82,7 +82,7 @@ | ||
| 82 | min: 0, | 82 | min: 0, |
| 83 | max: 100, | 83 | max: 100, |
| 84 | formatter: (e) => { | 84 | formatter: (e) => { |
| 85 | - const value = e.replace(/^0/g, ''); | 85 | + const value = e?.toString().replace(/^0/g, ''); |
| 86 | if (value) { | 86 | if (value) { |
| 87 | return value.replace(/^0/g, ''); | 87 | return value.replace(/^0/g, ''); |
| 88 | } else { | 88 | } else { |
| @@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
| 2 | import { ComponentConfigFieldEnum } from '/@/views/visual/packages/enum'; | 2 | import { ComponentConfigFieldEnum } from '/@/views/visual/packages/enum'; |
| 3 | import { useForm, BasicForm } from '/@/components/Form'; | 3 | import { useForm, BasicForm } from '/@/components/Form'; |
| 4 | import { PublicFormInstaceType } from '/@/views/visual/dataSourceBindPanel/index.type'; | 4 | import { PublicFormInstaceType } from '/@/views/visual/dataSourceBindPanel/index.type'; |
| 5 | + import { nextTick } from 'vue'; | ||
| 5 | 6 | ||
| 6 | const [register, { getFieldsValue, setFieldsValue, resetFields }] = useForm({ | 7 | const [register, { getFieldsValue, setFieldsValue, resetFields }] = useForm({ |
| 7 | schemas: [ | 8 | schemas: [ |
| @@ -28,7 +29,7 @@ | @@ -28,7 +29,7 @@ | ||
| 28 | min: 0, | 29 | min: 0, |
| 29 | max: 100, | 30 | max: 100, |
| 30 | formatter: (e) => { | 31 | formatter: (e) => { |
| 31 | - const value = e.replace(/^0/g, ''); | 32 | + const value = e?.toString().replace(/^0/g, ''); |
| 32 | if (value) { | 33 | if (value) { |
| 33 | return value.replace(/^0/g, ''); | 34 | return value.replace(/^0/g, ''); |
| 34 | } else { | 35 | } else { |
| @@ -58,7 +58,7 @@ | @@ -58,7 +58,7 @@ | ||
| 58 | min: 0, | 58 | min: 0, |
| 59 | max: 100, | 59 | max: 100, |
| 60 | formatter: (e) => { | 60 | formatter: (e) => { |
| 61 | - const value = e.replace(/^0/g, ''); | 61 | + const value = e?.toString().replace(/^0/g, ''); |
| 62 | if (value) { | 62 | if (value) { |
| 63 | return value.replace(/^0/g, ''); | 63 | return value.replace(/^0/g, ''); |
| 64 | } else { | 64 | } else { |
| @@ -76,7 +76,7 @@ | @@ -76,7 +76,7 @@ | ||
| 76 | min: 0, | 76 | min: 0, |
| 77 | max: 100, | 77 | max: 100, |
| 78 | formatter: (e) => { | 78 | formatter: (e) => { |
| 79 | - const value = e.replace(/^0/g, ''); | 79 | + const value = e?.toString().replace(/^0/g, ''); |
| 80 | if (value) { | 80 | if (value) { |
| 81 | return value.replace(/^0/g, ''); | 81 | return value.replace(/^0/g, ''); |
| 82 | } else { | 82 | } else { |
| @@ -72,7 +72,7 @@ | @@ -72,7 +72,7 @@ | ||
| 72 | min: 0, | 72 | min: 0, |
| 73 | max: 100, | 73 | max: 100, |
| 74 | formatter: (e) => { | 74 | formatter: (e) => { |
| 75 | - const value = e.replace(/^0/g, ''); | 75 | + const value = e?.toString().replace(/^0/g, ''); |
| 76 | if (value) { | 76 | if (value) { |
| 77 | return value.replace(/^0/g, ''); | 77 | return value.replace(/^0/g, ''); |
| 78 | } else { | 78 | } else { |
| @@ -90,7 +90,7 @@ | @@ -90,7 +90,7 @@ | ||
| 90 | min: 0, | 90 | min: 0, |
| 91 | max: 100, | 91 | max: 100, |
| 92 | formatter: (e) => { | 92 | formatter: (e) => { |
| 93 | - const value = e.replace(/^0/g, ''); | 93 | + const value = e?.toString().replace(/^0/g, ''); |
| 94 | if (value) { | 94 | if (value) { |
| 95 | return value.replace(/^0/g, ''); | 95 | return value.replace(/^0/g, ''); |
| 96 | } else { | 96 | } else { |
| @@ -51,7 +51,7 @@ | @@ -51,7 +51,7 @@ | ||
| 51 | min: 0, | 51 | min: 0, |
| 52 | max: 100, | 52 | max: 100, |
| 53 | formatter: (e) => { | 53 | formatter: (e) => { |
| 54 | - const value = e.replace(/^0/g, ''); | 54 | + const value = e?.toString().replace(/^0/g, ''); |
| 55 | if (value) { | 55 | if (value) { |
| 56 | return value.replace(/^0/g, ''); | 56 | return value.replace(/^0/g, ''); |
| 57 | } else { | 57 | } else { |
| @@ -69,7 +69,7 @@ | @@ -69,7 +69,7 @@ | ||
| 69 | min: 0, | 69 | min: 0, |
| 70 | max: 100, | 70 | max: 100, |
| 71 | formatter: (e) => { | 71 | formatter: (e) => { |
| 72 | - const value = e.replace(/^0/g, ''); | 72 | + const value = e?.toString().replace(/^0/g, ''); |
| 73 | if (value) { | 73 | if (value) { |
| 74 | return value.replace(/^0/g, ''); | 74 | return value.replace(/^0/g, ''); |
| 75 | } else { | 75 | } else { |
| @@ -62,7 +62,7 @@ | @@ -62,7 +62,7 @@ | ||
| 62 | min: 0, | 62 | min: 0, |
| 63 | max: 100, | 63 | max: 100, |
| 64 | formatter: (e) => { | 64 | formatter: (e) => { |
| 65 | - const value = e.replace(/^0/g, ''); | 65 | + const value = e?.toString().replace(/^0/g, ''); |
| 66 | if (value) { | 66 | if (value) { |
| 67 | return value.replace(/^0/g, ''); | 67 | return value.replace(/^0/g, ''); |
| 68 | } else { | 68 | } else { |
| @@ -80,7 +80,7 @@ | @@ -80,7 +80,7 @@ | ||
| 80 | min: 0, | 80 | min: 0, |
| 81 | max: 100, | 81 | max: 100, |
| 82 | formatter: (e) => { | 82 | formatter: (e) => { |
| 83 | - const value = e.replace(/^0/g, ''); | 83 | + const value = e?.toString().replace(/^0/g, ''); |
| 84 | if (value) { | 84 | if (value) { |
| 85 | return value.replace(/^0/g, ''); | 85 | return value.replace(/^0/g, ''); |
| 86 | } else { | 86 | } else { |
| @@ -85,7 +85,7 @@ | @@ -85,7 +85,7 @@ | ||
| 85 | min: 0, | 85 | min: 0, |
| 86 | max: 100, | 86 | max: 100, |
| 87 | formatter: (e) => { | 87 | formatter: (e) => { |
| 88 | - const value = e.replace(/^0/g, ''); | 88 | + const value = e?.toString().replace(/^0/g, ''); |
| 89 | if (value) { | 89 | if (value) { |
| 90 | return value.replace(/^0/g, ''); | 90 | return value.replace(/^0/g, ''); |
| 91 | } else { | 91 | } else { |
| @@ -103,7 +103,7 @@ | @@ -103,7 +103,7 @@ | ||
| 103 | min: 0, | 103 | min: 0, |
| 104 | max: 100, | 104 | max: 100, |
| 105 | formatter: (e) => { | 105 | formatter: (e) => { |
| 106 | - const value = e.replace(/^0/g, ''); | 106 | + const value = e?.toString().replace(/^0/g, ''); |
| 107 | if (value) { | 107 | if (value) { |
| 108 | return value.replace(/^0/g, ''); | 108 | return value.replace(/^0/g, ''); |
| 109 | } else { | 109 | } else { |
| @@ -33,7 +33,7 @@ | @@ -33,7 +33,7 @@ | ||
| 33 | min: 0, | 33 | min: 0, |
| 34 | max: 100, | 34 | max: 100, |
| 35 | formatter: (e) => { | 35 | formatter: (e) => { |
| 36 | - const value = e.replace(/^0/g, ''); | 36 | + const value = e?.toString().replace(/^0/g, ''); |
| 37 | if (value) { | 37 | if (value) { |
| 38 | return value.replace(/^0/g, ''); | 38 | return value.replace(/^0/g, ''); |
| 39 | } else { | 39 | } else { |
| @@ -55,7 +55,7 @@ | @@ -55,7 +55,7 @@ | ||
| 55 | min: 0, | 55 | min: 0, |
| 56 | max: 100, | 56 | max: 100, |
| 57 | formatter: (e) => { | 57 | formatter: (e) => { |
| 58 | - const value = e.replace(/^0/g, ''); | 58 | + const value = e?.toString().replace(/^0/g, ''); |
| 59 | if (value) { | 59 | if (value) { |
| 60 | return value.replace(/^0/g, ''); | 60 | return value.replace(/^0/g, ''); |
| 61 | } else { | 61 | } else { |
| @@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
| 28 | min: 0, | 28 | min: 0, |
| 29 | max: 100, | 29 | max: 100, |
| 30 | formatter: (e) => { | 30 | formatter: (e) => { |
| 31 | - const value = e.replace(/^0/g, ''); | 31 | + const value = e?.toString().replace(/^0/g, ''); |
| 32 | if (value) { | 32 | if (value) { |
| 33 | return value.replace(/^0/g, ''); | 33 | return value.replace(/^0/g, ''); |
| 34 | } else { | 34 | } else { |
| @@ -45,7 +45,7 @@ | @@ -45,7 +45,7 @@ | ||
| 45 | componentProps: { | 45 | componentProps: { |
| 46 | min: 0, | 46 | min: 0, |
| 47 | formatter: (e) => { | 47 | formatter: (e) => { |
| 48 | - const value = e.replace(/^0/g, ''); | 48 | + const value = e?.toString().replace(/^0/g, ''); |
| 49 | if (value) { | 49 | if (value) { |
| 50 | return value.replace(/^0/g, ''); | 50 | return value.replace(/^0/g, ''); |
| 51 | } else { | 51 | } else { |
| @@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
| 28 | min: 0, | 28 | min: 0, |
| 29 | max: 100, | 29 | max: 100, |
| 30 | formatter: (e) => { | 30 | formatter: (e) => { |
| 31 | - const value = e.replace(/^0/g, ''); | 31 | + const value = e?.toString().replace(/^0/g, ''); |
| 32 | if (value) { | 32 | if (value) { |
| 33 | return value.replace(/^0/g, ''); | 33 | return value.replace(/^0/g, ''); |
| 34 | } else { | 34 | } else { |
| @@ -46,7 +46,7 @@ | @@ -46,7 +46,7 @@ | ||
| 46 | min: 0, | 46 | min: 0, |
| 47 | max: 100, | 47 | max: 100, |
| 48 | formatter: (e) => { | 48 | formatter: (e) => { |
| 49 | - const value = e.replace(/^0/g, ''); | 49 | + const value = e?.toString().replace(/^0/g, ''); |
| 50 | if (value) { | 50 | if (value) { |
| 51 | return value.replace(/^0/g, ''); | 51 | return value.replace(/^0/g, ''); |
| 52 | } else { | 52 | } else { |
| @@ -33,7 +33,7 @@ | @@ -33,7 +33,7 @@ | ||
| 33 | min: 0, | 33 | min: 0, |
| 34 | max: 100, | 34 | max: 100, |
| 35 | formatter: (e) => { | 35 | formatter: (e) => { |
| 36 | - const value = e.replace(/^0/g, ''); | 36 | + const value = e?.toString().replace(/^0/g, ''); |
| 37 | if (value) { | 37 | if (value) { |
| 38 | return value.replace(/^0/g, ''); | 38 | return value.replace(/^0/g, ''); |
| 39 | } else { | 39 | } else { |
| @@ -51,7 +51,7 @@ | @@ -51,7 +51,7 @@ | ||
| 51 | min: 0, | 51 | min: 0, |
| 52 | max: 100, | 52 | max: 100, |
| 53 | formatter: (e) => { | 53 | formatter: (e) => { |
| 54 | - const value = e.replace(/^0/g, ''); | 54 | + const value = e?.toString().replace(/^0/g, ''); |
| 55 | if (value) { | 55 | if (value) { |
| 56 | return value.replace(/^0/g, ''); | 56 | return value.replace(/^0/g, ''); |
| 57 | } else { | 57 | } else { |
| @@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
| 32 | min: 0, | 32 | min: 0, |
| 33 | max: 100, | 33 | max: 100, |
| 34 | formatter: (e) => { | 34 | formatter: (e) => { |
| 35 | - const value = e.replace(/^0/g, ''); | 35 | + const value = e?.toString().replace(/^0/g, ''); |
| 36 | if (value) { | 36 | if (value) { |
| 37 | return value.replace(/^0/g, ''); | 37 | return value.replace(/^0/g, ''); |
| 38 | } else { | 38 | } else { |
| @@ -50,7 +50,7 @@ | @@ -50,7 +50,7 @@ | ||
| 50 | min: 0, | 50 | min: 0, |
| 51 | max: 100, | 51 | max: 100, |
| 52 | formatter: (e) => { | 52 | formatter: (e) => { |
| 53 | - const value = e.replace(/^0/g, ''); | 53 | + const value = e?.toString().replace(/^0/g, ''); |
| 54 | if (value) { | 54 | if (value) { |
| 55 | return value.replace(/^0/g, ''); | 55 | return value.replace(/^0/g, ''); |
| 56 | } else { | 56 | } else { |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | min: 0, | 34 | min: 0, |
| 35 | max: 100, | 35 | max: 100, |
| 36 | formatter: (e) => { | 36 | formatter: (e) => { |
| 37 | - const value = e.replace(/^0/g, ''); | 37 | + const value = e?.toString().replace(/^0/g, ''); |
| 38 | if (value) { | 38 | if (value) { |
| 39 | return value.replace(/^0/g, ''); | 39 | return value.replace(/^0/g, ''); |
| 40 | } else { | 40 | } else { |
| @@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
| 52 | min: 0, | 52 | min: 0, |
| 53 | max: 100, | 53 | max: 100, |
| 54 | formatter: (e) => { | 54 | formatter: (e) => { |
| 55 | - const value = e.replace(/^0/g, ''); | 55 | + const value = e?.toString().replace(/^0/g, ''); |
| 56 | if (value) { | 56 | if (value) { |
| 57 | return value.replace(/^0/g, ''); | 57 | return value.replace(/^0/g, ''); |
| 58 | } else { | 58 | } else { |
| @@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
| 32 | componentProps: { | 32 | componentProps: { |
| 33 | min: 0, | 33 | min: 0, |
| 34 | formatter: (e) => { | 34 | formatter: (e) => { |
| 35 | - const value = e.replace(/^0/g, ''); | 35 | + const value = e?.toString().replace(/^0/g, ''); |
| 36 | if (value) { | 36 | if (value) { |
| 37 | return value.replace(/^0/g, ''); | 37 | return value.replace(/^0/g, ''); |
| 38 | } else { | 38 | } else { |
| @@ -50,7 +50,7 @@ | @@ -50,7 +50,7 @@ | ||
| 50 | min: 0, | 50 | min: 0, |
| 51 | max: 100, | 51 | max: 100, |
| 52 | formatter: (e) => { | 52 | formatter: (e) => { |
| 53 | - const value = e.replace(/^0/g, ''); | 53 | + const value = e?.toString().replace(/^0/g, ''); |
| 54 | if (value) { | 54 | if (value) { |
| 55 | return value.replace(/^0/g, ''); | 55 | return value.replace(/^0/g, ''); |
| 56 | } else { | 56 | } else { |