feat: use lucide icons

This commit is contained in:
xingyu4j
2025-11-13 18:36:35 +08:00
parent 83a5ca15b5
commit 7f84c42bcc
20 changed files with 58 additions and 58 deletions

View File

@@ -71,7 +71,7 @@ async function handleGenerateQrCode(row: MpAccountApi.Account) {
/** 清空 API 配额 */
async function handleCleanQuota(row: MpAccountApi.Account) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.processing', ['清空 API 配额']),
content: '正在清空 API 配额',
duration: 0,
});
try {

View File

@@ -103,7 +103,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
},
gridOptions: {
columns: useGridColumns(Number(msgType.value) as MsgType),
height: 'calc(100vh - 300px)',
height: 'auto',
keepSource: true,
proxyConfig: {
ajax: {

View File

@@ -39,7 +39,7 @@ defineExpose({
<img :src="mapImageUrl" alt="地图位置" />
</Row>
<Row class="mt-2">
<IconifyIcon icon="mdi:map-marker" class="mr-1" />
<IconifyIcon icon="lucide:map-pin" class="mr-1" />
{{ label }}
</Row>
</Col>

View File

@@ -298,7 +298,7 @@ watch(
<Button type="primary" @click="selectMaterialFun(item)">
选择
<template #icon>
<IconifyIcon icon="mdi:check-circle" />
<IconifyIcon icon="lucide:circle-check" />
</template>
</Button>
</Row>
@@ -325,7 +325,7 @@ watch(
<Button type="link" @click="selectMaterialFun(row)">
选择
<template #icon>
<IconifyIcon icon="mdi:plus" />
<IconifyIcon icon="lucide:plus" />
</template>
</Button>
</template>
@@ -342,7 +342,7 @@ watch(
<Button type="link" @click="selectMaterialFun(row)">
选择
<template #icon>
<IconifyIcon icon="mdi:plus-circle" />
<IconifyIcon icon="lucide:circle-plus" />
</template>
</Button>
</template>
@@ -360,7 +360,7 @@ watch(
<Button type="primary" @click="selectMaterialFun(item)">
选择
<template #icon>
<IconifyIcon icon="mdi:check-circle" />
<IconifyIcon icon="lucide:circle-check" />
</template>
</Button>
</Row>

View File

@@ -45,7 +45,7 @@ defineProps<{
<div v-else-if="item.type === MsgType.Link" class="flex flex-col gap-2">
<a :href="item.url" target="_blank" class="text-success no-underline">
<div class="flex items-center text-sm font-medium text-[#52c41a]">
<IconifyIcon icon="mdi:link" class="mr-1" />
<IconifyIcon icon="lucide:link" class="mr-1" />
{{ item.title }}
</div>
</a>

View File

@@ -108,7 +108,7 @@ function selectMaterial(item: any) {
<Row class="ope-row" justify="center">
<Button danger shape="circle" @click="onDelete">
<template #icon>
<IconifyIcon icon="mdi:delete" />
<IconifyIcon icon="lucide:trash-2" />
</template>
</Button>
</Row>
@@ -121,7 +121,7 @@ function selectMaterial(item: any) {
<Button type="primary" @click="showDialog = true">
素材库选择
<template #icon>
<IconifyIcon icon="mdi:check-circle" />
<IconifyIcon icon="lucide:circle-check" />
</template>
</Button>
<Modal
@@ -152,7 +152,7 @@ function selectMaterial(item: any) {
<Button type="primary">
上传图片
<template #icon>
<IconifyIcon icon="mdi:upload" />
<IconifyIcon icon="lucide:upload" />
</template>
</Button>
</Upload>

View File

@@ -114,7 +114,7 @@ function selectMaterial(item: any) {
/>
<IconifyIcon
v-else
icon="mdi:plus"
icon="lucide:plus"
:size="40"
class="text-gray-400"
/>

View File

@@ -50,7 +50,7 @@ function onDelete() {
<Col class="ope-row">
<Button danger shape="circle" @click="onDelete">
<template #icon>
<IconifyIcon icon="mdi:delete" />
<IconifyIcon icon="lucide:trash-2" />
</template>
</Button>
</Col>
@@ -67,7 +67,7 @@ function onDelete() {
: '选择草稿箱图文'
}}
<template #icon>
<IconifyIcon icon="mdi:check-circle" />
<IconifyIcon icon="lucide:circle-check" />
</template>
</Button>
</Col>

View File

@@ -140,7 +140,7 @@ function selectMaterial(item: any) {
<Button type="primary" @click="showDialog = true">
素材库选择
<template #icon>
<IconifyIcon icon="mdi:check-circle" />
<IconifyIcon icon="lucide:circle-check" />
</template>
</Button>
<Modal
@@ -171,7 +171,7 @@ function selectMaterial(item: any) {
<Button type="primary">
新建视频
<template #icon>
<IconifyIcon icon="mdi:upload" />
<IconifyIcon icon="lucide:upload" />
</template>
</Button>
</Upload>

View File

@@ -109,7 +109,7 @@ function selectMaterial(item: Reply) {
<Row class="ope-row" justify="center">
<Button danger shape="circle" @click="onDelete">
<template #icon>
<IconifyIcon icon="mdi:delete" />
<IconifyIcon icon="lucide:trash-2" />
</template>
</Button>
</Row>
@@ -121,7 +121,7 @@ function selectMaterial(item: Reply) {
<Button type="primary" @click="showDialog = true">
素材库选择
<template #icon>
<IconifyIcon icon="mdi:check-circle" />
<IconifyIcon icon="lucide:circle-check" />
</template>
</Button>
<Modal
@@ -152,7 +152,7 @@ function selectMaterial(item: Reply) {
<Button type="primary">
点击上传
<template #icon>
<IconifyIcon icon="mdi:upload" />
<IconifyIcon icon="lucide:upload" />
</template>
</Button>
</Upload>

View File

@@ -89,7 +89,7 @@ defineExpose({
<Tabs.TabPane :key="ReplyType.Text">
<template #tab>
<Row align="middle">
<IconifyIcon icon="mdi:text" class="mr-1" />
<IconifyIcon icon="lucide:file-text" class="mr-1" />
文本
</Row>
</template>
@@ -100,7 +100,7 @@ defineExpose({
<Tabs.TabPane :key="ReplyType.Image">
<template #tab>
<Row align="middle">
<IconifyIcon icon="mdi:image" class="mr-1" />
<IconifyIcon icon="lucide:image" class="mr-1" />
图片
</Row>
</template>
@@ -111,7 +111,7 @@ defineExpose({
<Tabs.TabPane :key="ReplyType.Voice">
<template #tab>
<Row align="middle">
<IconifyIcon icon="mdi:microphone" class="mr-1" />
<IconifyIcon icon="lucide:mic" class="mr-1" />
语音
</Row>
</template>
@@ -122,7 +122,7 @@ defineExpose({
<Tabs.TabPane :key="ReplyType.Video">
<template #tab>
<Row align="middle">
<IconifyIcon icon="mdi:video" class="mr-1" />
<IconifyIcon icon="lucide:video" class="mr-1" />
视频
</Row>
</template>
@@ -133,7 +133,7 @@ defineExpose({
<Tabs.TabPane :key="ReplyType.News">
<template #tab>
<Row align="middle">
<IconifyIcon icon="mdi:newspaper" class="mr-1" />
<IconifyIcon icon="lucide:newspaper" class="mr-1" />
图文
</Row>
</template>
@@ -144,7 +144,7 @@ defineExpose({
<Tabs.TabPane :key="ReplyType.Music">
<template #tab>
<Row align="middle">
<IconifyIcon icon="mdi:music" class="mr-1" />
<IconifyIcon icon="lucide:music" class="mr-1" />
音乐
</Row>
</template>

View File

@@ -26,7 +26,7 @@ function playVideo() {
<div class="cursor-pointer" @click="playVideo()">
<!-- 提示 -->
<div class="flex items-center">
<IconifyIcon icon="mdi:play-circle" :size="32" class="mr-2" />
<IconifyIcon icon="lucide:circle-play" :size="32" class="mr-2" />
<p class="text-sm">点击播放视频</p>
</div>

View File

@@ -68,8 +68,12 @@ function amrStop() {
<!-- 微信消息 - 语音播放 -->
<div class="wx-voice-div cursor-pointer" @click="playVoice">
<div class="flex items-center">
<IconifyIcon v-if="playing !== true" icon="mdi:play-circle" :size="32" />
<IconifyIcon v-else icon="mdi:pause-circle" :size="32" />
<IconifyIcon
v-if="playing !== true"
icon="lucide:circle-play"
:size="32"
/>
<IconifyIcon v-else icon="lucide:circle-pause" :size="32" />
<span v-if="duration" class="amr-duration">{{ duration }} </span>
</div>
<div v-if="content" class="mt-2">

View File

@@ -35,7 +35,7 @@ const { hasAccessByCodes } = useAccess();
@click="emit('delete', item.id)"
>
<template #icon>
<IconifyIcon icon="mdi:delete" />
<IconifyIcon icon="lucide:trash-2" />
</template>
</Button>
</div>

View File

@@ -89,7 +89,7 @@ const customRequest: UploadProps['customRequest'] = async function (options) {
class="mb-4"
>
<Button type="primary">
<IconifyIcon icon="mdi:upload" class="mr-1" />
<IconifyIcon icon="lucide:upload" class="mr-1" />
点击上传
</Button>
<template #itemRender="{ file, actions }">

View File

@@ -126,7 +126,7 @@ const customRequest: UploadProps['customRequest'] = async function (options) {
class="mb-4"
>
<Button type="primary">
<IconifyIcon icon="mdi:video-plus" class="mr-1" />
<IconifyIcon icon="lucide:video" class="mr-1" />
选择视频
</Button>
</Upload>

View File

@@ -5,7 +5,7 @@ import { watch } from 'vue';
import { useAccess } from '@vben/access';
import { IconifyIcon } from '@vben/icons';
import { formatDate2 } from '@vben/utils';
import { formatDate2, openWindow } from '@vben/utils';
import { Button } from 'ant-design-vue';
@@ -90,10 +90,6 @@ const [Grid, gridApi] = useVbenVxeGrid({
} as VxeTableGridOptions<any>, // TODO @dylan这里有个告警哈
});
function handleDownload(url: string) {
window.open(url, '_blank');
}
watch(
() => props.list,
(list: any[]) => {
@@ -125,8 +121,8 @@ watch(
{{ formatDate2(row.createTime) }}
</template>
<template #actions="{ row }">
<Button type="link" @click="handleDownload(row.url)">
<IconifyIcon icon="mdi:download" />
<Button type="link" @click="openWindow(row.url)">
<IconifyIcon icon="lucide:download" />
下载
</Button>
<Button
@@ -135,7 +131,7 @@ watch(
type="link"
@click="emit('delete', row.id)"
>
<IconifyIcon icon="mdi:delete" />
<IconifyIcon icon="lucide:trash-2" />
删除
</Button>
</template>

View File

@@ -5,7 +5,7 @@ import { watch } from 'vue';
import { useAccess } from '@vben/access';
import { IconifyIcon } from '@vben/icons';
import { formatDate2 } from '@vben/utils';
import { formatDate2, openWindow } from '@vben/utils';
import { Button } from 'ant-design-vue';
@@ -78,10 +78,6 @@ const [Grid, gridApi] = useVbenVxeGrid({
} as VxeTableGridOptions<any>, // TODO @dylan这里有个告警哈
});
function handleDownload(url: string) {
window.open(url, '_blank');
}
watch(
() => props.list,
(list: any[]) => {
@@ -113,8 +109,8 @@ watch(
{{ formatDate2(row.createTime) }}
</template>
<template #actions="{ row }">
<Button type="link" @click="handleDownload(row.url)">
<IconifyIcon icon="mdi:download" />
<Button type="link" @click="openWindow(row.url)">
<IconifyIcon icon="lucide:download" />
下载
</Button>
<Button
@@ -123,7 +119,7 @@ watch(
type="link"
@click="emit('delete', row.id)"
>
<IconifyIcon icon="mdi:delete" />
<IconifyIcon icon="lucide:trash-2" />
删除
</Button>
</template>

View File

@@ -2,7 +2,7 @@
import { provide, reactive, ref } from 'vue';
import { useAccess } from '@vben/access';
import { Page } from '@vben/common-ui';
import { DocAlert, Page } from '@vben/common-ui';
import { IconifyIcon } from '@vben/icons';
import {
@@ -99,6 +99,9 @@ async function handleDelete(id: number) {
<template>
<Page auto-content-height>
<template #doc>
<DocAlert title="公众号素材" url="https://doc.iocoder.cn/mp/material/" />
</template>
<div class="h-full">
<!-- 搜索工作栏 -->
<Card class="h-[10%]" :bordered="false">
@@ -109,13 +112,13 @@ async function handleDelete(id: number) {
</Form>
</Card>
<Card :bordered="false" class="mt-4 h-[90%]">
<Card :bordered="false" class="mt-4 h-[88%]">
<Tabs v-model:active-key="type" @change="onTabChange">
<!-- tab 1图片 -->
<Tabs.TabPane :key="UploadType.Image">
<template #tab>
<span class="flex items-center">
<IconifyIcon icon="mdi:image" class="mr-1" />
<IconifyIcon icon="lucide:image" class="mr-1" />
图片
</span>
</template>
@@ -149,7 +152,7 @@ async function handleDelete(id: number) {
<Tabs.TabPane :key="UploadType.Voice">
<template #tab>
<span class="flex items-center">
<IconifyIcon icon="mdi:microphone" class="mr-1" />
<IconifyIcon icon="lucide:mic" class="mr-1" />
语音
</span>
</template>
@@ -183,7 +186,7 @@ async function handleDelete(id: number) {
<Tabs.TabPane :key="UploadType.Video">
<template #tab>
<span class="flex items-center">
<IconifyIcon icon="mdi:video" class="mr-1" />
<IconifyIcon icon="lucide:video" class="mr-1" />
视频
</span>
</template>

View File

@@ -9,6 +9,7 @@ import { getDictOptions } from '@vben/hooks';
import { IconifyIcon } from '@vben/icons';
import {
Button,
DatePicker,
Form,
FormItem,
@@ -106,7 +107,7 @@ function showTotal(total: number) {
<template>
<Page auto-content-height class="flex flex-col">
<!-- 搜索工作栏 -->
<div class="mb-4 rounded-lg bg-white p-4">
<div class="bg-background mb-4 rounded-lg p-4">
<Form
ref="queryFormRef"
:model="queryParams"
@@ -147,24 +148,24 @@ function showTotal(total: number) {
/>
</FormItem>
<FormItem>
<a-button type="primary" @click="handleQuery">
<Button type="primary" @click="handleQuery">
<template #icon>
<IconifyIcon icon="mdi:magnify" />
</template>
搜索
</a-button>
<a-button class="ml-2" @click="resetQuery">
</Button>
<Button class="ml-2" @click="resetQuery">
<template #icon>
<IconifyIcon icon="mdi:refresh" />
</template>
重置
</a-button>
</Button>
</FormItem>
</Form>
</div>
<!-- 列表 -->
<div class="flex-1 rounded-lg bg-white p-4">
<div class="bg-background flex-1 rounded-lg p-4">
<MessageTable :list="list" :loading="loading" @send="handleSend" />
<div v-show="total > 0" class="mt-4 flex justify-end">
<Pagination