cnhis-design-vue 3.1.31-beta.9 → 3.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +123 -123
  2. package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
  3. package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +1 -0
  4. package/es/components/bpmn-workflow/types/ModelingModule.d.ts +1 -0
  5. package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +1 -0
  6. package/es/components/fabric-chart/index.d.ts +207 -0
  7. package/es/components/fabric-chart/src/FabricChart.vue.d.ts +208 -0
  8. package/es/components/fabric-chart/src/utils/index.d.ts +6823 -0
  9. package/es/components/form-render/src/components/renderer/checkbox.js +3 -5
  10. package/es/components/form-render/src/components/renderer/index.js +2 -0
  11. package/es/components/form-render/src/components/renderer/recommendSelect.d.ts +131 -0
  12. package/es/components/form-render/src/components/renderer/recommendSelect.js +213 -0
  13. package/es/components/form-render/src/components/renderer/remoteSearch.js +0 -1
  14. package/es/components/form-render/src/components/renderer/select.js +0 -2
  15. package/es/components/form-render/src/hooks/useAsyncQueue.js +2 -1
  16. package/es/components/form-render/src/hooks/useAutographOptions.js +3 -5
  17. package/es/components/form-render/src/hooks/useFieldListAdaptor.js +7 -0
  18. package/es/components/form-render/src/hooks/useFormRequest.d.ts +8 -1
  19. package/es/components/form-render/src/hooks/useFormRequest.js +24 -1
  20. package/es/components/form-render/style/index.css +1 -1
  21. package/es/components/index.css +1 -1
  22. package/es/components/recommend-search/index.d.ts +586 -51
  23. package/es/components/recommend-search/src/RecommendSearch.vue.d.ts +596 -59
  24. package/es/components/recommend-search/src/RecommendSearch.vue.js +36 -8
  25. package/es/components/recommend-search/src/components/BaseSearch.vue.d.ts +31 -16
  26. package/es/components/recommend-search/src/components/BaseSearch.vue.js +27 -23
  27. package/es/components/recommend-search/src/components/RecommendInput.vue.d.ts +136 -53
  28. package/es/components/recommend-search/src/components/RecommendInput.vue.js +66 -41
  29. package/es/components/recommend-search/src/components/RecommendMenu.vue.d.ts +14 -3
  30. package/es/components/recommend-search/src/components/RecommendMenu.vue.js +35 -25
  31. package/es/components/recommend-search/src/components/RecommendSelect.vue.d.ts +300 -1
  32. package/es/components/recommend-search/src/components/RecommendSelect.vue.js +81 -51
  33. package/es/components/recommend-search/style/index.css +1 -1
  34. package/es/shared/assets/img/failure.js +1 -1
  35. package/es/shared/assets/img/failure.png.js +1 -1
  36. package/es/shared/assets/img/icon-asc.js +1 -1
  37. package/es/shared/assets/img/icon-desc.js +1 -1
  38. package/es/shared/assets/img/no-permission.js +1 -1
  39. package/es/shared/assets/img/no-permission.png.js +1 -1
  40. package/es/shared/assets/img/nodata.js +1 -1
  41. package/es/shared/assets/img/nodata.png.js +1 -1
  42. package/es/shared/assets/img/notfound.js +1 -1
  43. package/es/shared/assets/img/notfound.png.js +1 -1
  44. package/es/shared/assets/img/qr.js +1 -1
  45. package/es/shared/assets/img/qr.png.js +1 -1
  46. package/es/shared/assets/img/success.js +1 -1
  47. package/es/shared/assets/img/success.png.js +1 -1
  48. package/es/shared/assets/img/video.js +1 -1
  49. package/es/shared/assets/img/video.png.js +1 -1
  50. package/es/shared/assets/img/video_default_cover.js +1 -1
  51. package/es/shared/assets/img/video_default_cover.png.js +1 -1
  52. package/es/shared/assets/img/video_hover.js +1 -1
  53. package/es/shared/assets/img/video_play_hover.js +1 -1
  54. package/es/shared/assets/img/xb_big.js +1 -1
  55. package/es/shared/assets/img/xb_big.png.js +1 -1
  56. package/es/shared/assets/img/xb_small.js +1 -1
  57. package/es/shared/assets/img/xb_small.png.js +1 -1
  58. package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +86 -0
  59. package/es/shared/utils/tapable/index.d.ts +139 -0
  60. package/package.json +2 -2
