Commit b2ad4d171a23135cc939234a14e19a363ca54f95
Merge branch 'dev-fix-ww' into 'main_dev'
fix: 修复teambition中BUG See merge request yunteng/thingskit-front!569
Showing
8 changed files
with
41 additions
and
33 deletions
... | ... | @@ -27,30 +27,14 @@ export const step1Schemas: FormSchema[] = [ |
27 | 27 | component: 'Input', |
28 | 28 | componentProps: { |
29 | 29 | maxLength: 255, |
30 | + placeholder: '请输入别名', | |
30 | 31 | }, |
31 | 32 | }, |
32 | 33 | { |
33 | 34 | field: 'name', |
34 | 35 | label: '设备名称', |
35 | 36 | component: 'Input', |
36 | - dynamicRules: () => { | |
37 | - return [ | |
38 | - { | |
39 | - required: true, | |
40 | - validator: (_, value) => { | |
41 | - // 支持英文字母、数字、下划线(_)、中划线(-)、点号(.)、半角冒号(:)和特殊字符@,长度限制为4~32个字符 | |
42 | - const reg = /^[A-Za-z0-9_\( \)\-\@\:\.]+$/; | |
43 | - const strLength = String(value).length as number; | |
44 | - if (!reg.test(value) || strLength > 32 || strLength < 4) { | |
45 | - return Promise.reject( | |
46 | - '请输入支持英文字母、数字、下划线(_)、中划线(-)、点号(.)、半角冒号(:)和特殊字符@,长度限制为4~32个字符' | |
47 | - ); | |
48 | - } | |
49 | - return Promise.resolve(); | |
50 | - }, | |
51 | - }, | |
52 | - ]; | |
53 | - }, | |
37 | + rules: [{ required: true, message: '设备名称为必填项' }], | |
54 | 38 | slot: 'snCode', |
55 | 39 | }, |
56 | 40 | { |
... | ... | @@ -97,6 +81,7 @@ export const step1Schemas: FormSchema[] = [ |
97 | 81 | }); |
98 | 82 | }, |
99 | 83 | showSearch: true, |
84 | + placeholder: '请选择产品', | |
100 | 85 | filterOption: (inputValue: string, option: Record<'label' | 'value', string>) => |
101 | 86 | option.label.includes(inputValue), |
102 | 87 | }; |
... | ... | @@ -120,6 +105,17 @@ export const step1Schemas: FormSchema[] = [ |
120 | 105 | }, |
121 | 106 | }, |
122 | 107 | { |
108 | + field: 'code', | |
109 | + label: '设备标识', | |
110 | + required: true, | |
111 | + component: 'Input', | |
112 | + componentProps: { | |
113 | + maxLength: 255, | |
114 | + placeholder: '请输入设备标识', | |
115 | + }, | |
116 | + ifShow: ({ values }) => values?.transportType === TransportTypeEnum.TCP, | |
117 | + }, | |
118 | + { | |
123 | 119 | field: 'brand', |
124 | 120 | component: 'ApiRadioGroup', |
125 | 121 | label: '选择厂家', | ... | ... |
... | ... | @@ -28,15 +28,16 @@ export const columns: BasicColumn[] = [ |
28 | 28 | slots: { customRender: 'name', title: 'deviceTitle' }, |
29 | 29 | customRender: ({ record }) => { |
30 | 30 | return h('div', { style: 'display:flex;flex-direction:column' }, [ |
31 | + record.alias && | |
32 | + h( | |
33 | + 'div', | |
34 | + { | |
35 | + class: 'cursor-pointer', | |
36 | + }, | |
37 | + `${record.alias}` | |
38 | + ), | |
31 | 39 | h( |
32 | - 'p', | |
33 | - { | |
34 | - class: 'cursor-pointer', | |
35 | - }, | |
36 | - `${record.alias}` | |
37 | - ), | |
38 | - h( | |
39 | - 'p', | |
40 | + 'div', | |
40 | 41 | { |
41 | 42 | class: 'cursor-pointer text-blue-500', |
42 | 43 | onClick: () => { | ... | ... |
... | ... | @@ -40,7 +40,7 @@ |
40 | 40 | </template> |
41 | 41 | <template #snCode="{ model, field }"> |
42 | 42 | <div class="flex"> |
43 | - <Input v-model:value="model[field]" /> | |
43 | + <Input v-model:value="model[field]" placeholder="请输入设备名称" /> | |
44 | 44 | <a-button type="link" @click="generateSN">自动生成</a-button> |
45 | 45 | </div> |
46 | 46 | </template> | ... | ... |
... | ... | @@ -138,7 +138,7 @@ const deviceTableColumn: BasicColumn[] = [ |
138 | 138 | }, |
139 | 139 | }, |
140 | 140 | [ |
141 | - h('div', { class: 'truncate' }, record.alias), | |
141 | + record.alias && h('div', { class: 'truncate' }, record.alias), | |
142 | 142 | h('div', { class: 'text-blue-400 truncate' }, record.name), |
143 | 143 | ] |
144 | 144 | ), | ... | ... |
... | ... | @@ -294,8 +294,9 @@ |
294 | 294 | watch( |
295 | 295 | () => props.frontId, |
296 | 296 | async (target, oldTarget) => { |
297 | - if (isControlComponent(oldTarget!) && isControlComponent(target!)) return; | |
298 | - await resetFormFields(); | |
297 | + if ([isControlComponent(oldTarget!), isControlComponent(target!)].some(Boolean)) { | |
298 | + await resetFormFields(); | |
299 | + } | |
299 | 300 | } |
300 | 301 | ); |
301 | 302 | ... | ... |
... | ... | @@ -14,6 +14,7 @@ |
14 | 14 | import { useCalcGridLayout } from '../../hook/useCalcGridLayout'; |
15 | 15 | import { FrontComponent } from '../../const/const'; |
16 | 16 | import { frontComponentMap } from '../../components/help'; |
17 | + import { ValidateErrorEntity } from 'ant-design-vue/es/form/interface'; | |
17 | 18 | |
18 | 19 | interface DataComponentRouteParams extends RouteParams { |
19 | 20 | id: string; |
... | ... | @@ -75,7 +76,14 @@ |
75 | 76 | unref(isEdit) ? handleUpdateComponent(value) : handleAddComponent(value); |
76 | 77 | resetForm(); |
77 | 78 | } catch (error: unknown) { |
78 | - window.console.error(error); | |
79 | + if ( | |
80 | + ((error || {}) as ValidateErrorEntity).errorFields && | |
81 | + ((error || {}) as ValidateErrorEntity).errorFields.length | |
82 | + ) { | |
83 | + const tooltip = ((error || {}) as ValidateErrorEntity).errorFields[0]; | |
84 | + createMessage.warning(tooltip.errors[0]); | |
85 | + } | |
86 | + throw error; | |
79 | 87 | } |
80 | 88 | }; |
81 | 89 | |
... | ... | @@ -97,7 +105,7 @@ |
97 | 105 | closeModal(); |
98 | 106 | emit('create'); |
99 | 107 | } catch (error) { |
100 | - console.log(error); | |
108 | + throw error; | |
101 | 109 | // createMessage.error('创建失败'); |
102 | 110 | } finally { |
103 | 111 | changeOkLoading(false); | ... | ... |
... | ... | @@ -289,6 +289,7 @@ export const dataSourceSchema = (isEdit: boolean, frontId?: FrontComponent): For |
289 | 289 | component: 'ApiSelect', |
290 | 290 | label: '命令类型', |
291 | 291 | defaultValue: CommandTypeEnum.CUSTOM.toString(), |
292 | + rules: [{ required: true, message: '请选择命令类型' }], | |
292 | 293 | colProps: { span: 8 }, |
293 | 294 | ifShow: ({ model }) => |
294 | 295 | isControlComponent(frontId!) && isTcpProfile(model[DataSourceField.TRANSPORT_TYPE]), |
... | ... | @@ -347,6 +348,7 @@ export const dataSourceSchema = (isEdit: boolean, frontId?: FrontComponent): For |
347 | 348 | component: 'Input', |
348 | 349 | label: '命令', |
349 | 350 | colProps: { span: 8 }, |
351 | + rules: [{ required: true, message: '请输入下发命令' }], | |
350 | 352 | // 是控制组件 && 自定义命令 && 传输协议为TCP |
351 | 353 | ifShow: ({ model }) => |
352 | 354 | isControlComponent(frontId!) && | ... | ... |