cnhis-design-vue 3.4.0-beta.32 → 3.4.0-beta.34

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.
package/README.md CHANGED
@@ -1,87 +1,87 @@
1
- # 安装
2
-
3
- ```shell
4
- npm i cnhis-design-vue@[版本号]
5
- # or
6
- yarn add cnhis-design-vue@[版本号] #推荐
7
- ```
8
-
9
- ## 1.全局引入
10
-
11
- ```typescript
12
- // main.ts
13
- import { createApp } from 'vue';
14
- import App from './App.vue';
15
- import 'cnhis-design-vue/es/packages/index.css';
16
- import cui from 'cnhis-design-vue';
17
-
18
- const app = createApp(App);
19
- app.use(cui).mount('#app');
20
- ```
21
-
22
- ## 2. 按需引入
23
-
24
- 组件现在支持了自动按需引入, 但是样式文件需要额外的处理
25
-
26
- ### 2.1 样式处理方式1 (按需引入样式)
27
-
28
- ```shell
29
- # 安装自动导入样式的插件
30
- npm i -d vite-plugin-style-import
31
- ```
32
-
33
- ```typescript
34
- // vite.config.ts
35
- import { defineConfig } from 'vite';
36
- import { createStyleImportPlugin } from 'vite-plugin-style-import';
37
-
38
- export default defineConfig({
39
- plugins: [
40
- // ...otherPlugins
41
- createStyleImportPlugin({
42
- libs: [
43
- {
44
- libraryName: 'cnhis-design-vue',
45
- esModule: true,
46
- ensureStyleFile: true,
47
- resolveStyle: name => {
48
- return `cnhis-design-vue/es/components/${ name.slice(2) }/style/index.css`;
49
- }
50
- }
51
- ]
52
- })
53
- ]
54
- });
55
- ```
56
-
57
- ### 2.2 样式处理方式2 (全局引入样式)
58
-
59
- ```typescript
60
- // main.ts
61
- import 'cnhis-design-vue/es/components/index.css';
62
- ```
63
-
64
- ## 3.FAQ
65
-
66
- ### 3.1 项目打包后样式丢失
67
-
68
- 处理方法, 将 cnhis-design-vue 从 vendor 包中移除 (没有出现此问题则不需要)
69
-
70
- ```typescript
71
- // vite.config.ts
72
- import { defineConfig } from 'vite';
73
-
74
- export default defineConfig({
75
- build: {
76
- rollupOptions: {
77
- // ..otherOptions
78
- output: {
79
- dir: './dist',
80
- manualChunks: {
81
- 'cnhis-vendor': ['cnhis-design-vue']
82
- }
83
- }
84
- }
85
- }
86
- });
87
- ```
1
+ # 安装
2
+
3
+ ```shell
4
+ npm i cnhis-design-vue@[版本号]
5
+ # or
6
+ yarn add cnhis-design-vue@[版本号] #推荐
7
+ ```
8
+
9
+ ## 1.全局引入
10
+
11
+ ```typescript
12
+ // main.ts
13
+ import { createApp } from 'vue';
14
+ import App from './App.vue';
15
+ import 'cnhis-design-vue/es/packages/index.css';
16
+ import cui from 'cnhis-design-vue';
17
+
18
+ const app = createApp(App);
19
+ app.use(cui).mount('#app');
20
+ ```
21
+
22
+ ## 2. 按需引入
23
+
24
+ 组件现在支持了自动按需引入, 但是样式文件需要额外的处理
25
+
26
+ ### 2.1 样式处理方式1 (按需引入样式)
27
+
28
+ ```shell
29
+ # 安装自动导入样式的插件
30
+ npm i -d vite-plugin-style-import
31
+ ```
32
+
33
+ ```typescript
34
+ // vite.config.ts
35
+ import { defineConfig } from 'vite';
36
+ import { createStyleImportPlugin } from 'vite-plugin-style-import';
37
+
38
+ export default defineConfig({
39
+ plugins: [
40
+ // ...otherPlugins
41
+ createStyleImportPlugin({
42
+ libs: [
43
+ {
44
+ libraryName: 'cnhis-design-vue',
45
+ esModule: true,
46
+ ensureStyleFile: true,
47
+ resolveStyle: name => {
48
+ return `cnhis-design-vue/es/components/${ name.slice(2) }/style/index.css`;
49
+ }
50
+ }
51
+ ]
52
+ })
53
+ ]
54
+ });
55
+ ```
56
+
57
+ ### 2.2 样式处理方式2 (全局引入样式)
58
+
59
+ ```typescript
60
+ // main.ts
61
+ import 'cnhis-design-vue/es/components/index.css';
62
+ ```
63
+
64
+ ## 3.FAQ
65
+
66
+ ### 3.1 项目打包后样式丢失
67
+
68
+ 处理方法, 将 cnhis-design-vue 从 vendor 包中移除 (没有出现此问题则不需要)
69
+
70
+ ```typescript
71
+ // vite.config.ts
72
+ import { defineConfig } from 'vite';
73
+
74
+ export default defineConfig({
75
+ build: {
76
+ rollupOptions: {
77
+ // ..otherOptions
78
+ output: {
79
+ dir: './dist',
80
+ manualChunks: {
81
+ 'cnhis-vendor': ['cnhis-design-vue']
82
+ }
83
+ }
84
+ }
85
+ }
86
+ });
87
+ ```
@@ -74,7 +74,7 @@ function useLeft(canvas, propItems, emits, pointTipProps, moveLimit, setPopup, u
74
74
  list.forEach((item) => {
75
75
  var _a;
76
76
  const targetList = !item.linkKey ? item.list : (_a = list.find((_item) => _item.key === item.linkKey)) == null ? void 0 : _a.list;
77
- let firstPointLeft = originX;
77
+ let firstPointLeft = 0;
78
78
  targetList.find((k) => {
79
79
  let con = false;
80
80
  if (isEffectiveNode(k)) {
@@ -85,7 +85,7 @@ function useLeft(canvas, propItems, emits, pointTipProps, moveLimit, setPopup, u
85
85
  }
86
86
  return con;
87
87
  });
88
- item.limitRight = firstPointLeft - xCellWidth;
88
+ item.limitRight = firstPointLeft ? firstPointLeft - xCellWidth : endX;
89
89
  });
90
90
  const externalIconList = cloneDeep(left.externalIconList || []).map((item) => ({
91
91
  ...item,
@@ -107,7 +107,7 @@ function useLeft(canvas, propItems, emits, pointTipProps, moveLimit, setPopup, u
107
107
  leftX,
108
108
  topY,
109
109
  originX: "center",
110
- ...item.isExternal ? { evented: false, selectable: false } : {},
110
+ ...item.isExternal && { evented: false, selectable: false },
111
111
  origin: {
112
112
  linkKey: item.linkKey,
113
113
  limitRight: item.limitRight
@@ -553,9 +553,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
553
553
  hide: boolean;
554
554
  }>;
555
555
  draggable: boolean;
556
- isHighlightRow: boolean;
557
556
  idx: number;
558
557
  isHighlight: boolean;
558
+ isHighlightRow: boolean;
559
559
  isFieldSet: boolean;
560
560
  fieldDescribeMode: "column" | "tooltip";
561
561
  hideExpressionOption: AnyObject[];
@@ -594,9 +594,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
594
594
  hide: boolean;
595
595
  }>;
596
596
  draggable: boolean;
597
- isHighlightRow: boolean;
598
597
  idx: number;
599
598
  isHighlight: boolean;
599
+ isHighlightRow: boolean;
600
600
  isFieldSet: boolean;
601
601
  fieldDescribeMode: "column" | "tooltip";
602
602
  hideExpressionOption: AnyObject[];
@@ -773,9 +773,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
773
773
  hide: boolean;
774
774
  }>;
775
775
  draggable: boolean;
776
- isHighlightRow: boolean;
777
776
  idx: number;
778
777
  isHighlight: boolean;
778
+ isHighlightRow: boolean;
779
779
  isFieldSet: boolean;
780
780
  fieldDescribeMode: "column" | "tooltip";
781
781
  hideExpressionOption: AnyObject[];
@@ -384,9 +384,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
384
384
  hide: boolean;
385
385
  }>;
386
386
  draggable: boolean;
387
- isHighlightRow: boolean;
388
387
  idx: number;
389
388
  isHighlight: boolean;
389
+ isHighlightRow: boolean;
390
390
  isFieldSet: boolean;
391
391
  fieldDescribeMode: "column" | "tooltip";
392
392
  hideExpressionOption: AnyObject[];
@@ -601,7 +601,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
601
601
  }, {
602
602
  default: withCtx(() => [!unref(isAudioOrVideoMessage)(item.content) ? (openBlock(), createElementBlock(Fragment, {
603
603
  key: 0
604
- }, [createCommentVNode(' <n-button\n quaternary\n size="tiny"\n @click="(event: MouseEvent) => handleSelectLabel(event, item.id)"\n >\n <template #icon>\n <n-icon size="17" :component="HappyOutline" />\n </template>\n </n-button> '), createVNode(unref(NButton), {
604
+ }, [createCommentVNode(' <n-button\r\n quaternary\r\n size="tiny"\r\n @click="(event: MouseEvent) => handleSelectLabel(event, item.id)"\r\n >\r\n <template #icon>\r\n <n-icon size="17" :component="HappyOutline" />\r\n </template>\r\n </n-button> '), createVNode(unref(NButton), {
605
605
  quaternary: "",
606
606
  size: "tiny",
607
607
  onClick: () => setReferenceMsg(item)
@@ -170,7 +170,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
170
170
  round: "",
171
171
  size: 100,
172
172
  onClickCapture: _cache[0] || (_cache[0] = ($event) => showLargeAvatar.value = true)
173
- }, null, 8, ["src"]), createCommentVNode(' <n-upload abstract accept="image/*" @change="onChange">\n <n-upload-trigger #="{ handleClick }" abstract>\n <n-button\n circle\n secondary\n class="edit-avatar"\n v-show="userDetail.id === state.userInfo.id"\n @click="handleClick"\n >\n <template #icon>\n <n-icon size="16" color="#666666" :component="Camera" />\n </template>\n </n-button>\n </n-upload-trigger>\n </n-upload> '), createElementVNode("div", _hoisted_4, [createElementVNode("h4", null, [createElementVNode("label", _hoisted_5, toDisplayString(userDetail.name), 1), withDirectives(createElementVNode("label", {
173
+ }, null, 8, ["src"]), createCommentVNode(' <n-upload abstract accept="image/*" @change="onChange">\r\n <n-upload-trigger #="{ handleClick }" abstract>\r\n <n-button\r\n circle\r\n secondary\r\n class="edit-avatar"\r\n v-show="userDetail.id === state.userInfo.id"\r\n @click="handleClick"\r\n >\r\n <template #icon>\r\n <n-icon size="16" color="#666666" :component="Camera" />\r\n </template>\r\n </n-button>\r\n </n-upload-trigger>\r\n </n-upload> '), createElementVNode("div", _hoisted_4, [createElementVNode("h4", null, [createElementVNode("label", _hoisted_5, toDisplayString(userDetail.name), 1), withDirectives(createElementVNode("label", {
174
174
  class: normalizeClass(["iho-chatRole", unref(isDoctorRole)(userDetail.roleInfo) ? "isDoctor" : ""])
175
175
  }, toDisplayString(unref(getRoleName)(userDetail.roleInfo)), 3), [[vShow, unref(getRoleName)(userDetail.roleInfo)]])]), createElementVNode("p", null, toDisplayString(userDetail.orgName), 1)]), createVNode(unref(NButton), {
176
176
  strong: "",
@@ -13,16 +13,17 @@ const useEvent = (props, state) => {
13
13
  };
14
14
  const handleLogicList = (formItem, formArray) => {
15
15
  const { seq } = formItem;
16
- let list = formArray.map((item2) => {
16
+ const list = formArray.map((item2) => {
17
17
  if (item2.seq > seq && item2.isShow && item2.__isLogic__)
18
18
  return item2;
19
19
  return false;
20
20
  });
21
21
  let nextItemMax = 0;
22
- let i = 0, len = list.length, item;
22
+ const len = list.length;
23
+ let i = 0, item;
23
24
  for (; i < len; i++) {
24
25
  item = list[i];
25
- let curVal = state.form[formKey(item)];
26
+ const curVal = state.form[formKey(item)];
26
27
  if (!curVal)
27
28
  continue;
28
29
  if (Array.isArray(curVal)) {
@@ -83,7 +84,7 @@ const useEvent = (props, state) => {
83
84
  });
84
85
  }
85
86
  } else if (nextLogic.next_logic == "uncondition") {
86
- let res = vexutilsExpand.isEmpty(choiceValue);
87
+ const res = vexutilsExpand.isEmpty(choiceValue);
87
88
  formItem.__isLogic__ = !res;
88
89
  formItem.__lastSeq__ = seq + 1;
89
90
  formArray.forEach((item) => {
@@ -99,27 +100,60 @@ const useEvent = (props, state) => {
99
100
  });
100
101
  }
101
102
  };
103
+ const processFieldValue = (value, isNumberType) => {
104
+ const defaultValue = isNumberType ? null : "/";
105
+ if (value == null || value === "") {
106
+ return defaultValue;
107
+ }
108
+ if (isNumberType) {
109
+ if (typeof value !== "number" && isNaN(+value)) {
110
+ return null;
111
+ }
112
+ return +value;
113
+ }
114
+ return value;
115
+ };
116
+ const createFormElementMap = (formArray) => {
117
+ const elementMap = /* @__PURE__ */ new Map();
118
+ formArray.forEach((element) => {
119
+ if (element.seq != null) {
120
+ elementMap.set(element.seq, element);
121
+ }
122
+ });
123
+ return elementMap;
124
+ };
125
+ const processRelationFieldList = (dataList, relationField, isNumberType) => {
126
+ return dataList.map((dataItem) => processFieldValue(dataItem[relationField], isNumberType)).filter(Boolean) || [];
127
+ };
102
128
  const handleDynamicDataRelation = (list, formItem, formArray) => {
103
- let { targetSource } = formItem;
104
- if (!targetSource || !Object.keys(targetSource).length)
105
- return;
106
- if (!targetSource.target_id)
107
- return;
108
- let { relationParam = [] } = targetSource;
109
- if (!relationParam.length)
129
+ var _a;
130
+ const { targetSource } = formItem;
131
+ if (!targetSource || !Object.keys(targetSource).length || !targetSource.target_id || !((_a = targetSource.relationParam) == null ? void 0 : _a.length)) {
110
132
  return;
111
- relationParam.forEach((item) => {
112
- let matchEle = formArray.find((v) => v.seq === item.relationElement);
113
- const key = matchEle.val_key;
114
- if (matchEle) {
115
- if (!list.length) {
116
- state.form[key] = "";
117
- } else {
118
- let relationFieldList = list.map((v) => v[item.relationField] || "/") || "";
119
- state.form[key] = relationFieldList.join(",");
120
- }
133
+ }
134
+ const { relationParam } = targetSource;
135
+ const formElementMap = createFormElementMap(formArray);
136
+ const len = relationParam.length;
137
+ let i = 0, item;
138
+ for (; i < len; i++) {
139
+ item = relationParam[i];
140
+ const { relationElement, relationField } = item;
141
+ if (relationElement == null || !relationField)
142
+ continue;
143
+ const targetElement = formElementMap.get(item.relationElement);
144
+ if (!targetElement)
145
+ continue;
146
+ const { val_key: formKey2, valueType } = targetElement;
147
+ const isNumberType = valueType === "number";
148
+ if (!formKey2)
149
+ continue;
150
+ if (!list.length) {
151
+ state.form[formKey2] = null;
152
+ continue;
121
153
  }
122
- });
154
+ const relationFieldList = processRelationFieldList(list, item.relationField, isNumberType);
155
+ state.form[formKey2] = relationFieldList.length > 0 ? relationFieldList.join(",") : null;
156
+ }
123
157
  };
124
158
  return {
125
159
  nextLogicEvent,
package/es/env.d.ts CHANGED
@@ -1,25 +1,25 @@
1
- /// <reference types="vite/client" />
2
-
3
- interface ImportMetaEnv {
4
- readonly VITE_APP_TYPE: string;
5
- // 更多环境变量...
6
- }
7
-
8
- interface ImportMeta {
9
- readonly env: ImportMetaEnv;
10
- }
11
-
12
- declare module '*.vue' {
13
- // @ts-ignore
14
- import type { App, defineComponent } from 'vue';
15
- // // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
16
- // // const component: DefineComponent<{}, {}, any>
17
- const component: ReturnType<typeof defineComponent> & {
18
- install(app: App): void;
19
- };
20
- // @ts-ignore
21
- export default component;
22
- }
23
-
24
- declare module '*.js';
25
-
1
+ /// <reference types="vite/client" />
2
+
3
+ interface ImportMetaEnv {
4
+ readonly VITE_APP_TYPE: string;
5
+ // 更多环境变量...
6
+ }
7
+
8
+ interface ImportMeta {
9
+ readonly env: ImportMetaEnv;
10
+ }
11
+
12
+ declare module '*.vue' {
13
+ // @ts-ignore
14
+ import type { App, defineComponent } from 'vue';
15
+ // // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
16
+ // // const component: DefineComponent<{}, {}, any>
17
+ const component: ReturnType<typeof defineComponent> & {
18
+ install(app: App): void;
19
+ };
20
+ // @ts-ignore
21
+ export default component;
22
+ }
23
+
24
+ declare module '*.js';
25
+
@@ -1,5 +1,5 @@
1
1
  var name = "@cnhis-design-vue/shared";
2
- var version = "3.4.0-beta.32";
2
+ var version = "3.4.0-beta.34";
3
3
  var main = "index.ts";
4
4
  var peerDependencies = {
5
5
  "naive-ui": "^2.30.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
- "version": "3.4.0-beta.32",
3
+ "version": "3.4.0-beta.34",
4
4
  "license": "ISC",
5
5
  "module": "./es/components/index.js",
6
6
  "main": "./es/components/index.js",
@@ -73,5 +73,5 @@
73
73
  "iOS 7",
74
74
  "last 3 iOS versions"
75
75
  ],
76
- "gitHead": "3151ed01535e9d9bd94b99b6adb9568906547f77"
76
+ "gitHead": "d428050c11e691f5de5f8d8992e774e735b8514b"
77
77
  }