@@ -1,4 +1,5 @@
1
- import { defineComponent, computed, createVNode } from 'vue';
1
+ import { defineComponent, createVNode } from 'vue';
2
+ import { useVModel } from '@vueuse/core';
2
3
  import '../../../index.js';
3
4
  import '../../utils/index.js';
4
5
  import { connect, mapProps } from '@formily/vue';
@@ -39,10 +40,7 @@ const script = defineComponent({
39
40
  setup(props, {
40
41
  emit
41
42
  }) {
42
- const valueRef = computed({
43
- get: () => props.value,
44
- set: (v) => emit("update:value", v)
45
- });
43
+ const valueRef = useVModel(props, "value", emit);
46
44
  const {
47
45
  labelKey,
48
46
  valueKey,
@@ -11,6 +11,7 @@ import * as labelSelect from './labelSelect.js';
11
11
  import * as levelSearchCascader from './levelSearchCascader.js';
12
12
  import * as index$1 from './lineBar/index.js';
13
13
  import * as radio from './radio.js';
14
+ import * as recommendSelect from './recommendSelect.js';
14
15
  import * as remoteSearch from './remoteSearch.js';
15
16
  import * as search from './search.js';
16
17
  import * as searchCascade from './searchCascade.js';
@@ -35,6 +36,7 @@ const modules = Object.assign({
35
36
  "./levelSearchCascader.tsx": levelSearchCascader,
36
37
  "./lineBar/index.ts": index$1,
37
38
  "./radio.tsx": radio,
39
+ "./recommendSelect.tsx": recommendSelect,
38
40
  "./remoteSearch.tsx": remoteSearch,
39
41
  "./search.tsx": search,
40
42
  "./searchCascade.tsx": searchCascade,
@@ -0,0 +1,131 @@
1
+ import { AnyObject } from '../../../../../../es/shared/types';
2
+ import { PropType } from 'vue';
3
+ import { RecommendIds } from '../../../../../../es/components/form-render';
4
+ export declare const RECOMMEND_SELECT: import("vue").DefineComponent<{
5
+ value: {
6
+ type: StringConstructor;
7
+ };
8
+ commonList: {
9
+ type: PropType<AnyObject[]>;
10
+ };
11
+ recentList: {
12
+ type: PropType<AnyObject[]>;
13
+ };
14
+ options: {
15
+ type: PropType<AnyObject[]>;
16
+ default: () => never[];
17
+ };
18
+ autograph: {
19
+ type: StringConstructor;
20
+ };
21
+ lazyRequest: {
22
+ type: BooleanConstructor;
23
+ default: boolean;
24
+ };
25
+ requestCache: {
26
+ type: BooleanConstructor;
27
+ default: boolean;
28
+ };
29
+ wordbook: {
30
+ type: PropType<Partial<{
31
+ level_num: number;
32
+ id: string;
33
+ name: string;
34
+ render_key: string[];
35
+ search_key: string[];
36
+ primary_key: string;
37
+ type: string;
38
+ value_key: string;
39
+ level_key: string;
40
+ link_key: string;
41
+ link_key_split: string;
42
+ show_key: string[];
43
+ conObj: AnyObject[];
44
+ conObjFirstLevel: AnyObject[];
45
+ }>>;
46
+ };
47
+ getRecommendInfo: {
48
+ type: PropType<() => RecommendIds>;
49
+ };
50
+ recommendNum: {
51
+ type: NumberConstructor;
52
+ default: number;
53
+ };
54
+ recommendCache: {
55
+ type: BooleanConstructor;
56
+ default: boolean;
57
+ };
58
+ recommendDeletable: {
59
+ type: BooleanConstructor;
60
+ default: boolean;
61
+ };
62
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:value" | "postRecommend" | "deleteRecommend")[], "update:value" | "postRecommend" | "deleteRecommend", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
63
+ value: {
64
+ type: StringConstructor;
65
+ };
66
+ commonList: {
67
+ type: PropType<AnyObject[]>;
68
+ };
69
+ recentList: {
70
+ type: PropType<AnyObject[]>;
71
+ };
72
+ options: {
73
+ type: PropType<AnyObject[]>;
74
+ default: () => never[];
75
+ };
76
+ autograph: {
77
+ type: StringConstructor;
78
+ };
79
+ lazyRequest: {
80
+ type: BooleanConstructor;
81
+ default: boolean;
82
+ };
83
+ requestCache: {
84
+ type: BooleanConstructor;
85
+ default: boolean;
86
+ };
87
+ wordbook: {
88
+ type: PropType<Partial<{
89
+ level_num: number;
90
+ id: string;
91
+ name: string;
92
+ render_key: string[];
93
+ search_key: string[];
94
+ primary_key: string;
95
+ type: string;
96
+ value_key: string;
97
+ level_key: string;
98
+ link_key: string;
99
+ link_key_split: string;
100
+ show_key: string[];
101
+ conObj: AnyObject[];
102
+ conObjFirstLevel: AnyObject[];
103
+ }>>;
104
+ };
105
+ getRecommendInfo: {
106
+ type: PropType<() => RecommendIds>;
107
+ };
108
+ recommendNum: {
109
+ type: NumberConstructor;
110
+ default: number;
111
+ };
112
+ recommendCache: {
113
+ type: BooleanConstructor;
114
+ default: boolean;
115
+ };
116
+ recommendDeletable: {
117
+ type: BooleanConstructor;
118
+ default: boolean;
119
+ };
120
+ }>> & {
121
+ "onUpdate:value"?: ((...args: any[]) => any) | undefined;
122
+ onPostRecommend?: ((...args: any[]) => any) | undefined;
123
+ onDeleteRecommend?: ((...args: any[]) => any) | undefined;
124
+ }, {
125
+ options: AnyObject[];
126
+ lazyRequest: boolean;
127
+ requestCache: boolean;
128
+ recommendDeletable: boolean;
129
+ recommendNum: number;
130
+ recommendCache: boolean;
131
+ }>;
@@ -0,0 +1,213 @@
1
+ import { defineComponent, inject, createVNode, ref, computed } from 'vue';
2
+ import { connect, mapProps } from '@formily/vue';
3
+ import { useVModel } from '@vueuse/core';
4
+ import { isFunction, omit } from 'lodash-es';
5
+ import '../../../index.js';
6
+ import { InjectionAsyncQueue } from '../../constants/index.js';
7
+ import RecommendSearch from '../../../../recommend-search/index.js';
8
+ import { useFormField } from '../../hooks/useFormField.js';
9
+ import { useAutographOptions } from '../../hooks/useAutographOptions.js';
10
+ import { assignUpdateValue, assignClearBindVisited } from '../../utils/schema.js';
11
+ import { useCommonInjection } from '../../hooks/useCommonInjection.js';
12
+ import { useFormRequest } from '../../hooks/useFormRequest.js';
13
+
14
+ function createPropRef(props, key) {
15
+ const _list = ref();
16
+ return computed({
17
+ get() {
18
+ if (_list.value)
19
+ return _list.value;
20
+ return props[key];
21
+ },
22
+ set(value) {
23
+ _list.value = value;
24
+ }
25
+ });
26
+ }
27
+ const script = defineComponent({
28
+ name: "FormRecommendSearch",
29
+ props: {
30
+ value: {
31
+ type: String
32
+ },
33
+ commonList: {
34
+ type: Array
35
+ },
36
+ recentList: {
37
+ type: Array
38
+ },
39
+ options: {
40
+ type: Array,
41
+ default: () => []
42
+ },
43
+ autograph: {
44
+ type: String
45
+ },
46
+ lazyRequest: {
47
+ type: Boolean,
48
+ default: false
49
+ },
50
+ requestCache: {
51
+ type: Boolean,
52
+ default: true
53
+ },
54
+ wordbook: {
55
+ type: Object
56
+ },
57
+ getRecommendInfo: {
58
+ type: Function
59
+ },
60
+ recommendNum: {
61
+ type: Number,
62
+ default: 5
63
+ },
64
+ recommendCache: {
65
+ type: Boolean,
66
+ default: false
67
+ },
68
+ recommendDeletable: {
69
+ type: Boolean,
70
+ default: true
71
+ }
72
+ },
73
+ emits: ["update:value", "postRecommend", "deleteRecommend"],
74
+ setup(props, {
75
+ emit
76
+ }) {
77
+ const valueRef = useVModel(props, "value", emit);
78
+ const {
79
+ fieldKey
80
+ } = useFormField();
81
+ const {
82
+ labelKey,
83
+ valueKey,
84
+ options,
85
+ fetchData: fetchOptions
86
+ } = useAutographOptions(props, valueRef);
87
+ const commonListRef = createPropRef(props, "commonList");
88
+ const recentListRef = createPropRef(props, "recentList");
89
+ const asyncQueue = inject(InjectionAsyncQueue);
90
+ const {
91
+ getRecommendRequestInfo,
92
+ getHttpInstance
93
+ } = useFormRequest();
94
+ function getRecommendConfig(type) {
95
+ const {
96
+ url,
97
+ getRecommendIds
98
+ } = getRecommendRequestInfo();
99
+ const globInfo = isFunction(getRecommendIds) ? getRecommendIds() : {};
100
+ const widgetInfo = isFunction(props.getRecommendInfo) ? props.getRecommendInfo() : {};
101
+ return {
102
+ url: url[type],
103
+ info: Object.assign({}, globInfo, widgetInfo)
104
+ };
105
+ }
106
+ async function getRecommend() {
107
+ if (commonListRef.value && recentListRef.value && props.recommendCache)
108
+ return;
109
+ const list = await asyncQueue.addAsync(createParams(fieldKey.value, props.recommendCache));
110
+ const {
111
+ commonly,
112
+ recently
113
+ } = classifyList(list);
114
+ commonListRef.value = commonly;
115
+ recentListRef.value = recently;
116
+ function classifyList(list2) {
117
+ return list2.reduce((res, item) => {
118
+ if (item.type === "commonly") {
119
+ res.commonly.push(omit(item, ["type"]));
120
+ } else if (item.type === "recently") {
121
+ res.recently.push(omit(item, ["type"]));
122
+ }
123
+ return res;
124
+ }, {
125
+ commonly: [],
126
+ recently: []
127
+ });
128
+ }
129
+ function createParams(key2, cache) {
130
+ const {
131
+ url,
132
+ info
133
+ } = getRecommendConfig("get");
134
+ return {
135
+ url,
136
+ method: "get",
137
+ key: key2,
138
+ cache,
139
+ params: {
140
+ ...info,
141
+ recNum: props.recommendNum,
142
+ keyword: ""
143
+ }
144
+ };
145
+ }
146
+ }
147
+ async function postRecommend({
148
+ option
149
+ }) {
150
+ const http = getHttpInstance();
151
+ if (!http)
152
+ return;
153
+ const {
154
+ url,
155
+ info
156
+ } = getRecommendConfig("post");
157
+ emit("postRecommend", await http.post(url, {
158
+ ...info,
159
+ keyword: "",
160
+ itemId: valueKey.value,
161
+ itemObj: JSON.stringify(option)
162
+ }));
163
+ }
164
+ async function deleteRecommend(recType) {
165
+ const http = getHttpInstance();
166
+ if (!http)
167
+ return;
168
+ const {
169
+ url,
170
+ info
171
+ } = getRecommendConfig("delete");
172
+ if (recType === "COMMONLY")
173
+ commonListRef.value = [];
174
+ else if (recType === "RECENTLY")
175
+ recentListRef.value = [];
176
+ emit("deleteRecommend", await http.delete(url, {
177
+ ...info,
178
+ keyword: "",
179
+ recType
180
+ }));
181
+ }
182
+ async function fetchData(content = "") {
183
+ fetchOptions(content);
184
+ getRecommend();
185
+ }
186
+ const {
187
+ injectValueBindKey
188
+ } = useCommonInjection();
189
+ const key = injectValueBindKey(valueRef);
190
+ return () => {
191
+ return createVNode(RecommendSearch, {
192
+ "mode": "select",
193
+ "value": valueRef.value,
194
+ "onUpdate:value": ($event) => valueRef.value = $event,
195
+ "label-key": labelKey.value,
196
+ "value-key": valueKey.value,
197
+ "key": key.value,
198
+ "options": options.value,
199
+ "common-list": commonListRef.value,
200
+ "recent-list": recentListRef.value,
201
+ "recommend-deletable": props.recommendDeletable,
202
+ "onSearch": fetchData,
203
+ "onChoose": postRecommend,
204
+ "onDelete": deleteRecommend
205
+ }, null);
206
+ };
207
+ }
208
+ });
209
+ const RECOMMEND_SELECT = connect(script, mapProps({
210
+ dataSource: "options"
211
+ }, assignUpdateValue, assignClearBindVisited));
212
+
213
+ export { RECOMMEND_SELECT };
@@ -68,7 +68,6 @@ const script = defineComponent({
68
68
  cache: props.requestCache,
69
69
  field: field.value
70
70
  }));
71
- console.log(remoteOptions.value);
72
71
  } catch (e) {
73
72
  isString(e) && formRenderLog(e);
74
73
  }
@@ -77,8 +77,6 @@ const script = defineComponent({
77
77
  if (!props.urlConfig) {
78
78
  return remoteOptions.value = null;
79
79
  }
80
- if (remoteOptions.value && props.requestCache)
81
- return;
82
80
  try {
83
81
  remoteOptions.value = await asyncQueue.addAsync(await createUrlConfigParams({
84
82
  config: props.urlConfig,
@@ -116,7 +116,7 @@ function useAsyncQueue(requestInstance) {
116
116
  return new AsyncQueue({
117
117
  name: "FormRenderAsyncQueue",
118
118
  parallelism,
119
- async processor({ key, method = "post", params, url }, cb, removeCache) {
119
+ async processor({ key, method = "post", cache, params, url }, cb, removeCache) {
120
120
  var _a, _b;
121
121
  const http = (_a = unref(requestInstance)) != null ? _a : getHttpInstance();
122
122
  if (!http) {
@@ -134,6 +134,7 @@ function useAsyncQueue(requestInstance) {
134
134
  res = option.afterRequest(key, res);
135
135
  }
136
136
  cb(void 0, Array.isArray(res) ? res : []);
137
+ !cache && removeCache();
137
138
  } catch (e) {
138
139
  cb(new Error(`Request error => ${e}`));
139
140
  removeCache();
@@ -21,22 +21,20 @@ function useAutographOptions(props, valueRef) {
21
21
  });
22
22
  const remoteOptions = ref(null);
23
23
  const lastSearch = ref("");
24
- const { field, fieldKey } = useFormField();
24
+ const { fieldKey } = useFormField();
25
25
  const { getSearchRequestInfo } = useFormRequest();
26
26
  const fetchData = useDebounceFn(async function(content) {
27
27
  if (!props.autograph || !props.wordbook)
28
28
  return;
29
29
  lastSearch.value = content || "";
30
- if (remoteOptions.value && props.requestCache)
31
- return;
32
30
  try {
33
31
  remoteOptions.value = await asyncQueue.addAsync(
34
- createParams(props.wordbook, props.autograph, field.value, fieldKey.value)
32
+ createParams(props.wordbook, props.autograph, fieldKey.value)
35
33
  );
36
34
  } catch (e) {
37
35
  isString(e) && formRenderLog(e);
38
36
  }
39
- function createParams(wordbook, autograph, field2, key) {
37
+ function createParams(wordbook, autograph, key) {
40
38
  const params = {
41
39
  autograph,
42
40
  wordbookId: wordbook.id,
@@ -89,6 +89,12 @@ function useFieldListAdaptor(collector) {
89
89
  multiple && (schema2.type = "array");
90
90
  }
91
91
  };
92
+ const createRecommendSelectSchema = (item) => {
93
+ const schema = createSelectSchema(item);
94
+ schema["x-component"] = "RECOMMEND_SELECT";
95
+ Object.assign(schema["x-component-props"], pick(item, ["commonList", "recentList"]));
96
+ return schema;
97
+ };
92
98
  const createRadioSchema = (item) => {
93
99
  const schema = createStandardSchema(item);
94
100
  Object.assign(schema["x-component-props"], {
@@ -219,6 +225,7 @@ function useFieldListAdaptor(collector) {
219
225
  ["INPUT", createInputSchema],
220
226
  ["INPUT_NUMBER", createInputNumberSchema],
221
227
  ["SELECT", createSelectSchema],
228
+ ["RECOMMEND_SELECT", createRecommendSelectSchema],
222
229
  ["REMOTE_SEARCH", createSelectSchema],
223
230
  ["DATE", createDateSchema],
224
231
  ["LEVEL_SEARCH_CASCADER", createLevelSearchCascadeSchema],
@@ -6,14 +6,21 @@ declare type SearchRequestInfo = {
6
6
  url: string;
7
7
  primaryKeyUrl?: string;
8
8
  };
9
+ export declare type RecommendIds = Partial<Record<'businessId' | 'componentId' | 'deptId' | 'userId', string>>;
10
+ declare type RecommendRequestInfo = {
11
+ getRecommendIds(): RecommendIds;
12
+ url: Record<'get' | 'post' | 'delete', string>;
13
+ };
9
14
  export declare function useFormRequest(): {
10
15
  getHttpInstance: () => Nullable<RequestInstance>;
11
16
  registGlobHttpInstance: (instance: RequestInstance) => void;
17
+ registGlobRecommendInfo: (info: Partial<RecommendRequestInfo>) => void;
18
+ registGlobSearchInfo: (info: SearchRequestInfo) => void;
12
19
  getSearchRequestInfo: () => {
13
20
  method: FormRequestType;
14
21
  url: string;
15
22
  primaryKeyUrl?: string | undefined;
16
23
  };
17
- registGlobSearchInfo: (info: SearchRequestInfo) => void;
24
+ getRecommendRequestInfo: () => RecommendRequestInfo;
18
25
  };
19
26
  export {};
@@ -1,5 +1,15 @@
1
+ import { cloneDeep } from 'lodash-es';
2
+
1
3
  let http = null;
2
4
  const searchRequestInfo = { method: "post", url: "", primaryKeyUrl: "" };
5
+ const recommendRequestInfo = {
6
+ url: {
7
+ get: "/fdp-api/fdp/aiRec/search",
8
+ post: "/fdp-api/fdp/aiRec/sendBehaviorData",
9
+ delete: "/fdp-api/fdp/aiRec/delete"
10
+ },
11
+ getRecommendIds: () => ({})
12
+ };
3
13
  function useFormRequest() {
4
14
  function getHttpInstance() {
5
15
  return http;
@@ -10,10 +20,23 @@ function useFormRequest() {
10
20
  function getSearchRequestInfo() {
11
21
  return { ...searchRequestInfo };
12
22
  }
23
+ function getRecommendRequestInfo() {
24
+ return cloneDeep(recommendRequestInfo);
25
+ }
13
26
  function registGlobSearchInfo(info) {
14
27
  Object.assign(searchRequestInfo, info);
15
28
  }
16
- return { getHttpInstance, registGlobHttpInstance, getSearchRequestInfo, registGlobSearchInfo };
29
+ function registGlobRecommendInfo(info) {
30
+ Object.assign(recommendRequestInfo, info);
31
+ }
32
+ return {
33
+ getHttpInstance,
34
+ registGlobHttpInstance,
35
+ registGlobRecommendInfo,
36
+ registGlobSearchInfo,
37
+ getSearchRequestInfo,
38
+ getRecommendRequestInfo
39
+ };
17
40
  }
18
41
 
19
42
  export { useFormRequest };
@@ -1 +1 @@
1
- .annotation-edit{align-items:center;color:#0067ee;cursor:pointer;display:inline-flex;font-size:16px;user-select:none}.annotation-edit.is-active{color:#ff9828}.annotation-edit__icon{align-items:center;display:inline-flex}.form-render__wrapper{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr));max-height:var(--form-height);overflow-y:auto;position:relative}.form-render__formItem{grid-column:span min(var(--column),var(--form-item-column)) /span min(var(--column),var(--form-item-column))}.form-render__formItem .n-date-picker,.form-render__formItem .n-input-number{width:100%}.form-render__formItemLabel{align-items:center;display:inline-flex;position:relative}.form-render__formItemLabel--text.has-annotation{margin-right:15px}.form-render__formItemLabel--annotation{position:absolute;right:calc(var(--icon-right)*1px);top:50%;transform:translateY(-50%)}.form-render__formItem .n-form-item-label{display:inline-flex}.form-render__formItem .n-form-item-label [annotation-hover-show=true]{visibility:hidden}.form-render__formItem .n-form-item-label:hover [annotation-hover-show=true]{visibility:visible}.form-render__linebar{grid-column:span min(var(--column),var(--column)) /span min(var(--column),var(--column))}.form-render__linebarHeader{align-items:center;background:#f2f2f2;border-radius:4px;cursor:pointer;display:flex;font-size:14px;font-weight:500;height:32px;justify-content:space-between;margin-bottom:8px;padding:0 16px}.form-render__linebarHeader svg{color:rgba(33,33,33,.4);width:14px}.form-render__linebarItem{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr))}.form-render__linebreaks{grid-column:span min(var(--column),var(--form-item-column)) /span min(var(--column),var(--form-item-column))}.form-render__inputGroup{align-items:flex-start;display:flex;grid-column:span min(var(--column),var(--column)) /span min(var(--column),var(--column))}.form-render__inputGroup>div{flex:1}.form-render__inputGroup>div:not(:last-of-type) .n-base-selection__border,.form-render__inputGroup>div:not(:last-of-type) .n-input__border{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0}.form-render__inputGroup>div:last-of-type .n-base-selection__border,.form-render__inputGroup>div:last-of-type .n-input__border{border-bottom-left-radius:0;border-top-left-radius:0}.form-render__combination{width:100%}.form-render__combinationHeader{display:flex;gap:12px}.form-render__combinationHeader>h3{font-size:16px;font-weight:700;margin:0;padding:0}.form-render__combinationHeader .n-button__icon{font-size:14px;margin:0 2px 0 0}.form-render__combinationHeaderText{font-size:16px;font-weight:500}.form-render__combinationClose{font-size:16px;height:14px;position:absolute;right:5px;top:5px;width:14px}.form-render__combinationContentJson{position:relative}.form-render__combinationContent{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr));position:relative}.form-render__complex{width:100%}.form-render__complexContent--grid{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr))}.form-render__complexContent--flex{display:flex!important;gap:0 8px}.form-render__selectMenu .n-scrollbar-rail__scrollbar{display:none!important}.form-render__selectMenu .n-virtual-list::-webkit-scrollbar,.form-render__selectMenu .n-virtual-list::-webkit-scrollbar-thumb{display:unset!important;height:6px;width:6px}.form-render__selectMenu .n-virtual-list::-webkit-scrollbar-thumb{background:#bfbfbf;border-radius:4px}.form-render__selectMenu .v-vl-items{min-width:100%;width:max-content}.form-render__selectOption .n-base-select-option__content{overflow:visible!important;text-overflow:unset!important;word-break:keep-all!important}
1
+ .annotation-edit{align-items:center;color:#0067ee;cursor:pointer;display:inline-flex;font-size:16px;user-select:none}.annotation-edit.is-active{color:#ff9828}.annotation-edit__icon{align-items:center;display:inline-flex}.recommend-search__menu{min-height:100px}.recommend-search__menuRecommendList{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.recommend-search__menuRecommendList .n-tag{cursor:pointer}.recommend-search__recentRecommend{margin-bottom:8px}.recommend-search__recentRecommend>header{align-items:center;color:rgba(0,0,0,.4);display:flex;justify-content:space-between}.recommend-search__recentRecommend>header .n-icon:hover{color:rgba(0,0,0,.6);cursor:pointer}.recommend-search__commonRecommend{margin-bottom:8px}.recommend-search__commonRecommend>header{align-items:center;color:rgba(0,0,0,.4);display:flex;justify-content:space-between}.recommend-search__commonRecommend>header .n-icon:hover{color:rgba(0,0,0,.6);cursor:pointer}.recommend-search__option{align-items:center;border-radius:4px;cursor:pointer;display:flex;height:32px;justify-content:space-between;padding:0 8px}.recommend-search__optionText{max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recommend-search__option.is-active{color:var(--n-color)!important}.recommend-search__option.is-active .n-icon{font-size:20px}.recommend-search__option:hover{background:rgba(0,0,0,.03)}.recommend-search__optionContainer{margin:-8px -10px}.recommend-search__empty{align-items:center;color:rgba(0,0,0,.3);display:flex;height:100px;justify-content:center}.search-cascader__menuWrapper{display:flex;flex-wrap:nowrap;margin:-8px -14px}.search-cascader__input input{cursor:pointer!important}.search-cascader__option{align-items:center;border-radius:4px;box-sizing:border-box;display:flex;height:32px;justify-content:space-between;padding:0 8px 0 16px;width:100%}.search-cascader__option--active{background:#f8f8f8}.search-cascader__option:hover{background:#f5f5f5;cursor:pointer}.search-cascader__optionWrapper{background:#fff;height:256px;overflow-x:auto;width:calc(var(--menu-width)*1px)}.search-cascader__optionWrapper:not(:last-of-type){border:solid #e5e5e5;border-width:0 1px 0 0}.search-cascader__optionText{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 20px)}.search-cascader__option svg{color:#bfbfbf;flex-shrink:0;font-size:12px;width:20px}.search-cascader__option svg.rotate{animation:rotate 1s linear infinite}.search-cascader__emptyWrapper{align-items:center;background:#fff;box-sizing:border-box;display:flex;height:300px;justify-content:center;padding:16px;width:100%}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.form-render__wrapper{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr));max-height:var(--form-height);overflow-y:auto;position:relative}.form-render__formItem{grid-column:span min(var(--column),var(--form-item-column)) /span min(var(--column),var(--form-item-column))}.form-render__formItem .n-date-picker,.form-render__formItem .n-input-number{width:100%}.form-render__formItemLabel{align-items:center;display:inline-flex;position:relative}.form-render__formItemLabel--text.has-annotation{margin-right:15px}.form-render__formItemLabel--annotation{position:absolute;right:calc(var(--icon-right)*1px);top:50%;transform:translateY(-50%)}.form-render__formItem .n-form-item-label{display:inline-flex}.form-render__formItem .n-form-item-label [annotation-hover-show=true]{visibility:hidden}.form-render__formItem .n-form-item-label:hover [annotation-hover-show=true]{visibility:visible}.form-render__linebar{grid-column:span min(var(--column),var(--column)) /span min(var(--column),var(--column))}.form-render__linebarHeader{align-items:center;background:#f2f2f2;border-radius:4px;cursor:pointer;display:flex;font-size:14px;font-weight:500;height:32px;justify-content:space-between;margin-bottom:8px;padding:0 16px}.form-render__linebarHeader svg{color:rgba(33,33,33,.4);width:14px}.form-render__linebarItem{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr))}.form-render__linebreaks{grid-column:span min(var(--column),var(--form-item-column)) /span min(var(--column),var(--form-item-column))}.form-render__inputGroup{align-items:flex-start;display:flex;grid-column:span min(var(--column),var(--column)) /span min(var(--column),var(--column))}.form-render__inputGroup>div{flex:1}.form-render__inputGroup>div:not(:last-of-type) .n-base-selection__border,.form-render__inputGroup>div:not(:last-of-type) .n-input__border{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0}.form-render__inputGroup>div:last-of-type .n-base-selection__border,.form-render__inputGroup>div:last-of-type .n-input__border{border-bottom-left-radius:0;border-top-left-radius:0}.form-render__combination{width:100%}.form-render__combinationHeader{display:flex;gap:12px}.form-render__combinationHeader>h3{font-size:16px;font-weight:700;margin:0;padding:0}.form-render__combinationHeader .n-button__icon{font-size:14px;margin:0 2px 0 0}.form-render__combinationHeaderText{font-size:16px;font-weight:500}.form-render__combinationClose{font-size:16px;height:14px;position:absolute;right:5px;top:5px;width:14px}.form-render__combinationContentJson{position:relative}.form-render__combinationContent{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr));position:relative}.form-render__complex{width:100%}.form-render__complexContent--grid{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr))}.form-render__complexContent--flex{display:flex!important;gap:0 8px}.form-render__selectMenu .n-scrollbar-rail__scrollbar{display:none!important}.form-render__selectMenu .n-virtual-list::-webkit-scrollbar,.form-render__selectMenu .n-virtual-list::-webkit-scrollbar-thumb{display:unset!important;height:6px;width:6px}.form-render__selectMenu .n-virtual-list::-webkit-scrollbar-thumb{background:#bfbfbf;border-radius:4px}.form-render__selectMenu .v-vl-items{min-width:100%;width:max-content}.form-render__selectOption .n-base-select-option__content{overflow:visible!important;text-overflow:unset!important;word-break:keep-all!important}