feat(appicon): 应用图标 AppIcon 矢量选择器接入(YschAppIcons 资产库 10-04 轮)

- src/assets/appicon-icons.json:资产库图标清单
- src/components/AppIconPicker.vue:矢量图标+配色选择器(YschAppIcons mask 资产)
- AppForm.vue:平台模式 Pc 应用图标换 AppIconPicker(学校模式保留位图上传,学校覆盖线只收 pcIcon);App 位图图标移入高级折叠区(遗留通道,存量 pc_icon/app_icon 链路保留,新应用优先矢量图标键)
- AddAppContainer/EditAppContainer:配套接线
依据:根目录《AppIcon资产库落地-执行报告-20261004.md》P2 管理端图标选择器
This commit is contained in:
chenxing
2026-10-06 20:16:21 +08:00
parent efd55a3a75
commit b1dba84c49
5 changed files with 447 additions and 25 deletions
+5 -2
View File
@@ -34,7 +34,7 @@ const { form, loading: submitting, send: sendForm, onSuccess, onError } = useFor
data: dto,
params: props.schoolId != null ? { schoolId: props.schoolId } : undefined,
}),
{ initialForm: { id: null, name: '', categoryId: undefined, desc: '', appCode: '', appNature: 'BUSINESS', clients: [], pcUrl: '', pcIcon: '', appUrl: '', appIcon: '', officialAccountUrl: '', dingtalkUrl: '' }, resetAfterSubmiting: true }
{ initialForm: { id: null, name: '', categoryId: undefined, desc: '', appCode: '', appNature: 'BUSINESS', clients: [], pcUrl: '', pcIcon: '', appUrl: '', appIcon: '', iconKey: '', iconColor: '', officialAccountUrl: '', dingtalkUrl: '' }, resetAfterSubmiting: true }
);
onSuccess(() => {
@@ -68,7 +68,8 @@ async function handleSubmit(formData: Record<string, any>) {
if (!currentId.value) return;
if (isSchoolMode) {
// 学校模式:仅 名称/描述/Pc图标 三字段写学校覆盖表(后端 editAppForSchool 只读这三个);
// categoryId/appCode/appNature 原样回传仅为满足平台级 Update 校验(后端不落平台表),缺失会 400
// categoryId/appCode/appNature 原样回传仅为满足平台级 Update 校验(后端不落平台表),缺失会 400;
// iconKey/iconColor 不送键(后端 null=不改——学校线不动平台矢量配置)
form.value = {
id: currentId.value,
name: formData.name,
@@ -91,6 +92,8 @@ async function handleSubmit(formData: Record<string, any>) {
pcIcon: formData.pcIcon,
appUrl: formData.appUrl,
appIcon: formData.appIcon,
iconKey: formData.iconKey,
iconColor: formData.iconColor,
officialAccountUrl: formData.officialAccountUrl,
dingtalkUrl: formData.dingtalkUrl,
};