@cgboiler/biz-mobile 1.18.12 → 1.18.14

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/es/index.d.ts CHANGED
@@ -8,7 +8,7 @@ declare namespace _default {
8
8
  }
9
9
  export default _default;
10
10
  export function install(app: any): void;
11
- export const version: "1.18.11";
11
+ export const version: "1.18.13";
12
12
  import MdPreview from './md-preview';
13
13
  import OrgPicker from './org-picker';
14
14
  import ProjectSelect from './project-select';
package/es/index.js CHANGED
@@ -2,7 +2,7 @@ import MdPreview from "./md-preview";
2
2
  import OrgPicker from "./org-picker";
3
3
  import ProjectSelect from "./project-select";
4
4
  import RichTextEditor from "./rich-text-editor";
5
- const version = "1.18.11";
5
+ const version = "1.18.13";
6
6
  function install(app) {
7
7
  const components = [
8
8
  MdPreview,
@@ -14,12 +14,33 @@ var __spreadValues = (a, b) => {
14
14
  }
15
15
  return a;
16
16
  };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
17
37
  import { createVNode as _createVNode } from "vue";
18
38
  import "./_atomic.css";
19
- import { defineComponent, computed, watch } from "vue";
39
+ import { defineComponent, computed, watch, onMounted } from "vue";
20
40
  import { mdPreviewProps } from "./types";
21
41
  import "./index.css";
22
42
  import { mdPreview } from "@cgboiler/shared";
43
+ import mermaid from "mermaid";
23
44
  const {
24
45
  initMarked,
25
46
  renderMarkdown,
@@ -47,13 +68,30 @@ var stdin_default = defineComponent({
47
68
  }
48
69
  return props.typewriter ? currentText.value : htmlContent.value;
49
70
  });
71
+ const renderMermaidDiagrams = () => __async(this, null, function* () {
72
+ try {
73
+ yield mermaid.run();
74
+ } catch (error) {
75
+ console.error("Mermaid rendering failed:", error);
76
+ }
77
+ });
50
78
  watch([() => props.text, () => props.typewriterKey], () => {
51
79
  if (props.typewriter) {
52
80
  typewriterController.start(htmlContent.value);
53
81
  }
82
+ renderMermaidDiagrams();
54
83
  }, {
55
84
  immediate: true
56
85
  });
86
+ onMounted(() => {
87
+ mermaid.initialize({
88
+ startOnLoad: false,
89
+ // 非常重要!我们手动控制渲染时机
90
+ theme: "default"
91
+ // 可选主题: 'default', 'dark', 'forest', 'neutral'
92
+ });
93
+ renderMermaidDiagrams();
94
+ });
57
95
  return () => _createVNode("div", {
58
96
  "class": "cgx-markdown-preview",
59
97
  "innerHTML": displayContent.value
@@ -1 +1 @@
1
- .katex-block{display:block;margin:1em 0;text-align:center;overflow-x:auto;overflow-y:hidden}.cgx-markdown-preview .diff-container{border:1px solid #ebeef5;border-radius:4px;overflow:auto}.cgx-markdown-preview .diff-equal{color:#606266}.cgx-markdown-preview .diff-delete{background-color:#ffeef0;color:#f56c6c;text-decoration:line-through}.cgx-markdown-preview .diff-insert{background-color:#e6ffec;color:#67c23a}.cgx-markdown-preview .diff-unified-view pre{margin:0;padding:8px;white-space:pre-wrap;word-break:break-word}.cgx-markdown-preview{line-height:1.6;font-size:var(--font-base, 16px)}.cgx-markdown-preview ol{list-style:auto}.cgx-markdown-preview ul{list-style:disc}.cgx-markdown-preview ol,.cgx-markdown-preview ul{padding-left:1.5em;margin:0 0 12px}.cgx-markdown-preview li::marker{text-align:start!important}.cgx-markdown-preview h1{font-size:2em;font-weight:700;margin:16px 0}.cgx-markdown-preview h2{font-size:1.5em;font-weight:700;margin:14px 0}.cgx-markdown-preview p{margin:12px 0}.cgx-markdown-preview blockquote{margin:0;padding-left:1em;border-left:4px solid #ddd;color:#666}.cgx-markdown-preview table{border-collapse:collapse;width:100%;margin-bottom:16px}.cgx-markdown-preview th,.cgx-markdown-preview td{border:1px solid #ddd;padding:8px;text-align:left}.cgx-markdown-preview th{background-color:#f6f8fa}
1
+ .katex-block{display:block;margin:1em 0;text-align:center;overflow-x:auto;overflow-y:hidden}.cgx-markdown-preview .diff-container{border:1px solid #ebeef5;border-radius:4px;overflow:auto}.cgx-markdown-preview .diff-equal{color:#606266}.cgx-markdown-preview .diff-delete{background-color:#ffeef0;color:#f56c6c;text-decoration:line-through}.cgx-markdown-preview .diff-insert{background-color:#e6ffec;color:#67c23a}.cgx-markdown-preview .diff-unified-view pre{margin:0;padding:8px;white-space:pre-wrap;word-break:break-word}.cgx-markdown-preview{line-height:1.6;font-size:var(--font-base, 16px)}.cgx-markdown-preview ol{list-style:auto}.cgx-markdown-preview ul{list-style:disc}.cgx-markdown-preview ol,.cgx-markdown-preview ul{padding-left:1.5em;margin:0 0 12px}.cgx-markdown-preview li::marker{text-align:start!important}.cgx-markdown-preview h1{font-size:2em;font-weight:700;margin:16px 0}.cgx-markdown-preview h2{font-size:1.5em;font-weight:700;margin:14px 0}.cgx-markdown-preview p{margin:12px 0}.cgx-markdown-preview blockquote{margin:0;padding-left:1em;border-left:4px solid #ddd;color:#666}.cgx-markdown-preview table{border-collapse:collapse;width:100%;margin-bottom:16px}.cgx-markdown-preview th,.cgx-markdown-preview td{border:1px solid #ddd;padding:8px;text-align:left}.cgx-markdown-preview th{background-color:#f6f8fa}.cgx-markdown-preview .mermaid{text-align:center;font-size:14px;line-height:1.2}
@@ -98,4 +98,10 @@
98
98
  th {
99
99
  background-color: #f6f8fa;
100
100
  }
101
+
102
+ .mermaid {
103
+ text-align: center;
104
+ font-size: 14px; /* 防止字体过大影响图表布局 */
105
+ line-height: 1.2;
106
+ }
101
107
  }
@@ -1,10 +1,30 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
1
21
  import { createVNode as _createVNode, createTextVNode as _createTextVNode, Fragment as _Fragment } from "vue";
2
22
  import "./_atomic.css";
3
23
  import { defineComponent, ref, computed, watch } from "vue";
4
24
  import { ActionSheet, Search, List, Image, Empty, Tabs, Tab, Icon } from "vant";
5
25
  import DeptImg from "./components/DeptImg";
6
26
  import { orgPickerProps } from "./types";
7
- import { useApi } from "./useApi";
27
+ import { useApi, getFinalUserList } from "./useApi";
8
28
  import "./index.css";
9
29
  import { useSearch } from "./useSearch";
10
30
  var stdin_default = defineComponent({
@@ -68,19 +88,19 @@ var stdin_default = defineComponent({
68
88
  const personnel = orgList.value.filter((item) => item.type !== "dept");
69
89
  return [...personnel, ...departments];
70
90
  });
71
- watch(() => props.modelValue, (newValue) => {
72
- var _a;
91
+ watch(() => props.modelValue, (newValue) => __async(this, null, function* () {
73
92
  if (!newValue) {
74
93
  selectedItems.value = [];
75
94
  return;
76
95
  }
77
- if ((_a = userList.value) == null ? void 0 : _a.length) {
96
+ const userList2 = yield getFinalUserList();
97
+ if (userList2 == null ? void 0 : userList2.length) {
78
98
  selectedItems.value = newValue.map((id) => {
79
- return userList.value.find((item) => item.id === id);
99
+ return userList2.find((item) => item.id === id);
80
100
  });
81
101
  updateDeptSelectionStatus();
82
102
  }
83
- }, {
103
+ }), {
84
104
  immediate: true
85
105
  });
86
106
  watch(() => selectedItems.value, () => {
@@ -93,12 +113,23 @@ var stdin_default = defineComponent({
93
113
  return;
94
114
  const deptUsers = getUsersByDeptId(item.id);
95
115
  const isFullySelected = fullySelectedDepts.value.has(item.id);
116
+ const deduplicateById = (arr) => {
117
+ const seenIds = /* @__PURE__ */ new Set();
118
+ return arr.filter((item2) => {
119
+ if (seenIds.has(item2.id)) {
120
+ return false;
121
+ }
122
+ seenIds.add(item2.id);
123
+ return true;
124
+ });
125
+ };
96
126
  if (isFullySelected) {
97
127
  const userIdsToRemove = new Set(deptUsers.map((user) => user.id));
98
- selectedItems.value = selectedItems.value.filter((selectedItem) => !userIdsToRemove.has(selectedItem.id));
128
+ selectedItems.value = deduplicateById(selectedItems.value.filter((selectedItem) => !userIdsToRemove.has(selectedItem.id)));
99
129
  } else {
100
130
  const currentSelectedIds = new Set(selectedItems.value.map((item2) => item2.id));
101
- const usersToAdd = deptUsers.filter((user) => !currentSelectedIds.has(user.id));
131
+ let usersToAdd = deptUsers.filter((user) => !currentSelectedIds.has(user.id));
132
+ usersToAdd = deduplicateById(usersToAdd);
102
133
  selectedItems.value.push(...usersToAdd);
103
134
  }
104
135
  };
@@ -1,4 +1,5 @@
1
1
  import { type OrgItem, RecentSelection } from './types';
2
+ export declare function getFinalUserList(): Promise<any[]>;
2
3
  export declare const useApi: () => {
3
4
  userList: import("vue").Ref<{
4
5
  [x: string]: any;
@@ -34,7 +34,7 @@ const fetchData = (url, cacheKey) => __async(void 0, null, function* () {
34
34
  return res;
35
35
  });
36
36
  const fetchOrgList = (deptId) => __async(void 0, null, function* () {
37
- const url = `https://wflow.cgboiler.com/v1/oa/org/tree/cloud?deptId=${deptId}&type=user`;
37
+ const url = `${window.globalConfig.wFlowApi}/v1/oa/org/tree/cloud?deptId=${deptId}&type=user`;
38
38
  return fetchData(url, deptId || "");
39
39
  });
40
40
  const userList = ref([]);
@@ -65,6 +65,15 @@ function initDeptList() {
65
65
  }
66
66
  initUserList();
67
67
  initDeptList();
68
+ function getFinalUserList() {
69
+ return __async(this, null, function* () {
70
+ var _a;
71
+ if ((_a = userList.value) == null ? void 0 : _a.length) {
72
+ return userList.value;
73
+ }
74
+ return yield getUserList();
75
+ });
76
+ }
68
77
  const useApi = () => {
69
78
  const orgList = ref([]);
70
79
  const orgSearchList = ref([]);
@@ -99,11 +108,9 @@ const useApi = () => {
99
108
  orgSearchList.value = [];
100
109
  return;
101
110
  }
102
- const url = `https://wflow.cgboiler.com/v1/oa/org/tree/user/search/cloud?userName=${userName}`;
111
+ const url = `${window.globalConfig.wFlowApi}/v1/oa/org/tree/user/search/cloud?userName=${userName}`;
103
112
  const searchResults = yield fetchData(url);
104
- orgSearchList.value = searchResults.filter(
105
- (item) => item.type !== "user" || item.status !== 5
106
- );
113
+ orgSearchList.value = searchResults.filter((item) => item.type !== "user" || item.status !== 5).filter((item, index, self) => index === self.findIndex((other) => other.id === item.id));
107
114
  }), 300);
108
115
  const RECENT_SELECTED_USERS_KEY = "recent_selected_users_history";
109
116
  const MAX_RECENT_SELECTIONS = 15;
@@ -118,7 +125,7 @@ const useApi = () => {
118
125
  }
119
126
  });
120
127
  const url = decodeURIComponent(
121
- `https://wflow.cgboiler.com/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data?keywords=${name}_${user.userId}&pageNo=1&pageSize=20`
128
+ `${window.globalConfig.wFlowApi}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data?keywords=${name}_${user.userId}&pageNo=1&pageSize=20`
122
129
  );
123
130
  const res = yield fetchData(url);
124
131
  let recentList = [];
@@ -155,10 +162,10 @@ const useApi = () => {
155
162
  data.field5375578403639 = JSON.stringify(list);
156
163
  }
157
164
  if (dataId.value) {
158
- url = `https://wflow.cgboiler.com/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data/${dataId.value}`;
165
+ url = `${window.globalConfig.wFlowApi}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data/${dataId.value}`;
159
166
  method = "PUT";
160
167
  } else {
161
- url = "https://wflow.cgboiler.com/v1/wflow/process/start/4e441786-65fa-11f0-aef7-ce938f4cd78d";
168
+ url = `${window.globalConfig.wFlowApi}/v1/wflow/process/start/4e441786-65fa-11f0-aef7-ce938f4cd78d`;
162
169
  method = "POST";
163
170
  }
164
171
  const token = user.token;
@@ -261,9 +268,7 @@ const useApi = () => {
261
268
  };
262
269
  const getUsersByDeptId = (deptId) => {
263
270
  const users = [];
264
- const directUsers = userList.value.filter(
265
- (user) => user.deptId === deptId && user.status !== 5
266
- );
271
+ const directUsers = userList.value.filter((user) => user.deptId === deptId && user.status !== 5);
267
272
  users.push(...directUsers);
268
273
  const childDepts = deptList.value.filter((dept) => dept.parentId === deptId);
269
274
  childDepts.forEach((childDept) => {
@@ -293,5 +298,6 @@ const useApi = () => {
293
298
  };
294
299
  };
295
300
  export {
301
+ getFinalUserList,
296
302
  useApi
297
303
  };
@@ -24,7 +24,7 @@ const useApi = () => {
24
24
  const projectList = ref([]);
25
25
  const getProjectList = () => __async(void 0, null, function* () {
26
26
  const res = yield useFetch(
27
- "https://vx.cgboiler.com/v1/note/projects",
27
+ `${window.globalConfig.vxApi}/v1/note/projects`,
28
28
  {
29
29
  method: "GET"
30
30
  }
@@ -22,3 +22,8 @@ declare module 'vue' {
22
22
  onClickCapture?: EventHandler;
23
23
  }
24
24
  }
25
+ declare global {
26
+ interface Window {
27
+ globalConfig: any;
28
+ }
29
+ }
package/lib/index.d.ts CHANGED
@@ -8,7 +8,7 @@ declare namespace _default {
8
8
  }
9
9
  export default _default;
10
10
  export function install(app: any): void;
11
- export const version: "1.18.11";
11
+ export const version: "1.18.13";
12
12
  import MdPreview from './md-preview';
13
13
  import OrgPicker from './org-picker';
14
14
  import ProjectSelect from './project-select';
package/lib/index.js CHANGED
@@ -45,7 +45,7 @@ __reExport(stdin_exports, require("./md-preview"), module.exports);
45
45
  __reExport(stdin_exports, require("./org-picker"), module.exports);
46
46
  __reExport(stdin_exports, require("./project-select"), module.exports);
47
47
  __reExport(stdin_exports, require("./rich-text-editor"), module.exports);
48
- const version = "1.18.11";
48
+ const version = "1.18.13";
49
49
  function install(app) {
50
50
  const components = [
51
51
  import_md_preview.default,
@@ -1,7 +1,9 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
5
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
9
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -28,7 +30,35 @@ var __copyProps = (to, from, except, desc) => {
28
30
  }
29
31
  return to;
30
32
  };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ // If the importer is in node compatibility mode or this is not an ESM
35
+ // file that has been converted to a CommonJS file using a Babel-
36
+ // compatible transform (i.e. "__esModule" has not been set), then set
37
+ // "default" to the CommonJS "module.exports" for node compatibility.
38
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
39
+ mod
40
+ ));
31
41
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
42
+ var __async = (__this, __arguments, generator) => {
43
+ return new Promise((resolve, reject) => {
44
+ var fulfilled = (value) => {
45
+ try {
46
+ step(generator.next(value));
47
+ } catch (e) {
48
+ reject(e);
49
+ }
50
+ };
51
+ var rejected = (value) => {
52
+ try {
53
+ step(generator.throw(value));
54
+ } catch (e) {
55
+ reject(e);
56
+ }
57
+ };
58
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
59
+ step((generator = generator.apply(__this, __arguments)).next());
60
+ });
61
+ };
32
62
  var stdin_exports = {};
33
63
  __export(stdin_exports, {
34
64
  default: () => stdin_default
@@ -40,6 +70,7 @@ var import_vue2 = require("vue");
40
70
  var import_types = require("./types");
41
71
  var import_index = require("./index.css");
42
72
  var import_shared = require("@cgboiler/shared");
73
+ var import_mermaid = __toESM(require("mermaid"));
43
74
  const {
44
75
  initMarked,
45
76
  renderMarkdown,
@@ -67,13 +98,30 @@ var stdin_default = (0, import_vue2.defineComponent)({
67
98
  }
68
99
  return props.typewriter ? currentText.value : htmlContent.value;
69
100
  });
101
+ const renderMermaidDiagrams = () => __async(this, null, function* () {
102
+ try {
103
+ yield import_mermaid.default.run();
104
+ } catch (error) {
105
+ console.error("Mermaid rendering failed:", error);
106
+ }
107
+ });
70
108
  (0, import_vue2.watch)([() => props.text, () => props.typewriterKey], () => {
71
109
  if (props.typewriter) {
72
110
  typewriterController.start(htmlContent.value);
73
111
  }
112
+ renderMermaidDiagrams();
74
113
  }, {
75
114
  immediate: true
76
115
  });
116
+ (0, import_vue2.onMounted)(() => {
117
+ import_mermaid.default.initialize({
118
+ startOnLoad: false,
119
+ // 非常重要!我们手动控制渲染时机
120
+ theme: "default"
121
+ // 可选主题: 'default', 'dark', 'forest', 'neutral'
122
+ });
123
+ renderMermaidDiagrams();
124
+ });
77
125
  return () => (0, import_vue.createVNode)("div", {
78
126
  "class": "cgx-markdown-preview",
79
127
  "innerHTML": displayContent.value
@@ -1 +1 @@
1
- .katex-block{display:block;margin:1em 0;text-align:center;overflow-x:auto;overflow-y:hidden}.cgx-markdown-preview .diff-container{border:1px solid #ebeef5;border-radius:4px;overflow:auto}.cgx-markdown-preview .diff-equal{color:#606266}.cgx-markdown-preview .diff-delete{background-color:#ffeef0;color:#f56c6c;text-decoration:line-through}.cgx-markdown-preview .diff-insert{background-color:#e6ffec;color:#67c23a}.cgx-markdown-preview .diff-unified-view pre{margin:0;padding:8px;white-space:pre-wrap;word-break:break-word}.cgx-markdown-preview{line-height:1.6;font-size:var(--font-base, 16px)}.cgx-markdown-preview ol{list-style:auto}.cgx-markdown-preview ul{list-style:disc}.cgx-markdown-preview ol,.cgx-markdown-preview ul{padding-left:1.5em;margin:0 0 12px}.cgx-markdown-preview li::marker{text-align:start!important}.cgx-markdown-preview h1{font-size:2em;font-weight:700;margin:16px 0}.cgx-markdown-preview h2{font-size:1.5em;font-weight:700;margin:14px 0}.cgx-markdown-preview p{margin:12px 0}.cgx-markdown-preview blockquote{margin:0;padding-left:1em;border-left:4px solid #ddd;color:#666}.cgx-markdown-preview table{border-collapse:collapse;width:100%;margin-bottom:16px}.cgx-markdown-preview th,.cgx-markdown-preview td{border:1px solid #ddd;padding:8px;text-align:left}.cgx-markdown-preview th{background-color:#f6f8fa}
1
+ .katex-block{display:block;margin:1em 0;text-align:center;overflow-x:auto;overflow-y:hidden}.cgx-markdown-preview .diff-container{border:1px solid #ebeef5;border-radius:4px;overflow:auto}.cgx-markdown-preview .diff-equal{color:#606266}.cgx-markdown-preview .diff-delete{background-color:#ffeef0;color:#f56c6c;text-decoration:line-through}.cgx-markdown-preview .diff-insert{background-color:#e6ffec;color:#67c23a}.cgx-markdown-preview .diff-unified-view pre{margin:0;padding:8px;white-space:pre-wrap;word-break:break-word}.cgx-markdown-preview{line-height:1.6;font-size:var(--font-base, 16px)}.cgx-markdown-preview ol{list-style:auto}.cgx-markdown-preview ul{list-style:disc}.cgx-markdown-preview ol,.cgx-markdown-preview ul{padding-left:1.5em;margin:0 0 12px}.cgx-markdown-preview li::marker{text-align:start!important}.cgx-markdown-preview h1{font-size:2em;font-weight:700;margin:16px 0}.cgx-markdown-preview h2{font-size:1.5em;font-weight:700;margin:14px 0}.cgx-markdown-preview p{margin:12px 0}.cgx-markdown-preview blockquote{margin:0;padding-left:1em;border-left:4px solid #ddd;color:#666}.cgx-markdown-preview table{border-collapse:collapse;width:100%;margin-bottom:16px}.cgx-markdown-preview th,.cgx-markdown-preview td{border:1px solid #ddd;padding:8px;text-align:left}.cgx-markdown-preview th{background-color:#f6f8fa}.cgx-markdown-preview .mermaid{text-align:center;font-size:14px;line-height:1.2}
@@ -98,4 +98,10 @@
98
98
  th {
99
99
  background-color: #f6f8fa;
100
100
  }
101
+
102
+ .mermaid {
103
+ text-align: center;
104
+ font-size: 14px; /* 防止字体过大影响图表布局 */
105
+ line-height: 1.2;
106
+ }
101
107
  }
@@ -25,6 +25,26 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
  mod
26
26
  ));
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var __async = (__this, __arguments, generator) => {
29
+ return new Promise((resolve, reject) => {
30
+ var fulfilled = (value) => {
31
+ try {
32
+ step(generator.next(value));
33
+ } catch (e) {
34
+ reject(e);
35
+ }
36
+ };
37
+ var rejected = (value) => {
38
+ try {
39
+ step(generator.throw(value));
40
+ } catch (e) {
41
+ reject(e);
42
+ }
43
+ };
44
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
45
+ step((generator = generator.apply(__this, __arguments)).next());
46
+ });
47
+ };
28
48
  var stdin_exports = {};
29
49
  __export(stdin_exports, {
30
50
  default: () => stdin_default
@@ -100,19 +120,19 @@ var stdin_default = (0, import_vue2.defineComponent)({
100
120
  const personnel = orgList.value.filter((item) => item.type !== "dept");
101
121
  return [...personnel, ...departments];
102
122
  });
103
- (0, import_vue2.watch)(() => props.modelValue, (newValue) => {
104
- var _a;
123
+ (0, import_vue2.watch)(() => props.modelValue, (newValue) => __async(this, null, function* () {
105
124
  if (!newValue) {
106
125
  selectedItems.value = [];
107
126
  return;
108
127
  }
109
- if ((_a = userList.value) == null ? void 0 : _a.length) {
128
+ const userList2 = yield (0, import_useApi.getFinalUserList)();
129
+ if (userList2 == null ? void 0 : userList2.length) {
110
130
  selectedItems.value = newValue.map((id) => {
111
- return userList.value.find((item) => item.id === id);
131
+ return userList2.find((item) => item.id === id);
112
132
  });
113
133
  updateDeptSelectionStatus();
114
134
  }
115
- }, {
135
+ }), {
116
136
  immediate: true
117
137
  });
118
138
  (0, import_vue2.watch)(() => selectedItems.value, () => {
@@ -125,12 +145,23 @@ var stdin_default = (0, import_vue2.defineComponent)({
125
145
  return;
126
146
  const deptUsers = getUsersByDeptId(item.id);
127
147
  const isFullySelected = fullySelectedDepts.value.has(item.id);
148
+ const deduplicateById = (arr) => {
149
+ const seenIds = /* @__PURE__ */ new Set();
150
+ return arr.filter((item2) => {
151
+ if (seenIds.has(item2.id)) {
152
+ return false;
153
+ }
154
+ seenIds.add(item2.id);
155
+ return true;
156
+ });
157
+ };
128
158
  if (isFullySelected) {
129
159
  const userIdsToRemove = new Set(deptUsers.map((user) => user.id));
130
- selectedItems.value = selectedItems.value.filter((selectedItem) => !userIdsToRemove.has(selectedItem.id));
160
+ selectedItems.value = deduplicateById(selectedItems.value.filter((selectedItem) => !userIdsToRemove.has(selectedItem.id)));
131
161
  } else {
132
162
  const currentSelectedIds = new Set(selectedItems.value.map((item2) => item2.id));
133
- const usersToAdd = deptUsers.filter((user) => !currentSelectedIds.has(user.id));
163
+ let usersToAdd = deptUsers.filter((user) => !currentSelectedIds.has(user.id));
164
+ usersToAdd = deduplicateById(usersToAdd);
134
165
  selectedItems.value.push(...usersToAdd);
135
166
  }
136
167
  };
@@ -1,4 +1,5 @@
1
1
  import { type OrgItem, RecentSelection } from './types';
2
+ export declare function getFinalUserList(): Promise<any[]>;
2
3
  export declare const useApi: () => {
3
4
  userList: import("vue").Ref<{
4
5
  [x: string]: any;
@@ -37,6 +37,7 @@ var __async = (__this, __arguments, generator) => {
37
37
  };
38
38
  var stdin_exports = {};
39
39
  __export(stdin_exports, {
40
+ getFinalUserList: () => getFinalUserList,
40
41
  useApi: () => useApi
41
42
  });
42
43
  module.exports = __toCommonJS(stdin_exports);
@@ -56,7 +57,7 @@ const fetchData = (url, cacheKey) => __async(void 0, null, function* () {
56
57
  return res;
57
58
  });
58
59
  const fetchOrgList = (deptId) => __async(void 0, null, function* () {
59
- const url = `https://wflow.cgboiler.com/v1/oa/org/tree/cloud?deptId=${deptId}&type=user`;
60
+ const url = `${window.globalConfig.wFlowApi}/v1/oa/org/tree/cloud?deptId=${deptId}&type=user`;
60
61
  return fetchData(url, deptId || "");
61
62
  });
62
63
  const userList = (0, import_vue.ref)([]);
@@ -87,6 +88,15 @@ function initDeptList() {
87
88
  }
88
89
  initUserList();
89
90
  initDeptList();
91
+ function getFinalUserList() {
92
+ return __async(this, null, function* () {
93
+ var _a;
94
+ if ((_a = userList.value) == null ? void 0 : _a.length) {
95
+ return userList.value;
96
+ }
97
+ return yield (0, import_core.getUserList)();
98
+ });
99
+ }
90
100
  const useApi = () => {
91
101
  const orgList = (0, import_vue.ref)([]);
92
102
  const orgSearchList = (0, import_vue.ref)([]);
@@ -121,11 +131,9 @@ const useApi = () => {
121
131
  orgSearchList.value = [];
122
132
  return;
123
133
  }
124
- const url = `https://wflow.cgboiler.com/v1/oa/org/tree/user/search/cloud?userName=${userName}`;
134
+ const url = `${window.globalConfig.wFlowApi}/v1/oa/org/tree/user/search/cloud?userName=${userName}`;
125
135
  const searchResults = yield fetchData(url);
126
- orgSearchList.value = searchResults.filter(
127
- (item) => item.type !== "user" || item.status !== 5
128
- );
136
+ orgSearchList.value = searchResults.filter((item) => item.type !== "user" || item.status !== 5).filter((item, index, self) => index === self.findIndex((other) => other.id === item.id));
129
137
  }), 300);
130
138
  const RECENT_SELECTED_USERS_KEY = "recent_selected_users_history";
131
139
  const MAX_RECENT_SELECTIONS = 15;
@@ -140,7 +148,7 @@ const useApi = () => {
140
148
  }
141
149
  });
142
150
  const url = decodeURIComponent(
143
- `https://wflow.cgboiler.com/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data?keywords=${name}_${user.userId}&pageNo=1&pageSize=20`
151
+ `${window.globalConfig.wFlowApi}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data?keywords=${name}_${user.userId}&pageNo=1&pageSize=20`
144
152
  );
145
153
  const res = yield fetchData(url);
146
154
  let recentList = [];
@@ -177,10 +185,10 @@ const useApi = () => {
177
185
  data.field5375578403639 = JSON.stringify(list);
178
186
  }
179
187
  if (dataId.value) {
180
- url = `https://wflow.cgboiler.com/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data/${dataId.value}`;
188
+ url = `${window.globalConfig.wFlowApi}/v1/wflow/process/form/wf687dda91e4b027b047d4654c/data/${dataId.value}`;
181
189
  method = "PUT";
182
190
  } else {
183
- url = "https://wflow.cgboiler.com/v1/wflow/process/start/4e441786-65fa-11f0-aef7-ce938f4cd78d";
191
+ url = `${window.globalConfig.wFlowApi}/v1/wflow/process/start/4e441786-65fa-11f0-aef7-ce938f4cd78d`;
184
192
  method = "POST";
185
193
  }
186
194
  const token = user.token;
@@ -283,9 +291,7 @@ const useApi = () => {
283
291
  };
284
292
  const getUsersByDeptId = (deptId) => {
285
293
  const users = [];
286
- const directUsers = userList.value.filter(
287
- (user) => user.deptId === deptId && user.status !== 5
288
- );
294
+ const directUsers = userList.value.filter((user) => user.deptId === deptId && user.status !== 5);
289
295
  users.push(...directUsers);
290
296
  const childDepts = deptList.value.filter((dept) => dept.parentId === deptId);
291
297
  childDepts.forEach((childDept) => {
@@ -46,7 +46,7 @@ const useApi = () => {
46
46
  const projectList = (0, import_vue.ref)([]);
47
47
  const getProjectList = () => __async(void 0, null, function* () {
48
48
  const res = yield (0, import_core.useFetch)(
49
- "https://vx.cgboiler.com/v1/note/projects",
49
+ `${window.globalConfig.vxApi}/v1/note/projects`,
50
50
  {
51
51
  method: "GET"
52
52
  }
@@ -22,3 +22,8 @@ declare module 'vue' {
22
22
  onClickCapture?: EventHandler;
23
23
  }
24
24
  }
25
+ declare global {
26
+ interface Window {
27
+ globalConfig: any;
28
+ }
29
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cgboiler/biz-mobile",
3
- "version": "1.18.12",
3
+ "version": "1.18.14",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -48,11 +48,12 @@
48
48
  "@tiptap/pm": "3.0.0-beta.5",
49
49
  "@tiptap/starter-kit": "3.0.0-beta.5",
50
50
  "@tiptap/vue-3": "3.0.0-beta.5",
51
+ "mermaid": "^11.10.1",
51
52
  "lodash-es": "^4.17.21",
52
53
  "vant": "^4.9.19",
53
- "@cgboiler/shared": "1.1.1",
54
- "@cgboiler/core": "1.2.8",
55
- "@cgboiler/biz-basic": "1.0.12"
54
+ "@cgboiler/core": "1.2.9",
55
+ "@cgboiler/biz-basic": "1.0.16",
56
+ "@cgboiler/shared": "1.1.2"
56
57
  },
57
58
  "scripts": {
58
59
  "dev": "cg-cli dev",