@hkyhy/marsun-components-core 0.1.140 → 0.1.141

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -136,7 +136,9 @@ node scripts/version-check.mjs --apply # → 0.1.99
136
136
 
137
137
  也可在 Actions 中手动运行 **Publish npm**,填写已有 tag 重新发布。
138
138
 
139
+ - 2026-10-29:`v0.1.141` — InboxBell 列表卡回退:去左侧色条、标题在类型 Tag 前、未读底 `#f8fbff`(对齐测试环境观感;npm publish)
139
140
  - 2026-10-29:`v0.1.140` — Table:列配置重排/增量列后归位 `fixed` 列,避免操作列 sticky 失效
141
+
140
142
  - 2026-10-23:`v0.1.138` — CreateActionForm:`allocatorDisabled` / `defaultAssigneeUserId`(Related S3-1523)
141
143
  - 2026-10-22:`v0.1.137` — InboxBell:`action_assigned_ack` 恒「查看任务」(禁「去执行」);Related S3-1721
142
144
  - 2026-10-21:`v0.1.136` — MessageCenter 推送规则级别改为业务 DI `levelOptions`(禁写死 L1/L2/L3;S3 可注入 L2+)
@@ -1,10 +1,10 @@
1
1
  import { jsx as Y } from "react/jsx-runtime";
2
2
  import { useState as Mt, useRef as x, useCallback as z, useMemo as bt } from "react";
3
- import { message as j } from "antd";
3
+ import { message as U } from "antd";
4
4
  import wt from "classnames";
5
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";
6
+ import Nt from "./CreateActionForm.js";
7
+ import { addDaysYmd as Ut, validateCreateActionPersons as jt, createActionPersonWarnMessage as Lt, normalizeDueDateYmd as Pt, personDisplayName as C } from "./submitHelpers.js";
8
8
  import Rt from "./CreateActionModal.module.scss.js";
9
9
  import _t from "../../../FormInfo/FormModal.js";
10
10
  const Ct = ({
@@ -30,12 +30,12 @@ const Ct = ({
30
30
  onSubmit: st,
31
31
  onAllocatorConfirmed: I,
32
32
  defaultStatus: M = "approved",
33
- defaultDueDays: L = 7,
33
+ defaultDueDays: j = 7,
34
34
  width: et = 560,
35
35
  zIndex: nt = 1300
36
36
  }) => {
37
37
  var _, E, F;
38
- const [ct, N] = Mt(!1), P = x([]), R = x([]), at = z((o) => {
38
+ const [ct, L] = Mt(!1), P = x([]), R = x([]), at = z((o) => {
39
39
  P.current = o;
40
40
  }, []), it = z((o) => {
41
41
  R.current = o;
@@ -51,7 +51,7 @@ const Ct = ({
51
51
  status: M,
52
52
  allocatorUserId: "",
53
53
  assigneeUserId: "",
54
- dueDate: Bt(jt(L)),
54
+ dueDate: Bt(Ut(j)),
55
55
  factory: e || s ? "" : m,
56
56
  variety: e || s ? "" : y,
57
57
  metric: e || s ? "" : S,
@@ -69,21 +69,21 @@ const Ct = ({
69
69
  t == null ? void 0 : t.dimension,
70
70
  d,
71
71
  M,
72
- L
72
+ j
73
73
  ]), gt = async (o) => {
74
74
  var k, O, T;
75
- const c = Lt(
75
+ const c = jt(
76
76
  String(o.allocatorUserId || ""),
77
77
  String(o.assigneeUserId || ""),
78
78
  R.current,
79
79
  P.current
80
80
  );
81
81
  if (!c.ok)
82
- throw j.warning(Nt(c.code)), new Error(c.code);
82
+ throw U.warning(Lt(c.code)), new Error(c.code);
83
83
  const { allocator: v, assignee: g } = c, r = v.value, h = g.value;
84
- I == null || I(r), N(!0);
84
+ I == null || I(r), L(!0);
85
85
  try {
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 = {
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((N) => N.value === B)) == null ? void 0 : O.label) == null ? void 0 : T.trim()) || B, ht = e ? (i || []).map((N) => N.value).filter(Boolean).join(" · ") : s ? [H, St].filter(Boolean).join(" · ") : [b, A, w].filter(Boolean).join(" · "), kt = {
87
87
  title: H,
88
88
  description: yt || void 0,
89
89
  dimension: B,
@@ -97,17 +97,18 @@ const Ct = ({
97
97
  factory: b,
98
98
  variety: A,
99
99
  metric: w,
100
- factoryCode: s ? void 0 : (t == null ? void 0 : t.factoryCode) || void 0,
101
- factoryName: b || void 0,
100
+ // form/locked 的 factory 即厂码(下拉 value);勿把码误写入 factoryName
101
+ factoryCode: s ? void 0 : b || (t == null ? void 0 : t.factoryCode) || void 0,
102
+ factoryName: s ? void 0 : (t == null ? void 0 : t.factoryName) || void 0,
102
103
  verifyMetric: w || void 0,
103
104
  eventLabel: ht
104
105
  }, It = await st(kt);
105
- j.success(u ? "已下发任务" : "已创建跟踪任务"), $(It);
106
+ U.success(u ? "已下发任务" : "已创建跟踪任务"), $(It);
106
107
  } catch (n) {
107
108
  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;
109
+ throw a === "missing_allocator" || a === "invalid_allocator" || a === "missing_assignee" || a === "invalid_assignee" || U.error(n instanceof Error ? n.message : "创建失败"), n;
109
110
  } finally {
110
- N(!1);
111
+ L(!1);
111
112
  }
112
113
  };
113
114
  return /* @__PURE__ */ Y(
@@ -128,7 +129,7 @@ const Ct = ({
128
129
  onSubmit: gt
129
130
  },
130
131
  children: /* @__PURE__ */ Y(
131
- Ut,
132
+ Nt,
132
133
  {
133
134
  onAssigneeOptionsReady: at,
134
135
  onAllocatorOptionsReady: it,
@@ -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 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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"}
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 // form/locked 的 factory 即厂码(下拉 value);勿把码误写入 factoryName\n factoryCode: useNoneScope ? undefined : factory || prefill?.factoryCode || undefined,\n factoryName: useNoneScope ? undefined : prefill?.factoryName || 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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"}
@@ -10,6 +10,8 @@ export type CreateActionPrefill = {
10
10
  dimension?: string;
11
11
  bizDate?: string;
12
12
  factoryCode?: string;
13
+ /** 分厂展示名(与 factoryCode 分离;提交勿把厂码写入此字段) */
14
+ factoryName?: string;
13
15
  };
14
16
  /** 分厂/品种/指标只读锁定 */
15
17
  export type CreateActionScopeLock = {