@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,145 +1,150 @@
1
1
  import { jsx as Y } from "react/jsx-runtime";
2
- import { useState as Io, useRef as x, useCallback as z, useMemo as Mo } from "react";
3
- import { message as U } from "antd";
4
- import bo from "classnames";
5
- import wo from "dayjs";
6
- import Bo from "./CreateActionForm.js";
7
- import { addDaysYmd as Uo, validateCreateActionPersons as jo, createActionPersonWarnMessage as Lo, normalizeDueDateYmd as No, personDisplayName as C } from "./submitHelpers.js";
8
- import Po from "./CreateActionModal.module.scss.js";
9
- import Ro from "../../../FormInfo/FormModal.js";
10
- const zo = ({
2
+ import { useState as Mt, useRef as x, useCallback as z, useMemo as bt } from "react";
3
+ import { message as j } from "antd";
4
+ import wt from "classnames";
5
+ import Bt from "dayjs";
6
+ import Ut from "./CreateActionForm.js";
7
+ import { addDaysYmd as jt, validateCreateActionPersons as Lt, createActionPersonWarnMessage as Nt, normalizeDueDateYmd as Pt, personDisplayName as C } from "./submitHelpers.js";
8
+ import Rt from "./CreateActionModal.module.scss.js";
9
+ import _t from "../../../FormInfo/FormModal.js";
10
+ const Ct = ({
11
11
  open: V,
12
12
  onClose: W,
13
13
  onCreated: $,
14
14
  variant: q = "create",
15
- prefill: o,
15
+ prefill: t,
16
16
  lockPrefill: G = !1,
17
- lockedContext: r,
17
+ lockedContext: i,
18
18
  scopeMode: J = "form",
19
19
  varietyLabel: K,
20
20
  titlePlaceholder: Q,
21
- metricPlaceholder: X,
22
- noneScopeHint: Z,
23
- title: D,
24
- okText: p,
25
- dimensionOptions: i,
26
- loaders: f,
27
- emptyAssigneeHint: l,
28
- emptyAllocatorHint: oo,
29
- onSubmit: to,
30
- onAllocatorConfirmed: k,
31
- defaultStatus: I = "approved",
32
- defaultDueDays: j = 7,
33
- width: eo = 560,
34
- zIndex: so = 1300
21
+ descriptionPlaceholder: X,
22
+ metricPlaceholder: Z,
23
+ noneScopeHint: D,
24
+ title: p,
25
+ okText: f,
26
+ dimensionOptions: d,
27
+ loaders: l,
28
+ emptyAssigneeHint: tt,
29
+ emptyAllocatorHint: ot,
30
+ onSubmit: st,
31
+ onAllocatorConfirmed: I,
32
+ defaultStatus: M = "approved",
33
+ defaultDueDays: L = 7,
34
+ width: et = 560,
35
+ zIndex: nt = 1300
35
36
  }) => {
36
- var R, _, E;
37
- const [ao, L] = Io(!1), N = x([]), P = x([]), no = z((t) => {
38
- N.current = t;
39
- }, []), co = z((t) => {
40
- P.current = t;
41
- }, []), g = q === "dispatch", s = !!(r && r.length > 0), e = !s && J === "none", d = ((R = o == null ? void 0 : o.factory) == null ? void 0 : R.trim()) || "", y = ((_ = o == null ? void 0 : o.variety) == null ? void 0 : _.trim()) || "", S = ((E = o == null ? void 0 : o.metric) == null ? void 0 : E.trim()) || "", ro = !s && !e && (g || G) && !!(d || y || S), io = D || (g ? "下发任务" : "新建跟踪任务"), mo = p || (g ? "下发" : "创建"), vo = Mo(() => {
42
- var n, m, v;
43
- const t = {};
44
- return (r || []).forEach((u, h) => {
45
- t[`lockedContext_${h}`] = u.value;
37
+ var _, E, F;
38
+ const [ct, N] = Mt(!1), P = x([]), R = x([]), at = z((o) => {
39
+ P.current = o;
40
+ }, []), it = z((o) => {
41
+ R.current = o;
42
+ }, []), u = q === "dispatch", e = !!(i && i.length > 0), s = !e && J === "none", m = ((_ = t == null ? void 0 : t.factory) == null ? void 0 : _.trim()) || "", y = ((E = t == null ? void 0 : t.variety) == null ? void 0 : E.trim()) || "", S = ((F = t == null ? void 0 : t.metric) == null ? void 0 : F.trim()) || "", rt = !e && !s && (u || G) && !!(m || y || S), dt = p || (u ? "下发任务" : "新建跟踪任务"), mt = f || (u ? "下发" : "创建"), vt = bt(() => {
43
+ var c, v, g, r;
44
+ const o = {};
45
+ return (i || []).forEach((h, k) => {
46
+ o[`lockedContext_${k}`] = h.value;
46
47
  }), {
47
- title: ((n = o == null ? void 0 : o.title) == null ? void 0 : n.trim()) || "",
48
- dimension: ((m = o == null ? void 0 : o.dimension) == null ? void 0 : m.trim()) || ((v = i[0]) == null ? void 0 : v.value) || "",
49
- status: I,
48
+ title: ((c = t == null ? void 0 : t.title) == null ? void 0 : c.trim()) || "",
49
+ description: ((v = t == null ? void 0 : t.description) == null ? void 0 : v.trim()) || "",
50
+ dimension: ((g = t == null ? void 0 : t.dimension) == null ? void 0 : g.trim()) || ((r = d[0]) == null ? void 0 : r.value) || "",
51
+ status: M,
50
52
  allocatorUserId: "",
51
53
  assigneeUserId: "",
52
- dueDate: wo(Uo(j)),
53
- factory: s || e ? "" : d,
54
- variety: s || e ? "" : y,
55
- metric: s || e ? "" : S,
56
- ...t
54
+ dueDate: Bt(jt(L)),
55
+ factory: e || s ? "" : m,
56
+ variety: e || s ? "" : y,
57
+ metric: e || s ? "" : S,
58
+ ...o
57
59
  };
58
60
  }, [
59
- r,
60
- d,
61
+ i,
62
+ m,
61
63
  y,
62
64
  S,
63
- s,
64
65
  e,
65
- o == null ? void 0 : o.title,
66
- o == null ? void 0 : o.dimension,
67
- i,
68
- I,
69
- j
70
- ]), uo = async (t) => {
71
- var F, O, T;
72
- const n = jo(
73
- String(t.allocatorUserId || ""),
74
- String(t.assigneeUserId || ""),
75
- P.current,
76
- N.current
66
+ s,
67
+ t == null ? void 0 : t.title,
68
+ t == null ? void 0 : t.description,
69
+ t == null ? void 0 : t.dimension,
70
+ d,
71
+ M,
72
+ L
73
+ ]), gt = async (o) => {
74
+ var k, O, T;
75
+ const c = Lt(
76
+ String(o.allocatorUserId || ""),
77
+ String(o.assigneeUserId || ""),
78
+ R.current,
79
+ P.current
77
80
  );
78
- if (!n.ok)
79
- throw U.warning(Lo(n.code)), new Error(n.code);
80
- const { allocator: m, assignee: v } = n, u = m.value, h = v.value;
81
- k == null || k(u), L(!0);
81
+ if (!c.ok)
82
+ throw j.warning(Nt(c.code)), new Error(c.code);
83
+ const { allocator: v, assignee: g } = c, r = v.value, h = g.value;
84
+ I == null || I(r), N(!0);
82
85
  try {
83
- const a = No(t.dueDate), c = C(v, h), go = C(m, u), M = s ? d : e ? "" : String(t.factory || "").trim(), A = s || e ? "" : String(t.variety || "").trim(), b = s || e ? "" : String(t.metric || "").trim(), H = String(t.title || "").trim(), w = String(t.dimension || "").trim() || String((o == null ? void 0 : o.dimension) || "").trim() || ((F = i[0]) == null ? void 0 : F.value) || "", yo = ((T = (O = i.find((B) => B.value === w)) == null ? void 0 : O.label) == null ? void 0 : T.trim()) || w, So = s ? (r || []).map((B) => B.value).filter(Boolean).join(" · ") : e ? [H, yo].filter(Boolean).join(" · ") : [M, A, b].filter(Boolean).join(" · "), ho = {
86
+ const n = Pt(o.dueDate), a = C(g, h), ut = C(v, r), b = e ? m : s ? "" : String(o.factory || "").trim(), A = e || s ? "" : String(o.variety || "").trim(), w = e || s ? "" : String(o.metric || "").trim(), H = String(o.title || "").trim(), yt = String(o.description || "").trim(), B = String(o.dimension || "").trim() || String((t == null ? void 0 : t.dimension) || "").trim() || ((k = d[0]) == null ? void 0 : k.value) || "", St = ((T = (O = d.find((U) => U.value === B)) == null ? void 0 : O.label) == null ? void 0 : T.trim()) || B, ht = e ? (i || []).map((U) => U.value).filter(Boolean).join(" · ") : s ? [H, St].filter(Boolean).join(" · ") : [b, A, w].filter(Boolean).join(" · "), kt = {
84
87
  title: H,
85
- dimension: w,
86
- status: String(t.status || I),
87
- assignee: c,
88
+ description: yt || void 0,
89
+ dimension: B,
90
+ status: String(o.status || M),
91
+ assignee: a,
88
92
  assigneeUserId: h,
89
- allocator: go,
90
- allocatorUserId: u,
91
- owner: c,
92
- dueDate: a || void 0,
93
- factory: M,
93
+ allocator: ut,
94
+ allocatorUserId: r,
95
+ owner: a,
96
+ dueDate: n || void 0,
97
+ factory: b,
94
98
  variety: A,
95
- metric: b,
96
- factoryCode: e ? void 0 : (o == null ? void 0 : o.factoryCode) || void 0,
97
- factoryName: M || void 0,
98
- verifyMetric: b || void 0,
99
- eventLabel: So
100
- }, ko = await to(ho);
101
- U.success(g ? "已下发任务" : "已创建跟踪任务"), $(ko);
102
- } catch (a) {
103
- const c = a instanceof Error ? a.message : "";
104
- throw c === "missing_allocator" || c === "invalid_allocator" || c === "missing_assignee" || c === "invalid_assignee" || U.error(a instanceof Error ? a.message : "创建失败"), a;
99
+ metric: w,
100
+ factoryCode: s ? void 0 : (t == null ? void 0 : t.factoryCode) || void 0,
101
+ factoryName: b || void 0,
102
+ verifyMetric: w || void 0,
103
+ eventLabel: ht
104
+ }, It = await st(kt);
105
+ j.success(u ? "已下发任务" : "已创建跟踪任务"), $(It);
106
+ } catch (n) {
107
+ const a = n instanceof Error ? n.message : "";
108
+ throw a === "missing_allocator" || a === "invalid_allocator" || a === "missing_assignee" || a === "invalid_assignee" || j.error(n instanceof Error ? n.message : "创建失败"), n;
105
109
  } finally {
106
- L(!1);
110
+ N(!1);
107
111
  }
108
112
  };
109
113
  return /* @__PURE__ */ Y(
110
- Ro,
114
+ _t,
111
115
  {
112
- className: bo("create-action-modal", Po["create-action-modal"]),
113
- title: io,
116
+ className: wt("create-action-modal", Rt["create-action-modal"]),
117
+ title: dt,
114
118
  open: V,
115
119
  onCancel: W,
116
120
  autoClose: !0,
117
- okText: mo,
118
- width: eo,
119
- zIndex: so,
121
+ okText: mt,
122
+ width: et,
123
+ zIndex: nt,
120
124
  destroyOnHidden: !0,
121
- okButtonProps: { loading: ao },
125
+ okButtonProps: { loading: ct },
122
126
  formProps: {
123
- data: vo,
124
- onSubmit: uo
127
+ data: vt,
128
+ onSubmit: gt
125
129
  },
126
130
  children: /* @__PURE__ */ Y(
127
- Bo,
131
+ Ut,
128
132
  {
129
- onAssigneeOptionsReady: no,
130
- onAllocatorOptionsReady: co,
131
- lockedContext: s ? r : void 0,
132
- scopeMode: s ? "locked" : e ? "none" : "form",
133
- varietyLabel: s || e ? void 0 : K,
133
+ onAssigneeOptionsReady: at,
134
+ onAllocatorOptionsReady: it,
135
+ lockedContext: e ? i : void 0,
136
+ scopeMode: e ? "locked" : s ? "none" : "form",
137
+ varietyLabel: e || s ? void 0 : K,
134
138
  titlePlaceholder: Q,
135
- metricPlaceholder: e ? void 0 : X,
136
- noneScopeHint: e ? Z : void 0,
137
- dimensionOptions: i,
138
- loaders: f,
139
- emptyAssigneeHint: l,
140
- emptyAllocatorHint: oo,
141
- scopeLock: ro ? {
142
- factory: d || void 0,
139
+ descriptionPlaceholder: X,
140
+ metricPlaceholder: s ? void 0 : Z,
141
+ noneScopeHint: s ? D : void 0,
142
+ dimensionOptions: d,
143
+ loaders: l,
144
+ emptyAssigneeHint: tt,
145
+ emptyAllocatorHint: ot,
146
+ scopeLock: rt ? {
147
+ factory: m || void 0,
143
148
  variety: y || void 0,
144
149
  metric: S || void 0
145
150
  } : void 0
@@ -149,6 +154,6 @@ const zo = ({
149
154
  );
150
155
  };
151
156
  export {
152
- zo as default
157
+ Ct as default
153
158
  };
154
159
  //# sourceMappingURL=CreateActionModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateActionModal.js","sources":["../../../../../src/components/Tools/ActionTracking/CreateAction/CreateActionModal.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { FormModal } from '../../../FormInfo';\nimport { message } from 'antd';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport CreateActionForm from './CreateActionForm';\nimport {\n addDaysYmd,\n createActionPersonWarnMessage,\n normalizeDueDateYmd,\n personDisplayName,\n validateCreateActionPersons,\n} from './submitHelpers';\nimport type {\n ActionPersonOption,\n CreateActionDimensionOption,\n CreateActionLoaders,\n CreateActionPrefill,\n CreateActionScopeMode,\n CreateActionSubmitPayload,\n LockedContextField,\n} from './types';\nimport styles from './CreateActionModal.module.scss';\n\nexport type CreateActionModalProps = {\n open: boolean;\n onClose: () => void;\n onCreated: (actionId?: string) => void;\n variant?: 'create' | 'dispatch';\n prefill?: CreateActionPrefill;\n lockPrefill?: boolean;\n lockedContext?: LockedContextField[];\n /**\n * 业务上下文字段模式。有 lockedContext 时强制 locked。\n * 默认 form(S3);EAM `/actions` 主动新建传 none。\n */\n scopeMode?: CreateActionScopeMode;\n /** @deprecated 有 lockedContext 时忽略 */\n varietyLabel?: string;\n /** F4:任务标题 placeholder */\n titlePlaceholder?: string;\n /** F4:关联指标 placeholder */\n metricPlaceholder?: string;\n /** scopeMode=none 时短提示(App 注入) */\n noneScopeHint?: string;\n /** 弹窗标题;默认按 variant */\n title?: string;\n /** 主按钮文案;默认 下发/创建 */\n okText?: string;\n dimensionOptions: CreateActionDimensionOption[];\n loaders: CreateActionLoaders;\n emptyAssigneeHint?: string;\n emptyAllocatorHint?: string;\n /**\n * App 注入提交(对齐 EAM:校验通过后写 API / domainSubmit)。\n * 返回新建 actionId(可选)。\n */\n onSubmit: (payload: CreateActionSubmitPayload) => Promise<string | undefined>;\n /** 分配人确认后回调(App 可写 localStorage) */\n onAllocatorConfirmed?: (allocatorUserId: string) => void;\n defaultStatus?: string;\n defaultDueDays?: number;\n width?: number;\n zIndex?: number;\n};\n\n/**\n * 主动新建 / 预警下发任务 · FormModal + FormInfo。\n *\n * ## App 注入契约(W1)\n * - `loaders`:人员级联 + 分厂选项(禁 DEMO / 禁 core 直连业务 API;scopeMode=none 可不传分厂/品种)\n * - `dimensionOptions`:任务类型码表(展示名取自 App 数据)\n * - `scopeMode`:form(默认)| locked(有 lockedContext 强制)| none(EAM 主动新建)\n * - `titlePlaceholder` / `metricPlaceholder`:F4,由 App 注入业务文案\n * - `onSubmit`:对齐 EAM 提交面;actor / analysisId / eventSource / REST 由 App 补齐\n * - EP 门禁:由 App 决定是否打开本 Modal(禁 DEMO 恒真)\n */\nconst CreateActionModal: React.FC<CreateActionModalProps> = ({\n open,\n onClose,\n onCreated,\n variant = 'create',\n prefill,\n lockPrefill = false,\n lockedContext,\n scopeMode: scopeModeProp = 'form',\n varietyLabel,\n titlePlaceholder,\n metricPlaceholder,\n noneScopeHint,\n title: titleProp,\n okText: okTextProp,\n dimensionOptions,\n loaders,\n emptyAssigneeHint,\n emptyAllocatorHint,\n onSubmit,\n onAllocatorConfirmed,\n defaultStatus = 'approved',\n defaultDueDays = 7,\n width = 560,\n zIndex = 1300,\n}) => {\n const [saving, setSaving] = useState(false);\n const assigneeOptsRef = useRef<ActionPersonOption[]>([]);\n const allocatorOptsRef = useRef<ActionPersonOption[]>([]);\n const onAssigneeOptionsReady = useCallback((opts: ActionPersonOption[]) => {\n assigneeOptsRef.current = opts;\n }, []);\n const onAllocatorOptionsReady = useCallback((opts: ActionPersonOption[]) => {\n allocatorOptsRef.current = opts;\n }, []);\n\n const isDispatch = variant === 'dispatch';\n const useLocked = Boolean(lockedContext && lockedContext.length > 0);\n const useNoneScope = !useLocked && scopeModeProp === 'none';\n const scopeFactory = prefill?.factory?.trim() || '';\n const scopeVariety = prefill?.variety?.trim() || '';\n const scopeMetric = prefill?.metric?.trim() || '';\n const lockScope =\n !useLocked &&\n !useNoneScope &&\n (isDispatch || lockPrefill) &&\n Boolean(scopeFactory || scopeVariety || scopeMetric);\n\n const modalTitle = titleProp || (isDispatch ? '下发任务' : '新建跟踪任务');\n const okText = okTextProp || (isDispatch ? '下发' : '创建');\n\n const formInitialData = useMemo(() => {\n const lockedFields: Record<string, string> = {};\n (lockedContext || []).forEach((field, idx) => {\n lockedFields[`lockedContext_${idx}`] = field.value;\n });\n return {\n title: prefill?.title?.trim() || '',\n dimension: prefill?.dimension?.trim() || dimensionOptions[0]?.value || '',\n status: defaultStatus,\n allocatorUserId: '',\n assigneeUserId: '',\n dueDate: dayjs(addDaysYmd(defaultDueDays)),\n factory: useLocked || useNoneScope ? '' : scopeFactory,\n variety: useLocked || useNoneScope ? '' : scopeVariety,\n metric: useLocked || useNoneScope ? '' : scopeMetric,\n ...lockedFields,\n };\n }, [\n lockedContext,\n scopeFactory,\n scopeVariety,\n scopeMetric,\n useLocked,\n useNoneScope,\n prefill?.title,\n prefill?.dimension,\n dimensionOptions,\n defaultStatus,\n defaultDueDays,\n ]);\n\n const handleSubmit = async (formData: Record<string, unknown>) => {\n const checked = validateCreateActionPersons(\n String(formData.allocatorUserId || ''),\n String(formData.assigneeUserId || ''),\n allocatorOptsRef.current,\n assigneeOptsRef.current,\n );\n if (!checked.ok) {\n message.warning(createActionPersonWarnMessage(checked.code));\n throw new Error(checked.code);\n }\n\n const { allocator: allocatorOpt, assignee: fromOptions } = checked;\n const allocatorUserId = allocatorOpt.value;\n const assigneeUserId = fromOptions.value;\n onAllocatorConfirmed?.(allocatorUserId);\n\n setSaving(true);\n try {\n const due = normalizeDueDateYmd(formData.dueDate);\n const assignee = personDisplayName(fromOptions, assigneeUserId);\n const allocator = personDisplayName(allocatorOpt, allocatorUserId);\n const factory = useLocked\n ? scopeFactory\n : useNoneScope\n ? ''\n : String(formData.factory || '').trim();\n const variety = useLocked || useNoneScope ? '' : String(formData.variety || '').trim();\n const metric = useLocked || useNoneScope ? '' : String(formData.metric || '').trim();\n const title = String(formData.title || '').trim();\n const dimension =\n String(formData.dimension || '').trim() ||\n String(prefill?.dimension || '').trim() ||\n dimensionOptions[0]?.value ||\n '';\n const dimLabel =\n dimensionOptions.find((o) => o.value === dimension)?.label?.trim() || dimension;\n const eventLabel = useLocked\n ? (lockedContext || [])\n .map((f) => f.value)\n .filter(Boolean)\n .join(' · ')\n : useNoneScope\n ? [title, dimLabel].filter(Boolean).join(' · ')\n : [factory, variety, metric].filter(Boolean).join(' · ');\n\n const payload: CreateActionSubmitPayload = {\n title,\n dimension,\n status: String(formData.status || defaultStatus),\n assignee,\n assigneeUserId,\n allocator,\n allocatorUserId,\n owner: assignee,\n dueDate: due || undefined,\n factory,\n variety,\n metric,\n factoryCode: useNoneScope ? undefined : prefill?.factoryCode || undefined,\n factoryName: factory || undefined,\n verifyMetric: metric || undefined,\n eventLabel,\n };\n\n const actionId = await onSubmit(payload);\n message.success(isDispatch ? '已下发任务' : '已创建跟踪任务');\n onCreated(actionId);\n } catch (err) {\n const code = err instanceof Error ? err.message : '';\n if (\n code === 'missing_allocator' ||\n code === 'invalid_allocator' ||\n code === 'missing_assignee' ||\n code === 'invalid_assignee'\n ) {\n throw err;\n }\n message.error(err instanceof Error ? err.message : '创建失败');\n throw err;\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <FormModal\n className={classNames('create-action-modal', styles['create-action-modal'])}\n title={modalTitle}\n open={open}\n onCancel={onClose}\n autoClose\n okText={okText}\n width={width}\n zIndex={zIndex}\n destroyOnHidden\n okButtonProps={{ loading: saving }}\n formProps={{\n data: formInitialData,\n onSubmit: handleSubmit,\n }}\n >\n <CreateActionForm\n onAssigneeOptionsReady={onAssigneeOptionsReady}\n onAllocatorOptionsReady={onAllocatorOptionsReady}\n lockedContext={useLocked ? lockedContext : undefined}\n scopeMode={useLocked ? 'locked' : useNoneScope ? 'none' : 'form'}\n varietyLabel={useLocked || useNoneScope ? undefined : varietyLabel}\n titlePlaceholder={titlePlaceholder}\n metricPlaceholder={useNoneScope ? undefined : metricPlaceholder}\n noneScopeHint={useNoneScope ? noneScopeHint : undefined}\n dimensionOptions={dimensionOptions}\n loaders={loaders}\n emptyAssigneeHint={emptyAssigneeHint}\n emptyAllocatorHint={emptyAllocatorHint}\n scopeLock={\n lockScope\n ? {\n factory: scopeFactory || undefined,\n variety: scopeVariety || undefined,\n metric: scopeMetric || undefined,\n }\n : undefined\n }\n />\n </FormModal>\n );\n};\n\nexport default CreateActionModal;\n"],"names":["CreateActionModal","open","onClose","onCreated","variant","prefill","lockPrefill","lockedContext","scopeModeProp","varietyLabel","titlePlaceholder","metricPlaceholder","noneScopeHint","titleProp","okTextProp","dimensionOptions","loaders","emptyAssigneeHint","emptyAllocatorHint","onSubmit","onAllocatorConfirmed","defaultStatus","defaultDueDays","width","zIndex","saving","setSaving","useState","assigneeOptsRef","useRef","allocatorOptsRef","onAssigneeOptionsReady","useCallback","opts","onAllocatorOptionsReady","isDispatch","useLocked","useNoneScope","scopeFactory","_a","scopeVariety","_b","scopeMetric","_c","lockScope","modalTitle","okText","formInitialData","useMemo","lockedFields","field","idx","dayjs","addDaysYmd","handleSubmit","formData","checked","validateCreateActionPersons","message","createActionPersonWarnMessage","allocatorOpt","fromOptions","allocatorUserId","assigneeUserId","due","normalizeDueDateYmd","assignee","personDisplayName","allocator","factory","variety","metric","title","dimension","dimLabel","o","eventLabel","f","payload","actionId","err","code","jsx","FormModal","classNames","styles","CreateActionForm"],"mappings":"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"}
1
+ {"version":3,"file":"CreateActionModal.js","sources":["../../../../../src/components/Tools/ActionTracking/CreateAction/CreateActionModal.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { FormModal } from '../../../FormInfo';\nimport { message } from 'antd';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport CreateActionForm from './CreateActionForm';\nimport {\n addDaysYmd,\n createActionPersonWarnMessage,\n normalizeDueDateYmd,\n personDisplayName,\n validateCreateActionPersons,\n} from './submitHelpers';\nimport type {\n ActionPersonOption,\n CreateActionDimensionOption,\n CreateActionLoaders,\n CreateActionPrefill,\n CreateActionScopeMode,\n CreateActionSubmitPayload,\n LockedContextField,\n} from './types';\nimport styles from './CreateActionModal.module.scss';\n\nexport type CreateActionModalProps = {\n open: boolean;\n onClose: () => void;\n onCreated: (actionId?: string) => void;\n variant?: 'create' | 'dispatch';\n prefill?: CreateActionPrefill;\n lockPrefill?: boolean;\n lockedContext?: LockedContextField[];\n /**\n * 业务上下文字段模式。有 lockedContext 时强制 locked。\n * 默认 form(S3);EAM `/actions` 主动新建传 none。\n */\n scopeMode?: CreateActionScopeMode;\n /** @deprecated 有 lockedContext 时忽略 */\n varietyLabel?: string;\n /** F4:任务标题 placeholder */\n titlePlaceholder?: string;\n /** F4:任务描述 placeholder */\n descriptionPlaceholder?: string;\n /** F4:关联指标 placeholder */\n metricPlaceholder?: string;\n /** scopeMode=none 时短提示(App 注入) */\n noneScopeHint?: string;\n /** 弹窗标题;默认按 variant */\n title?: string;\n /** 主按钮文案;默认 下发/创建 */\n okText?: string;\n dimensionOptions: CreateActionDimensionOption[];\n loaders: CreateActionLoaders;\n emptyAssigneeHint?: string;\n emptyAllocatorHint?: string;\n /**\n * App 注入提交(对齐 EAM:校验通过后写 API / domainSubmit)。\n * 返回新建 actionId(可选)。\n */\n onSubmit: (payload: CreateActionSubmitPayload) => Promise<string | undefined>;\n /** 分配人确认后回调(App 可写 localStorage) */\n onAllocatorConfirmed?: (allocatorUserId: string) => void;\n defaultStatus?: string;\n defaultDueDays?: number;\n width?: number;\n zIndex?: number;\n};\n\n/**\n * 主动新建 / 预警下发任务 · FormModal + FormInfo。\n *\n * ## App 注入契约(W1)\n * - `loaders`:人员级联 + 分厂选项(禁 DEMO / 禁 core 直连业务 API;scopeMode=none 可不传分厂/品种)\n * - `dimensionOptions`:任务类型码表(展示名取自 App 数据)\n * - `scopeMode`:form(默认)| locked(有 lockedContext 强制)| none(EAM 主动新建)\n * - `titlePlaceholder` / `metricPlaceholder`:F4,由 App 注入业务文案\n * - `onSubmit`:对齐 EAM 提交面;actor / analysisId / eventSource / REST 由 App 补齐\n * - EP 门禁:由 App 决定是否打开本 Modal(禁 DEMO 恒真)\n */\nconst CreateActionModal: React.FC<CreateActionModalProps> = ({\n open,\n onClose,\n onCreated,\n variant = 'create',\n prefill,\n lockPrefill = false,\n lockedContext,\n scopeMode: scopeModeProp = 'form',\n varietyLabel,\n titlePlaceholder,\n descriptionPlaceholder,\n metricPlaceholder,\n noneScopeHint,\n title: titleProp,\n okText: okTextProp,\n dimensionOptions,\n loaders,\n emptyAssigneeHint,\n emptyAllocatorHint,\n onSubmit,\n onAllocatorConfirmed,\n defaultStatus = 'approved',\n defaultDueDays = 7,\n width = 560,\n zIndex = 1300,\n}) => {\n const [saving, setSaving] = useState(false);\n const assigneeOptsRef = useRef<ActionPersonOption[]>([]);\n const allocatorOptsRef = useRef<ActionPersonOption[]>([]);\n const onAssigneeOptionsReady = useCallback((opts: ActionPersonOption[]) => {\n assigneeOptsRef.current = opts;\n }, []);\n const onAllocatorOptionsReady = useCallback((opts: ActionPersonOption[]) => {\n allocatorOptsRef.current = opts;\n }, []);\n\n const isDispatch = variant === 'dispatch';\n const useLocked = Boolean(lockedContext && lockedContext.length > 0);\n const useNoneScope = !useLocked && scopeModeProp === 'none';\n const scopeFactory = prefill?.factory?.trim() || '';\n const scopeVariety = prefill?.variety?.trim() || '';\n const scopeMetric = prefill?.metric?.trim() || '';\n const lockScope =\n !useLocked &&\n !useNoneScope &&\n (isDispatch || lockPrefill) &&\n Boolean(scopeFactory || scopeVariety || scopeMetric);\n\n const modalTitle = titleProp || (isDispatch ? '下发任务' : '新建跟踪任务');\n const okText = okTextProp || (isDispatch ? '下发' : '创建');\n\n const formInitialData = useMemo(() => {\n const lockedFields: Record<string, string> = {};\n (lockedContext || []).forEach((field, idx) => {\n lockedFields[`lockedContext_${idx}`] = field.value;\n });\n return {\n title: prefill?.title?.trim() || '',\n description: prefill?.description?.trim() || '',\n dimension: prefill?.dimension?.trim() || dimensionOptions[0]?.value || '',\n status: defaultStatus,\n allocatorUserId: '',\n assigneeUserId: '',\n dueDate: dayjs(addDaysYmd(defaultDueDays)),\n factory: useLocked || useNoneScope ? '' : scopeFactory,\n variety: useLocked || useNoneScope ? '' : scopeVariety,\n metric: useLocked || useNoneScope ? '' : scopeMetric,\n ...lockedFields,\n };\n }, [\n lockedContext,\n scopeFactory,\n scopeVariety,\n scopeMetric,\n useLocked,\n useNoneScope,\n prefill?.title,\n prefill?.description,\n prefill?.dimension,\n dimensionOptions,\n defaultStatus,\n defaultDueDays,\n ]);\n\n const handleSubmit = async (formData: Record<string, unknown>) => {\n const checked = validateCreateActionPersons(\n String(formData.allocatorUserId || ''),\n String(formData.assigneeUserId || ''),\n allocatorOptsRef.current,\n assigneeOptsRef.current,\n );\n if (!checked.ok) {\n message.warning(createActionPersonWarnMessage(checked.code));\n throw new Error(checked.code);\n }\n\n const { allocator: allocatorOpt, assignee: fromOptions } = checked;\n const allocatorUserId = allocatorOpt.value;\n const assigneeUserId = fromOptions.value;\n onAllocatorConfirmed?.(allocatorUserId);\n\n setSaving(true);\n try {\n const due = normalizeDueDateYmd(formData.dueDate);\n const assignee = personDisplayName(fromOptions, assigneeUserId);\n const allocator = personDisplayName(allocatorOpt, allocatorUserId);\n const factory = useLocked\n ? scopeFactory\n : useNoneScope\n ? ''\n : String(formData.factory || '').trim();\n const variety = useLocked || useNoneScope ? '' : String(formData.variety || '').trim();\n const metric = useLocked || useNoneScope ? '' : String(formData.metric || '').trim();\n const title = String(formData.title || '').trim();\n const description = String(formData.description || '').trim();\n const dimension =\n String(formData.dimension || '').trim() ||\n String(prefill?.dimension || '').trim() ||\n dimensionOptions[0]?.value ||\n '';\n const dimLabel =\n dimensionOptions.find((o) => o.value === dimension)?.label?.trim() || dimension;\n const eventLabel = useLocked\n ? (lockedContext || [])\n .map((f) => f.value)\n .filter(Boolean)\n .join(' · ')\n : useNoneScope\n ? [title, dimLabel].filter(Boolean).join(' · ')\n : [factory, variety, metric].filter(Boolean).join(' · ');\n\n const payload: CreateActionSubmitPayload = {\n title,\n description: description || undefined,\n dimension,\n status: String(formData.status || defaultStatus),\n assignee,\n assigneeUserId,\n allocator,\n allocatorUserId,\n owner: assignee,\n dueDate: due || undefined,\n factory,\n variety,\n metric,\n factoryCode: useNoneScope ? undefined : prefill?.factoryCode || undefined,\n factoryName: factory || undefined,\n verifyMetric: metric || undefined,\n eventLabel,\n };\n\n const actionId = await onSubmit(payload);\n message.success(isDispatch ? '已下发任务' : '已创建跟踪任务');\n onCreated(actionId);\n } catch (err) {\n const code = err instanceof Error ? err.message : '';\n if (\n code === 'missing_allocator' ||\n code === 'invalid_allocator' ||\n code === 'missing_assignee' ||\n code === 'invalid_assignee'\n ) {\n throw err;\n }\n message.error(err instanceof Error ? err.message : '创建失败');\n throw err;\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <FormModal\n className={classNames('create-action-modal', styles['create-action-modal'])}\n title={modalTitle}\n open={open}\n onCancel={onClose}\n autoClose\n okText={okText}\n width={width}\n zIndex={zIndex}\n destroyOnHidden\n okButtonProps={{ loading: saving }}\n formProps={{\n data: formInitialData,\n onSubmit: handleSubmit,\n }}\n >\n <CreateActionForm\n onAssigneeOptionsReady={onAssigneeOptionsReady}\n onAllocatorOptionsReady={onAllocatorOptionsReady}\n lockedContext={useLocked ? lockedContext : undefined}\n scopeMode={useLocked ? 'locked' : useNoneScope ? 'none' : 'form'}\n varietyLabel={useLocked || useNoneScope ? undefined : varietyLabel}\n titlePlaceholder={titlePlaceholder}\n descriptionPlaceholder={descriptionPlaceholder}\n metricPlaceholder={useNoneScope ? undefined : metricPlaceholder}\n noneScopeHint={useNoneScope ? noneScopeHint : undefined}\n dimensionOptions={dimensionOptions}\n loaders={loaders}\n emptyAssigneeHint={emptyAssigneeHint}\n emptyAllocatorHint={emptyAllocatorHint}\n scopeLock={\n lockScope\n ? {\n factory: scopeFactory || undefined,\n variety: scopeVariety || undefined,\n metric: scopeMetric || undefined,\n }\n : undefined\n }\n />\n </FormModal>\n );\n};\n\nexport default CreateActionModal;\n"],"names":["CreateActionModal","open","onClose","onCreated","variant","prefill","lockPrefill","lockedContext","scopeModeProp","varietyLabel","titlePlaceholder","descriptionPlaceholder","metricPlaceholder","noneScopeHint","titleProp","okTextProp","dimensionOptions","loaders","emptyAssigneeHint","emptyAllocatorHint","onSubmit","onAllocatorConfirmed","defaultStatus","defaultDueDays","width","zIndex","saving","setSaving","useState","assigneeOptsRef","useRef","allocatorOptsRef","onAssigneeOptionsReady","useCallback","opts","onAllocatorOptionsReady","isDispatch","useLocked","useNoneScope","scopeFactory","_a","scopeVariety","_b","scopeMetric","_c","lockScope","modalTitle","okText","formInitialData","useMemo","lockedFields","field","idx","_d","dayjs","addDaysYmd","handleSubmit","formData","checked","validateCreateActionPersons","message","createActionPersonWarnMessage","allocatorOpt","fromOptions","allocatorUserId","assigneeUserId","due","normalizeDueDateYmd","assignee","personDisplayName","allocator","factory","variety","metric","title","description","dimension","dimLabel","o","eventLabel","f","payload","actionId","err","code","jsx","FormModal","classNames","styles","CreateActionForm"],"mappings":"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"}
@@ -5,6 +5,8 @@ export type CreateActionPrefill = {
5
5
  variety?: string;
6
6
  metric?: string;
7
7
  title?: string;
8
+ /** 任务描述预填(质量预警认领/下发等) */
9
+ description?: string;
8
10
  dimension?: string;
9
11
  bizDate?: string;
10
12
  factoryCode?: string;
@@ -89,6 +91,8 @@ export type CreateActionLoaders = {
89
91
  */
90
92
  export type CreateActionSubmitPayload = {
91
93
  title: string;
94
+ /** 任务描述(可选) */
95
+ description?: string;
92
96
  dimension: string;
93
97
  status: string;
94
98
  assignee: string;