Browse Source

```

feat(vite): 配置purge-icons插件支持本地图标和安全列表

- 导入iconify安全列表配置
- 配置purgeIcons插件使用本地图标源
- 添加included配置项以包含安全列表中的图标

fix(icon): 优化图标组件错误处理逻辑

- 简化图标加载失败时的DOM创建逻辑
- 统一错误状态下的图标显示方式

chore(icons): 替换项目中的图标为Ant Design图标

- 将模型列表页面的状态图标从Material Symbols替换为Ant Design图标
- 将日历图标从Solar替换为Ant Design图标
- 将通知页面的按钮图标从Solar替换为Ant Design图标
```
pull/90/head
chenjiale 3 weeks ago
parent
commit
36b71fe0d5
  1. 6
      build/vite/plugin/index.ts
  2. 3
      src/assets/iconify/safelist.ts
  3. 4
      src/components/Icon/src/Icon.vue
  4. 4
      src/views/model/list/ModelCard.vue
  5. 4
      src/views/system/notify/my/index.vue

6
build/vite/plugin/index.ts

@ -10,6 +10,7 @@ import { configHtmlPlugin } from './html'
import { configCompressPlugin } from './compress'
import { configVisualizerConfig } from './visualizer'
import { configSvgIconsPlugin } from './svgSprite'
import { iconifySafelist } from '../../src/assets/iconify/safelist'
export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
const { VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv
@ -35,7 +36,10 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
vitePlugins.push(configSvgIconsPlugin(isBuild))
// vite-plugin-purge-icons
vitePlugins.push(purgeIcons())
vitePlugins.push(purgeIcons({
iconSource: 'local',
included: iconifySafelist,
}))
// rollup-plugin-visualizer
vitePlugins.push(configVisualizerConfig())

3
src/assets/iconify/safelist.ts

@ -0,0 +1,3 @@
export const iconifySafelist: string[] = [
// Add backend menu icon names here to keep them in offline builds.
]

4
src/components/Icon/src/Icon.vue

@ -47,15 +47,15 @@ async function update() {
if (svg) {
el.textContent = ''
el.appendChild(svg)
return
}
else {
const span = document.createElement('span')
span.className = 'iconify-missing'
span.title = icon
el.textContent = ''
el.appendChild(span)
}
}
const getWrapStyle = computed((): CSSProperties => {
const { size, color } = props

4
src/views/model/list/ModelCard.vue

@ -37,7 +37,7 @@ const modelCardList = ref<Array<ModelItem>>([])
const lastQuery = ref<ModelQueryParams | null>(null)
const colors = ['#8dc63f', '#dbb09e']
const statusStr = ['未下装', '已下装']
const statusIcons = ['material-symbols:lock-open', 'material-symbols:lock']
const statusIcons = ['ant-design:unlock-outlined', 'ant-design:lock-outlined']
function buildQuery(value: any): ModelQueryParams {
return {
@ -134,7 +134,7 @@ function goCreateModel() {
{{ item.creator || '未知' }}
</span>
<span class="meta-item">
<Icon icon="solar:calendar-bold" :size="16" class="meta-icon" />
<Icon icon="ant-design:calendar-outlined" :size="16" class="meta-icon" />
{{ item.createTime || '--' }}
</span>
</div>

4
src/views/system/notify/my/index.vue

@ -91,10 +91,10 @@ function handleInfo(record: any) {
<BasicTable bordered @register="registerTable">
<template #toolbar>
<a-button pre-icon="solar:check-read-line-duotone" type="primary" :disabled="readedDisabled" @click="handleUpdateList">
<a-button pre-icon="ant-design:check-circle-outlined" type="primary" :disabled="readedDisabled" @click="handleUpdateList">
标记已读
</a-button>
<a-button pre-icon="solar:check-read-linear" type="primary" @click="handleUpdateAll">
<a-button pre-icon="ant-design:check-outlined" type="primary" @click="handleUpdateAll">
全部已读
</a-button>
</template>

Loading…
Cancel
Save