@hkyhy/marsun-components-core 0.1.138 → 0.1.140

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 (30) hide show
  1. package/README.md +1 -0
  2. package/dist/components/Iam/client.d.ts +3 -0
  3. package/dist/components/Iam/index.d.ts +1 -1
  4. package/dist/components/Iam/pages/IamUsersPage.d.ts +15 -1
  5. package/dist/components/Iam/pages/IamUsersPage.js +171 -162
  6. package/dist/components/Iam/pages/IamUsersPage.js.map +1 -1
  7. package/dist/components/Table/Table.d.ts +2 -2
  8. package/dist/components/Table/Table.js +75 -72
  9. package/dist/components/Table/Table.js.map +1 -1
  10. package/dist/components/Table/columnConfigUtils.d.ts +8 -0
  11. package/dist/components/Table/columnConfigUtils.js +130 -113
  12. package/dist/components/Table/columnConfigUtils.js.map +1 -1
  13. package/dist/components/Table/index.d.ts +1 -1
  14. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionForm.d.ts +2 -0
  15. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionForm.js +97 -83
  16. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionForm.js.map +1 -1
  17. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionModal.d.ts +2 -0
  18. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionModal.js +111 -106
  19. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionModal.js.map +1 -1
  20. package/dist/components/Tools/ActionTracking/CreateAction/types.d.ts +4 -0
  21. package/dist/components/Tools/Inbox/InboxBell/InboxBell.js +168 -155
  22. package/dist/components/Tools/Inbox/InboxBell/InboxBell.js.map +1 -1
  23. package/dist/components/Tools/Inbox/InboxBell/inboxItemActions.js +60 -46
  24. package/dist/components/Tools/Inbox/InboxBell/inboxItemActions.js.map +1 -1
  25. package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js +68 -60
  26. package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js.map +1 -1
  27. package/dist/index.js +478 -477
  28. package/dist/marsun-components-core.css +1 -1
  29. package/dist/styles/global.css +1 -1
  30. package/package.json +1 -1
@@ -1,16 +1,16 @@
1
- import { jsx as a, jsxs as w } from "react/jsx-runtime";
2
- import { useState as u, useRef as ye, useMemo as P, useCallback as he, useEffect as F } from "react";
1
+ import { jsx as a, jsxs as X } from "react/jsx-runtime";
2
+ import { useState as u, useRef as ye, useMemo as S, useCallback as pe, useEffect as F } from "react";
3
3
  import Se from "../../../Form/FormDataSync.js";
4
4
  import { message as b } from "antd";
5
- import J from "classnames";
6
- import X from "./PersonRoleCascaderField.js";
7
- import { SetFormFields as Pe } from "./SetFormFields.js";
8
- import S from "./CreateActionForm.module.scss.js";
9
- import { createPagedSuperSelectApi as be, pagedSuperSelectGetSearchProps as pe, pagedSuperSelectPagination as ve } from "../../../Form/createPagedSuperSelectApi.js";
10
- import { Input as I, DatePicker as Fe } from "../../../FormInfo/fields.js";
11
- import { SuperSelect as p } from "../../../Form/SuperSelect.js";
12
- import Ie from "../../../FormInfo/FormInfo.js";
13
- import { useFormApi as Ce } from "@kne/react-form";
5
+ import w from "classnames";
6
+ import J from "./PersonRoleCascaderField.js";
7
+ import { SetFormFields as be } from "./SetFormFields.js";
8
+ import p from "./CreateActionForm.module.scss.js";
9
+ import { createPagedSuperSelectApi as Pe, pagedSuperSelectGetSearchProps as ve, pagedSuperSelectPagination as Fe } from "../../../Form/createPagedSuperSelectApi.js";
10
+ import { Input as I, TextArea as Ie, DatePicker as Ce } from "../../../FormInfo/fields.js";
11
+ import { SuperSelect as P } from "../../../Form/SuperSelect.js";
12
+ import Ue from "../../../FormInfo/FormInfo.js";
13
+ import { useFormApi as Ve } from "@kne/react-form";
14
14
  const C = 20, U = 15e3;
15
15
  function V(e, o) {
16
16
  return Promise.race([
@@ -23,46 +23,47 @@ function V(e, o) {
23
23
  })
24
24
  ]);
25
25
  }
