|
|
@@ -38,6 +38,9 @@ const FALLBACK_PAGE_COPY = {
|
|
|
errors: {
|
|
|
saveFailed: '保存失败',
|
|
|
},
|
|
|
+ success: {
|
|
|
+ saveSucceeded: '保存成功',
|
|
|
+ },
|
|
|
submitTitle: '保存模板信息',
|
|
|
submitLead: '保存后可继续查看模板详情与使用结果。',
|
|
|
statusOptions: {
|
|
|
@@ -76,6 +79,7 @@ export function TemplateEditPage() {
|
|
|
const [description, setDescription] = useState('')
|
|
|
const [saving, setSaving] = useState(false)
|
|
|
const [error, setError] = useState('')
|
|
|
+ const [successMessage, setSuccessMessage] = useState('')
|
|
|
|
|
|
useEffect(() => {
|
|
|
let cancelled = false
|
|
|
@@ -124,6 +128,7 @@ export function TemplateEditPage() {
|
|
|
|
|
|
setSaving(true)
|
|
|
setError('')
|
|
|
+ setSuccessMessage('')
|
|
|
|
|
|
try {
|
|
|
const updated = await updateTemplateBasicInfo(params.templateId, {
|
|
|
@@ -143,7 +148,9 @@ export function TemplateEditPage() {
|
|
|
setCategory(updated.category)
|
|
|
setTags(toTagInput(updated.tags))
|
|
|
setDescription(updated.description)
|
|
|
+ setSuccessMessage(pageCopy.success?.saveSucceeded ?? FALLBACK_PAGE_COPY.success.saveSucceeded)
|
|
|
} catch (err) {
|
|
|
+ setSuccessMessage('')
|
|
|
setError(err instanceof Error ? err.message : pageCopy.errors.saveFailed)
|
|
|
} finally {
|
|
|
setSaving(false)
|
|
|
@@ -225,6 +232,11 @@ export function TemplateEditPage() {
|
|
|
|
|
|
<section className="pt-0">
|
|
|
<div className="container">
|
|
|
+ {successMessage ? (
|
|
|
+ <p className="fs-14 text-green mb-3" role="status" aria-live="polite">
|
|
|
+ {successMessage}
|
|
|
+ </p>
|
|
|
+ ) : null}
|
|
|
{error ? (
|
|
|
<p className="fs-14 text-red mb-3" role="alert">
|
|
|
{error}
|