feat(appicon): AppIcon 资产库接入(应用网格矢量图标渲染,YschAppIcons 10-04 轮 P3)
- AppIcon.vue:矢量图标渲染组件(iconKey+iconColor → mask data-uri,无键无 URL 回退关键词映射占位) - constants/appIconRules.ts:应用名关键词→图标键兜底映射(D4,两端各持一份,与 MobilePortal 关键词列一致;仅 icon_key 未配置且无 URL 时生效,有 URL 恒定位图零回归) - AppList/SearchPanel/index:应用网格与搜索结果图标位换 AppIcon - appicon.mask.css:资产库 mask 样式;yunhai-logo.svg:站点 Logo 矢量件 - main.scss/_app_container.scss:网格图标容器样式配套 依据:根目录《AppIcon资产库落地-执行报告-20261004.md》P3 UserHome(PC)接入
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<template>
|
||||
<i class="appicon" :class="classes" :style="styles" aria-hidden="true"></i>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
/**
|
||||
* 矢量应用图标(AppIcon 资产库,CSS mask 版)。
|
||||
* - name:资产库图标键(appicon-<名>,形状来自全局 appicon.mask.css,data-uri 自包含)
|
||||
* - scene:tile 方块底 / circle 正圆底 / plain 无底线性(三档端侧 token,见 _app_container.scss)
|
||||
* - tint:人工配置色(application_info.icon_color)——tile/circle 覆盖底色、plain 覆盖图标色;空=场景默认
|
||||
* 渲染契约(方案 §4):图标资源只管形状,容器管底色与图标色。
|
||||
*/
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
name?: string;
|
||||
scene?: "tile" | "circle" | "plain";
|
||||
tint?: string;
|
||||
}>(), {
|
||||
name: "",
|
||||
scene: "tile",
|
||||
tint: "",
|
||||
});
|
||||
|
||||
const classes = computed(() => [
|
||||
`appicon-${props.scene}`,
|
||||
...(props.name ? [`appicon-${props.name}`] : []),
|
||||
]);
|
||||
|
||||
const styles = computed<Record<string, string> | undefined>(() => {
|
||||
if (!props.tint) return undefined;
|
||||
return props.scene === "plain"
|
||||
? { color: props.tint }
|
||||
: { backgroundColor: props.tint };
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user