Commit b3a39547fe02fec3de2570cbc458194c32c3c99a

Authored by fengtao
1 parent 11eda7a1

fix:所有的字段确认了一下,修改场景联动设备应该显示设备名称问题

Showing 36 changed files with 1868 additions and 103 deletions
... ... @@ -8,10 +8,10 @@ VITE_PUBLIC_PATH = /
8 8 # Please note that no line breaks
9 9
10 10 # 本地
11   -VITE_PROXY = [["/api","http://localhost:8080/api"]]
  11 +# VITE_PROXY = [["/api","http://localhost:8080/api"]]
12 12
13 13 # 线上
14   -#VITE_PROXY = [["/api","http://101.133.234.90:8080/api"]]
  14 +VITE_PROXY = [["/api","http://101.133.234.90:8080/api"]]
15 15
16 16 # 实时数据的ws地址
17 17 VITE_WEB_SOCKET = ws://101.133.234.90:8080/api/ws/plugins/telemetry?token=
... ...
... ... @@ -78,6 +78,7 @@
78 78
79 79 .ant-badge {
80 80 font-size: 18px;
  81 + display: none;
81 82
82 83 .ant-badge-multiple-words {
83 84 padding: 0 4px;
... ...
... ... @@ -122,7 +122,7 @@
122 122 export default defineComponent({
123 123 name: 'index',
124 124 components: { BasicModal, BasicForm, Description, Upload, PlusOutlined },
125   - emits: ['refreshPersonl'],
  125 + emits: ['refreshPersonl', 'register'],
126 126 setup(_, { emit }) {
127 127 const userInfo = getAuthCache(USER_INFO_KEY);
128 128 const { createMessage } = useMessage();
... ...
... ... @@ -33,6 +33,23 @@ export const alarmSearchSchemas: FormSchema[] = [
33 33 label: '告警类型',
34 34 component: 'Input',
35 35 colProps: { span: 6 },
  36 + componentProps: {
  37 + maxLength: 255,
  38 + placeholder: '请输入告警类型',
  39 + },
  40 + dynamicRules: () => {
  41 + return [
  42 + {
  43 + required: false,
  44 + validator: (_, value) => {
  45 + if (String(value).length > 255) {
  46 + return Promise.reject('字数不超过255个字');
  47 + }
  48 + return Promise.resolve();
  49 + },
  50 + },
  51 + ];
  52 + },
36 53 },
37 54 {
38 55 field: 'endTime',
... ...
... ... @@ -5,7 +5,6 @@ import { getOrganizationList } from '/@/api/system/system';
5 5 import { copyTransFun } from '/@/utils/fnUtils';
6 6 import {
7 7 DeviceNameMaxLength,
8   - DeviceUserNameMaxLength,
9 8 DeviceProfileIdMaxLength,
10 9 DeviceOrgIdMaxLength,
11 10 } from '/@/utils/rules';
... ... @@ -76,6 +75,20 @@ export const step1Schemas: FormSchema[] = [
76 75 component: 'Input',
77 76 componentProps: {
78 77 maxLength: 255,
  78 + placeholder: '请输入设备标签',
  79 + },
  80 + dynamicRules: () => {
  81 + return [
  82 + {
  83 + required: false,
  84 + validator: (_, value) => {
  85 + if (String(value).length > 255) {
  86 + return Promise.reject('字数不超过255个字');
  87 + }
  88 + return Promise.resolve();
  89 + },
  90 + },
  91 + ];
79 92 },
80 93 },
81 94 {
... ... @@ -90,6 +103,20 @@ export const step1Schemas: FormSchema[] = [
90 103 component: 'InputTextArea',
91 104 componentProps: {
92 105 maxLength: 500,
  106 + placeholder: '请输入备注',
  107 + },
  108 + dynamicRules: () => {
  109 + return [
  110 + {
  111 + required: false,
  112 + validator: (_, value) => {
  113 + if (String(value).length > 500) {
  114 + return Promise.reject('字数不超过500个字');
  115 + }
  116 + return Promise.resolve();
  117 + },
  118 + },
  119 + ];
93 120 },
94 121 },
95 122 {
... ... @@ -99,6 +126,20 @@ export const step1Schemas: FormSchema[] = [
99 126 show: false,
100 127 componentProps: {
101 128 maxLength: 36,
  129 + placeholder: '请输入id',
  130 + },
  131 + dynamicRules: () => {
  132 + return [
  133 + {
  134 + required: false,
  135 + validator: (_, value) => {
  136 + if (String(value).length > 36) {
  137 + return Promise.reject('字数不超过36个字');
  138 + }
  139 + return Promise.resolve();
  140 + },
  141 + },
  142 + ];
102 143 },
103 144 },
104 145 {
... ... @@ -108,6 +149,20 @@ export const step1Schemas: FormSchema[] = [
108 149 show: false,
109 150 componentProps: {
110 151 maxLength: 36,
  152 + placeholder: '请输入租户Code',
  153 + },
  154 + dynamicRules: () => {
  155 + return [
  156 + {
  157 + required: false,
  158 + validator: (_, value) => {
  159 + if (String(value).length > 36) {
  160 + return Promise.reject('字数不超过36个字');
  161 + }
  162 + return Promise.resolve();
  163 + },
  164 + },
  165 + ];
111 166 },
112 167 },
113 168 {
... ... @@ -117,6 +172,20 @@ export const step1Schemas: FormSchema[] = [
117 172 show: false,
118 173 componentProps: {
119 174 maxLength: 36,
  175 + placeholder: '请输入tbDeviceId',
  176 + },
  177 + dynamicRules: () => {
  178 + return [
  179 + {
  180 + required: false,
  181 + validator: (_, value) => {
  182 + if (String(value).length > 36) {
  183 + return Promise.reject('字数不超过36个字');
  184 + }
  185 + return Promise.resolve();
  186 + },
  187 + },
  188 + ];
120 189 },
121 190 },
122 191 ];
... ... @@ -269,7 +338,21 @@ export const step2Schemas: FormSchema[] = [
269 338 required: true,
270 339 ifShow: false,
271 340 componentProps: {
272   - maxLength: 0,
  341 + maxLength: 36,
  342 + placeholder: '请输入访问令牌',
  343 + },
  344 + dynamicRules: () => {
  345 + return [
  346 + {
  347 + required: true,
  348 + validator: (_, value) => {
  349 + if (String(value).length > 36) {
  350 + return Promise.reject('字数不超过36个字');
  351 + }
  352 + return Promise.resolve();
  353 + },
  354 + },
  355 + ];
273 356 },
274 357 },
275 358 {
... ... @@ -280,6 +363,20 @@ export const step2Schemas: FormSchema[] = [
280 363 ifShow: false,
281 364 componentProps: {
282 365 maxLength: 36,
  366 + placeholder: '请输入RSA公钥',
  367 + },
  368 + dynamicRules: () => {
  369 + return [
  370 + {
  371 + required: true,
  372 + validator: (_, value) => {
  373 + if (String(value).length > 36) {
  374 + return Promise.reject('字数不超过36个字');
  375 + }
  376 + return Promise.resolve();
  377 + },
  378 + },
  379 + ];
283 380 },
284 381 },
285 382 {
... ... @@ -290,6 +387,20 @@ export const step2Schemas: FormSchema[] = [
290 387 ifShow: false,
291 388 componentProps: {
292 389 maxLength: 36,
  390 + placeholder: '请输入客户端ID',
  391 + },
  392 + dynamicRules: () => {
  393 + return [
  394 + {
  395 + required: true,
  396 + validator: (_, value) => {
  397 + if (String(value).length > 36) {
  398 + return Promise.reject('字数不超过36个字');
  399 + }
  400 + return Promise.resolve();
  401 + },
  402 + },
  403 + ];
293 404 },
294 405 },
295 406 {
... ... @@ -297,10 +408,23 @@ export const step2Schemas: FormSchema[] = [
297 408 component: 'Input',
298 409 field: 'username',
299 410 required: true,
300   - rules: DeviceUserNameMaxLength,
301 411 ifShow: false,
302 412 componentProps: {
303 413 maxLength: 255,
  414 + placeholder: '请输入用户名',
  415 + },
  416 + dynamicRules: () => {
  417 + return [
  418 + {
  419 + required: true,
  420 + validator: (_, value) => {
  421 + if (String(value).length > 255) {
  422 + return Promise.reject('字数不超过255个字');
  423 + }
  424 + return Promise.resolve();
  425 + },
  426 + },
  427 + ];
304 428 },
305 429 },
306 430 {
... ... @@ -309,6 +433,20 @@ export const step2Schemas: FormSchema[] = [
309 433 field: 'password',
310 434 componentProps: {
311 435 maxLength: 36,
  436 + placeholder: '请输入密码',
  437 + },
  438 + dynamicRules: () => {
  439 + return [
  440 + {
  441 + required: false,
  442 + validator: (_, value) => {
  443 + if (String(value).length > 36) {
  444 + return Promise.reject('字数不超过36个字');
  445 + }
  446 + return Promise.resolve();
  447 + },
  448 + },
  449 + ];
312 450 },
313 451 ifShow: false,
314 452 },
... ... @@ -450,7 +588,21 @@ export const TokenSchemas: FormSchema[] = [
450 588 required: true,
451 589 ifShow: false,
452 590 componentProps: {
453   - maxLength: 0,
  591 + maxLength: 36,
  592 + placeholder: '请输入访问令牌',
  593 + },
  594 + dynamicRules: () => {
  595 + return [
  596 + {
  597 + required: false,
  598 + validator: (_, value) => {
  599 + if (String(value).length > 36) {
  600 + return Promise.reject('字数不超过36个字');
  601 + }
  602 + return Promise.resolve();
  603 + },
  604 + },
  605 + ];
454 606 },
455 607 },
456 608 {
... ... @@ -461,6 +613,20 @@ export const TokenSchemas: FormSchema[] = [
461 613 ifShow: false,
462 614 componentProps: {
463 615 maxLength: 36,
  616 + placeholder: '请输入RSA公钥',
  617 + },
  618 + dynamicRules: () => {
  619 + return [
  620 + {
  621 + required: true,
  622 + validator: (_, value) => {
  623 + if (String(value).length > 36) {
  624 + return Promise.reject('字数不超过36个字');
  625 + }
  626 + return Promise.resolve();
  627 + },
  628 + },
  629 + ];
464 630 },
465 631 },
466 632 {
... ... @@ -471,6 +637,20 @@ export const TokenSchemas: FormSchema[] = [
471 637 ifShow: false,
472 638 componentProps: {
473 639 maxLength: 36,
  640 + placeholder: '请输入客户端ID',
  641 + },
  642 + dynamicRules: () => {
  643 + return [
  644 + {
  645 + required: true,
  646 + validator: (_, value) => {
  647 + if (String(value).length > 36) {
  648 + return Promise.reject('字数不超过36个字');
  649 + }
  650 + return Promise.resolve();
  651 + },
  652 + },
  653 + ];
474 654 },
475 655 },
476 656 {
... ... @@ -479,9 +659,22 @@ export const TokenSchemas: FormSchema[] = [
479 659 field: 'username',
480 660 required: true,
481 661 ifShow: false,
482   - rules: DeviceUserNameMaxLength,
483 662 componentProps: {
484 663 maxLength: 255,
  664 + placeholder: '请输入用户名',
  665 + },
  666 + dynamicRules: () => {
  667 + return [
  668 + {
  669 + required: true,
  670 + validator: (_, value) => {
  671 + if (String(value).length > 255) {
  672 + return Promise.reject('字数不超过255个字');
  673 + }
  674 + return Promise.resolve();
  675 + },
  676 + },
  677 + ];
485 678 },
486 679 },
487 680 {
... ... @@ -491,6 +684,20 @@ export const TokenSchemas: FormSchema[] = [
491 684 ifShow: false,
492 685 componentProps: {
493 686 maxLength: 36,
  687 + placeholder: '请输入密码',
  688 + },
  689 + dynamicRules: () => {
  690 + return [
  691 + {
  692 + required: false,
  693 + validator: (_, value) => {
  694 + if (String(value).length > 36) {
  695 + return Promise.reject('字数不超过36个字');
  696 + }
  697 + return Promise.resolve();
  698 + },
  699 + },
  700 + ];
494 701 },
495 702 },
496 703 {
... ... @@ -500,6 +707,20 @@ export const TokenSchemas: FormSchema[] = [
500 707 show: false,
501 708 componentProps: {
502 709 maxLength: 36,
  710 + placeholder: '请输入id',
  711 + },
  712 + dynamicRules: () => {
  713 + return [
  714 + {
  715 + required: false,
  716 + validator: (_, value) => {
  717 + if (String(value).length > 36) {
  718 + return Promise.reject('字数不超过36个字');
  719 + }
  720 + return Promise.resolve();
  721 + },
  722 + },
  723 + ];
503 724 },
504 725 },
505 726 {
... ... @@ -509,6 +730,20 @@ export const TokenSchemas: FormSchema[] = [
509 730 show: false,
510 731 componentProps: {
511 732 maxLength: 36,
  733 + placeholder: '请输入tbDeviceId',
  734 + },
  735 + dynamicRules: () => {
  736 + return [
  737 + {
  738 + required: false,
  739 + validator: (_, value) => {
  740 + if (String(value).length > 36) {
  741 + return Promise.reject('字数不超过36个字');
  742 + }
  743 + return Promise.resolve();
  744 + },
  745 + },
  746 + ];
512 747 },
513 748 },
514 749 ];
... ...
... ... @@ -2,7 +2,6 @@ import { formatToDate } from '/@/utils/dateUtil';
2 2 import { BasicColumn } from '/@/components/Table';
3 3 import { FormSchema } from '/@/components/Table';
4 4 import { DeviceTypeEnum, DeviceState } from '/@/api/device/model/deviceModel';
5   -import { DeviceQueryUserNameMaxLength } from '/@/utils/rules';
6 5
7 6 // 表格列数据
8 7 export const columns: BasicColumn[] = [
... ... @@ -87,9 +86,22 @@ export const searchFormSchema: FormSchema[] = [
87 86 label: '设备名称',
88 87 component: 'Input',
89 88 colProps: { span: 7 },
90   - rules: DeviceQueryUserNameMaxLength,
91 89 componentProps: {
92 90 maxLength: 255,
  91 + placeholder: '请输入设备名称',
  92 + },
  93 + dynamicRules: () => {
  94 + return [
  95 + {
  96 + required: false,
  97 + validator: (_, value) => {
  98 + if (String(value).length > 255) {
  99 + return Promise.reject('字数不超过255个字');
  100 + }
  101 + return Promise.resolve();
  102 + },
  103 + },
  104 + ];
93 105 },
94 106 },
95 107 ];
... ...
... ... @@ -99,6 +99,7 @@
99 99 switch (current.value) {
100 100 case 0:
101 101 proxy.$refs.DeviceProfileStep1Ref.customResetFunc();
  102 + proxy.$refs.DeviceProfileStep1Ref.resetIconFunc();
102 103 break;
103 104 case 1:
104 105 proxy.$refs.DeviceProfileStep2Ref.customResetAndFunc();
... ... @@ -123,6 +124,7 @@
123 124 switch (current.value) {
124 125 case 0:
125 126 proxy.$refs.DeviceProfileStep1Ref.resetFieldsFunc(editEchoData.value);
  127 + proxy.$refs.DeviceProfileStep1Ref.editIconFunc(editEchoData.value.icon);
126 128 break;
127 129 }
128 130 }
... ... @@ -130,9 +132,12 @@
130 132 function handleStepPrev() {
131 133 current.value--;
132 134 }
133   - function handleStepNext1(v) {
  135 + function handleStepNext1(v, v1) {
  136 + console.log(v, v1);
134 137 current.value++;
135 138 getStepOneData.value = v;
  139 + getStepOneData.value.icon = v1;
  140 + console.log(getStepOneData.value);
136 141 if (unref(isUpdate)) {
137 142 proxy.$refs.DeviceProfileStep2Ref.resetFieldsFunc({
138 143 transportType: editEchoData.value.profileData.transportConfiguration.type,
... ...
... ... @@ -4,7 +4,7 @@ import { findDictItemByCode } from '/@/api/system/dict';
4 4 import { MessageEnum } from '/@/enums/messageEnum';
5 5 // import { getOrganizationList } from '/@/api/system/system';
6 6 // import { copyTransFun } from '/@/utils/fnUtils';
7   -import { DeviceProfileQueryUserNameMaxLength } from '/@/utils/rules';
  7 +import { numberRule } from '/@/utils/rules';
8 8
9 9 export const columns: BasicColumn[] = [
10 10 {
... ... @@ -36,8 +36,22 @@ export const searchFormSchema: FormSchema[] = [
36 36 component: 'Input',
37 37 colProps: { span: 8 },
38 38 componentProps: {
  39 + maxLength: 255,
39 40 placeholder: '请输入配置名称',
40 41 },
  42 + dynamicRules: () => {
  43 + return [
  44 + {
  45 + required: false,
  46 + validator: (_, value) => {
  47 + if (String(value).length > 255) {
  48 + return Promise.reject('字数不超过255个字');
  49 + }
  50 + return Promise.resolve();
  51 + },
  52 + },
  53 + ];
  54 + },
41 55 },
42 56 ];
43 57
... ... @@ -55,9 +69,22 @@ export const formSchema: FormSchema[] = [
55 69 required: true,
56 70 component: 'Input',
57 71 componentProps: {
  72 + maxLength: 255,
58 73 placeholder: '请输入配置名称',
59 74 },
60   - rules: DeviceProfileQueryUserNameMaxLength,
  75 + dynamicRules: () => {
  76 + return [
  77 + {
  78 + required: true,
  79 + validator: (_, value) => {
  80 + if (String(value).length > 255) {
  81 + return Promise.reject('字数不超过255个字');
  82 + }
  83 + return Promise.resolve();
  84 + },
  85 + },
  86 + ];
  87 + },
61 88 },
62 89 {
63 90 field: 'messageType',
... ... @@ -93,6 +120,23 @@ export const formSchema: FormSchema[] = [
93 120 label: 'accessKeyId',
94 121 required: true,
95 122 component: 'Input',
  123 + componentProps: {
  124 + maxLength: 36,
  125 + placeholder: '请输入accessKeyId',
  126 + },
  127 + dynamicRules: () => {
  128 + return [
  129 + {
  130 + required: true,
  131 + validator: (_, value) => {
  132 + if (String(value).length > 36) {
  133 + return Promise.reject('字数不超过36个字');
  134 + }
  135 + return Promise.resolve();
  136 + },
  137 + },
  138 + ];
  139 + },
96 140 ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')),
97 141 },
98 142 {
... ... @@ -100,6 +144,23 @@ export const formSchema: FormSchema[] = [
100 144 label: 'accessKeySecret',
101 145 required: true,
102 146 component: 'Input',
  147 + componentProps: {
  148 + maxLength: 36,
  149 + placeholder: '请输入accessKeySecret',
  150 + },
  151 + dynamicRules: () => {
  152 + return [
  153 + {
  154 + required: true,
  155 + validator: (_, value) => {
  156 + if (String(value).length > 36) {
  157 + return Promise.reject('字数不超过36个字');
  158 + }
  159 + return Promise.resolve();
  160 + },
  161 + },
  162 + ];
  163 + },
103 164 ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')),
104 165 },
105 166 {
... ... @@ -108,6 +169,23 @@ export const formSchema: FormSchema[] = [
108 169 defaultValue: 'smtp.163.com',
109 170 required: true,
110 171 component: 'Input',
  172 + componentProps: {
  173 + maxLength: 36,
  174 + placeholder: '请输入accessKeySecret',
  175 + },
  176 + dynamicRules: () => {
  177 + return [
  178 + {
  179 + required: true,
  180 + validator: (_, value) => {
  181 + if (String(value).length > 36) {
  182 + return Promise.reject('字数不超过36个字');
  183 + }
  184 + return Promise.resolve();
  185 + },
  186 + },
  187 + ];
  188 + },
111 189 ifShow: ({ values }) => isEmail(Reflect.get(values, 'messageType')),
112 190 },
113 191 {
... ... @@ -116,6 +194,12 @@ export const formSchema: FormSchema[] = [
116 194 defaultValue: 25,
117 195 required: true,
118 196 component: 'InputNumber',
  197 + rules: numberRule,
  198 + componentProps: {
  199 + maxLength: 36,
  200 + placeholder: '请输入端口',
  201 + },
  202 +
119 203 ifShow: ({ values }) => isEmail(Reflect.get(values, 'messageType')),
120 204 },
121 205 {
... ... @@ -123,6 +207,24 @@ export const formSchema: FormSchema[] = [
123 207 label: '用户名',
124 208 required: true,
125 209 component: 'Input',
  210 + componentProps: {
  211 + maxLength: 255,
  212 + placeholder: '请输入用户名',
  213 + },
  214 + dynamicRules: () => {
  215 + return [
  216 + {
  217 + required: true,
  218 + validator: (_, value) => {
  219 + if (String(value).length > 255) {
  220 + return Promise.reject('字数不超过255个字');
  221 + }
  222 + return Promise.resolve();
  223 + },
  224 + },
  225 + ];
  226 + },
  227 +
126 228 ifShow: ({ values }) => isEmail(Reflect.get(values, 'messageType')),
127 229 },
128 230 {
... ... @@ -137,12 +239,46 @@ export const formSchema: FormSchema[] = [
137 239 label: '消息配置',
138 240 component: 'Input',
139 241 show: false,
  242 + componentProps: {
  243 + maxLength: 255,
  244 + placeholder: '请输入消息配置',
  245 + },
  246 + dynamicRules: () => {
  247 + return [
  248 + {
  249 + required: false,
  250 + validator: (_, value) => {
  251 + if (String(value).length > 255) {
  252 + return Promise.reject('字数不超过255个字');
  253 + }
  254 + return Promise.resolve();
  255 + },
  256 + },
  257 + ];
  258 + },
140 259 },
141 260 {
142 261 field: 'id',
143 262 label: '主键',
144 263 component: 'Input',
145 264 show: false,
  265 + componentProps: {
  266 + maxLength: 36,
  267 + placeholder: '请输入主键',
  268 + },
  269 + dynamicRules: () => {
  270 + return [
  271 + {
  272 + required: false,
  273 + validator: (_, value) => {
  274 + if (String(value).length > 36) {
  275 + return Promise.reject('字数不超过36个字');
  276 + }
  277 + return Promise.resolve();
  278 + },
  279 + },
  280 + ];
  281 + },
146 282 },
147 283 {
148 284 field: 'status',
... ... @@ -160,5 +296,22 @@ export const formSchema: FormSchema[] = [
160 296 label: '备注',
161 297 field: 'remark',
162 298 component: 'InputTextArea',
  299 + componentProps: {
  300 + maxLength: 255,
  301 + placeholder: '请输入备注',
  302 + },
  303 + dynamicRules: () => {
  304 + return [
  305 + {
  306 + required: false,
  307 + validator: (_, value) => {
  308 + if (String(value).length > 255) {
  309 + return Promise.reject('字数不超过255个字');
  310 + }
  311 + return Promise.resolve();
  312 + },
  313 + },
  314 + ];
  315 + },
163 316 },
164 317 ];
... ...
... ... @@ -246,14 +246,14 @@
246 246 case '3':
247 247 setTimeout(() => {
248 248 setRegisterStep3Schemas({
249   - alarmType: descInfo.value.profileData?.alarms[0].alarmType,
  249 + alarmType: descInfo.value.profileData?.alarms[0]?.alarmType,
250 250 });
251 251 setRegisterStep3HighSetting({
252   - propagate: descInfo.value.profileData?.alarms[0].propagate,
  252 + propagate: descInfo.value.profileData?.alarms[0]?.propagate,
253 253 propagateRelationTypes:
254   - descInfo.value.profileData?.alarms[0].propagateRelationTypes,
  254 + descInfo.value.profileData?.alarms[0]?.propagateRelationTypes,
255 255 });
256   - const getKey = Object.keys(descInfo.value.profileData?.alarms[0].createRules);
  256 + const getKey = Object.keys(descInfo.value.profileData?.alarms[0]?.createRules);
257 257 setRegisterStep3CreateAlarm({
258 258 default: getKey[0],
259 259 });
... ... @@ -315,8 +315,8 @@
315 315 case '4':
316 316 setTimeout(() => {
317 317 setRegisterContact({
318   - alarmContactId: descInfo.value.alarmProfile.alarmContactId,
319   - messageMode: descInfo.value.alarmProfile.messageMode,
  318 + alarmContactId: descInfo.value?.alarmProfile?.alarmContactId,
  319 + messageMode: descInfo.value?.alarmProfile?.messageMode,
320 320 });
321 321 }, 1000);
322 322 break;
... ...
... ... @@ -45,12 +45,12 @@
45 45 </BasicTable>
46 46 <DeviceProfileModal v-if="isJudgeStatus" @register="registerModal" @success="handleSuccess" />
47 47 <DeviceConfigDetail @register="registerModalDetail" @success="handleSuccess" />
48   - <ExpExcelModal @register="register1" @success="defaultHeader" />
  48 + <!-- <ExpExcelModal @register="register1" @success="defaultHeader" /> -->
49 49 </div>
50 50 </template>
51 51 <script lang="ts">
52 52 import { defineComponent, ref, reactive } from 'vue';
53   - import { BasicTable, useTable, TableAction } from '/@/components/Table';
  53 + import { BasicTable, useTable, TableAction, BasicColumn } from '/@/components/Table';
54 54 import { columns, searchFormSchema } from './device.profile.data';
55 55 import { useMessage } from '/@/hooks/web/useMessage';
56 56 import { deviceConfigGetQuery, deviceConfigDelete } from '/@/api/device/deviceConfigApi';
... ... @@ -58,7 +58,7 @@
58 58 import DeviceProfileModal from '/@/views/device/profile/DeviceProfileModal.vue';
59 59 import DeviceConfigDetail from '/@/views/device/profile/deviceConfigDetail.vue';
60 60 import { ImpExcel, ExcelData } from '/@/components/Excel';
61   - import { jsonToSheetXlsx, ExportModalResult } from '/@/components/Excel';
  61 + // import { jsonToSheetXlsx, ExportModalResult } from '/@/components/Excel';
62 62
63 63 export default defineComponent({
64 64 name: 'DeviceProfileManagement',
... ... @@ -156,23 +156,23 @@
156 156 isJudgeStatus.value = false;
157 157 }
158 158
159   - function defaultHeader({ filename, bookType }: ExportModalResult) {
160   - // 默认Object.keys(data[0])作为header
161   - jsonToSheetXlsx({
162   - data,
163   - filename,
164   - write2excelOpts: {
165   - bookType,
166   - },
167   - });
168   - }
  159 + // function defaultHeader({ filename, bookType }: ExportModalResult) {
  160 + // // 默认Object.keys(data[0])作为header
  161 + // jsonToSheetXlsx({
  162 + // data,
  163 + // filename,
  164 + // write2excelOpts: {
  165 + // bookType,
  166 + // },
  167 + // });
  168 + // }
169 169
170   - const [register1, { openModal: openModalExcel }] = useModal();
  170 + // const [register1, { openModal: openModalExcel }] = useModal();
171 171 const handleExport = (record: Recordable) => {
172 172 console.log(record);
173   - setTimeout(() => {
174   - openModalExcel();
175   - }, 50);
  173 + // setTimeout(() => {
  174 + // openModalExcel();
  175 + // }, 50);
176 176 };
177 177 function handleImport() {
178 178 console.log('record');
... ... @@ -182,8 +182,8 @@
182 182 }
183 183 return {
184 184 registerModalDetail,
185   - register1,
186   - defaultHeader,
  185 + // register1,
  186 + // defaultHeader,
187 187 useSelectionChange,
188 188 handleTableDel,
189 189 isJudgeStatus,
... ...
1 1 <template>
2 2 <div class="step1">
3 3 <div class="step1-form">
4   - <BasicForm @register="register" />
5   - <div>
6   - <span>请上传图片</span>
7   - <CropperAvatar
8   - :uploadApi="uploadApi"
9   - :value="avatar"
10   - btnText="更换头像"
11   - :btnProps="{ preIcon: 'ant-design:cloud-upload-outlined' }"
12   - @change="updateAvatar"
13   - width="150"
14   - />
  4 + <div
  5 + style="
  6 + width: 12vw;
  7 + height: 24vh;
  8 + margin-left: 25px;
  9 + display: flex;
  10 + justify-content: space-between;
  11 + align-items: center;
  12 + "
  13 + >
  14 + <div style="width: 4vw; height: 24vh">请上传图片</div>
  15 + <div style="width: 8vw; height: 24vh">
  16 + <Upload
  17 + style="width: 20vw"
  18 + name="avatar"
  19 + list-type="picture-card"
  20 + class="avatar-uploader"
  21 + :show-upload-list="false"
  22 + :customRequest="customUploadqrcodePic"
  23 + :before-upload="beforeUploadqrcodePic"
  24 + >
  25 + <img
  26 + style="text-align: center; border-radius: 50%; width: 10vw; height: 15vh"
  27 + v-if="peresonalPic"
  28 + :src="peresonalPic"
  29 + alt="avatar"
  30 + />
  31 + <div v-else>
  32 + <div style="margin-top: 30px">
  33 + <PlusOutlined style="font-size: 30px" />
  34 + </div>
  35 + <div
  36 + class="ant-upload-text flex"
  37 + style="width: 280px; height: 130px; align-items: center"
  38 + >
  39 + 支持.PNG、.JPG、.JPEG格式,建议大小不超过2M。</div
  40 + >
  41 + </div>
  42 + </Upload>
  43 + </div>
15 44 </div>
  45 + <BasicForm @register="register" />
16 46 </div>
17 47 </div>
18 48 </template>
19 49 <script lang="ts">
20   - import { defineComponent } from 'vue';
  50 + import { defineComponent, ref } from 'vue';
21 51 import { BasicForm, useForm } from '/@/components/Form';
22 52 import { step1Schemas } from './data';
23 53 import { Select, Input, Divider } from 'ant-design-vue';
24   - import { CropperAvatar } from '/@/components/Cropper';
25 54 import { uploadApi } from '/@/api/personal/index';
  55 + import { Upload } from 'ant-design-vue';
  56 + import { PlusOutlined } from '@ant-design/icons-vue';
  57 + import { useMessage } from '/@/hooks/web/useMessage';
  58 + import type { FileItem } from '/@/components/Upload/src/typing';
26 59
27 60 export default defineComponent({
28 61 components: {
... ... @@ -31,10 +64,13 @@
31 64 [Input.name]: Input,
32 65 [Input.Group.name]: Input.Group,
33 66 [Divider.name]: Divider,
34   - CropperAvatar,
  67 + Upload,
  68 + PlusOutlined,
35 69 },
36 70 emits: ['next', 'resetFunc'],
37 71 setup(_, { emit }) {
  72 + const { createMessage } = useMessage();
  73 +
38 74 const [register, { validate, setFieldsValue, resetFields }] = useForm({
39 75 labelWidth: 100,
40 76 schemas: step1Schemas,
... ... @@ -50,16 +86,59 @@
50 86 const resetFieldsFunc = (v) => {
51 87 setFieldsValue(v);
52 88 };
  89 + const peresonalPic = ref();
  90 +
  91 + const resetIconFunc = () => {
  92 + peresonalPic.value = '';
  93 + };
  94 +
  95 + const editIconFunc = (v) => {
  96 + peresonalPic.value = v;
  97 + };
  98 +
  99 + const customUploadqrcodePic = async ({ file }) => {
  100 + if (beforeUploadqrcodePic(file)) {
  101 + const formData = new FormData();
  102 + formData.append('file', file);
  103 + const response = await uploadApi(formData);
  104 + if (response.fileStaticUri) {
  105 + peresonalPic.value = response.fileStaticUri;
  106 + }
  107 + }
  108 + };
  109 +
  110 + const beforeUploadqrcodePic = (file: FileItem) => {
  111 + const isJpgOrPng =
  112 + file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg';
  113 + if (!isJpgOrPng) {
  114 + createMessage.error('只能上传图片文件!');
  115 + }
  116 + const isLt2M = (file.size as number) / 1024 / 1024 < 2;
  117 + if (!isLt2M) {
  118 + createMessage.error('图片大小不能超过5MB!');
  119 + }
  120 + return isJpgOrPng && isLt2M;
  121 + };
53 122 async function customSubmitFunc() {
54 123 try {
55 124 const values = await validate();
56   - emit('next', values);
  125 + emit('next', values, peresonalPic.value);
57 126 } catch (error) {}
58 127 }
59 128 const customResetFunc = async () => {
60 129 await resetFields();
61 130 };
62   - return { register, resetFieldsFunc, customResetFunc, uploadApi };
  131 + return {
  132 + editIconFunc,
  133 + resetIconFunc,
  134 + register,
  135 + resetFieldsFunc,
  136 + customResetFunc,
  137 + uploadApi,
  138 + peresonalPic,
  139 + beforeUploadqrcodePic,
  140 + customUploadqrcodePic,
  141 + };
63 142 },
64 143 });
65 144 </script>
... ...
... ... @@ -65,16 +65,23 @@ export const formSchema: FormSchema[] = [
65 65 colProps: { span: 13 },
66 66 component: 'Input',
67 67 componentProps: {
68   - placeholder: '请输入键名',
69 68 maxLength: 255,
70   - // options: [
71   - // { label: 'active', value: 'active' },
72   - // { label: 'inactivityAlarmTime', value: 'inactivityAlarmTime' },
73   - // { label: 'lastActivityTime', value: 'lastActivityTime' },
74   - // { label: 'lastConnectTime', value: 'lastConnectTime' },
75   - // { label: 'lastDisconnectTime', value: 'lastDisconnectTime' },
76   - // ],
  69 + placeholder: '请输入键名',
  70 + },
  71 + dynamicRules: () => {
  72 + return [
  73 + {
  74 + required: false,
  75 + validator: (_, value) => {
  76 + if (String(value).length > 255) {
  77 + return Promise.reject('字数不超过255个字');
  78 + }
  79 + return Promise.resolve();
  80 + },
  81 + },
  82 + ];
77 83 },
  84 +
78 85 ifShow: ({ values }) => isShiDu(Reflect.get(values, 'type')),
79 86 },
80 87 {
... ... @@ -84,13 +91,20 @@ export const formSchema: FormSchema[] = [
84 91 component: 'Input',
85 92 componentProps: {
86 93 maxLength: 255,
87   -
88 94 placeholder: '请输入键名',
89   - // options: [
90   - // { label: 'CO2', value: 'CO2' },
91   - // { label: 'temp', value: 'temp' },
92   - // { label: 'wet', value: 'wet' },
93   - // ],
  95 + },
  96 + dynamicRules: () => {
  97 + return [
  98 + {
  99 + required: false,
  100 + validator: (_, value) => {
  101 + if (String(value).length > 255) {
  102 + return Promise.reject('字数不超过255个字');
  103 + }
  104 + return Promise.resolve();
  105 + },
  106 + },
  107 + ];
94 108 },
95 109 ifShow: ({ values }) => isWenDu(Reflect.get(values, 'type')),
96 110 },
... ... @@ -101,9 +115,21 @@ export const formSchema: FormSchema[] = [
101 115 component: 'Input',
102 116 componentProps: {
103 117 maxLength: 255,
104   -
105 118 placeholder: '请输入键名',
106 119 },
  120 + dynamicRules: () => {
  121 + return [
  122 + {
  123 + required: false,
  124 + validator: (_, value) => {
  125 + if (String(value).length > 255) {
  126 + return Promise.reject('字数不超过255个字');
  127 + }
  128 + return Promise.resolve();
  129 + },
  130 + },
  131 + ];
  132 + },
107 133 ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'type')),
108 134 },
109 135 {
... ...
... ... @@ -11,5 +11,18 @@ export const formSchema: FormSchema[] = [
11 11 maxLength: 255,
12 12 placeholder: '请输入报警详细信息',
13 13 },
  14 + dynamicRules: () => {
  15 + return [
  16 + {
  17 + required: true,
  18 + validator: (_, value) => {
  19 + if (String(value).length > 255) {
  20 + return Promise.reject('字数不超过255个字');
  21 + }
  22 + return Promise.resolve();
  23 + },
  24 + },
  25 + ];
  26 + },
14 27 },
15 28 ];
... ...
... ... @@ -5,7 +5,6 @@ import { deviceConfigGetRuleChain } from '/@/api/device/deviceConfigApi';
5 5 import { ref } from 'vue';
6 6 import { findDictItemByCode } from '/@/api/system/dict';
7 7 import { alarmContactGetPage } from '/@/api/device/deviceConfigApi';
8   -import { DeviceProfileQueryUserNameMaxLength } from '/@/utils/rules';
9 8
10 9 export const step1Schemas: FormSchema[] = [
11 10 {
... ... @@ -17,7 +16,19 @@ export const step1Schemas: FormSchema[] = [
17 16 maxLength: 255,
18 17 placeholder: '请输入配置名称',
19 18 },
20   - rules: DeviceProfileQueryUserNameMaxLength,
  19 + dynamicRules: () => {
  20 + return [
  21 + {
  22 + required: true,
  23 + validator: (_, value) => {
  24 + if (String(value).length > 255) {
  25 + return Promise.reject('字数不超过255个字');
  26 + }
  27 + return Promise.resolve();
  28 + },
  29 + },
  30 + ];
  31 + },
21 32 },
22 33 //规则链(string)
23 34 {
... ... @@ -40,17 +51,6 @@ export const step1Schemas: FormSchema[] = [
40 51 immediate: true,
41 52 },
42 53 },
43   - // {
44   - // field: 'icon',
45   - // component: 'Upload',
46   - // label: '请上传图片',
47   - // colProps: {
48   - // span: 8,
49   - // },
50   - // componentProps: {
51   - // api: uploadApi,
52   - // },
53   - // },
54 54 {
55 55 field: 'defaultQueueName',
56 56 label: '处理队列',
... ... @@ -69,9 +69,22 @@ export const step1Schemas: FormSchema[] = [
69 69 field: 'description',
70 70 component: 'InputTextArea',
71 71 componentProps: {
72   - maxLength: 0,
  72 + maxLength: 255,
73 73 placeholder: '请输入描述',
74 74 },
  75 + dynamicRules: () => {
  76 + return [
  77 + {
  78 + required: false,
  79 + validator: (_, value) => {
  80 + if (String(value).length > 255) {
  81 + return Promise.reject('字数不超过255个字');
  82 + }
  83 + return Promise.resolve();
  84 + },
  85 + },
  86 + ];
  87 + },
75 88 },
76 89 ];
77 90
... ... @@ -106,6 +119,19 @@ export const step3Schemas: FormSchema[] = [
106 119 maxLength: 255,
107 120 placeholder: '请输入报警类型',
108 121 },
  122 + dynamicRules: () => {
  123 + return [
  124 + {
  125 + required: false,
  126 + validator: (_, value) => {
  127 + if (String(value).length > 255) {
  128 + return Promise.reject('字数不超过255个字');
  129 + }
  130 + return Promise.resolve();
  131 + },
  132 + },
  133 + ];
  134 + },
109 135 },
110 136 ];
111 137
... ... @@ -125,7 +151,20 @@ export const step3ViewHighSetting: FormSchema[] = [
125 151 },
126 152 componentProps: {
127 153 maxLength: 255,
128   - placeholder: '要传递的关联类型',
  154 + placeholder: '请输入关联类型',
  155 + },
  156 + dynamicRules: () => {
  157 + return [
  158 + {
  159 + required: false,
  160 + validator: (_, value) => {
  161 + if (String(value).length > 255) {
  162 + return Promise.reject('字数不超过255个字');
  163 + }
  164 + return Promise.resolve();
  165 + },
  166 + },
  167 + ];
129 168 },
130 169 },
131 170 ];
... ... @@ -146,7 +185,20 @@ export const step3HighSetting: FormSchema[] = [
146 185 },
147 186 componentProps: {
148 187 maxLength: 255,
149   - placeholder: '要传递的关联类型',
  188 + placeholder: '请输入关联类型',
  189 + },
  190 + dynamicRules: () => {
  191 + return [
  192 + {
  193 + required: false,
  194 + validator: (_, value) => {
  195 + if (String(value).length > 255) {
  196 + return Promise.reject('字数不超过255个字');
  197 + }
  198 + return Promise.resolve();
  199 + },
  200 + },
  201 + ];
150 202 },
151 203 ifShow: ({ values }) => !!values.propagate,
152 204 },
... ... @@ -162,7 +214,7 @@ export const step3CreateAlarm: FormSchema[] = [
162 214 colProps: {
163 215 span: 16,
164 216 },
165   - componentProps({ formModel }) {
  217 + componentProps() {
166 218 return {
167 219 placeholder: '请选择严重程度',
168 220 options: [
... ...
1   -import { MessageTypeEnum } from '/@/api/tenant/tenantInfo';
2 1 import { BasicColumn } from '/@/components/Table';
3 2 import { FormSchema } from '/@/components/Table';
4 3 import { h } from 'vue';
... ... @@ -117,6 +116,20 @@ export const formSchema: FormSchema[] = [
117 116 component: 'Input',
118 117 componentProps: {
119 118 maxLength: 30,
  119 + placeholder: '请输入配置名称',
  120 + },
  121 + dynamicRules: () => {
  122 + return [
  123 + {
  124 + required: true,
  125 + validator: (_, value) => {
  126 + if (String(value).length > 30) {
  127 + return Promise.reject('字数不超过30个字');
  128 + }
  129 + return Promise.resolve();
  130 + },
  131 + },
  132 + ];
120 133 },
121 134 },
122 135 {
... ... @@ -155,6 +168,20 @@ export const formSchema: FormSchema[] = [
155 168 component: 'Input',
156 169 componentProps: {
157 170 maxLength: 36,
  171 + placeholder: '请输入accessKeyId',
  172 + },
  173 + dynamicRules: () => {
  174 + return [
  175 + {
  176 + required: true,
  177 + validator: (_, value) => {
  178 + if (String(value).length > 36) {
  179 + return Promise.reject('字数不超过36个字');
  180 + }
  181 + return Promise.resolve();
  182 + },
  183 + },
  184 + ];
158 185 },
159 186 ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')),
160 187 },
... ... @@ -164,6 +191,20 @@ export const formSchema: FormSchema[] = [
164 191 required: true,
165 192 componentProps: {
166 193 maxLength: 36,
  194 + placeholder: '请输入accessKeySecret',
  195 + },
  196 + dynamicRules: () => {
  197 + return [
  198 + {
  199 + required: true,
  200 + validator: (_, value) => {
  201 + if (String(value).length > 36) {
  202 + return Promise.reject('字数不超过36个字');
  203 + }
  204 + return Promise.resolve();
  205 + },
  206 + },
  207 + ];
167 208 },
168 209 component: 'Input',
169 210 ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')),
... ... @@ -176,6 +217,20 @@ export const formSchema: FormSchema[] = [
176 217 component: 'Input',
177 218 componentProps: {
178 219 maxLength: 36,
  220 + placeholder: '请输入服务器地址',
  221 + },
  222 + dynamicRules: () => {
  223 + return [
  224 + {
  225 + required: true,
  226 + validator: (_, value) => {
  227 + if (String(value).length > 36) {
  228 + return Promise.reject('字数不超过36个字');
  229 + }
  230 + return Promise.resolve();
  231 + },
  232 + },
  233 + ];
179 234 },
180 235 ifShow: ({ values }) => isEmail(Reflect.get(values, 'messageType')),
181 236 },
... ... @@ -186,6 +241,20 @@ export const formSchema: FormSchema[] = [
186 241 required: true,
187 242 componentProps: {
188 243 maxLength: 36,
  244 + placeholder: '请输入端口',
  245 + },
  246 + dynamicRules: () => {
  247 + return [
  248 + {
  249 + required: true,
  250 + validator: (_, value) => {
  251 + if (String(value).length > 36) {
  252 + return Promise.reject('字数不超过36个字');
  253 + }
  254 + return Promise.resolve();
  255 + },
  256 + },
  257 + ];
189 258 },
190 259 component: 'InputNumber',
191 260 ifShow: ({ values }) => isEmail(Reflect.get(values, 'messageType')),
... ... @@ -196,7 +265,22 @@ export const formSchema: FormSchema[] = [
196 265 required: true,
197 266 componentProps: {
198 267 maxLength: 255,
  268 + placeholder: '请输入用户名',
  269 + },
  270 + dynamicRules: () => {
  271 + return [
  272 + {
  273 + required: false,
  274 + validator: (_, value) => {
  275 + if (String(value).length > 255) {
  276 + return Promise.reject('字数不超过255个字');
  277 + }
  278 + return Promise.resolve();
  279 + },
  280 + },
  281 + ];
199 282 },
  283 +
200 284 component: 'Input',
201 285 ifShow: ({ values }) => isEmail(Reflect.get(values, 'messageType')),
202 286 },
... ... @@ -215,6 +299,20 @@ export const formSchema: FormSchema[] = [
215 299 show: false,
216 300 componentProps: {
217 301 maxLength: 255,
  302 + placeholder: '请输入消息配置',
  303 + },
  304 + dynamicRules: () => {
  305 + return [
  306 + {
  307 + required: false,
  308 + validator: (_, value) => {
  309 + if (String(value).length > 255) {
  310 + return Promise.reject('字数不超过255个字');
  311 + }
  312 + return Promise.resolve();
  313 + },
  314 + },
  315 + ];
218 316 },
219 317 },
220 318 {
... ... @@ -224,6 +322,20 @@ export const formSchema: FormSchema[] = [
224 322 show: false,
225 323 componentProps: {
226 324 maxLength: 36,
  325 + placeholder: '请输入主键',
  326 + },
  327 + dynamicRules: () => {
  328 + return [
  329 + {
  330 + required: false,
  331 + validator: (_, value) => {
  332 + if (String(value).length > 36) {
  333 + return Promise.reject('字数不超过255个字');
  334 + }
  335 + return Promise.resolve();
  336 + },
  337 + },
  338 + ];
227 339 },
228 340 },
229 341 {
... ... @@ -243,7 +355,22 @@ export const formSchema: FormSchema[] = [
243 355 field: 'remark',
244 356 componentProps: {
245 357 maxLength: 255,
  358 + placeholder: '请输入备注',
246 359 },
  360 + dynamicRules: () => {
  361 + return [
  362 + {
  363 + required: false,
  364 + validator: (_, value) => {
  365 + if (String(value).length > 255) {
  366 + return Promise.reject('字数不超过255个字');
  367 + }
  368 + return Promise.resolve();
  369 + },
  370 + },
  371 + ];
  372 + },
  373 +
247 374 component: 'InputTextArea',
248 375 },
249 376 {
... ... @@ -253,6 +380,20 @@ export const formSchema: FormSchema[] = [
253 380 show: false,
254 381 componentProps: {
255 382 maxLength: 36,
  383 + placeholder: '请输入租户ID',
  384 + },
  385 + dynamicRules: () => {
  386 + return [
  387 + {
  388 + required: false,
  389 + validator: (_, value) => {
  390 + if (String(value).length > 36) {
  391 + return Promise.reject('字数不超过255个字');
  392 + }
  393 + return Promise.resolve();
  394 + },
  395 + },
  396 + ];
256 397 },
257 398 },
258 399 ];
... ...
... ... @@ -51,6 +51,24 @@ export const searchFormSchema: FormSchema[] = [
51 51 field: 'emailSubject',
52 52 label: '邮件主题',
53 53 component: 'Input',
  54 + componentProps: {
  55 + maxLength: 255,
  56 + placeholder: '请输入邮件主题',
  57 + },
  58 + dynamicRules: () => {
  59 + return [
  60 + {
  61 + required: false,
  62 + validator: (_, value) => {
  63 + if (String(value).length > 255) {
  64 + return Promise.reject('字数不超过255个字');
  65 + }
  66 + return Promise.resolve();
  67 + },
  68 + },
  69 + ];
  70 + },
  71 +
54 72 colProps: { span: 6 },
55 73 },
56 74 {
... ...
... ... @@ -24,12 +24,45 @@
24 24 label: '用途',
25 25 component: 'Input',
26 26 show: false,
  27 + componentProps: {
  28 + maxLength: 36,
  29 + placeholder: '请输入用途',
  30 + },
  31 + dynamicRules: () => {
  32 + return [
  33 + {
  34 + required: false,
  35 + validator: (_, value) => {
  36 + if (String(value).length > 36) {
  37 + return Promise.reject('字数不超过36个字');
  38 + }
  39 + return Promise.resolve();
  40 + },
  41 + },
  42 + ];
  43 + },
27 44 },
28 45 {
29 46 field: 'messageType',
30 47 component: 'Input',
31 48 label: 'messageType',
32 49 show: false,
  50 + componentProps: {
  51 + maxLength: 36,
  52 + },
  53 + dynamicRules: () => {
  54 + return [
  55 + {
  56 + required: false,
  57 + validator: (_, value) => {
  58 + if (String(value).length > 36) {
  59 + return Promise.reject('字数不超过36个字');
  60 + }
  61 + return Promise.resolve();
  62 + },
  63 + },
  64 + ];
  65 + },
33 66 },
34 67 {
35 68 field: 'phoneNumbers',
... ... @@ -50,6 +83,23 @@
50 83 field: 'remark',
51 84 component: 'InputTextArea',
52 85 label: '备注',
  86 + componentProps: {
  87 + maxLength: 255,
  88 + placeholder: '请输入备注',
  89 + },
  90 + dynamicRules: () => {
  91 + return [
  92 + {
  93 + required: false,
  94 + validator: (_, value) => {
  95 + if (String(value).length > 255) {
  96 + return Promise.reject('字数不超过255个字');
  97 + }
  98 + return Promise.resolve();
  99 + },
  100 + },
  101 + ];
  102 + },
53 103 },
54 104 ];
55 105 export default defineComponent({
... ...
... ... @@ -95,12 +95,46 @@ export const searchFormSchema: FormSchema[] = [
95 95 label: '模板名称',
96 96 component: 'Input',
97 97 colProps: { span: 8 },
  98 + componentProps: {
  99 + maxLength: 32,
  100 + placeholder: '请输入模板名称',
  101 + },
  102 + dynamicRules: () => {
  103 + return [
  104 + {
  105 + required: false,
  106 + validator: (_, value) => {
  107 + if (String(value).length > 32) {
  108 + return Promise.reject('字数不超过32个字');
  109 + }
  110 + return Promise.resolve();
  111 + },
  112 + },
  113 + ];
  114 + },
98 115 },
99 116 {
100 117 field: 'templateCode',
101 118 label: '模板编码',
102 119 component: 'Input',
103 120 colProps: { span: 8 },
  121 + componentProps: {
  122 + maxLength: 20,
  123 + placeholder: '请输入模板编码',
  124 + },
  125 + dynamicRules: () => {
  126 + return [
  127 + {
  128 + required: false,
  129 + validator: (_, value) => {
  130 + if (String(value).length > 20) {
  131 + return Promise.reject('字数不超过20个字');
  132 + }
  133 + return Promise.resolve();
  134 + },
  135 + },
  136 + ];
  137 + },
104 138 },
105 139 ];
106 140
... ... @@ -112,6 +146,20 @@ export const formSchema: FormSchema[] = [
112 146 show: false,
113 147 componentProps: {
114 148 maxLength: 36,
  149 + placeholder: '请输入主键',
  150 + },
  151 + dynamicRules: () => {
  152 + return [
  153 + {
  154 + required: false,
  155 + validator: (_, value) => {
  156 + if (String(value).length > 36) {
  157 + return Promise.reject('字数不超过36个字');
  158 + }
  159 + return Promise.resolve();
  160 + },
  161 + },
  162 + ];
115 163 },
116 164 },
117 165 {
... ... @@ -150,6 +198,20 @@ export const formSchema: FormSchema[] = [
150 198 component: 'Input',
151 199 componentProps: {
152 200 maxLength: 32,
  201 + placeholder: '请输入模板名称',
  202 + },
  203 + dynamicRules: () => {
  204 + return [
  205 + {
  206 + required: false,
  207 + validator: (_, value) => {
  208 + if (String(value).length > 32) {
  209 + return Promise.reject('字数不超过32个字');
  210 + }
  211 + return Promise.resolve();
  212 + },
  213 + },
  214 + ];
153 215 },
154 216 },
155 217 {
... ... @@ -159,6 +221,20 @@ export const formSchema: FormSchema[] = [
159 221 component: 'Input',
160 222 componentProps: {
161 223 maxLength: 20,
  224 + placeholder: '请输入模板编号',
  225 + },
  226 + dynamicRules: () => {
  227 + return [
  228 + {
  229 + required: false,
  230 + validator: (_, value) => {
  231 + if (String(value).length > 20) {
  232 + return Promise.reject('字数不超过20个字');
  233 + }
  234 + return Promise.resolve();
  235 + },
  236 + },
  237 + ];
162 238 },
163 239 ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')),
164 240 },
... ... @@ -169,7 +245,22 @@ export const formSchema: FormSchema[] = [
169 245 component: 'Input',
170 246 componentProps: {
171 247 maxLength: 32,
  248 + placeholder: '请输入签名',
172 249 },
  250 + dynamicRules: () => {
  251 + return [
  252 + {
  253 + required: false,
  254 + validator: (_, value) => {
  255 + if (String(value).length > 32) {
  256 + return Promise.reject('字数不超过32个字');
  257 + }
  258 + return Promise.resolve();
  259 + },
  260 + },
  261 + ];
  262 + },
  263 +
173 264 ifShow: ({ values }) => isMessage(Reflect.get(values, 'messageType')),
174 265 },
175 266 {
... ... @@ -194,6 +285,20 @@ export const formSchema: FormSchema[] = [
194 285 show: false,
195 286 componentProps: {
196 287 maxLength: 36,
  288 + placeholder: '请输入租户ID',
  289 + },
  290 + dynamicRules: () => {
  291 + return [
  292 + {
  293 + required: false,
  294 + validator: (_, value) => {
  295 + if (String(value).length > 36) {
  296 + return Promise.reject('字数不超过36个字');
  297 + }
  298 + return Promise.resolve();
  299 + },
  300 + },
  301 + ];
197 302 },
198 303 },
199 304 ];
... ...
... ... @@ -76,7 +76,7 @@
76 76 async (newV) => {
77 77 const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV });
78 78 options.items.forEach((v) => {
79   - return (v.value = v.id);
  79 + return (v.value = v.id), (v.label = v.name);
80 80 });
81 81 updateSchema({
82 82 field: 'deviceId',
... ...
... ... @@ -70,7 +70,7 @@
70 70 async (newV) => {
71 71 const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV });
72 72 options.items.forEach((v) => {
73   - return (v.value = v.id);
  73 + return (v.value = v.id), (v.label = v.name);
74 74 });
75 75 updateSchema({
76 76 field: 'deviceId',
... ...
... ... @@ -87,7 +87,7 @@
87 87 async (newV) => {
88 88 const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV });
89 89 options.items.forEach((v) => {
90   - return (v.value = v.id);
  90 + return (v.value = v.id), (v.label = v.name);
91 91 });
92 92 updateSchema({
93 93 field: 'deviceId',
... ...
... ... @@ -150,6 +150,19 @@ export const formSchema: FormSchema[] = [
150 150 maxLength: 36,
151 151 placeholder: '请输入场景联动名称',
152 152 },
  153 + dynamicRules: () => {
  154 + return [
  155 + {
  156 + required: true,
  157 + validator: (_, value) => {
  158 + if (String(value).length > 36) {
  159 + return Promise.reject('字数不超过36个字');
  160 + }
  161 + return Promise.resolve();
  162 + },
  163 + },
  164 + ];
  165 + },
153 166 },
154 167 {
155 168 required: true,
... ... @@ -204,6 +217,19 @@ export const formSchema: FormSchema[] = [
204 217 maxLength: 255,
205 218 placeholder: '请输入描述',
206 219 },
  220 + dynamicRules: () => {
  221 + return [
  222 + {
  223 + required: false,
  224 + validator: (_, value) => {
  225 + if (String(value).length > 255) {
  226 + return Promise.reject('字数不超过255个字');
  227 + }
  228 + return Promise.resolve();
  229 + },
  230 + },
  231 + ];
  232 + },
207 233 },
208 234 ];
209 235
... ... @@ -228,7 +254,20 @@ export const searchFormSchema: FormSchema[] = [
228 254 colProps: { span: 8 },
229 255 componentProps: {
230 256 maxLength: 36,
231   - placeholder: '请输入场景联动状态',
  257 + placeholder: '请输入名称',
  258 + },
  259 + dynamicRules: () => {
  260 + return [
  261 + {
  262 + required: false,
  263 + validator: (_, value) => {
  264 + if (String(value).length > 36) {
  265 + return Promise.reject('字数不超过36个字');
  266 + }
  267 + return Promise.resolve();
  268 + },
  269 + },
  270 + ];
232 271 },
233 272 },
234 273 {
... ... @@ -266,9 +305,14 @@ export const useTriggerDrawerSchema: FormSchema[] = [
266 305 field: 'deviceId',
267 306 label: '',
268 307 component: 'Select',
269   - componentProps: {
270   - placeholder: '请选择设备',
  308 + componentProps() {
  309 + return {
  310 + placeholder: '请选择设备',
  311 + };
271 312 },
  313 + // componentProps: {
  314 + // placeholder: '请选择设备',
  315 + // },
272 316 ifShow: ({ values }) =>
273 317 !isTime(Reflect.get(values, 'triggerEvent')) &&
274 318 !isScene(Reflect.get(values, 'triggerEvent')) &&
... ... @@ -283,9 +327,22 @@ export const useTriggerDrawerSchema: FormSchema[] = [
283 327 label: '',
284 328 componentProps: {
285 329 maxLength: 255,
286   -
287 330 placeholder: '请输入Cron表达式',
288 331 },
  332 + dynamicRules: () => {
  333 + return [
  334 + {
  335 + required: false,
  336 + validator: (_, value) => {
  337 + if (String(value).length > 255) {
  338 + return Promise.reject('字数不超过255个字');
  339 + }
  340 + return Promise.resolve();
  341 + },
  342 + },
  343 + ];
  344 + },
  345 +
289 346 colProps: {
290 347 span: 12,
291 348 },
... ... @@ -373,9 +430,22 @@ export const useTriggerDrawerSchema: FormSchema[] = [
373 430 label: '',
374 431 componentProps: {
375 432 maxLength: 16,
376   -
377 433 placeholder: '请输入比较值',
378 434 },
  435 + dynamicRules: () => {
  436 + return [
  437 + {
  438 + required: false,
  439 + validator: (_, value) => {
  440 + if (String(value).length > 16) {
  441 + return Promise.reject('字数不超过16个字');
  442 + }
  443 + return Promise.resolve();
  444 + },
  445 + },
  446 + ];
  447 + },
  448 +
379 449 ifShow: ({ values }) =>
380 450 isWenDu(Reflect.get(values, 'attributeChoose')) &&
381 451 !isUpAndDown(Reflect.get(values, 'touchWay')) &&
... ... @@ -528,6 +598,20 @@ export const useConditionDrawerSchema: FormSchema[] = [
528 598 maxLength: 16,
529 599 placeholder: '请输入比较值',
530 600 },
  601 + dynamicRules: () => {
  602 + return [
  603 + {
  604 + required: false,
  605 + validator: (_, value) => {
  606 + if (String(value).length > 16) {
  607 + return Promise.reject('字数不超过16个字');
  608 + }
  609 + return Promise.resolve();
  610 + },
  611 + },
  612 + ];
  613 + },
  614 +
531 615 ifShow: ({ values }) =>
532 616 isShiDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'status')),
533 617 colProps: {
... ... @@ -559,9 +643,21 @@ export const useConditionDrawerSchema: FormSchema[] = [
559 643 label: '',
560 644 componentProps: {
561 645 maxLength: 16,
562   -
563 646 placeholder: '请输入比较值',
564 647 },
  648 + dynamicRules: () => {
  649 + return [
  650 + {
  651 + required: false,
  652 + validator: (_, value) => {
  653 + if (String(value).length > 16) {
  654 + return Promise.reject('字数不超过16个字');
  655 + }
  656 + return Promise.resolve();
  657 + },
  658 + },
  659 + ];
  660 + },
565 661 ifShow: ({ values }) =>
566 662 isWenDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'status')),
567 663 colProps: {
... ... @@ -613,9 +709,21 @@ export const useActionDrawerSchema: FormSchema[] = [
613 709 label: '',
614 710 componentProps: {
615 711 maxLength: 255,
616   -
617 712 placeholder: '请输入下发指定',
618 713 },
  714 + dynamicRules: () => {
  715 + return [
  716 + {
  717 + required: false,
  718 + validator: (_, value) => {
  719 + if (String(value).length > 255) {
  720 + return Promise.reject('字数不超过255个字');
  721 + }
  722 + return Promise.resolve();
  723 + },
  724 + },
  725 + ];
  726 + },
619 727 ifShow: ({ values }) =>
620 728 !isScene(Reflect.get(values, 'outTarget')) && !isMsg(Reflect.get(values, 'outTarget')),
621 729 colProps: {
... ...
... ... @@ -161,9 +161,10 @@ export const searchFormSchema: FormSchema[] = [
161 161 {
162 162 field: 'type',
163 163 label: '',
164   - colProps: { span: 8 },
  164 + colProps: { span: 4 },
165 165 component: 'Select',
166 166 componentProps: {
  167 + placeholder: '请选择类型',
167 168 options: [
168 169 {
169 170 label: '公告',
... ...
... ... @@ -43,12 +43,44 @@ export const searchFormSchema: FormSchema[] = [
43 43 label: '用户名',
44 44 component: 'Input',
45 45 colProps: { span: 8 },
  46 + componentProps: {
  47 + maxLength: 255,
  48 + },
  49 + dynamicRules: () => {
  50 + return [
  51 + {
  52 + required: false,
  53 + validator: (_, value) => {
  54 + if (String(value).length > 255) {
  55 + return Promise.reject('字数不超过255个字');
  56 + }
  57 + return Promise.resolve();
  58 + },
  59 + },
  60 + ];
  61 + },
46 62 },
47 63 {
48 64 field: 'realName',
49 65 label: '姓名',
50 66 component: 'Input',
51 67 colProps: { span: 8 },
  68 + componentProps: {
  69 + maxLength: 255,
  70 + },
  71 + dynamicRules: () => {
  72 + return [
  73 + {
  74 + required: false,
  75 + validator: (_, value) => {
  76 + if (String(value).length > 255) {
  77 + return Promise.reject('字数不超过255个字');
  78 + }
  79 + return Promise.resolve();
  80 + },
  81 + },
  82 + ];
  83 + },
52 84 },
53 85 ];
54 86
... ... @@ -61,6 +93,19 @@ export const accountFormSchema: FormSchema[] = [
61 93 componentProps: {
62 94 maxLength: 36,
63 95 },
  96 + dynamicRules: () => {
  97 + return [
  98 + {
  99 + required: false,
  100 + validator: (_, value) => {
  101 + if (String(value).length > 36) {
  102 + return Promise.reject('字数不超过36个字');
  103 + }
  104 + return Promise.resolve();
  105 + },
  106 + },
  107 + ];
  108 + },
64 109 },
65 110 {
66 111 field: 'username',
... ... @@ -114,6 +159,19 @@ export const accountFormSchema: FormSchema[] = [
114 159 componentProps: {
115 160 maxLength: 255,
116 161 },
  162 + dynamicRules: () => {
  163 + return [
  164 + {
  165 + required: true,
  166 + validator: (_, value) => {
  167 + if (String(value).length > 255) {
  168 + return Promise.reject('字数不超过255个字');
  169 + }
  170 + return Promise.resolve();
  171 + },
  172 + },
  173 + ];
  174 + },
117 175 },
118 176 {
119 177 label: '角色',
... ... @@ -176,5 +234,21 @@ export const accountFormSchema: FormSchema[] = [
176 234 label: ' ',
177 235 component: 'Input',
178 236 slot: 'organizationId',
  237 + componentProps: {
  238 + maxLength: 36,
  239 + },
  240 + dynamicRules: () => {
  241 + return [
  242 + {
  243 + required: false,
  244 + validator: (_, value) => {
  245 + if (String(value).length > 36) {
  246 + return Promise.reject('字数不超过36个字');
  247 + }
  248 + return Promise.resolve();
  249 + },
  250 + },
  251 + ];
  252 + },
179 253 },
180 254 ];
... ...
... ... @@ -38,6 +38,19 @@ export const searchFormSchema: FormSchema[] = [
38 38 componentProps: {
39 39 maxLength: 32,
40 40 },
  41 + dynamicRules: () => {
  42 + return [
  43 + {
  44 + required: false,
  45 + validator: (_, value) => {
  46 + if (String(value).length > 32) {
  47 + return Promise.reject('字数不超过32个字');
  48 + }
  49 + return Promise.resolve();
  50 + },
  51 + },
  52 + ];
  53 + },
41 54 },
42 55 {
43 56 field: 'dictCode',
... ... @@ -47,6 +60,19 @@ export const searchFormSchema: FormSchema[] = [
47 60 componentProps: {
48 61 maxLength: 32,
49 62 },
  63 + dynamicRules: () => {
  64 + return [
  65 + {
  66 + required: false,
  67 + validator: (_, value) => {
  68 + if (String(value).length > 32) {
  69 + return Promise.reject('字数不超过32个字');
  70 + }
  71 + return Promise.resolve();
  72 + },
  73 + },
  74 + ];
  75 + },
50 76 },
51 77 ];
52 78
... ... @@ -59,6 +85,19 @@ export const formSchema: FormSchema[] = [
59 85 componentProps: {
60 86 maxLength: 32,
61 87 },
  88 + dynamicRules: () => {
  89 + return [
  90 + {
  91 + required: true,
  92 + validator: (_, value) => {
  93 + if (String(value).length > 32) {
  94 + return Promise.reject('字数不超过32个字');
  95 + }
  96 + return Promise.resolve();
  97 + },
  98 + },
  99 + ];
  100 + },
62 101 },
63 102 {
64 103 field: 'dictCode',
... ... @@ -68,6 +107,19 @@ export const formSchema: FormSchema[] = [
68 107 componentProps: {
69 108 maxLength: 32,
70 109 },
  110 + dynamicRules: () => {
  111 + return [
  112 + {
  113 + required: true,
  114 + validator: (_, value) => {
  115 + if (String(value).length > 32) {
  116 + return Promise.reject('字数不超过32个字');
  117 + }
  118 + return Promise.resolve();
  119 + },
  120 + },
  121 + ];
  122 + },
71 123 },
72 124 {
73 125 label: '备注',
... ... @@ -76,5 +128,18 @@ export const formSchema: FormSchema[] = [
76 128 componentProps: {
77 129 maxLength: 255,
78 130 },
  131 + dynamicRules: () => {
  132 + return [
  133 + {
  134 + required: false,
  135 + validator: (_, value) => {
  136 + if (String(value).length > 255) {
  137 + return Promise.reject('字数不超过255个字');
  138 + }
  139 + return Promise.resolve();
  140 + },
  141 + },
  142 + ];
  143 + },
79 144 },
80 145 ];
... ...
... ... @@ -70,6 +70,19 @@ export const searchFormSchema: FormSchema[] = [
70 70 componentProps: {
71 71 maxLength: 32,
72 72 },
  73 + dynamicRules: () => {
  74 + return [
  75 + {
  76 + required: false,
  77 + validator: (_, value) => {
  78 + if (String(value).length > 32) {
  79 + return Promise.reject('字数不超过32个字');
  80 + }
  81 + return Promise.resolve();
  82 + },
  83 + },
  84 + ];
  85 + },
73 86 },
74 87 {
75 88 field: 'dictId',
... ... @@ -79,6 +92,19 @@ export const searchFormSchema: FormSchema[] = [
79 92 componentProps: {
80 93 maxLength: 36,
81 94 },
  95 + dynamicRules: () => {
  96 + return [
  97 + {
  98 + required: false,
  99 + validator: (_, value) => {
  100 + if (String(value).length > 36) {
  101 + return Promise.reject('字数不超过36个字');
  102 + }
  103 + return Promise.resolve();
  104 + },
  105 + },
  106 + ];
  107 + },
82 108 },
83 109 ];
84 110
... ... @@ -91,6 +117,19 @@ export const formSchema: FormSchema[] = [
91 117 componentProps: {
92 118 maxLength: 32,
93 119 },
  120 + dynamicRules: () => {
  121 + return [
  122 + {
  123 + required: true,
  124 + validator: (_, value) => {
  125 + if (String(value).length > 32) {
  126 + return Promise.reject('字数不超过32个字');
  127 + }
  128 + return Promise.resolve();
  129 + },
  130 + },
  131 + ];
  132 + },
94 133 },
95 134 {
96 135 field: 'itemValue',
... ... @@ -100,6 +139,19 @@ export const formSchema: FormSchema[] = [
100 139 componentProps: {
101 140 maxLength: 32,
102 141 },
  142 + dynamicRules: () => {
  143 + return [
  144 + {
  145 + required: true,
  146 + validator: (_, value) => {
  147 + if (String(value).length > 32) {
  148 + return Promise.reject('字数不超过32个字');
  149 + }
  150 + return Promise.resolve();
  151 + },
  152 + },
  153 + ];
  154 + },
103 155 },
104 156 {
105 157 field: 'sort',
... ... @@ -129,5 +181,18 @@ export const formSchema: FormSchema[] = [
129 181 componentProps: {
130 182 maxLength: 255,
131 183 },
  184 + dynamicRules: () => {
  185 + return [
  186 + {
  187 + required: false,
  188 + validator: (_, value) => {
  189 + if (String(value).length > 255) {
  190 + return Promise.reject('字数不超过255个字');
  191 + }
  192 + return Promise.resolve();
  193 + },
  194 + },
  195 + ];
  196 + },
132 197 },
133 198 ];
... ...
... ... @@ -80,6 +80,22 @@ export const searchFormSchema: FormSchema[] = [
80 80 // label: '菜单名称',
81 81 component: 'Input',
82 82 colProps: { span: 8 },
  83 + componentProps: {
  84 + maxLength: 255,
  85 + },
  86 + dynamicRules: () => {
  87 + return [
  88 + {
  89 + required: false,
  90 + validator: (_, value) => {
  91 + if (String(value).length > 255) {
  92 + return Promise.reject('字数不超过255个字');
  93 + }
  94 + return Promise.resolve();
  95 + },
  96 + },
  97 + ];
  98 + },
83 99 },
84 100 {
85 101 field: 'status',
... ... @@ -126,6 +142,19 @@ export const formSchema: FormSchema[] = [
126 142 componentProps: {
127 143 maxLength: 255,
128 144 },
  145 + dynamicRules: () => {
  146 + return [
  147 + {
  148 + required: true,
  149 + validator: (_, value) => {
  150 + if (String(value).length > 255) {
  151 + return Promise.reject('字数不超过255个字');
  152 + }
  153 + return Promise.resolve();
  154 + },
  155 + },
  156 + ];
  157 + },
129 158 },
130 159
131 160 {
... ... @@ -150,6 +179,19 @@ export const formSchema: FormSchema[] = [
150 179 componentProps: {
151 180 maxLength: 32,
152 181 },
  182 + dynamicRules: () => {
  183 + return [
  184 + {
  185 + required: true,
  186 + validator: (_, value) => {
  187 + if (String(value).length > 32) {
  188 + return Promise.reject('字数不超过32个字');
  189 + }
  190 + return Promise.resolve();
  191 + },
  192 + },
  193 + ];
  194 + },
153 195 },
154 196 {
155 197 field: 'icon',
... ... @@ -168,6 +210,19 @@ export const formSchema: FormSchema[] = [
168 210 componentProps: {
169 211 maxLength: 255,
170 212 },
  213 + dynamicRules: () => {
  214 + return [
  215 + {
  216 + required: false,
  217 + validator: (_, value) => {
  218 + if (String(value).length > 255) {
  219 + return Promise.reject('字数不超过255个字');
  220 + }
  221 + return Promise.resolve();
  222 + },
  223 + },
  224 + ];
  225 + },
171 226 },
172 227 {
173 228 field: 'component',
... ... @@ -177,6 +232,19 @@ export const formSchema: FormSchema[] = [
177 232 componentProps: {
178 233 maxLength: 100,
179 234 },
  235 + dynamicRules: () => {
  236 + return [
  237 + {
  238 + required: false,
  239 + validator: (_, value) => {
  240 + if (String(value).length > 100) {
  241 + return Promise.reject('字数不超过100个字');
  242 + }
  243 + return Promise.resolve();
  244 + },
  245 + },
  246 + ];
  247 + },
180 248 },
181 249 {
182 250 field: 'permission',
... ... @@ -186,6 +254,19 @@ export const formSchema: FormSchema[] = [
186 254 componentProps: {
187 255 maxLength: 100,
188 256 },
  257 + dynamicRules: () => {
  258 + return [
  259 + {
  260 + required: false,
  261 + validator: (_, value) => {
  262 + if (String(value).length > 100) {
  263 + return Promise.reject('字数不超过100个字');
  264 + }
  265 + return Promise.resolve();
  266 + },
  267 + },
  268 + ];
  269 + },
189 270 },
190 271 {
191 272 field: 'status',
... ...
... ... @@ -48,6 +48,19 @@ export const formSchema: FormSchema[] = [
48 48 componentProps: {
49 49 maxLength: 255,
50 50 },
  51 + dynamicRules: () => {
  52 + return [
  53 + {
  54 + required: true,
  55 + validator: (_, value) => {
  56 + if (String(value).length > 255) {
  57 + return Promise.reject('字数不超过255个字');
  58 + }
  59 + return Promise.resolve();
  60 + },
  61 + },
  62 + ];
  63 + },
51 64 },
52 65 {
53 66 field: 'sort',
... ... @@ -57,6 +70,19 @@ export const formSchema: FormSchema[] = [
57 70 componentProps: {
58 71 maxLength: 32,
59 72 },
  73 + dynamicRules: () => {
  74 + return [
  75 + {
  76 + required: true,
  77 + validator: (_, value) => {
  78 + if (String(value).length > 32) {
  79 + return Promise.reject('字数不超过32个字');
  80 + }
  81 + return Promise.resolve();
  82 + },
  83 + },
  84 + ];
  85 + },
60 86 },
61 87 {
62 88 label: t('routes.common.common.remark'), //备注
... ... @@ -65,6 +91,19 @@ export const formSchema: FormSchema[] = [
65 91 componentProps: {
66 92 maxLength: 255,
67 93 },
  94 + dynamicRules: () => {
  95 + return [
  96 + {
  97 + required: false,
  98 + validator: (_, value) => {
  99 + if (String(value).length > 255) {
  100 + return Promise.reject('字数不超过255个字');
  101 + }
  102 + return Promise.resolve();
  103 + },
  104 + },
  105 + ];
  106 + },
68 107 },
69 108 {
70 109 label: '租户ID',
... ... @@ -74,5 +113,18 @@ export const formSchema: FormSchema[] = [
74 113 componentProps: {
75 114 maxLength: 36,
76 115 },
  116 + dynamicRules: () => {
  117 + return [
  118 + {
  119 + required: false,
  120 + validator: (_, value) => {
  121 + if (String(value).length > 36) {
  122 + return Promise.reject('字数不超过36个字');
  123 + }
  124 + return Promise.resolve();
  125 + },
  126 + },
  127 + ];
  128 + },
77 129 },
78 130 ];
... ...
... ... @@ -67,6 +67,22 @@ export const searchFormSchema: FormSchema[] = [
67 67 label: '角色名称',
68 68 component: 'Input',
69 69 colProps: { span: 8 },
  70 + componentProps: {
  71 + maxLength: 255,
  72 + },
  73 + dynamicRules: () => {
  74 + return [
  75 + {
  76 + required: false,
  77 + validator: (_, value) => {
  78 + if (String(value).length > 255) {
  79 + return Promise.reject('字数不超过255个字');
  80 + }
  81 + return Promise.resolve();
  82 + },
  83 + },
  84 + ];
  85 + },
70 86 },
71 87 {
72 88 field: 'status',
... ... @@ -91,6 +107,19 @@ export const formSchema: FormSchema[] = [
91 107 componentProps: {
92 108 maxLength: 255,
93 109 },
  110 + dynamicRules: () => {
  111 + return [
  112 + {
  113 + required: true,
  114 + validator: (_, value) => {
  115 + if (String(value).length > 255) {
  116 + return Promise.reject('字数不超过255个字');
  117 + }
  118 + return Promise.resolve();
  119 + },
  120 + },
  121 + ];
  122 + },
94 123 },
95 124 {
96 125 field: 'status',
... ... @@ -111,6 +140,19 @@ export const formSchema: FormSchema[] = [
111 140 componentProps: {
112 141 maxLength: 255,
113 142 },
  143 + dynamicRules: () => {
  144 + return [
  145 + {
  146 + required: false,
  147 + validator: (_, value) => {
  148 + if (String(value).length > 255) {
  149 + return Promise.reject('字数不超过255个字');
  150 + }
  151 + return Promise.resolve();
  152 + },
  153 + },
  154 + ];
  155 + },
114 156 },
115 157 {
116 158 label: ' ',
... ... @@ -120,5 +162,18 @@ export const formSchema: FormSchema[] = [
120 162 componentProps: {
121 163 maxLength: 255,
122 164 },
  165 + dynamicRules: () => {
  166 + return [
  167 + {
  168 + required: false,
  169 + validator: (_, value) => {
  170 + if (String(value).length > 255) {
  171 + return Promise.reject('字数不超过255个字');
  172 + }
  173 + return Promise.resolve();
  174 + },
  175 + },
  176 + ];
  177 + },
123 178 },
124 179 ];
... ...
... ... @@ -49,6 +49,19 @@ export const tenantFormSchema: FormSchema[] = [
49 49 componentProps: {
50 50 maxLength: 36,
51 51 },
  52 + dynamicRules: () => {
  53 + return [
  54 + {
  55 + required: false,
  56 + validator: (_, value) => {
  57 + if (String(value).length > 36) {
  58 + return Promise.reject('字数不超过36个字');
  59 + }
  60 + return Promise.resolve();
  61 + },
  62 + },
  63 + ];
  64 + },
52 65 show: false,
53 66 },
54 67 {
... ... @@ -58,6 +71,19 @@ export const tenantFormSchema: FormSchema[] = [
58 71 componentProps: {
59 72 maxLength: 36,
60 73 },
  74 + dynamicRules: () => {
  75 + return [
  76 + {
  77 + required: false,
  78 + validator: (_, value) => {
  79 + if (String(value).length > 36) {
  80 + return Promise.reject('字数不超过36个字');
  81 + }
  82 + return Promise.resolve();
  83 + },
  84 + },
  85 + ];
  86 + },
61 87 show: false,
62 88 },
63 89 {
... ... @@ -68,6 +94,19 @@ export const tenantFormSchema: FormSchema[] = [
68 94 componentProps: {
69 95 maxLength: 255,
70 96 },
  97 + dynamicRules: () => {
  98 + return [
  99 + {
  100 + required: false,
  101 + validator: (_, value) => {
  102 + if (String(value).length > 255) {
  103 + return Promise.reject('字数不超过255个字');
  104 + }
  105 + return Promise.resolve();
  106 + },
  107 + },
  108 + ];
  109 + },
71 110 },
72 111 {
73 112 field: 'name',
... ... @@ -77,6 +116,19 @@ export const tenantFormSchema: FormSchema[] = [
77 116 componentProps: {
78 117 maxLength: 255,
79 118 },
  119 + dynamicRules: () => {
  120 + return [
  121 + {
  122 + required: false,
  123 + validator: (_, value) => {
  124 + if (String(value).length > 255) {
  125 + return Promise.reject('字数不超过255个字');
  126 + }
  127 + return Promise.resolve();
  128 + },
  129 + },
  130 + ];
  131 + },
80 132 },
81 133 {
82 134 field: 'roleIds',
... ... @@ -121,5 +173,18 @@ export const tenantFormSchema: FormSchema[] = [
121 173 componentProps: {
122 174 maxLength: 500,
123 175 },
  176 + dynamicRules: () => {
  177 + return [
  178 + {
  179 + required: false,
  180 + validator: (_, value) => {
  181 + if (String(value).length > 500) {
  182 + return Promise.reject('字数不超过500个字');
  183 + }
  184 + return Promise.resolve();
  185 + },
  186 + },
  187 + ];
  188 + },
124 189 },
125 190 ];
... ...
... ... @@ -8,9 +8,22 @@ export const schemas: FormSchema[] = [
8 8 span: 24,
9 9 },
10 10 componentProps: {
11   - maxLength: 50,
  11 + maxLength: 255,
12 12 placeholder: '请输入平台名称',
13 13 },
  14 + dynamicRules: () => {
  15 + return [
  16 + {
  17 + required: false,
  18 + validator: (_, value) => {
  19 + if (String(value).length > 255) {
  20 + return Promise.reject('字数不超过255个字');
  21 + }
  22 + return Promise.resolve();
  23 + },
  24 + },
  25 + ];
  26 + },
14 27 },
15 28 {
16 29 field: 'logo',
... ...
... ... @@ -9,9 +9,22 @@ export const schemas: FormSchema[] = [
9 9 span: 24,
10 10 },
11 11 componentProps: {
12   - maxLength: 50,
  12 + maxLength: 255,
13 13 placeholder: '请输入平台名称',
14 14 },
  15 + dynamicRules: () => {
  16 + return [
  17 + {
  18 + required: false,
  19 + validator: (_, value) => {
  20 + if (String(value).length > 255) {
  21 + return Promise.reject('字数不超过255个字');
  22 + }
  23 + return Promise.resolve();
  24 + },
  25 + },
  26 + ];
  27 + },
15 28 },
16 29 {
17 30 field: 'logo',
... ... @@ -58,6 +71,20 @@ export const schemas: FormSchema[] = [
58 71 },
59 72 componentProps: {
60 73 maxLength: 100,
  74 + placeholder: '请输入页面底部版权信息',
  75 + },
  76 + dynamicRules: () => {
  77 + return [
  78 + {
  79 + required: false,
  80 + validator: (_, value) => {
  81 + if (String(value).length > 100) {
  82 + return Promise.reject('字数不超过100个字');
  83 + }
  84 + return Promise.resolve();
  85 + },
  86 + },
  87 + ];
61 88 },
62 89 },
63 90 {
... ... @@ -69,6 +96,20 @@ export const schemas: FormSchema[] = [
69 96 },
70 97 componentProps: {
71 98 maxLength: 50,
  99 + placeholder: '请输入备案信息',
  100 + },
  101 + dynamicRules: () => {
  102 + return [
  103 + {
  104 + required: false,
  105 + validator: (_, value) => {
  106 + if (String(value).length > 50) {
  107 + return Promise.reject('字数不超过50个字');
  108 + }
  109 + return Promise.resolve();
  110 + },
  111 + },
  112 + ];
72 113 },
73 114 },
74 115 {
... ... @@ -80,6 +121,20 @@ export const schemas: FormSchema[] = [
80 121 },
81 122 componentProps: {
82 123 maxLength: 100,
  124 + placeholder: '请输入绑定域名',
  125 + },
  126 + dynamicRules: () => {
  127 + return [
  128 + {
  129 + required: false,
  130 + validator: (_, value) => {
  131 + if (String(value).length > 100) {
  132 + return Promise.reject('字数不超过100个字');
  133 + }
  134 + return Promise.resolve();
  135 + },
  136 + },
  137 + ];
83 138 },
84 139 },
85 140 ];
... ...
... ... @@ -14,6 +14,19 @@ export const schemas: FormSchema[] = [
14 14 maxLength: 100,
15 15 placeholder: '请输入公司名称',
16 16 },
  17 + dynamicRules: () => {
  18 + return [
  19 + {
  20 + required: false,
  21 + validator: (_, value) => {
  22 + if (String(value).length > 100) {
  23 + return Promise.reject('字数不超过100个字');
  24 + }
  25 + return Promise.resolve();
  26 + },
  27 + },
  28 + ];
  29 + },
17 30 },
18 31 {
19 32 field: 'abbreviation',
... ... @@ -24,9 +37,21 @@ export const schemas: FormSchema[] = [
24 37 },
25 38 componentProps: {
26 39 maxLength: 100,
27   -
28 40 placeholder: '请输入公司简称',
29 41 },
  42 + dynamicRules: () => {
  43 + return [
  44 + {
  45 + required: false,
  46 + validator: (_, value) => {
  47 + if (String(value).length > 100) {
  48 + return Promise.reject('字数不超过100个字');
  49 + }
  50 + return Promise.resolve();
  51 + },
  52 + },
  53 + ];
  54 + },
30 55 },
31 56 {
32 57 field: 'officialWebsite',
... ... @@ -39,6 +64,19 @@ export const schemas: FormSchema[] = [
39 64 maxLength: 255,
40 65 placeholder: '请输入公司官网',
41 66 },
  67 + dynamicRules: () => {
  68 + return [
  69 + {
  70 + required: false,
  71 + validator: (_, value) => {
  72 + if (String(value).length > 255) {
  73 + return Promise.reject('字数不超过255个字');
  74 + }
  75 + return Promise.resolve();
  76 + },
  77 + },
  78 + ];
  79 + },
42 80 },
43 81 {
44 82 field: 'email',
... ... @@ -66,6 +104,19 @@ export const schemas: FormSchema[] = [
66 104 autoSize: { minRows: 8, maxRows: 12 },
67 105 showCount: true,
68 106 },
  107 + dynamicRules: () => {
  108 + return [
  109 + {
  110 + required: false,
  111 + validator: (_, value) => {
  112 + if (String(value).length > 500) {
  113 + return Promise.reject('字数不超过500个字');
  114 + }
  115 + return Promise.resolve();
  116 + },
  117 + },
  118 + ];
  119 + },
69 120 },
70 121 {
71 122 field: 'nameCountry',
... ... @@ -252,6 +303,19 @@ export const schemas: FormSchema[] = [
252 303 maxLength: 100,
253 304 placeholder: '请输入详细地址',
254 305 },
  306 + dynamicRules: () => {
  307 + return [
  308 + {
  309 + required: false,
  310 + validator: (_, value) => {
  311 + if (String(value).length > 100) {
  312 + return Promise.reject('字数不超过100个字');
  313 + }
  314 + return Promise.resolve();
  315 + },
  316 + },
  317 + ];
  318 + },
255 319 },
256 320
257 321 {
... ... @@ -265,6 +329,19 @@ export const schemas: FormSchema[] = [
265 329 maxLength: 25,
266 330 placeholder: '请输入联系人',
267 331 },
  332 + dynamicRules: () => {
  333 + return [
  334 + {
  335 + required: false,
  336 + validator: (_, value) => {
  337 + if (String(value).length > 25) {
  338 + return Promise.reject('字数不超过25个字');
  339 + }
  340 + return Promise.resolve();
  341 + },
  342 + },
  343 + ];
  344 + },
268 345 },
269 346 {
270 347 field: 'tel',
... ... @@ -284,7 +361,22 @@ export const schemas: FormSchema[] = [
284 361 component: 'Input',
285 362 componentProps: {
286 363 maxLength: 255,
  364 + placeholder: '请输入二维码',
287 365 },
  366 + dynamicRules: () => {
  367 + return [
  368 + {
  369 + required: false,
  370 + validator: (_, value) => {
  371 + if (String(value).length > 255) {
  372 + return Promise.reject('字数不超过255个字');
  373 + }
  374 + return Promise.resolve();
  375 + },
  376 + },
  377 + ];
  378 + },
  379 +
288 380 colProps: {
289 381 span: 24,
290 382 },
... ... @@ -297,6 +389,20 @@ export const schemas: FormSchema[] = [
297 389 show: false,
298 390 componentProps: {
299 391 maxLength: 36,
  392 + placeholder: '请输入平台名称',
  393 + },
  394 + dynamicRules: () => {
  395 + return [
  396 + {
  397 + required: false,
  398 + validator: (_, value) => {
  399 + if (String(value).length > 36) {
  400 + return Promise.reject('字数不超过36个字');
  401 + }
  402 + return Promise.resolve();
  403 + },
  404 + },
  405 + ];
300 406 },
301 407 },
302 408 ];
... ...
... ... @@ -69,6 +69,20 @@ export const searchFormSchema: FormSchema[] = [
69 69 colProps: { span: 8 },
70 70 componentProps: {
71 71 maxLength: 255,
  72 + placeholder: '请输入角色名称',
  73 + },
  74 + dynamicRules: () => {
  75 + return [
  76 + {
  77 + required: false,
  78 + validator: (_, value) => {
  79 + if (String(value).length > 255) {
  80 + return Promise.reject('字数不超过255个字');
  81 + }
  82 + return Promise.resolve();
  83 + },
  84 + },
  85 + ];
72 86 },
73 87 },
74 88 {
... ... @@ -81,6 +95,19 @@ export const searchFormSchema: FormSchema[] = [
81 95 componentProps: {
82 96 maxLength: 20,
83 97 },
  98 + dynamicRules: () => {
  99 + return [
  100 + {
  101 + required: false,
  102 + validator: (_, value) => {
  103 + if (String(value).length > 20) {
  104 + return Promise.reject('字数不超过20个字');
  105 + }
  106 + return Promise.resolve();
  107 + },
  108 + },
  109 + ];
  110 + },
84 111 },
85 112 {
86 113 field: 'status',
... ... @@ -104,6 +131,20 @@ export const formSchema: FormSchema[] = [
104 131 component: 'Input',
105 132 componentProps: {
106 133 maxLength: 255,
  134 + placeholder: '请输入角色名称',
  135 + },
  136 + dynamicRules: () => {
  137 + return [
  138 + {
  139 + required: true,
  140 + validator: (_, value) => {
  141 + if (String(value).length > 255) {
  142 + return Promise.reject('字数不超过255个字');
  143 + }
  144 + return Promise.resolve();
  145 + },
  146 + },
  147 + ];
107 148 },
108 149 },
109 150 {
... ... @@ -124,6 +165,20 @@ export const formSchema: FormSchema[] = [
124 165 component: 'InputTextArea',
125 166 componentProps: {
126 167 maxLength: 255,
  168 + placeholder: '请输入备注',
  169 + },
  170 + dynamicRules: () => {
  171 + return [
  172 + {
  173 + required: false,
  174 + validator: (_, value) => {
  175 + if (String(value).length > 255) {
  176 + return Promise.reject('字数不超过255个字');
  177 + }
  178 + return Promise.resolve();
  179 + },
  180 + },
  181 + ];
127 182 },
128 183 },
129 184 {
... ... @@ -134,5 +189,18 @@ export const formSchema: FormSchema[] = [
134 189 componentProps: {
135 190 maxLength: 255,
136 191 },
  192 + dynamicRules: () => {
  193 + return [
  194 + {
  195 + required: false,
  196 + validator: (_, value) => {
  197 + if (String(value).length > 255) {
  198 + return Promise.reject('字数不超过255个字');
  199 + }
  200 + return Promise.resolve();
  201 + },
  202 + },
  203 + ];
  204 + },
137 205 },
138 206 ];
... ...
... ... @@ -37,8 +37,22 @@ export const searchFormSchema: FormSchema[] = [
37 37 colProps: { span: 8 },
38 38 component: 'Input',
39 39 componentProps: {
  40 + maxLength: 255,
40 41 placeholder: '请输入租户配置名称',
41 42 },
  43 + dynamicRules: () => {
  44 + return [
  45 + {
  46 + required: false,
  47 + validator: (_, value) => {
  48 + if (String(value).length > 255) {
  49 + return Promise.reject('字数不超过255个字');
  50 + }
  51 + return Promise.resolve();
  52 + },
  53 + },
  54 + ];
  55 + },
42 56 },
43 57 ];
44 58 export const formSchema: FormSchema[] = [
... ... @@ -50,7 +64,20 @@ export const formSchema: FormSchema[] = [
50 64 component: 'Input',
51 65 componentProps: {
52 66 maxLength: 255,
53   - placeholder: '名称',
  67 + placeholder: '请输入名称',
  68 + },
  69 + dynamicRules: () => {
  70 + return [
  71 + {
  72 + required: true,
  73 + validator: (_, value) => {
  74 + if (String(value).length > 255) {
  75 + return Promise.reject('字数不超过255个字');
  76 + }
  77 + return Promise.resolve();
  78 + },
  79 + },
  80 + ];
54 81 },
55 82 },
56 83 {
... ... @@ -71,8 +98,21 @@ export const formSchema: FormSchema[] = [
71 98 colProps: { span: 24 },
72 99 component: 'InputTextArea',
73 100 componentProps: {
74   - maxLength: 0,
  101 + maxLength: 255,
75 102 placeholder: '请输入说明',
76 103 },
  104 + dynamicRules: () => {
  105 + return [
  106 + {
  107 + required: false,
  108 + validator: (_, value) => {
  109 + if (String(value).length > 255) {
  110 + return Promise.reject('字数不超过255个字');
  111 + }
  112 + return Promise.resolve();
  113 + },
  114 + },
  115 + ];
  116 + },
77 117 },
78 118 ];
... ...
... ... @@ -143,6 +143,7 @@ export const formSchema: FormSchema[] = [
143 143 componentProps: {
144 144 placeholder: '请输入最大规则引擎数(请输入数字)',
145 145 },
  146 + rules: numberRule,
146 147 },
147 148
148 149 {
... ... @@ -155,6 +156,7 @@ export const formSchema: FormSchema[] = [
155 156 componentProps: {
156 157 placeholder: '请输入最大JavaScript执行数(请输入数字)',
157 158 },
  159 + rules: numberRule,
158 160 },
159 161 {
160 162 field: 'maxDPStorageDays',
... ... @@ -166,6 +168,7 @@ export const formSchema: FormSchema[] = [
166 168 componentProps: {
167 169 placeholder: '请输入最大日存储数据点数(请输入数字)',
168 170 },
  171 + rules: numberRule,
169 172 },
170 173 {
171 174 field: 'defaultStorageTtlDays',
... ... @@ -177,6 +180,7 @@ export const formSchema: FormSchema[] = [
177 180 componentProps: {
178 181 placeholder: '请输入默认存储 TTL 天数(请输入数字)',
179 182 },
  183 + rules: numberRule,
180 184 },
181 185 {
182 186 field: 'alarmsTtlDays',
... ... @@ -188,6 +192,7 @@ export const formSchema: FormSchema[] = [
188 192 componentProps: {
189 193 placeholder: '请输入Alams TTL days(请输入数字)',
190 194 },
  195 + rules: numberRule,
191 196 },
192 197 {
193 198 field: 'rpcTtlDays',
... ... @@ -199,6 +204,7 @@ export const formSchema: FormSchema[] = [
199 204 componentProps: {
200 205 placeholder: '请输入RPC TTL days(请输入数字)',
201 206 },
  207 + rules: numberRule,
202 208 },
203 209 {
204 210 field: 'maxRuleNodeExecutionsPerMessage',
... ... @@ -210,6 +216,7 @@ export const formSchema: FormSchema[] = [
210 216 componentProps: {
211 217 placeholder: '请输入每条消息的最大规则节点执行数(请输入数字)',
212 218 },
  219 + rules: numberRule,
213 220 },
214 221 {
215 222 field: 'maxEmails',
... ... @@ -220,6 +227,7 @@ export const formSchema: FormSchema[] = [
220 227 componentProps: {
221 228 placeholder: '请输入发送的最大电子邮件数(请输入数字)',
222 229 },
  230 + rules: numberRule,
223 231 },
224 232 {
225 233 field: 'maxSms',
... ... @@ -231,6 +239,7 @@ export const formSchema: FormSchema[] = [
231 239 componentProps: {
232 240 placeholder: '请输入发送的最大短信数(请输入数字)',
233 241 },
  242 + rules: numberRule,
234 243 },
235 244 {
236 245 field: 'maxCreatedAlarms',
... ... @@ -242,6 +251,7 @@ export const formSchema: FormSchema[] = [
242 251 componentProps: {
243 252 placeholder: '请输入maxCreatedAlarms(请输入数字)',
244 253 },
  254 + rules: numberRule,
245 255 },
246 256 {
247 257 field: 'transportTenantMsgRateLimit',
... ...