26
- function Ue(e) {
26
+ function Ee(e) {
27
27
  return e == null || e === "" ? "" : Array.isArray(e) ? String(e[0] ?? "").trim() : typeof e == "object" ? String(e.value ?? "").trim() : String(e).trim();
28
28
  }
29
- function Ke(e, o) {
30
- return o ? /* @__PURE__ */ w("span", { className: S["assignee-option"], children: [
31
- /* @__PURE__ */ a("span", { className: S["assignee-option-name"], children: e }),
32
- /* @__PURE__ */ a("span", { className: S["assignee-option-org"], children: o })
29
+ function qe(e, o) {
30
+ return o ? /* @__PURE__ */ X("span", { className: p["assignee-option"], children: [
31
+ /* @__PURE__ */ a("span", { className: p["assignee-option-name"], children: e }),
32
+ /* @__PURE__ */ a("span", { className: p["assignee-option-org"], children: o })
33
33
  ] }) : e;
34
34
  }
35
- const Qe = ({
35
+ const ze = ({
36
36
  scopeLock: e,
37
37
  varietyLabel: o,
38
38
  lockedContext: l,
39
39
  scopeMode: O = "form",
40
40
  titlePlaceholder: R,
41
- metricPlaceholder: k,
41
+ descriptionPlaceholder: k,
42
+ metricPlaceholder: L,
42
43
  noneScopeHint: E,
43
- dimensionOptions: L,
44
+ dimensionOptions: ee,
44
45
  loaders: n,
45
- emptyAssigneeHint: ee = "暂无执行人",
46
- emptyAllocatorHint: te = "暂无分配人",
47
- allocatorPlaceholder: re = "先选角色,再选分配人",
48
- assigneePlaceholder: ae = "先选角色,再选执行人",
49
- allocatorDisabled: le = !0,
50
- defaultAssigneeUserId: ne = "",
46
+ emptyAssigneeHint: te = "暂无执行人",
47
+ emptyAllocatorHint: re = "暂无分配人",
48
+ allocatorPlaceholder: ae = "先选角色,再选分配人",
49
+ assigneePlaceholder: le = "先选角色,再选执行人",
50
+ allocatorDisabled: ne = !0,
51
+ defaultAssigneeUserId: ie = "",
51
52
  onAssigneeOptionsReady: s,
52
- onAllocatorOptionsReady: f
53
+ onAllocatorOptionsReady: m
53
54
  }) => {
54
55
  var q, z, H, W;
55
- const D = Ce(), [ie, M] = u([]), [oe, T] = u([]), [m, N] = u([]), [_, A] = u(!0), [j, x] = u(!1), [B, ue] = u(""), [Y, G] = u(() => {
56
+ const T = Ve(), [oe, D] = u([]), [ue, M] = u([]), [f, N] = u([]), [_, x] = u(!0), [A, j] = u(!1), [B, se] = u(""), [Y, G] = u(() => {
56
57
  var t;
57
58
  return ((t = e == null ? void 0 : e.factory) == null ? void 0 : t.trim()) || "";
58
- }), d = ye(((q = e == null ? void 0 : e.factory) == null ? void 0 : q.trim()) || ""), c = !!(l && l.length > 0), g = (c ? "locked" : O === "none" ? "none" : "form") === "none", $ = !!((z = e == null ? void 0 : e.factory) != null && z.trim()), y = !!((H = e == null ? void 0 : e.variety) != null && H.trim()), se = !!((W = e == null ? void 0 : e.metric) != null && W.trim()), h = typeof n.loadVarietyPage == "function", K = !!Y || y, fe = P(() => {
59
+ }), d = ye(((q = e == null ? void 0 : e.factory) == null ? void 0 : q.trim()) || ""), c = !!(l && l.length > 0), g = (c ? "locked" : O === "none" ? "none" : "form") === "none", $ = !!((z = e == null ? void 0 : e.factory) != null && z.trim()), h = !!((H = e == null ? void 0 : e.variety) != null && H.trim()), me = !!((W = e == null ? void 0 : e.metric) != null && W.trim()), y = typeof n.loadVarietyPage == "function", K = !!Y || h, fe = S(() => {
59
60
  var r;
60
61
  const t = (r = e == null ? void 0 : e.factory) == null ? void 0 : r.trim();
61
- return !t || m.some((i) => i.value === t) ? m : [{ value: t, label: t }, ...m];
62
- }, [m, e == null ? void 0 : e.factory]), Q = P(() => {
63
- if (!h || !n.loadVarietyPage) return;
62
+ return !t || f.some((i) => i.value === t) ? f : [{ value: t, label: t }, ...f];
63
+ }, [f, e == null ? void 0 : e.factory]), Q = S(() => {
64
+ if (!y || !n.loadVarietyPage) return;
64
65
  const t = n.loadVarietyPage;
65
- return be({
66
+ return Pe({
66
67
  pageSize: C,
67
68
  loadPage: (r) => t({
68
69
  ...r,
@@ -70,23 +71,23 @@ const Qe = ({
70
71
  }),
71
72
  onError: () => b.error("品种列表加载失败")
72
73
  });
73
- }, [h, n.loadVarietyPage]), me = P(
74
- () => pe(C),
75
- []
76
- ), de = P(
74
+ }, [y, n.loadVarietyPage]), de = S(
77
75
  () => ve(C),
78
76
  []
79
- ), ce = he(
77
+ ), ce = S(
78
+ () => Fe(C),
79
+ []
80
+ ), ge = pe(
80
81
  (t) => {
81
82
  if (c || g) return;
82
- const r = Ue(t.factory);
83
+ const r = Ee(t.factory);
83
84
  if (r === d.current) return;
84
85
  const i = d.current;
85
- d.current = r, G(r), i && r !== i && h && !y && queueMicrotask(() => {
86
- D.openApi.setFieldValue({ name: "variety" }, "", { runValidate: !1 });
86
+ d.current = r, G(r), i && r !== i && y && !h && queueMicrotask(() => {
87
+ T.openApi.setFieldValue({ name: "variety" }, "", { runValidate: !1 });
87
88
  });
88
89
  },
89
- [D.openApi, h, y, c, g]
90
+ [T.openApi, y, h, c, g]
90
91
  );
91
92
  F(() => {
92
93
  var r;
@@ -94,34 +95,34 @@ const Qe = ({
94
95
  t && (d.current = t, G(t));
95
96
  }, [e == null ? void 0 : e.factory]), F(() => {
96
97
  let t = !1;
97
- return A(!0), Promise.all([
98
+ return x(!0), Promise.all([
98
99
  V(n.loadAssigneeCatalog(), U),
99
100
  V(n.loadAllocatorCatalog(), U)
100
101
  ]).then(([r, i]) => {
101
102
  if (!t)
102
- if (r.status === "fulfilled" ? (M(r.value.cascadeOptions), s == null || s(r.value.options)) : (b.error("执行人列表加载失败"), M([]), s == null || s([])), i.status === "fulfilled") {
103
- T(i.value.cascadeOptions), f == null || f(i.value.options);
103
+ if (r.status === "fulfilled" ? (D(r.value.cascadeOptions), s == null || s(r.value.options)) : (b.error("执行人列表加载失败"), D([]), s == null || s([])), i.status === "fulfilled") {
104
+ M(i.value.cascadeOptions), m == null || m(i.value.options);
104
105
  const Z = n.pickDefaultAllocatorUserId;
105
- ue(Z ? Z(i.value.options) : "");
106
+ se(Z ? Z(i.value.options) : "");
106
107
  } else
107
- b.error("分配人列表加载失败"), T([]), f == null || f([]);
108
+ b.error("分配人列表加载失败"), M([]), m == null || m([]);
108
109
  }).finally(() => {
109
- t || A(!1);
110
+ t || x(!1);
110
111
  }), () => {
111
112
  t = !0;
112
113
  };
113
114
  }, []), F(() => {
114
115
  if (c || g || !n.loadFactoryOptions) return;
115
116
  let t = !1;
116
- return x(!0), V(n.loadFactoryOptions(), U).then((r) => {
117
+ return j(!0), V(n.loadFactoryOptions(), U).then((r) => {
117
118
  t || (r.status === "fulfilled" ? N(r.value) : (b.error("分厂列表加载失败"), N([])));
118
119
  }).finally(() => {
119
- t || x(!1);
120
+ t || j(!1);
120
121
  }), () => {
121
122
  t = !0;
122
123
  };
123
124
  }, []);
124
- const ge = c ? (l || []).map((t, r) => /* @__PURE__ */ a(
125
+ const he = c ? (l || []).map((t, r) => /* @__PURE__ */ a(
125
126
  I,
126
127
  {
127
128
  name: `lockedContext_${r}`,
@@ -131,35 +132,35 @@ const Qe = ({
131
132
  `locked-${r}-${t.label}`
132
133
  )) : g ? [] : [
133
134
  /* @__PURE__ */ a(
134
- p,
135
+ P,
135
136
  {
136
137
  name: "factory",
137
138
  label: "分厂",
138
139
  single: !0,
139
140
  options: fe,
140
- placeholder: j ? "加载分厂…" : "选择分厂",
141
- disabled: j || $,
141
+ placeholder: A ? "加载分厂…" : "选择分厂",
142
+ disabled: A || $,
142
143
  allowClear: !$
143
144
  },
144
145
  "factory"
145
146
  ),
146
- h && Q ? /* @__PURE__ */ a(
147
- p,
147
+ y && Q ? /* @__PURE__ */ a(
148
+ P,
148
149
  {
149
150
  name: "variety",
150
151
  label: o || "品种",
151
152
  single: !0,
152
153
  api: Q,
153
- getSearchProps: me,
154
- pagination: de,
154
+ getSearchProps: de,
155
+ pagination: ce,
155
156
  placeholder: K ? "选择品种" : "请先选择分厂",
156
- disabled: y || !K,
157
- allowClear: !y,
157
+ disabled: h || !K,
158
+ allowClear: !h,
158
159
  searchPlaceholder: "搜索品种"
159
160
  },
160
161
  `variety-${Y || "none"}`
161
162
  ) : /* @__PURE__ */ a(
162
- p,
163
+ P,
163
164
  {
164
165
  name: "variety",
165
166
  label: o || "品种",
@@ -175,17 +176,17 @@ const Qe = ({
175
176
  {
176
177
  name: "metric",
177
178
  label: "关联指标",
178
- placeholder: k || "可选",
179
+ placeholder: L || "可选",
179
180
  maxLength: 40,
180
- disabled: se
181
+ disabled: me
181
182
  },
182
183
  "metric"
183
184
  )
184
- ], v = String(ne || "").trim();
185
- return /* @__PURE__ */ w("div", { className: J("create-action-form", S["create-action-form"]), children: [
186
- /* @__PURE__ */ a(Se, { onChange: ce }),
185
+ ], v = String(ie || "").trim();
186
+ return /* @__PURE__ */ X("div", { className: w("create-action-form", p["create-action-form"]), children: [
187
+ /* @__PURE__ */ a(Se, { onChange: ge }),
187
188
  /* @__PURE__ */ a(
188
- Pe,
189
+ be,
189
190
  {
190
191
  patch: {
191
192
  allocatorUserId: B,
@@ -194,7 +195,7 @@ const Qe = ({
194
195
  }
195
196
  ),
196
197
  /* @__PURE__ */ a(
197
- Ie,
198
+ Ue,
198
199
  {
199
200
  column: 1,
200
201
  list: [
@@ -210,46 +211,59 @@ const Qe = ({
210
211
  "title"
211
212
  ),
212
213
  /* @__PURE__ */ a(
213
- p,
214
+ Ie,
215
+ {
216
+ name: "description",
217
+ label: "任务描述",
218
+ labelTips: "可选",
219
+ rows: 5,
220
+ block: !0,
221
+ maxLength: 2e3,
222
+ placeholder: k || "说明目前情况、问题与需改进点,便于执行人理解背景"
223
+ },
224
+ "description"
225
+ ),
226
+ /* @__PURE__ */ a(
227
+ P,
214
228
  {
215
229
  name: "dimension",
216
230
  label: "任务类型",
217
231
  rule: "REQ",
218
232
  single: !0,
219
- options: L,
233
+ options: ee,
220
234
  placeholder: "选择任务类型"
221
235
  },
222
236
  "dimension"
223
237
  ),
224
238
  /* @__PURE__ */ a(
225
- X,
239
+ J,
226
240
  {
227
241
  name: "allocatorUserId",
228
242
  label: "分配人",
229
- cascadeOptions: oe,
243
+ cascadeOptions: ue,
230
244
  loading: _,
231
- disabled: le,
232
- emptyHint: te,
233
- placeholder: re,
245
+ disabled: ne,
246
+ emptyHint: re,
247
+ placeholder: ae,
234
248
  defaultUserId: B
235
249
  },
236
250
  "allocatorUserId"
237
251
  ),
238
252
  /* @__PURE__ */ a(
239
- X,
253
+ J,
240
254
  {
241
255
  name: "assigneeUserId",
242
256
  label: "执行人",
243
- cascadeOptions: ie,
257
+ cascadeOptions: oe,
244
258
  loading: _,
245
- emptyHint: ee,
246
- placeholder: ae,
259
+ emptyHint: te,
260
+ placeholder: le,
247
261
  defaultUserId: v
248
262
  },
249
263
  "assigneeUserId"
250
264
  ),
251
265
  /* @__PURE__ */ a(
252
- Fe,
266
+ Ce,
253
267
  {
254
268
  name: "dueDate",
255
269
  label: "截止日期",
@@ -260,16 +274,16 @@ const Qe = ({
260
274
  },
261
275
  "dueDate"
262
276
  ),
263
- ...ge
277
+ ...he
264
278
  ]
265
279
  }
266
280
  ),
267
- g && E ? /* @__PURE__ */ a("p", { className: J("create-action-none-hint", S["create-action-none-hint"]), children: E }) : null
281
+ g && E ? /* @__PURE__ */ a("p", { className: w("create-action-none-hint", p["create-action-none-hint"]), children: E }) : null
268
282
  ] });
269
283
  };
270
284
  export {
271
285
  C as CREATE_ACTION_VARIETY_PAGE_SIZE,
272
- Qe as default,
273
- Ke as renderPersonOptionLabel
286
+ ze as default,
287
+ qe as renderPersonOptionLabel
274
288
  };
275
289
  //# sourceMappingURL=CreateActionForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateActionForm.js","sources":["../../../../../src/components/Tools/ActionTracking/CreateAction/CreateActionForm.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from 'react';\nimport {\n DatePicker,\n FormInfo,\n Input,\n SuperSelect,\n createPagedSuperSelectApi,\n pagedSuperSelectGetSearchProps,\n pagedSuperSelectPagination,\n} from '../../../FormInfo';\nimport FormDataSync from '../../../Form/FormDataSync';\nimport { useFormApi } from '../../../Form';\nimport { message } from 'antd';\nimport classNames from 'classnames';\nimport PersonRoleCascaderField from './PersonRoleCascaderField';\nimport { SetFormFields } from './SetFormFields';\nimport type {\n ActionPersonCascadeOption,\n ActionPersonOption,\n CreateActionDimensionOption,\n CreateActionLoaders,\n CreateActionScopeLock,\n CreateActionScopeMode,\n CreateActionSelectOption,\n LockedContextField,\n} from './types';\nimport styles from './CreateActionForm.module.scss';\n\n/** 建单品种下拉页大小(服务端分页) */\nexport const CREATE_ACTION_VARIETY_PAGE_SIZE = 20;\n\nconst CATALOG_LOAD_TIMEOUT_MS = 15_000;\n\nfunction settleWithTimeout<T>(promise: Promise<T>, ms: number): Promise<PromiseSettledResult<T>> {\n return Promise.race([\n promise.then(\n (value) => ({ status: 'fulfilled' as const, value }),\n (reason) => ({ status: 'rejected' as const, reason }),\n ),\n new Promise<PromiseSettledResult<T>>((resolve) => {\n setTimeout(() => resolve({ status: 'rejected', reason: new Error('timeout') }), ms);\n }),\n ]);\n}\n\nfunction asFactoryValue(raw: unknown): string {\n if (raw == null || raw === '') return '';\n if (Array.isArray(raw)) return String(raw[0] ?? '').trim();\n if (typeof raw === 'object') {\n const o = raw as { value?: unknown };\n return String(o.value ?? '').trim();\n }\n return String(raw).trim();\n}\n\nexport type CreateActionFormProps = {\n scopeLock?: CreateActionScopeLock;\n varietyLabel?: string;\n lockedContext?: LockedContextField[];\n /**\n * 业务上下文字段模式。有 lockedContext 时强制 locked。\n * 默认 form(S3);EAM 主动新建传 none。\n */\n scopeMode?: CreateActionScopeMode;\n /** F4:任务标题 placeholder(App 注入;禁写死业务文案) */\n titlePlaceholder?: string;\n /** F4:关联指标 placeholder */\n metricPlaceholder?: string;\n /** scopeMode=none 时展示在截止日期下的短提示(App 注入) */\n noneScopeHint?: string;\n dimensionOptions: CreateActionDimensionOption[];\n loaders: CreateActionLoaders;\n emptyAssigneeHint?: string;\n emptyAllocatorHint?: string;\n allocatorPlaceholder?: string;\n assigneePlaceholder?: string;\n /**\n * 分配人只读。新建/编辑均禁用改派(默认 true);\n * 值由 pickDefaultAllocatorUserId / 表单初值写入。\n */\n allocatorDisabled?: boolean;\n /** 编辑回填:执行人 userId(级联选项就绪后写入) */\n defaultAssigneeUserId?: string;\n onAssigneeOptionsReady?: (options: ActionPersonOption[]) => void;\n onAllocatorOptionsReady?: (options: ActionPersonOption[]) => void;\n};\n\nexport function renderPersonOptionLabel(name: string, org: string): ReactNode {\n if (!org) return name;\n return (\n <span className={styles['assignee-option']}>\n <span className={styles['assignee-option-name']}>{name}</span>\n <span className={styles['assignee-option-org']}>{org}</span>\n </span>\n );\n}\n\ntype OpenApiLike = {\n setFieldValue: (\n token: { name: string },\n value: unknown,\n options?: { runValidate?: boolean },\n ) => void;\n};\n\n/** 新建跟踪任务 / 下发任务字段(FormModal + FormInfo);数据经 loaders 注入 */\nconst CreateActionForm: React.FC<CreateActionFormProps> = ({\n scopeLock,\n varietyLabel,\n lockedContext,\n scopeMode: scopeModeProp = 'form',\n titlePlaceholder,\n metricPlaceholder,\n noneScopeHint,\n dimensionOptions,\n loaders,\n emptyAssigneeHint = '暂无执行人',\n emptyAllocatorHint = '暂无分配人',\n allocatorPlaceholder = '先选角色,再选分配人',\n assigneePlaceholder = '先选角色,再选执行人',\n allocatorDisabled = true,\n defaultAssigneeUserId = '',\n onAssigneeOptionsReady,\n onAllocatorOptionsReady,\n}) => {\n const formApi = useFormApi() as { openApi: OpenApiLike };\n const [assigneeCascade, setAssigneeCascade] = useState<ActionPersonCascadeOption[]>([]);\n const [allocatorCascade, setAllocatorCascade] = useState<ActionPersonCascadeOption[]>([]);\n const [factoryOptions, setFactoryOptions] = useState<CreateActionSelectOption[]>([]);\n const [personLoading, setPersonLoading] = useState(true);\n const [factoryLoading, setFactoryLoading] = useState(false);\n const [defaultAllocatorUserId, setDefaultAllocatorUserId] = useState('');\n const [factoryKey, setFactoryKey] = useState(() => scopeLock?.factory?.trim() || '');\n const factoryRef = useRef(scopeLock?.factory?.trim() || '');\n\n const useLockedContext = Boolean(lockedContext && lockedContext.length > 0);\n const resolvedScopeMode: CreateActionScopeMode = useLockedContext\n ? 'locked'\n : scopeModeProp === 'none'\n ? 'none'\n : 'form';\n const useNoneScope = resolvedScopeMode === 'none';\n const lockFactory = Boolean(scopeLock?.factory?.trim());\n const lockVariety = Boolean(scopeLock?.variety?.trim());\n const lockMetric = Boolean(scopeLock?.metric?.trim());\n const hasVarietyPage = typeof loaders.loadVarietyPage === 'function';\n const canLoadVariety = Boolean(factoryKey) || lockVariety;\n\n const factorySelectOptions = useMemo(() => {\n const locked = scopeLock?.factory?.trim();\n if (!locked) return factoryOptions;\n if (factoryOptions.some((o) => o.value === locked)) return factoryOptions;\n return [{ value: locked, label: locked }, ...factoryOptions];\n }, [factoryOptions, scopeLock?.factory]);\n\n const varietySelectApi = useMemo(() => {\n if (!hasVarietyPage || !loaders.loadVarietyPage) return undefined;\n const loadPage = loaders.loadVarietyPage;\n return createPagedSuperSelectApi({\n pageSize: CREATE_ACTION_VARIETY_PAGE_SIZE,\n loadPage: (query) =>\n loadPage({\n ...query,\n factory: factoryRef.current,\n }),\n onError: () => message.error('品种列表加载失败'),\n });\n }, [hasVarietyPage, loaders.loadVarietyPage]);\n\n const varietyGetSearchProps = useMemo(\n () => pagedSuperSelectGetSearchProps(CREATE_ACTION_VARIETY_PAGE_SIZE),\n [],\n );\n\n const varietyPagination = useMemo(\n () => pagedSuperSelectPagination(CREATE_ACTION_VARIETY_PAGE_SIZE),\n [],\n );\n\n const handleFormSync = useCallback(\n (data: Record<string, unknown>) => {\n if (useLockedContext || useNoneScope) return;\n const next = asFactoryValue(data.factory);\n if (next === factoryRef.current) return;\n const prev = factoryRef.current;\n factoryRef.current = next;\n setFactoryKey(next);\n if (prev && next !== prev && hasVarietyPage && !lockVariety) {\n queueMicrotask(() => {\n formApi.openApi.setFieldValue({ name: 'variety' }, '', { runValidate: false });\n });\n }\n },\n [formApi.openApi, hasVarietyPage, lockVariety, useLockedContext, useNoneScope],\n );\n\n useEffect(() => {\n const locked = scopeLock?.factory?.trim() || '';\n if (!locked) return;\n factoryRef.current = locked;\n setFactoryKey(locked);\n }, [scopeLock?.factory]);\n\n /** 人员目录:独立加载 + 超时,避免拖死分厂 */\n useEffect(() => {\n let cancelled = false;\n setPersonLoading(true);\n Promise.all([\n settleWithTimeout(loaders.loadAssigneeCatalog(), CATALOG_LOAD_TIMEOUT_MS),\n settleWithTimeout(loaders.loadAllocatorCatalog(), CATALOG_LOAD_TIMEOUT_MS),\n ])\n .then(([usersRes, allocRes]) => {\n if (cancelled) return;\n if (usersRes.status === 'fulfilled') {\n setAssigneeCascade(usersRes.value.cascadeOptions);\n onAssigneeOptionsReady?.(usersRes.value.options);\n } else {\n message.error('执行人列表加载失败');\n setAssigneeCascade([]);\n onAssigneeOptionsReady?.([]);\n }\n if (allocRes.status === 'fulfilled') {\n setAllocatorCascade(allocRes.value.cascadeOptions);\n onAllocatorOptionsReady?.(allocRes.value.options);\n const pick = loaders.pickDefaultAllocatorUserId;\n setDefaultAllocatorUserId(pick ? pick(allocRes.value.options) : '');\n } else {\n message.error('分配人列表加载失败');\n setAllocatorCascade([]);\n onAllocatorOptionsReady?.([]);\n }\n })\n .finally(() => {\n if (!cancelled) setPersonLoading(false);\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only load\n }, []);\n\n /** 分厂:与人员并行、互不阻塞(对齐 EAM CycleForm 静态 options) */\n useEffect(() => {\n if (useLockedContext || useNoneScope || !loaders.loadFactoryOptions) return;\n let cancelled = false;\n setFactoryLoading(true);\n settleWithTimeout(loaders.loadFactoryOptions(), CATALOG_LOAD_TIMEOUT_MS)\n .then((factoriesRes) => {\n if (cancelled) return;\n if (factoriesRes.status === 'fulfilled') {\n setFactoryOptions(factoriesRes.value);\n } else {\n message.error('分厂列表加载失败');\n setFactoryOptions([]);\n }\n })\n .finally(() => {\n if (!cancelled) setFactoryLoading(false);\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only load\n }, []);\n\n const scopeFields: ReactNode[] = useLockedContext\n ? (lockedContext || []).map((field, idx) => (\n <Input\n key={`locked-${idx}-${field.label}`}\n name={`lockedContext_${idx}`}\n label={field.label}\n disabled\n />\n ))\n : useNoneScope\n ? []\n : [\n <SuperSelect\n key=\"factory\"\n name=\"factory\"\n label=\"分厂\"\n single\n options={factorySelectOptions}\n placeholder={factoryLoading ? '加载分厂…' : '选择分厂'}\n disabled={factoryLoading || lockFactory}\n allowClear={!lockFactory}\n />,\n hasVarietyPage && varietySelectApi ? (\n <SuperSelect\n key={`variety-${factoryKey || 'none'}`}\n name=\"variety\"\n label={varietyLabel || '品种'}\n single\n api={varietySelectApi}\n getSearchProps={varietyGetSearchProps}\n pagination={varietyPagination}\n placeholder={canLoadVariety ? '选择品种' : '请先选择分厂'}\n disabled={lockVariety || !canLoadVariety}\n allowClear={!lockVariety}\n searchPlaceholder=\"搜索品种\"\n />\n ) : (\n <SuperSelect\n key=\"variety\"\n name=\"variety\"\n label={varietyLabel || '品种'}\n single\n options={[]}\n placeholder=\"App 未注入 loadVarietyPage\"\n disabled\n />\n ),\n <Input\n key=\"metric\"\n name=\"metric\"\n label=\"关联指标\"\n placeholder={metricPlaceholder || '可选'}\n maxLength={40}\n disabled={lockMetric}\n />,\n ];\n\n const assigneeDefault = String(defaultAssigneeUserId || '').trim();\n\n return (\n <div className={classNames('create-action-form', styles['create-action-form'])}>\n <FormDataSync onChange={handleFormSync} />\n <SetFormFields\n patch={{\n allocatorUserId: defaultAllocatorUserId,\n ...(assigneeDefault ? { assigneeUserId: assigneeDefault } : {}),\n }}\n />\n <FormInfo\n column={1}\n list={[\n <Input\n key=\"title\"\n name=\"title\"\n label=\"任务标题\"\n rule=\"REQ\"\n placeholder={titlePlaceholder || '请输入任务标题'}\n maxLength={120}\n />,\n <SuperSelect\n key=\"dimension\"\n name=\"dimension\"\n label=\"任务类型\"\n rule=\"REQ\"\n single\n options={dimensionOptions}\n placeholder=\"选择任务类型\"\n />,\n <PersonRoleCascaderField\n key=\"allocatorUserId\"\n name=\"allocatorUserId\"\n label=\"分配人\"\n cascadeOptions={allocatorCascade}\n loading={personLoading}\n disabled={allocatorDisabled}\n emptyHint={emptyAllocatorHint}\n placeholder={allocatorPlaceholder}\n defaultUserId={defaultAllocatorUserId}\n />,\n <PersonRoleCascaderField\n key=\"assigneeUserId\"\n name=\"assigneeUserId\"\n label=\"执行人\"\n cascadeOptions={assigneeCascade}\n loading={personLoading}\n emptyHint={emptyAssigneeHint}\n placeholder={assigneePlaceholder}\n defaultUserId={assigneeDefault}\n />,\n <DatePicker\n key=\"dueDate\"\n name=\"dueDate\"\n label=\"截止日期\"\n labelTips=\"可选\"\n format=\"YYYY-MM-DD\"\n placeholder=\"选择截止日期\"\n allowClear\n />,\n ...scopeFields,\n ]}\n />\n {useNoneScope && noneScopeHint ? (\n <p className={classNames('create-action-none-hint', styles['create-action-none-hint'])}>\n {noneScopeHint}\n </p>\n ) : null}\n </div>\n );\n};\n\nexport default CreateActionForm;\n"],"names":["CREATE_ACTION_VARIETY_PAGE_SIZE","CATALOG_LOAD_TIMEOUT_MS","settleWithTimeout","promise","ms","value","reason","resolve","asFactoryValue","raw","renderPersonOptionLabel","name","org","jsxs","styles","jsx","CreateActionForm","scopeLock","varietyLabel","lockedContext","scopeModeProp","titlePlaceholder","metricPlaceholder","noneScopeHint","dimensionOptions","loaders","emptyAssigneeHint","emptyAllocatorHint","allocatorPlaceholder","assigneePlaceholder","allocatorDisabled","defaultAssigneeUserId","onAssigneeOptionsReady","onAllocatorOptionsReady","formApi","useFormApi","assigneeCascade","setAssigneeCascade","useState","allocatorCascade","setAllocatorCascade","factoryOptions","setFactoryOptions","personLoading","setPersonLoading","factoryLoading","setFactoryLoading","defaultAllocatorUserId","setDefaultAllocatorUserId","factoryKey","setFactoryKey","_a","factoryRef","useRef","useLockedContext","useNoneScope","lockFactory","_b","lockVariety","_c","lockMetric","_d","hasVarietyPage","canLoadVariety","factorySelectOptions","useMemo","locked","o","varietySelectApi","loadPage","createPagedSuperSelectApi","query","message","varietyGetSearchProps","pagedSuperSelectGetSearchProps","varietyPagination","pagedSuperSelectPagination","handleFormSync","useCallback","data","next","prev","useEffect","cancelled","usersRes","allocRes","pick","factoriesRes","scopeFields","field","idx","Input","SuperSelect","assigneeDefault","classNames","FormDataSync","SetFormFields","FormInfo","PersonRoleCascaderField","DatePicker"],"mappings":"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"}
1
+ {"version":3,"file":"CreateActionForm.js","sources":["../../../../../src/components/Tools/ActionTracking/CreateAction/CreateActionForm.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from 'react';\nimport {\n DatePicker,\n FormInfo,\n Input,\n SuperSelect,\n TextArea,\n createPagedSuperSelectApi,\n pagedSuperSelectGetSearchProps,\n pagedSuperSelectPagination,\n} from '../../../FormInfo';\nimport FormDataSync from '../../../Form/FormDataSync';\nimport { useFormApi } from '../../../Form';\nimport { message } from 'antd';\nimport classNames from 'classnames';\nimport PersonRoleCascaderField from './PersonRoleCascaderField';\nimport { SetFormFields } from './SetFormFields';\nimport type {\n ActionPersonCascadeOption,\n ActionPersonOption,\n CreateActionDimensionOption,\n CreateActionLoaders,\n CreateActionScopeLock,\n CreateActionScopeMode,\n CreateActionSelectOption,\n LockedContextField,\n} from './types';\nimport styles from './CreateActionForm.module.scss';\n\n/** 建单品种下拉页大小(服务端分页) */\nexport const CREATE_ACTION_VARIETY_PAGE_SIZE = 20;\n\nconst CATALOG_LOAD_TIMEOUT_MS = 15_000;\n\nfunction settleWithTimeout<T>(promise: Promise<T>, ms: number): Promise<PromiseSettledResult<T>> {\n return Promise.race([\n promise.then(\n (value) => ({ status: 'fulfilled' as const, value }),\n (reason) => ({ status: 'rejected' as const, reason }),\n ),\n new Promise<PromiseSettledResult<T>>((resolve) => {\n setTimeout(() => resolve({ status: 'rejected', reason: new Error('timeout') }), ms);\n }),\n ]);\n}\n\nfunction asFactoryValue(raw: unknown): string {\n if (raw == null || raw === '') return '';\n if (Array.isArray(raw)) return String(raw[0] ?? '').trim();\n if (typeof raw === 'object') {\n const o = raw as { value?: unknown };\n return String(o.value ?? '').trim();\n }\n return String(raw).trim();\n}\n\nexport type CreateActionFormProps = {\n scopeLock?: CreateActionScopeLock;\n varietyLabel?: string;\n lockedContext?: LockedContextField[];\n /**\n * 业务上下文字段模式。有 lockedContext 时强制 locked。\n * 默认 form(S3);EAM 主动新建传 none。\n */\n scopeMode?: CreateActionScopeMode;\n /** F4:任务标题 placeholder(App 注入;禁写死业务文案) */\n titlePlaceholder?: string;\n /** F4:任务描述 placeholder(App 注入) */\n descriptionPlaceholder?: string;\n /** F4:关联指标 placeholder */\n metricPlaceholder?: string;\n /** scopeMode=none 时展示在截止日期下的短提示(App 注入) */\n noneScopeHint?: string;\n dimensionOptions: CreateActionDimensionOption[];\n loaders: CreateActionLoaders;\n emptyAssigneeHint?: string;\n emptyAllocatorHint?: string;\n allocatorPlaceholder?: string;\n assigneePlaceholder?: string;\n /**\n * 分配人只读。新建/编辑均禁用改派(默认 true);\n * 值由 pickDefaultAllocatorUserId / 表单初值写入。\n */\n allocatorDisabled?: boolean;\n /** 编辑回填:执行人 userId(级联选项就绪后写入) */\n defaultAssigneeUserId?: string;\n onAssigneeOptionsReady?: (options: ActionPersonOption[]) => void;\n onAllocatorOptionsReady?: (options: ActionPersonOption[]) => void;\n};\n\nexport function renderPersonOptionLabel(name: string, org: string): ReactNode {\n if (!org) return name;\n return (\n <span className={styles['assignee-option']}>\n <span className={styles['assignee-option-name']}>{name}</span>\n <span className={styles['assignee-option-org']}>{org}</span>\n </span>\n );\n}\n\ntype OpenApiLike = {\n setFieldValue: (\n token: { name: string },\n value: unknown,\n options?: { runValidate?: boolean },\n ) => void;\n};\n\n/** 新建跟踪任务 / 下发任务字段(FormModal + FormInfo);数据经 loaders 注入 */\nconst CreateActionForm: React.FC<CreateActionFormProps> = ({\n scopeLock,\n varietyLabel,\n lockedContext,\n scopeMode: scopeModeProp = 'form',\n titlePlaceholder,\n descriptionPlaceholder,\n metricPlaceholder,\n noneScopeHint,\n dimensionOptions,\n loaders,\n emptyAssigneeHint = '暂无执行人',\n emptyAllocatorHint = '暂无分配人',\n allocatorPlaceholder = '先选角色,再选分配人',\n assigneePlaceholder = '先选角色,再选执行人',\n allocatorDisabled = true,\n defaultAssigneeUserId = '',\n onAssigneeOptionsReady,\n onAllocatorOptionsReady,\n}) => {\n const formApi = useFormApi() as { openApi: OpenApiLike };\n const [assigneeCascade, setAssigneeCascade] = useState<ActionPersonCascadeOption[]>([]);\n const [allocatorCascade, setAllocatorCascade] = useState<ActionPersonCascadeOption[]>([]);\n const [factoryOptions, setFactoryOptions] = useState<CreateActionSelectOption[]>([]);\n const [personLoading, setPersonLoading] = useState(true);\n const [factoryLoading, setFactoryLoading] = useState(false);\n const [defaultAllocatorUserId, setDefaultAllocatorUserId] = useState('');\n const [factoryKey, setFactoryKey] = useState(() => scopeLock?.factory?.trim() || '');\n const factoryRef = useRef(scopeLock?.factory?.trim() || '');\n\n const useLockedContext = Boolean(lockedContext && lockedContext.length > 0);\n const resolvedScopeMode: CreateActionScopeMode = useLockedContext\n ? 'locked'\n : scopeModeProp === 'none'\n ? 'none'\n : 'form';\n const useNoneScope = resolvedScopeMode === 'none';\n const lockFactory = Boolean(scopeLock?.factory?.trim());\n const lockVariety = Boolean(scopeLock?.variety?.trim());\n const lockMetric = Boolean(scopeLock?.metric?.trim());\n const hasVarietyPage = typeof loaders.loadVarietyPage === 'function';\n const canLoadVariety = Boolean(factoryKey) || lockVariety;\n\n const factorySelectOptions = useMemo(() => {\n const locked = scopeLock?.factory?.trim();\n if (!locked) return factoryOptions;\n if (factoryOptions.some((o) => o.value === locked)) return factoryOptions;\n return [{ value: locked, label: locked }, ...factoryOptions];\n }, [factoryOptions, scopeLock?.factory]);\n\n const varietySelectApi = useMemo(() => {\n if (!hasVarietyPage || !loaders.loadVarietyPage) return undefined;\n const loadPage = loaders.loadVarietyPage;\n return createPagedSuperSelectApi({\n pageSize: CREATE_ACTION_VARIETY_PAGE_SIZE,\n loadPage: (query) =>\n loadPage({\n ...query,\n factory: factoryRef.current,\n }),\n onError: () => message.error('品种列表加载失败'),\n });\n }, [hasVarietyPage, loaders.loadVarietyPage]);\n\n const varietyGetSearchProps = useMemo(\n () => pagedSuperSelectGetSearchProps(CREATE_ACTION_VARIETY_PAGE_SIZE),\n [],\n );\n\n const varietyPagination = useMemo(\n () => pagedSuperSelectPagination(CREATE_ACTION_VARIETY_PAGE_SIZE),\n [],\n );\n\n const handleFormSync = useCallback(\n (data: Record<string, unknown>) => {\n if (useLockedContext || useNoneScope) return;\n const next = asFactoryValue(data.factory);\n if (next === factoryRef.current) return;\n const prev = factoryRef.current;\n factoryRef.current = next;\n setFactoryKey(next);\n if (prev && next !== prev && hasVarietyPage && !lockVariety) {\n queueMicrotask(() => {\n formApi.openApi.setFieldValue({ name: 'variety' }, '', { runValidate: false });\n });\n }\n },\n [formApi.openApi, hasVarietyPage, lockVariety, useLockedContext, useNoneScope],\n );\n\n useEffect(() => {\n const locked = scopeLock?.factory?.trim() || '';\n if (!locked) return;\n factoryRef.current = locked;\n setFactoryKey(locked);\n }, [scopeLock?.factory]);\n\n /** 人员目录:独立加载 + 超时,避免拖死分厂 */\n useEffect(() => {\n let cancelled = false;\n setPersonLoading(true);\n Promise.all([\n settleWithTimeout(loaders.loadAssigneeCatalog(), CATALOG_LOAD_TIMEOUT_MS),\n settleWithTimeout(loaders.loadAllocatorCatalog(), CATALOG_LOAD_TIMEOUT_MS),\n ])\n .then(([usersRes, allocRes]) => {\n if (cancelled) return;\n if (usersRes.status === 'fulfilled') {\n setAssigneeCascade(usersRes.value.cascadeOptions);\n onAssigneeOptionsReady?.(usersRes.value.options);\n } else {\n message.error('执行人列表加载失败');\n setAssigneeCascade([]);\n onAssigneeOptionsReady?.([]);\n }\n if (allocRes.status === 'fulfilled') {\n setAllocatorCascade(allocRes.value.cascadeOptions);\n onAllocatorOptionsReady?.(allocRes.value.options);\n const pick = loaders.pickDefaultAllocatorUserId;\n setDefaultAllocatorUserId(pick ? pick(allocRes.value.options) : '');\n } else {\n message.error('分配人列表加载失败');\n setAllocatorCascade([]);\n onAllocatorOptionsReady?.([]);\n }\n })\n .finally(() => {\n if (!cancelled) setPersonLoading(false);\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only load\n }, []);\n\n /** 分厂:与人员并行、互不阻塞(对齐 EAM CycleForm 静态 options) */\n useEffect(() => {\n if (useLockedContext || useNoneScope || !loaders.loadFactoryOptions) return;\n let cancelled = false;\n setFactoryLoading(true);\n settleWithTimeout(loaders.loadFactoryOptions(), CATALOG_LOAD_TIMEOUT_MS)\n .then((factoriesRes) => {\n if (cancelled) return;\n if (factoriesRes.status === 'fulfilled') {\n setFactoryOptions(factoriesRes.value);\n } else {\n message.error('分厂列表加载失败');\n setFactoryOptions([]);\n }\n })\n .finally(() => {\n if (!cancelled) setFactoryLoading(false);\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only load\n }, []);\n\n const scopeFields: ReactNode[] = useLockedContext\n ? (lockedContext || []).map((field, idx) => (\n <Input\n key={`locked-${idx}-${field.label}`}\n name={`lockedContext_${idx}`}\n label={field.label}\n disabled\n />\n ))\n : useNoneScope\n ? []\n : [\n <SuperSelect\n key=\"factory\"\n name=\"factory\"\n label=\"分厂\"\n single\n options={factorySelectOptions}\n placeholder={factoryLoading ? '加载分厂…' : '选择分厂'}\n disabled={factoryLoading || lockFactory}\n allowClear={!lockFactory}\n />,\n hasVarietyPage && varietySelectApi ? (\n <SuperSelect\n key={`variety-${factoryKey || 'none'}`}\n name=\"variety\"\n label={varietyLabel || '品种'}\n single\n api={varietySelectApi}\n getSearchProps={varietyGetSearchProps}\n pagination={varietyPagination}\n placeholder={canLoadVariety ? '选择品种' : '请先选择分厂'}\n disabled={lockVariety || !canLoadVariety}\n allowClear={!lockVariety}\n searchPlaceholder=\"搜索品种\"\n />\n ) : (\n <SuperSelect\n key=\"variety\"\n name=\"variety\"\n label={varietyLabel || '品种'}\n single\n options={[]}\n placeholder=\"App 未注入 loadVarietyPage\"\n disabled\n />\n ),\n <Input\n key=\"metric\"\n name=\"metric\"\n label=\"关联指标\"\n placeholder={metricPlaceholder || '可选'}\n maxLength={40}\n disabled={lockMetric}\n />,\n ];\n\n const assigneeDefault = String(defaultAssigneeUserId || '').trim();\n\n return (\n <div className={classNames('create-action-form', styles['create-action-form'])}>\n <FormDataSync onChange={handleFormSync} />\n <SetFormFields\n patch={{\n allocatorUserId: defaultAllocatorUserId,\n ...(assigneeDefault ? { assigneeUserId: assigneeDefault } : {}),\n }}\n />\n <FormInfo\n column={1}\n list={[\n <Input\n key=\"title\"\n name=\"title\"\n label=\"任务标题\"\n rule=\"REQ\"\n placeholder={titlePlaceholder || '请输入任务标题'}\n maxLength={120}\n />,\n <TextArea\n key=\"description\"\n name=\"description\"\n label=\"任务描述\"\n labelTips=\"可选\"\n rows={5}\n block\n maxLength={2000}\n placeholder={\n descriptionPlaceholder || '说明目前情况、问题与需改进点,便于执行人理解背景'\n }\n />,\n <SuperSelect\n key=\"dimension\"\n name=\"dimension\"\n label=\"任务类型\"\n rule=\"REQ\"\n single\n options={dimensionOptions}\n placeholder=\"选择任务类型\"\n />,\n <PersonRoleCascaderField\n key=\"allocatorUserId\"\n name=\"allocatorUserId\"\n label=\"分配人\"\n cascadeOptions={allocatorCascade}\n loading={personLoading}\n disabled={allocatorDisabled}\n emptyHint={emptyAllocatorHint}\n placeholder={allocatorPlaceholder}\n defaultUserId={defaultAllocatorUserId}\n />,\n <PersonRoleCascaderField\n key=\"assigneeUserId\"\n name=\"assigneeUserId\"\n label=\"执行人\"\n cascadeOptions={assigneeCascade}\n loading={personLoading}\n emptyHint={emptyAssigneeHint}\n placeholder={assigneePlaceholder}\n defaultUserId={assigneeDefault}\n />,\n <DatePicker\n key=\"dueDate\"\n name=\"dueDate\"\n label=\"截止日期\"\n labelTips=\"可选\"\n format=\"YYYY-MM-DD\"\n placeholder=\"选择截止日期\"\n allowClear\n />,\n ...scopeFields,\n ]}\n />\n {useNoneScope && noneScopeHint ? (\n <p className={classNames('create-action-none-hint', styles['create-action-none-hint'])}>\n {noneScopeHint}\n </p>\n ) : null}\n </div>\n );\n};\n\nexport default CreateActionForm;\n"],"names":["CREATE_ACTION_VARIETY_PAGE_SIZE","CATALOG_LOAD_TIMEOUT_MS","settleWithTimeout","promise","ms","value","reason","resolve","asFactoryValue","raw","renderPersonOptionLabel","name","org","jsxs","styles","jsx","CreateActionForm","scopeLock","varietyLabel","lockedContext","scopeModeProp","titlePlaceholder","descriptionPlaceholder","metricPlaceholder","noneScopeHint","dimensionOptions","loaders","emptyAssigneeHint","emptyAllocatorHint","allocatorPlaceholder","assigneePlaceholder","allocatorDisabled","defaultAssigneeUserId","onAssigneeOptionsReady","onAllocatorOptionsReady","formApi","useFormApi","assigneeCascade","setAssigneeCascade","useState","allocatorCascade","setAllocatorCascade","factoryOptions","setFactoryOptions","personLoading","setPersonLoading","factoryLoading","setFactoryLoading","defaultAllocatorUserId","setDefaultAllocatorUserId","factoryKey","setFactoryKey","_a","factoryRef","useRef","useLockedContext","useNoneScope","lockFactory","_b","lockVariety","_c","lockMetric","_d","hasVarietyPage","canLoadVariety","factorySelectOptions","useMemo","locked","o","varietySelectApi","loadPage","createPagedSuperSelectApi","query","message","varietyGetSearchProps","pagedSuperSelectGetSearchProps","varietyPagination","pagedSuperSelectPagination","handleFormSync","useCallback","data","next","prev","useEffect","cancelled","usersRes","allocRes","pick","factoriesRes","scopeFields","field","idx","Input","SuperSelect","assigneeDefault","classNames","FormDataSync","SetFormFields","FormInfo","TextArea","PersonRoleCascaderField","DatePicker"],"mappings":"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"}
@@ -16,6 +16,8 @@ export type CreateActionModalProps = {
16
16
  varietyLabel?: string;
17
17
  /** F4:任务标题 placeholder */
18
18
  titlePlaceholder?: string;
19
+ /** F4:任务描述 placeholder */
20
+ descriptionPlaceholder?: string;
19
21
  /** F4:关联指标 placeholder */
20
22
  metricPlaceholder?: string;
21
23
  /** scopeMode=none 时短提示(App 注入) */