feat: 新增svg组件,批量替换
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="pl-16px h-full flex flex-col overflow-y-auto">
|
||||
<div class="back-wap cursor-pointer mb-17px mt--3px !w-fit" @click="goChatIndex">
|
||||
<icon-left size="16" class="color-#737478 mr-4px" />
|
||||
<SvgIcon name="xt-left" size="16" class="color-#737478 mr-4px" />
|
||||
<span class="cs">返回空间</span>
|
||||
</div>
|
||||
<div class="workflow-container">
|
||||
@ -53,8 +53,8 @@
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { getChatAgent } from '@/api/all/agent';
|
||||
import { useRouter } from 'vue-router';
|
||||
import menuFold from '@/assets/svg/menu-fold.svg';
|
||||
import menuUnfold from '@/assets/svg/menu-unfold.svg';
|
||||
import menuFold from '@/assets/svg/xt-menu-fold.svg';
|
||||
import menuUnfold from '@/assets/svg/xt-menu-unfold.svg';
|
||||
import { Tooltip } from 'ant-design-vue';
|
||||
import { formatNumberShow } from '@/utils/tools';
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
class="absolute right-0 top-4px !w-400px"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search @click="getData()" />
|
||||
<SvgIcon name="xt-search" @click="getData()" />
|
||||
</template>
|
||||
</Input>
|
||||
<div v-for="(item, index) in list" :key="index">
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="h-full overflow-hidden flex flex-col">
|
||||
<div class="back-wap cursor-pointer mb-20px" @click="goChatIndex">
|
||||
<icon-left size="16" class="color-#737478 mr-4px" />
|
||||
<SvgIcon name="xt-left" size="16" class="color-#737478 mr-4px" />
|
||||
<span class="cs">返回空间</span>
|
||||
</div>
|
||||
<div class="workflow-container flex-1">
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<span class="title mr-4px">行业词云</span>
|
||||
<Tooltip>
|
||||
<template #title>基于行业内内容提取的高频词汇。</template>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<span class="title mr-4px">行业热门话题洞察</span>
|
||||
<Tooltip>
|
||||
<template #title>基于社交内容平台的行业数据,分析用户关注的热门话题与趋势。</template>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<Table
|
||||
@ -61,7 +61,7 @@
|
||||
<span class="mr-8px">热度指数</span>
|
||||
<Tooltip>
|
||||
<template #title>综合话题出现频次、互动数据(如点赞、收藏、评论)加权计算的热度得分。</template>
|
||||
<icon-question-circle size="14" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</template>
|
||||
@ -72,7 +72,7 @@
|
||||
<template #title
|
||||
>统计该行业下全部内容的情绪分布,选取占比最高的情绪类型作为该话题的整体情感倾向。</template
|
||||
>
|
||||
<icon-question-circle size="14" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</template>
|
||||
@ -165,7 +165,6 @@ import star5 from '@/assets/img/hottranslation/star-fill5.png';
|
||||
import top1 from '@/assets/img/captcha/top1.svg';
|
||||
import top2 from '@/assets/img/captcha/top2.svg';
|
||||
import top3 from '@/assets/img/captcha/top3.svg';
|
||||
import { IconQuestionCircle, IconArrowUp, IconArrowDown } from '@arco-design/web-vue/es/icon';
|
||||
// 新增排序状态和函数
|
||||
const heatSortDirection = ref('desc'); // 默认降序排列
|
||||
const columns = [
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
<template #title
|
||||
>基于该行业中近期提及频次高、用户互动活跃的品牌内容,筛选出关注度较高的代表性品牌。</template
|
||||
>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<Table
|
||||
@ -42,8 +42,8 @@
|
||||
</template>
|
||||
<template v-else-if="column.slotName === 'trend'" #customRender="{ record }">
|
||||
<div class="flex items-center" :class="record.trend > 0 ? 'color-#F64B31' : 'color-#25C883'">
|
||||
<icon-arrow-up v-if="record.trend > 0" size="16" />
|
||||
<icon-arrow-down v-else size="16" />
|
||||
<SvgIcon name="xt-arrow-up" v-if="record.trend > 0" size="16" />
|
||||
<SvgIcon name="xt-arrow-down" v-else size="16" />
|
||||
{{ `${(record.trend * 100).toFixed(2)}%` }}
|
||||
</div>
|
||||
</template>
|
||||
@ -55,7 +55,7 @@
|
||||
<span>热度指数</span>
|
||||
<Tooltip>
|
||||
<template #title>综合话题出现频次、互动数据(如点赞、收藏、评论)加权计算的热度得分。</template>
|
||||
<icon-question-circle size="14" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -64,7 +64,7 @@
|
||||
<span>变化幅度</span>
|
||||
<Tooltip>
|
||||
<template #title>仅基于品牌出现频次。</template>
|
||||
<icon-question-circle size="14" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -73,7 +73,7 @@
|
||||
<span>占总声量比例</span>
|
||||
<Tooltip>
|
||||
<template #title>该品牌在当前周期内被提及的内容量,占整个行业内容总量的比例。</template>
|
||||
<icon-question-circle size="14" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -94,7 +94,7 @@
|
||||
<template #title
|
||||
>基于情绪分析与敏感词识别,对行业内容中的负面或争议性话题进行监测,辅助判断舆情风险动态。</template
|
||||
>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<span class="title mr-4px">关键词热度榜</span>
|
||||
<Tooltip>
|
||||
<template #title>基于该行业用户内容中提及频率较高的关键词,按热度进行排序,反映近期关注焦点。</template>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
<span>热度指数</span>
|
||||
<Tooltip>
|
||||
<template #title>综合话题出现频次、互动数据(如点赞、收藏、评论)加权计算的热度得分。</template>
|
||||
<icon-question-circle size="14" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -40,7 +40,7 @@
|
||||
<span>变化幅度</span>
|
||||
<Tooltip>
|
||||
<template #title>仅基于关键词出现频次。</template>
|
||||
<icon-question-circle size="14" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -64,8 +64,8 @@
|
||||
</template>
|
||||
<template #tred="{ record }">
|
||||
<div class="flex items-center" :class="record.trend > 0 ? 'color-#F64B31' : 'color-#25C883'">
|
||||
<icon-arrow-up v-if="record.trend > 0" size="16" />
|
||||
<icon-arrow-down v-else size="16" />
|
||||
<SvgIcon name="xt-arrow-up" v-if="record.trend > 0" size="16" />
|
||||
<SvgIcon name="xt-arrow-down" v-else size="16" />
|
||||
{{ `${(record.trend * 100).toFixed(2)}%` }}
|
||||
</div>
|
||||
</template>
|
||||
@ -82,7 +82,7 @@
|
||||
<template #title
|
||||
>对该行业下用户内容进行情绪分析,按情绪类别统计占比,提取占比最高者作为行业情绪代表。</template
|
||||
>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
@ -135,7 +135,7 @@
|
||||
<template #title
|
||||
>指当前周期中首次出现,或相较上一周期词频显著增长的关键词,反映近期出现的新关注点。</template
|
||||
>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
@ -185,7 +185,7 @@
|
||||
<span>当前热度指数</span>
|
||||
<Tooltip>
|
||||
<template #title>综合关键词出现频次、互动表现(如点赞、收藏、评论)加权计算的热度得分。</template>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -194,14 +194,14 @@
|
||||
<span>变化幅度</span>
|
||||
<Tooltip>
|
||||
<template #title>仅基于关键词出现频次。</template>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
<template #tred="{ record }">
|
||||
<div class="flex items-center" :class="record.trend > 0 ? 'color-#F64B31' : 'color-#25C883'">
|
||||
<icon-arrow-up v-if="record.trend > 0" size="16" />
|
||||
<icon-arrow-down v-else size="16" />
|
||||
<SvgIcon name="xt-arrow-up" v-if="record.trend > 0" size="16" />
|
||||
<SvgIcon name="xt-arrow-down" v-else size="16" />
|
||||
{{ `${(record.trend * 100).toFixed(2)}%` }}
|
||||
</div>
|
||||
</template>
|
||||
@ -236,8 +236,8 @@
|
||||
<div class="mb-12px flex items-center">
|
||||
<p class="cts !mr-16px flex-shrink-0 w-83px">变化幅度</p>
|
||||
<div class="flex items-center" :class="topicInfo.trend > 0 ? 'color-#F64B31' : 'color-#25C883'">
|
||||
<icon-arrow-up v-if="topicInfo.trend > 0" size="16" />
|
||||
<icon-arrow-down v-else size="16" />
|
||||
<SvgIcon name="xt-arrow-up" v-if="topicInfo.trend > 0" size="16" />
|
||||
<SvgIcon name="xt-arrow-down" v-else size="16" />
|
||||
{{ `${topicInfo.trend * 100}%` }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -75,14 +75,14 @@
|
||||
<Space style="margin-left: 'auto'">
|
||||
<Button type="primary" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px"/>
|
||||
<SvgIcon name="xt-search" class="mr-8px"/>
|
||||
</template>
|
||||
<!-- Use the default slot to avoid extra spaces -->
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button class="w-84px reset-btn" @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px"/>
|
||||
<SvgIcon name="xt-refresh" class="mr-8px"/>
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
<template #title
|
||||
>基于用户内容中的情绪分析与表达模式,提取反复出现的负面倾向主题,反映典型使用痛点。</template
|
||||
>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<Table
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
<span class="title mr-4px">性别分布</span>
|
||||
<Tooltip>
|
||||
<template #title>基于社交内容平台中用户资料、互动行为及语义特征进行智能识别与估算。</template>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<Space v-if="genderData.length > 0">
|
||||
@ -42,7 +42,7 @@
|
||||
<span class="title mr-4px">年龄分布</span>
|
||||
<Tooltip>
|
||||
<template #title>基于社交平台的公开信息、内容偏好与行为模式,通过算法进行年龄段归类和统计。</template>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<Space v-if="ageValueData.length > 0" align="center">
|
||||
@ -63,7 +63,7 @@
|
||||
<span class="title mr-4px">地域分布</span>
|
||||
<Tooltip>
|
||||
<template #title>基于社交平台的IP归属地、位置标签、内容发布地等数据推测用户活跃区域。</template>
|
||||
<icon-question-circle size="16" class="!color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="!color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<div class="flex">
|
||||
|
||||
@ -69,7 +69,7 @@ const getAllIcons = () => {
|
||||
};
|
||||
|
||||
const onCopySvg = (name) => {
|
||||
const context = `<SvgIcon name="${name}" size="14" class="color-#55585f"/>`;
|
||||
const context = `<SvgIcon name="${name}" size="14" class="color-#737478"/>`;
|
||||
copy(context);
|
||||
message.success('复制成功');
|
||||
};
|
||||
|
||||
@ -97,7 +97,7 @@ export default {
|
||||
<Drawer width={320} rootClassName="ct-history-conversation-drawer" v-model:open={open.value} onClose={onClose}>
|
||||
<header class="header h-40px px-12px flex justify-between items-center">
|
||||
<span class="text-12px font-400 color-#211F24 font-family-medium">历史对话</span>
|
||||
<icon-close size={16} class="color-#211F24 cursor-pointer" onClick={onClose} />
|
||||
<SvgIcon name="xt-close" size={16} class="color-#211F24 cursor-pointer" onClick={onClose} />
|
||||
</header>
|
||||
{dataSource.value.length === 0 ? (
|
||||
<NoData text="暂无历史对话" />
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
import { ref } from 'vue';
|
||||
import { Sender } from 'ant-design-x-vue';
|
||||
import { Tooltip } from 'ant-design-vue';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
interface SenderInputProps {
|
||||
modelValue?: string;
|
||||
@ -71,7 +72,7 @@ export default {
|
||||
isEmptyValue.value ? 'opacity-50' : ''
|
||||
}`}
|
||||
>
|
||||
<icon-arrow-right size={20} class="color-#FFFFFF" />
|
||||
<SvgIcon name="xt-arrow-right" size={20} class="color-#FFFFFF" />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<div class="w-full bg-#fff rounded-16px px-40px py-32px flex flex-col items-center">
|
||||
<div class="flex items-center mb-24px w-full">
|
||||
<div class="flex items-center cursor-pointer" @click="onBack">
|
||||
<icon-left class="mr-4px color-#000" size="24" />
|
||||
<SvgIcon name="xt-left" class="mr-4px color-#000" size="24" />
|
||||
<span class="color-#000 text-20px font-500 lh-28px font-family-medium">{{
|
||||
isResetPassword ? '重置密码' : '手机注册'
|
||||
}}</span>
|
||||
|
||||
@ -17,10 +17,10 @@ import icon3 from '@/assets/img/error-img.png';
|
||||
import icon4 from '@/assets/img/creative-generation-workshop/icon-avatar-default-v2.png';
|
||||
|
||||
const _iconMap = new Map([
|
||||
// [3, { icon: <icon-check-circle-fill size={16} class="color-#25C883 flex-shrink-0" /> }],
|
||||
[2, { icon: <icon-exclamation-circle-fill size={16} class="color-#F64B31 flex-shrink-0" /> }],
|
||||
[1, { icon: <icon-exclamation-circle-fill size={16} class="color-#FFAE00 flex-shrink-0" /> }],
|
||||
[0, { icon: <icon-check-circle-fill size={16} class="color-#25C883 flex-shrink-0" /> }],
|
||||
// [3, { icon: <SvgIcon name="xt-check-circle-fill" size={16} class="color-#25C883 flex-shrink-0" /> }],
|
||||
[2, { icon: <SvgIcon name="xt-exclamation-circle-fill" size={16} class="color-#F64B31 flex-shrink-0" /> }],
|
||||
[1, { icon: <SvgIcon name="xt-exclamation-circle-fill" size={16} class="color-#FFAE00 flex-shrink-0" /> }],
|
||||
[0, { icon: <SvgIcon name="xt-check-circle-fill" size={16} class="color-#25C883 flex-shrink-0" /> }],
|
||||
]);
|
||||
|
||||
export default {
|
||||
@ -94,7 +94,7 @@ export default {
|
||||
}
|
||||
|
||||
return (
|
||||
<icon-delete
|
||||
<SvgIcon name="xt-delete"
|
||||
class="ml-12px cursor-pointer color-#55585F hover:color-#6D4CFE"
|
||||
size={16}
|
||||
onClick={() => deleteCommentModalRef.value?.open(id)}
|
||||
@ -121,7 +121,7 @@ export default {
|
||||
class="cts !color-#737478"
|
||||
/>
|
||||
</div>
|
||||
<icon-close size={16} class="color-#737478 cursor-pointer flex-shrink-0" onClick={closeReplay} />
|
||||
<SvgIcon name="xt-close" size={16} class="color-#737478 cursor-pointer flex-shrink-0" onClick={closeReplay} />
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
@ -292,11 +292,11 @@ export default {
|
||||
<img src={icon1} class="w-80px h-10.8px absolute bottom-1px left--9px" />
|
||||
</div>
|
||||
)}
|
||||
|
||||
<icon-menu-unfold
|
||||
<SvgIcon
|
||||
name="xt-menu-unfold"
|
||||
size={20}
|
||||
class="color-#55585F cursor-pointer hover:color-#6D4CFE absolute top-24px right-24px"
|
||||
onClick={() => emit('toggle', false)}
|
||||
class="color-#55585F cursor-pointer hover:color-#6D4CFE absolute top-24px right-24px"
|
||||
/>
|
||||
|
||||
{/**主体 */}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
import { Button } from 'ant-design-vue';
|
||||
import { Spin } from 'ant-design-vue';
|
||||
import AiSuggest from './components/ai-suggest/';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import { getShareWorksList, getShareWorksDetail, patchShareWorksConfirm } from '@/api/all/generationWorkshop.ts';
|
||||
import { convertVideoUrlToCoverUrl, exactFormatTime } from '@/utils/tools.ts';
|
||||
@ -225,7 +226,7 @@ export default {
|
||||
) : (
|
||||
<section class={`page-wrap relative ${isExpand.value ? 'expand' : ''}`}>
|
||||
<div class="fold-box cursor-pointer" onClick={() => (isExpand.value = true)}>
|
||||
<icon-menu-fold size={20} class="color-#55585F hover:color-#6D4CFE" />
|
||||
<SvgIcon name="xt-menu-fold" size={20} class="color-#55585F hover:color-#6D4CFE"/>
|
||||
</div>
|
||||
<section class="explore-detail-wrap pt-32px pb-52px flex flex-col items-center">
|
||||
<div class="flex justify-start flex-col w-full relative">
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
import { Tabs, TabPane, Button } from 'ant-design-vue';
|
||||
import ManuscriptList from './manuscript/list/index.vue';
|
||||
import ManuscriptCheckList from './manuscript/check-list/index.vue';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
import ShareManuscriptModal from '@/views/material-center/components/finished-products/manuscript/components/share-manuscript-modal/index.vue';
|
||||
import UploadManuscriptModal from '@/views/material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue';
|
||||
|
||||
@ -43,7 +44,7 @@ export default defineComponent({
|
||||
class="ml-12px"
|
||||
onClick={openUploadModal}
|
||||
v-slots={{
|
||||
icon: () => <icon-plus size="16" class="mr-8px" />,
|
||||
icon: () => <SvgIcon name="xt-plus" size="16" class="mr-8px" />,
|
||||
default: () => '上传内容稿件',
|
||||
}}
|
||||
/>
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</Space>
|
||||
@ -35,7 +35,7 @@
|
||||
<!-- @change="handleSearch"-->
|
||||
<!-- >-->
|
||||
<!-- <template #prefix>-->
|
||||
<!-- <icon-search />-->
|
||||
<!-- <SvgIcon name="xt-search" />-->
|
||||
<!-- </template>-->
|
||||
<!-- </Input>-->
|
||||
<!-- </Space>-->
|
||||
@ -83,13 +83,13 @@
|
||||
<div class="filter-row-item">
|
||||
<Button type="primary" ghost class="mr-12px" size="medium" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button size="medium" @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<script lang="jsx">
|
||||
import { Drawer, Image } from 'ant-design-vue';
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import icon1 from '@/assets/img/error-img.png';
|
||||
|
||||
@ -45,7 +46,7 @@ export default {
|
||||
<span class="mr-8px cts bold">批量审核列表</span>
|
||||
<span class="mr-8px cts !lh-22px !text-14px">{`共${dataSource.value.length}个`}</span>
|
||||
</div>
|
||||
<icon-menu-unfold size={16} class="color-##55585F cursor-pointer hover:color-#6D4CFE" onClick={onClose} />
|
||||
<SvgIcon name="xt-menu-unfold" size={16} class="color-##55585F cursor-pointer hover:color-#6D4CFE" onClick={onClose}/>
|
||||
</div>
|
||||
<div class="flex-1 overflow-y-auto px-24px">
|
||||
{dataSource.value.map((item) => (
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
<script lang="jsx">
|
||||
import axios from 'axios';
|
||||
import { Swiper, SwiperSlide } from 'swiper/vue';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
import { Button, Form, Input, FormItem, Tabs, message, Image, Upload, Spin } from 'ant-design-vue';
|
||||
import { IconLoading } from '@arco-design/web-vue/es/icon';
|
||||
import { LoadingOutlined } from '@ant-design/icons-vue';
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import HighlightTextarea from './highlight-textarea';
|
||||
|
||||
@ -174,7 +175,7 @@ export default {
|
||||
<Button type="primary" ghost class="w-123px check-btn" onClick={onAiReplace} disabled={isDisabled.value}>
|
||||
{aiReplaceLoading.value ? (
|
||||
<>
|
||||
<IconLoading size={14} />
|
||||
<LoadingOutlined style={{ fontSize: '14px' }} spin />
|
||||
<span class="ml-8px check-text">AI生成中</span>
|
||||
</>
|
||||
) : (
|
||||
@ -270,7 +271,8 @@ export default {
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<icon-close-circle-fill
|
||||
<SvgIcon
|
||||
name="xt-close-circle-fill"
|
||||
size={16}
|
||||
class="close-icon absolute top--8px right--8px hidden cursor-pointer color-#737478 hover:!color-#211F24 z-50"
|
||||
onClick={(e) => onDeleteImage(e, item, index)}
|
||||
@ -294,7 +296,7 @@ export default {
|
||||
<div class="flex justify-center mb-16px">
|
||||
{renderUpload(
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px color-#3C4043" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px color-#3C4043" />
|
||||
<span class="cts !color-#211F24">上传图片</span>
|
||||
</div>,
|
||||
)}
|
||||
@ -426,7 +428,7 @@ export default {
|
||||
<span>{item.label}</span>
|
||||
{
|
||||
// activeTab.value === item.value && aiReview.value?.violation_items.length > 0 && (
|
||||
// <icon-exclamation-circle-fill size={14} class="color-#F64B31 absolute right--10px top-0" />
|
||||
// <SvgIcon name="xt-exclamation-circle-fill" size={14} class="color-#F64B31 absolute right--10px top-0" />
|
||||
// )
|
||||
}
|
||||
</div>
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
<script lang="jsx">
|
||||
import { Button, message } from 'ant-design-vue';
|
||||
import { Spin } from 'ant-design-vue';
|
||||
import CancelCheckModal from './cancel-check-modal.vue';
|
||||
import CheckSuccessModal from './check-success-modal.vue';
|
||||
import HeaderCard from './components/header-card';
|
||||
import ContentCard from './components/content-card';
|
||||
import CheckListDrawer from './components/check-list-drawer';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import { slsWithCatch, rlsWithCatch, glsWithCatch } from '@/utils/stroage.ts';
|
||||
import useGetAiReviewResult from '@/hooks/useGetAiReviewResult.ts';
|
||||
@ -209,7 +209,7 @@ export default {
|
||||
<span class="cts color-#4E5969 cursor-pointer" onClick={onExit}>
|
||||
成品库
|
||||
</span>
|
||||
<icon-oblique-line size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<SvgIcon name="xt-oblique-line" size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<span class="cts bold !color-#1D2129">{`${workIds.value.length > 0 ? '批量' : ''}审核内容稿件`}</span>
|
||||
</div>
|
||||
{dataSource.value.length > 1 && (
|
||||
@ -217,7 +217,7 @@ export default {
|
||||
class="check-list-icon"
|
||||
onClick={() => checkListDrawerRef.value.open(dataSource.value, selectCardInfo.value)}
|
||||
>
|
||||
<icon-menu-fold size={16} class="color-#55585F icon mr-4px" />
|
||||
<SvgIcon name="xt-menu-fold" size={16} class="color-#55585F icon mr-4px" />
|
||||
<span class="cts !color-#211F24">审核列表</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -16,7 +16,8 @@
|
||||
>
|
||||
<div class="group-container relative rounded-8px w-100px h-100px">
|
||||
<img :src="file.url" class="object-cover w-full h-full border-1px border-#E6E6E8 rounded-8px" />
|
||||
<icon-close-circle-fill
|
||||
<SvgIcon
|
||||
name="xt-close-circle-fill"
|
||||
:size="16"
|
||||
class="absolute top--8px right--8px cursor-pointer hidden color-#939499 hidden group-hover:block z-50"
|
||||
@click="() => handleDeleteFile(index)"
|
||||
@ -35,7 +36,7 @@
|
||||
>
|
||||
<template #default>
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px color-#3C4043" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px color-#3C4043" />
|
||||
<span class="cts !color-#211F24">上传图片</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
<script lang="jsx">
|
||||
import axios from 'axios';
|
||||
import { Button, Form, FormItem, Input, message, Upload } from 'ant-design-vue';
|
||||
import { Loading3QuartersOutlined } from '@ant-design/icons-vue';
|
||||
// import CommonSelect from '@/components/common-select';
|
||||
// import { VueDraggable } from 'vue-draggable-plus';
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import ImgBox from './img-box';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import { formatFileSize, getVideoInfo, formatDuration, formatUploadSpeed } from '@/utils/tools';
|
||||
// import { getProjectList } from '@/api/all/propertyMarketing';
|
||||
@ -207,7 +209,7 @@ export default {
|
||||
>
|
||||
{formData.value.videoInfo.uploadStatus === ENUM_UPLOAD_STATUS.DEFAULT ? (
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px color-#3C4043" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px color-#3C4043" />
|
||||
<span class="cts !color-#211F24">上传视频</span>
|
||||
</div>
|
||||
) : (
|
||||
@ -238,7 +240,7 @@ export default {
|
||||
<div class="flex items-center mr-12px">
|
||||
{isUploading ? (
|
||||
<div class="w-80px h-80px flex items-center justify-center bg-#fff rounded-8px mr-16px">
|
||||
<icon-loading size="24" class="color-#B1B2B5" />
|
||||
<Loading3QuartersOutlined spin size="24" class="color-#B1B2B5 text-24px" />
|
||||
</div>
|
||||
) : (
|
||||
<img src={formData.value.videoInfo.poster} class="w-80 h-80 object-cover mr-16px rounded-8px" />
|
||||
@ -256,7 +258,7 @@ export default {
|
||||
) : (
|
||||
<div class="flex items-center">
|
||||
<div class="flex items-center mr-24px w-100px">
|
||||
<icon-loading size="16" class="color-#6D4CFE mr-8px" />
|
||||
<Loading3QuartersOutlined spin size="16" class="color-#6D4CFE mr-8px text-16px" />
|
||||
<span class="cts !color-#6D4CFE mr-4px">上传中</span>
|
||||
<span class="cts !color-#6D4CFE ">{formData.value.videoInfo.percent}%</span>
|
||||
</div>
|
||||
|
||||
@ -139,7 +139,7 @@ export default {
|
||||
<div class="flex items-center">
|
||||
<span>分享对象</span>
|
||||
<Tooltip title="可填写客户名称、昵称等,非必填" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478 ml-4px" size="14" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478 ml-4px" size="14" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
),
|
||||
|
||||
@ -4,6 +4,8 @@ import { useClipboard } from '@vueuse/core';
|
||||
import { getWriterLinksGenerate, getTemplateUrl, postWorksByLink, postWorksByFile } from '@/api/all/generationWorkshop';
|
||||
import { generateFullUrl } from '@/utils/tools';
|
||||
import { slsWithCatch } from '@/utils/stroage.ts';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
import { Loading3QuartersOutlined } from '@ant-design/icons-vue';
|
||||
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import icon1 from '@/assets/img/media-account/icon-feedback-fail.png';
|
||||
@ -240,7 +242,7 @@ export default {
|
||||
showUploadList={false}
|
||||
>
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px" />
|
||||
<span class="text mb-4px">点击或拖拽文件到此处上传</span>
|
||||
<span class="tip">支持文档(文本+图), 视频批量上传</span>
|
||||
</div>
|
||||
@ -256,7 +258,7 @@ export default {
|
||||
// 渲染加载状态
|
||||
const renderLoadingState = () => (
|
||||
<div class="flex flex-col items-center justify-center rounded-8px bg-#F7F8FA h-208px">
|
||||
<icon-loading size="48" class="!color-#6D4CFE mb-16px" />
|
||||
<Loading3QuartersOutlined spin class="!color-#6D4CFE mb-16px text-48px" />
|
||||
<p class="tip !text-#768893">上传过程耗时可能较长,请耐心等待;</p>
|
||||
<p class="tip !text-#768893">刷新页面将会终止本次数据的上传,请谨慎操作</p>
|
||||
</div>
|
||||
@ -282,7 +284,8 @@ export default {
|
||||
<img src={item.cover} width="32" height="32" class="rounded-3px mr-8px" />
|
||||
<TextOverTips class="text !text-left" context={item.title} />
|
||||
</div>
|
||||
<icon-delete
|
||||
<SvgIcon
|
||||
name="xt-delete"
|
||||
size="16px"
|
||||
class="color-#737478 cursor-pointer hover:!color-#211F24"
|
||||
onClick={() => onDelete(index)}
|
||||
|
||||
@ -163,7 +163,7 @@ export default {
|
||||
<span class="cts color-#4E5969 cursor-pointer" onClick={onBack}>
|
||||
{sourceInfo.value.title}
|
||||
</span>
|
||||
<icon-oblique-line size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<SvgIcon name="xt-oblique-line" size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<span class="cts bold !color-#1D2129">内容稿件详情</span>
|
||||
</div>
|
||||
<div class="flex-1 bg-#fff rounded-8px content">
|
||||
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
<span class="cts color-#4E5969 cursor-pointer" onClick={onCancel}>
|
||||
成品库
|
||||
</span>
|
||||
<icon-oblique-line size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<SvgIcon name="xt-oblique-line" size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<span class="cts bold !color-#1D2129">编辑内容稿件</span>
|
||||
</div>
|
||||
<div class="flex-1 overflow-y-auto p-24px bg-#fff rounded-8px ">
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -35,7 +35,7 @@
|
||||
<!-- @change="handleSearch"-->
|
||||
<!-- >-->
|
||||
<!-- <template #prefix>-->
|
||||
<!-- <icon-search />-->
|
||||
<!-- <SvgIcon name="xt-search" />-->
|
||||
<!-- </template>-->
|
||||
<!-- </Input>-->
|
||||
<!-- </div>-->
|
||||
@ -64,13 +64,13 @@
|
||||
<div class="filter-row-item">
|
||||
<Button type="primary" ghost class="mr-12px" size="medium" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button size="medium" @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
<script lang="jsx">
|
||||
import { Button, message } from 'ant-design-vue';
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import EditForm, { ENUM_UPLOAD_STATUS, INITIAL_VIDEO_INFO } from '../components/edit-form';
|
||||
import CancelUploadModal from './cancel-upload-modal.vue';
|
||||
import UploadSuccessModal from './upload-success-modal.vue';
|
||||
@ -273,7 +275,8 @@ export default {
|
||||
)}`}
|
||||
onClick={() => onSelect(item)}
|
||||
>
|
||||
<icon-close-circle-fill
|
||||
<SvgIcon
|
||||
name="xt-close-circle-fill"
|
||||
size={16}
|
||||
class="absolute top--8px right--8px color-#737478 hover:color-#211F24 hidden group-hover:block"
|
||||
onClick={(e) => onDelete(e, item, index)}
|
||||
|
||||
@ -8,6 +8,7 @@ const { Option } = Select;
|
||||
// import CommonSelect from '@/components/common-select';
|
||||
import ImgLazyLoad from '@/components/img-lazy-load';
|
||||
// import TextOverTips from '@/components/text-over-tips';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import axios from 'axios';
|
||||
import { formatFileSize, getVideoInfo, getFileExtension } from '@/utils/tools';
|
||||
@ -19,7 +20,7 @@ import {
|
||||
documentExtensions,
|
||||
} from '@/views/material-center/components/raw-material/constants';
|
||||
|
||||
// import icon1 from '@/assets/img/media-account/icon-delete.png';
|
||||
// import icon1 from '@/assets/img/media-account/SvgIcon name="xt-delete".png';
|
||||
import icon2 from '../../img/icon-no-text.png';
|
||||
|
||||
enum EnumUploadStatus {
|
||||
@ -464,7 +465,8 @@ export default defineComponent({
|
||||
customRender={({ text, record }) => {
|
||||
return (
|
||||
<div class="flex items-center justify-end">
|
||||
<icon-delete
|
||||
<SvgIcon
|
||||
name="xt-delete"
|
||||
class="mr-8px color-#737478 cursor-pointer"
|
||||
size="14"
|
||||
onClick={() => openDeleteModal(record)}
|
||||
@ -509,7 +511,7 @@ export default defineComponent({
|
||||
onDragleave={handleDragLeave}
|
||||
onDrop={handleDrop}
|
||||
>
|
||||
<icon-plus size="14" class="mb-10px color-#55585F" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-10px color-#55585F" />
|
||||
<span class="cts">点击或拖拽文件到此处上传</span>
|
||||
</div>
|
||||
</Upload>
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -36,7 +36,7 @@
|
||||
<!-- <span class="label">序号</span>-->
|
||||
<!-- <Input v-model:value="query.uid" class="!w-160px" placeholder="请输入序号" allowClear @change="handleSearch">-->
|
||||
<!-- <template #prefix>-->
|
||||
<!-- <icon-search />-->
|
||||
<!-- <SvgIcon name="xt-search" />-->
|
||||
<!-- </template>-->
|
||||
<!-- </Input>-->
|
||||
<!-- </div>-->
|
||||
@ -54,13 +54,13 @@
|
||||
<div class="filter-row-item">
|
||||
<Button type="primary" ghost class="mr-12px" size="medium" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button size="medium" @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
<template v-if="column.dataIndex === 'name'" #customRender="{ record }">
|
||||
@ -75,7 +75,7 @@
|
||||
</template>
|
||||
<template v-else-if="column.dataIndex === 'operation'" #customRender="{ record }">
|
||||
<div class="flex items-center">
|
||||
<icon-delete class="mr-8px color-#737478 cursor-pointer" size="14" @click="onDelete(record)" />
|
||||
<SvgIcon name="xt-delete" class="mr-8px color-#737478 cursor-pointer" size="14" @click="onDelete(record)" />
|
||||
<Button class="mr-8px !h-24px !px-12px" ghost size="small" type="primary" @click="onEdit(record)"
|
||||
>编辑
|
||||
</Button>
|
||||
@ -102,7 +102,7 @@ import TextOverTips from '@/components/text-over-tips';
|
||||
import HoverImagePreview from '@/components/hover-image-preview';
|
||||
import ImgLazyLoad from '@/components/img-lazy-load';
|
||||
|
||||
// import icon1 from '@/assets/img/media-account/icon-delete.png';
|
||||
// import icon1 from '@/assets/img/media-account/SvgIcon name="xt-delete".png';
|
||||
import icon2 from '../../img/icon-no-text.png';
|
||||
|
||||
const emits = defineEmits(['sorterChange', 'delete', 'select', 'selectAll', 'edit']);
|
||||
|
||||
@ -25,13 +25,13 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
<Button type="primary" @click="openAdd">
|
||||
<template #icon>
|
||||
<icon-plus class="mr-8px" size="16" />
|
||||
<SvgIcon name="xt-plus" class="mr-8px" size="16" />
|
||||
</template>
|
||||
<template #default>添加新标签</template>
|
||||
</Button>
|
||||
@ -51,7 +51,7 @@
|
||||
<span class="s1 mb-32px mt-8px">暂无标签</span>
|
||||
<Button size="large" type="primary" @click="openAdd">
|
||||
<template #icon>
|
||||
<icon-plus class="mr-8px" size="16" />
|
||||
<SvgIcon name="xt-plus" class="mr-8px" size="16" />
|
||||
</template>
|
||||
<template #default>去添加</template>
|
||||
</Button>
|
||||
|
||||
@ -9,6 +9,7 @@ import DeleteRawMaterialModal from './components/table/delete-file-modal.vue';
|
||||
import TagsManageModal from './components/tags-manage-modal';
|
||||
import AddRawMaterialDrawer from './components/add-raw-material-drawer';
|
||||
import EditRawMaterialDrawer from './components/edit-raw-material-modal';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import { useTableSelectionWithPagination } from '@/hooks/useTableSelectionWithPagination';
|
||||
import { getRawMaterialsPage } from '@/api/all/generationWorkshop';
|
||||
@ -132,7 +133,7 @@ export default defineComponent({
|
||||
class="ml-12px"
|
||||
onClick={handleAddMaterial}
|
||||
v-slots={{
|
||||
icon: () => <icon-plus size="16" class="mr-8px" />,
|
||||
icon: () => <SvgIcon name="xt-plus" size="16" class="mr-8px" />,
|
||||
default: () => '上传原料',
|
||||
}}
|
||||
/>
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
<Space size="medium">
|
||||
<Input v-model:value="query.name" class="w-240px" placeholder="请搜索..." size="medium" allowClear>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</Space>
|
||||
@ -23,13 +23,13 @@
|
||||
<div class="filter-row flex">
|
||||
<Button type="outline" ghost class="mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
@ -98,7 +98,7 @@
|
||||
cancelText="取消"
|
||||
@confirm="deleteBrand(record.id)"
|
||||
>
|
||||
<icon-delete></icon-delete>
|
||||
<SvgIcon name="xt-delete" size="14" class="color-#55585f"/>
|
||||
</Popconfirm>
|
||||
<Button type="outline" class="edit-btn" size="small" @click="handleEdit(record.id)">编辑</Button>
|
||||
</Space>
|
||||
@ -125,7 +125,6 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, reactive, onMounted } from 'vue';
|
||||
import { IconDelete } from '@arco-design/web-vue/es/icon';
|
||||
import { Button, Modal, Space, Form, FormItem, Pagination, Input, Table, message, Popconfirm } from 'ant-design-vue';
|
||||
const { TextArea } = Input;
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<span class="label">服务/产品</span>
|
||||
<Input v-model:value="query.name" class="w-240px" placeholder="请搜索..." size="middle" allowClear>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -25,13 +25,13 @@
|
||||
<div class="filter-row flex">
|
||||
<Button class="mr-12px outline-btn">
|
||||
<template #icon>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
搜索
|
||||
</Button>
|
||||
<Button>
|
||||
<template #icon>
|
||||
<icon-refresh />
|
||||
<SvgIcon name="xt-refresh" />
|
||||
</template>
|
||||
重置
|
||||
</Button>
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
<Space>
|
||||
<Input v-model:value="query.name" class="w-240px" placeholder="请搜索..." allowClear>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</Space>
|
||||
@ -27,13 +27,13 @@
|
||||
<div class="filter-row flex">
|
||||
<Button type="primary" ghost class="mr-12px">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button>
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<Button type="outline" class="w-110px mr-12px" size="medium" @click="handleExport">
|
||||
<template #icon> <icon-download class="mr-8px" /> </template>
|
||||
<template #icon> <SvgIcon name="xt-download" class="mr-8px" /> </template>
|
||||
<template #default>导出数据</template>
|
||||
</Button>
|
||||
<Button type="outline" class="w-110px" size="medium" @click="openCustomColumn">
|
||||
@ -63,7 +63,7 @@
|
||||
<img v-if="column.dataIndex === 'ai_evaluate'" width="16" height="16" :src="icon5" class="mr-4px" />
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
|
||||
@ -114,8 +114,8 @@
|
||||
|
||||
<template v-else-if="column.isRateField" #customRender="{ record }">
|
||||
<div class="flex items-center rate-row justify-end" :class="record[column.dataIndex] > 0 ? 'up' : 'down'">
|
||||
<icon-arrow-up v-if="record[column.dataIndex] > 0" size="16" />
|
||||
<icon-arrow-down v-else size="16" />
|
||||
<SvgIcon name="xt-arrow-up" v-if="record[column.dataIndex] > 0" size="16" />
|
||||
<SvgIcon name="xt-arrow-down" v-else size="16" />
|
||||
{{ formatTableField(column, record) }}
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -54,10 +54,10 @@
|
||||
:class="isRequiredColumn(item) ? '!display-none' : ''"
|
||||
>
|
||||
<div class="flex items-center">
|
||||
<icon-menu size="16" class="mr-8px" />
|
||||
<SvgIcon name="xt-menu" size="16" class="mr-8px"/>
|
||||
<span>{{ getCheckColumnLabel(item) }}</span>
|
||||
</div>
|
||||
<icon-close size="16" class="color-#737478 cursor-pointer" @click="removeCheckedField(item)" />
|
||||
<SvgIcon name="xt-close" size="16" class="color-#737478 cursor-pointer" @click="removeCheckedField(item)" />
|
||||
</div>
|
||||
</VueDraggable>
|
||||
</div>
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<span class="label">账号名称</span>
|
||||
<Input v-model:value="query.name" placeholder="请搜索..." class="!w-240px" allowClear @change="handleSearch">
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -37,7 +37,7 @@
|
||||
<div class="filter-row-item flex items-center">
|
||||
<span class="label">时间筛选</span>
|
||||
<Select v-model:value="query.type" size="middle" placeholder="全部" class="!w-240px" @change="handleSearch">
|
||||
<template #suffixIcon> <icon-calendar size="16" /> </template>
|
||||
<template #suffixIcon> <SvgIcon name="xt-calendar" size="16" /> </template>
|
||||
<Option :value="7" label="近7天">近7天</Option>
|
||||
<!-- <Option :value="14" label="近14天">近14天</Option> -->
|
||||
<Option :value="30" label="近30天">近30天</Option>
|
||||
@ -46,13 +46,13 @@
|
||||
<div class="filter-row-item flex items-center">
|
||||
<Button type="primary" ghost class="w-84px mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button class="w-84px" @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<div class="flex items-center">
|
||||
<p class="text-18px font-400 lh-26px color-#211F24 mr-4px title">数据总览</p>
|
||||
<Tooltip title="展示所筛选的账号的信息汇总">
|
||||
<icon-question-circle size="16" class="color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="color-#737478" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
<div class="flex items-center mb-4px">
|
||||
<p class="cts !color-#737478 !mr-4px">{{ field.title }}</p>
|
||||
<Tooltip v-if="field.tooltip" :title="field.tooltip" position="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<p class="cts">
|
||||
@ -104,8 +104,8 @@
|
||||
class="flex items-center"
|
||||
:class="detailData[field.dataIndex] > 0 ? 'color-#F64B31' : 'color-#25C883'"
|
||||
>
|
||||
<icon-arrow-up v-if="detailData[field.dataIndex] > 0" size="16" />
|
||||
<icon-arrow-down v-else size="16" />
|
||||
<SvgIcon name="xt-arrow-up" v-if="detailData[field.dataIndex] > 0" size="16" />
|
||||
<SvgIcon name="xt-arrow-down" v-else size="16" />
|
||||
{{ `${detailData[field.dataIndex]}%` }}
|
||||
</div>
|
||||
</template>
|
||||
@ -125,7 +125,7 @@
|
||||
@click="showMore = !showMore"
|
||||
>
|
||||
<span class="cts mr-8px !color-#6D4CFE"> {{ showMore ? '收起' : '更多' }} </span>
|
||||
<icon-down
|
||||
<SvgIcon name="xt-down"
|
||||
size="13"
|
||||
class="!color-#6D4CFE transform transition-transform duration-300 ease-in-out"
|
||||
:class="showMore ? 'rotate-180' : ''"
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
<div class="flex items-center">
|
||||
<span class="cts !text-18px !lh-26px mr-4px title">作品列表</span>
|
||||
<Tooltip title="展示笔记层级的详细数据,如曝光、互动等,是内容精细分析入口。">
|
||||
<icon-question-circle class="color-#737478" size="14" />
|
||||
<SvgIcon name="xt-question-circle" class="color-#737478" size="14" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
@ -17,7 +17,7 @@
|
||||
<span class="label">作品标题</span>
|
||||
<Input v-model:value="query.title" class="!w-240px" placeholder="请搜索..." allowClear @change="handleSearch">
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -34,13 +34,13 @@
|
||||
</div>
|
||||
<Button type="primary" ghost class="w-84px mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button class="w-84px" @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
@ -68,7 +68,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="14" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="14" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
<template #customRender="{ record }">
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<template>
|
||||
<div class="account-detail-wrap">
|
||||
<div class="flex items-center mb-16px cursor-pointer" @click="handleBack">
|
||||
<icon-left size="16" />
|
||||
<SvgIcon name="xt-left" size="16" />
|
||||
<span class="cts title ml-8px">账号列表</span>
|
||||
</div>
|
||||
<AccountInfo />
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
:wrapperClassName="`card-item ${isSelected(item) ? 'checked' : ''}`"
|
||||
>
|
||||
<template #icon>
|
||||
<icon-sync size="24" />
|
||||
<SvgIcon name="xt-sync" size="24" />
|
||||
</template>
|
||||
<Checkbox
|
||||
:checked="isSelected(item)"
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
<template v-if="column.dataIndex === 'name'" #customRender="{ record }">
|
||||
|
||||
@ -24,6 +24,7 @@ import AuthorizedAccountModal from '../authorized-account-modal';
|
||||
import StatusBox from '@/views/property-marketing/media-account/components/status-select/status-box.tsx';
|
||||
import SyncDataModal from '../sync-data-modal';
|
||||
import CommonSelect from '@/components/common-select';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
// import { downloadByUrl } from '@/utils/tools';
|
||||
import { showExportNotification } from '@/utils/notification';
|
||||
@ -265,7 +266,7 @@ export default {
|
||||
<>
|
||||
<span class="label">{label}</span>
|
||||
<Tooltip content={tooltipContent}>
|
||||
<icon-question-circle size="14" class="ml-4px color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="ml-4px color-#737478" />
|
||||
</Tooltip>
|
||||
</>
|
||||
);
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
height="24"
|
||||
class="mb-13px"
|
||||
/>
|
||||
<icon-loading v-else size="24" class="color-#6D4CFE mb-13px" />
|
||||
<Loading3QuartersOutlined spin v-else class="color-#6D4CFE mb-13px text-24px" />
|
||||
<span
|
||||
:class="modalState === MODAL_STATE.QR_FAILED ? '!color-#F64B31' : '!color-#6D4CFE'"
|
||||
class="s2"
|
||||
@ -66,7 +66,7 @@
|
||||
<Image v-else :src="qrCodeUrl" :width="160" :height="160" />
|
||||
<!-- 二维码失效遮罩 -->
|
||||
<div v-if="modalState === MODAL_STATE.QR_EXPIRED" class="mask cursor-pointer" @click="handleRefreshQrCode">
|
||||
<icon-refresh size="24" class="mb-13px" />
|
||||
<SvgIcon name="xt-refresh" size="24" class="mb-13px" />
|
||||
<p class="s1">二维码失效</p>
|
||||
<p class="s1">请点击刷新</p>
|
||||
</div>
|
||||
@ -77,9 +77,7 @@
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<Button v-if="modalState === MODAL_STATE.QR_READY" size="large" @click="handleRefreshQrCode">
|
||||
重新生成
|
||||
</Button>
|
||||
<Button v-if="modalState === MODAL_STATE.QR_READY" size="large" @click="handleRefreshQrCode"> 重新生成 </Button>
|
||||
<Button v-if="[MODAL_STATE.SUCCESS, MODAL_STATE.FAILED].includes(modalState)" size="large" @click="close">
|
||||
取消
|
||||
</Button>
|
||||
@ -95,6 +93,7 @@
|
||||
<script setup>
|
||||
import { defineExpose, ref, computed } from 'vue';
|
||||
import { Button, Modal, message, Image, Progress } from 'ant-design-vue';
|
||||
import { Loading3QuartersOutlined } from '@ant-design/icons-vue';
|
||||
import { getAuthorizedImage, getMediaAccountsAuthorizedStatus } from '@/api/all/propertyMarketing';
|
||||
import SyncDataModal from '../sync-data-modal';
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<span class="label">账号名称/ID/手机号</span>
|
||||
<Input v-model:value="query.search" class="w-240px" placeholder="请搜索..." allowClear @change="handleSearch">
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -66,13 +66,13 @@
|
||||
<div class="filter-row-item">
|
||||
<Button type="primary" ghost class="w-84px mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button class="w-84px" @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -19,14 +19,14 @@
|
||||
<Space size="medium" class="w-240px">
|
||||
<Input v-model:value="query.name" placeholder="请搜索..." size="middle" allowClear @change="reload">
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</Space>
|
||||
</div>
|
||||
<Button type="primary" size="middle" @click="openAdd"
|
||||
><template #icon>
|
||||
<icon-plus size="16" class="mr-8px" />
|
||||
<SvgIcon name="xt-plus" size="16" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>添加新分组</template>
|
||||
</Button>
|
||||
@ -72,7 +72,7 @@
|
||||
<span class="s1 mb-16px">暂无分组</span>
|
||||
<Button type="primary" class="mb-16px" size="middle" @click="openAdd"
|
||||
><template #icon>
|
||||
<icon-plus size="16" class="mr-8px" />
|
||||
<SvgIcon name="xt-plus" size="16" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>去添加</template>
|
||||
</Button>
|
||||
|
||||
@ -64,7 +64,7 @@
|
||||
height="24"
|
||||
class="mb-13px"
|
||||
/>
|
||||
<icon-loading v-else size="24" class="color-#6D4CFE mb-13px" />
|
||||
<Loading3QuartersOutlined spin v-else size="24" class="color-#6D4CFE mb-13px text-24px" />
|
||||
<span
|
||||
:class="modalState === MODAL_STATE.QR_FAILED ? '!color-#F64B31' : '!color-#6D4CFE'"
|
||||
class="s2"
|
||||
@ -82,7 +82,7 @@
|
||||
|
||||
<!-- 二维码失效遮罩 -->
|
||||
<div v-if="modalState === MODAL_STATE.QR_EXPIRED" class="mask cursor-pointer" @click="handleRefreshQrCode">
|
||||
<icon-refresh size="24" class="mb-13px" />
|
||||
<SvgIcon name="xt-refresh" size="24" class="mb-13px" />
|
||||
<p class="s1">二维码失效</p>
|
||||
<p class="s1">请点击刷新</p>
|
||||
</div>
|
||||
@ -113,6 +113,7 @@
|
||||
<script setup>
|
||||
import { defineExpose, ref, computed } from 'vue';
|
||||
import { Button, Modal, message, Image, Progress } from 'ant-design-vue';
|
||||
import { Loading3QuartersOutlined } from '@ant-design/icons-vue';
|
||||
import { getMediaAccountsAuthorizedStatus, getAuthorizedImage } from '@/api/all/propertyMarketing';
|
||||
import SyncDataModal from '../sync-data-modal';
|
||||
|
||||
|
||||
@ -25,13 +25,13 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
<Button type="primary" @click="openAdd">
|
||||
<template #icon>
|
||||
<icon-plus size="16" class="mr-8px" />
|
||||
<SvgIcon name="xt-plus" size="16" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>添加新标签</template>
|
||||
</Button>
|
||||
@ -51,7 +51,7 @@
|
||||
<span class="s1 mb-16px">暂无标签</span>
|
||||
<Button type="primary" class="mb-16px" @click="openAdd">
|
||||
<template #icon>
|
||||
<icon-plus size="16" class="mr-8px" />
|
||||
<SvgIcon name="xt-plus" size="16" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>去添加</template>
|
||||
</Button>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
</Button>
|
||||
<Button type="primary" class="w-112px" size="middle" @click="handleOpenAccountModal">
|
||||
<template #icon>
|
||||
<icon-plus size="16" class="mr-8px" />
|
||||
<SvgIcon name="xt-plus" size="16" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>添加账号</template>
|
||||
</Button>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="note-detail-wrap h-full flex flex-col">
|
||||
<div class="flex items-center mb-16px cursor-pointer" @click="handleBack">
|
||||
<icon-left size="16" />
|
||||
<SvgIcon name="xt-left" size="16" />
|
||||
<span class="cts ml-8px bold">账号详情</span>
|
||||
</div>
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<div class="flex items-center">
|
||||
<span class="cts !text-18px !lh-26px mr-4px bold">作品详情</span>
|
||||
<Tooltip title="展示作品的标题、图文、视频等详细内容">
|
||||
<icon-question-circle class="color-#737478" size="14" />
|
||||
<SvgIcon name="xt-question-circle" class="color-#737478" size="14" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
@ -42,7 +42,7 @@
|
||||
<div class="flex items-center">
|
||||
<span class="cts !text-18px !lh-26px mr-4px bold">评论列表</span>
|
||||
<Tooltip title="展示用户对作品的评论">
|
||||
<icon-question-circle class="color-#737478" size="14" />
|
||||
<SvgIcon name="xt-question-circle" class="color-#737478" size="14" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
@ -76,7 +76,7 @@
|
||||
<div class="flex items-center">
|
||||
<span class="cts !text-18px !lh-26px mr-4px bold">作品数据</span>
|
||||
<Tooltip title="展示作品的曝光量、点赞量等数据指标">
|
||||
<icon-question-circle class="color-#737478" size="14" />
|
||||
<SvgIcon name="xt-question-circle" class="color-#737478" size="14" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
@ -85,7 +85,7 @@
|
||||
<div class="flex items-center mb-4px">
|
||||
<span class="cts !color-#737478 mr-4px">{{ item.label }}</span>
|
||||
<Tooltip :title="item.tooltip">
|
||||
<icon-question-circle class="color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<span class="cts num">{{ formatNumberShow(dataSource[item.prop]) }}</span>
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
<Input
|
||||
@ -23,7 +23,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
|
||||
@ -69,7 +69,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
|
||||
@ -98,7 +98,7 @@
|
||||
<Tooltip :title="item.title">
|
||||
<p class="name mr-4px">{{ item.title || '-' }}</p>
|
||||
</Tooltip>
|
||||
<icon-close size="12" class="color-#3C4043 cursor-pointer flex-shrink-0" @click="onDelete(item)" />
|
||||
<SvgIcon name="xt-close" size="12" class="color-#3C4043 cursor-pointer flex-shrink-0" @click="onDelete(item)" />
|
||||
</div>
|
||||
</template>
|
||||
<NoData v-else text="暂无账户" />
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
<Select
|
||||
@ -69,7 +69,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
|
||||
@ -98,7 +98,7 @@
|
||||
<Tooltip :title="item.name">
|
||||
<p class="name mr-4px">{{ item.name || '-' }}</p>
|
||||
</Tooltip>
|
||||
<icon-close size="12" class="color-#3C4043 cursor-pointer flex-shrink-0" @click="onDelete(item)" />
|
||||
<SvgIcon name="xt-close" size="12" class="color-#3C4043 cursor-pointer flex-shrink-0" @click="onDelete(item)" />
|
||||
</div>
|
||||
</template>
|
||||
<NoData v-else text="暂无账户" />
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
<Select
|
||||
@ -72,7 +72,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
<template #customRender="{ record }">
|
||||
@ -98,7 +98,7 @@
|
||||
<div class="flex flex-wrap" v-if="selectedRows?.length">
|
||||
<div class="tag-item mr-8px mb-8px" v-for="item in selectedRows" :key="item.id">
|
||||
<span class="name mr-4px">{{ item.name || '-' }}</span>
|
||||
<icon-close size="12" class="color-#3C4043 cursor-pointer" @click="onDelete(item)" />
|
||||
<SvgIcon name="xt-close" size="12" class="color-#3C4043 cursor-pointer" @click="onDelete(item)" />
|
||||
</div>
|
||||
</div>
|
||||
<NoData v-else text="暂无账号" />
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</Space>
|
||||
@ -26,13 +26,13 @@
|
||||
<div class="filter-row-item flex items-center">
|
||||
<Button type="primary" ghost class="mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px"/>
|
||||
<SvgIcon name="xt-search" class="mr-8px"/>
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px"/>
|
||||
<SvgIcon name="xt-refresh" class="mr-8px"/>
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<div class="flex items-center">
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<div class="flex items-center">
|
||||
<Button type="primary" class="w-112px search-btn" size="medium" @click="handleOpenAddProjectModal">
|
||||
<template #icon>
|
||||
<icon-plus size="16" />
|
||||
<SvgIcon name="xt-plus" size="16" />
|
||||
</template>
|
||||
<template #default>添加项目</template>
|
||||
</Button>
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<template #title>
|
||||
<span class="a-card-title">{{ title.name }}</span>
|
||||
<Tooltip position="tl" :title="title.popover">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
|
||||
</template>
|
||||
|
||||
@ -37,13 +37,13 @@
|
||||
</div>
|
||||
<Button type="primary" ghost class="mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
<div class="flex items-center">
|
||||
<Button type="primary" ghost class="mr-12px" size="medium" @click="handleExport">
|
||||
<template #icon> <icon-download class="mr-8px" /> </template>
|
||||
<template #icon> <SvgIcon name="xt-download" class="mr-8px" /> </template>
|
||||
<template #default>导出数据</template>
|
||||
</Button>
|
||||
<Button type="primary" ghost size="medium" @click="openCustomColumn">
|
||||
@ -66,7 +66,7 @@
|
||||
<img v-if="column.dataIndex === 'ai_evaluate'" width="16" height="16" :src="icon5" class="mr-4px" />
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
|
||||
@ -105,8 +105,8 @@
|
||||
|
||||
<template v-else-if="column.isRateField" #customRender="{ record }">
|
||||
<div class="flex items-center rate-row justify-end" :class="record[column.dataIndex] > 0 ? 'up' : 'down'">
|
||||
<icon-arrow-up v-if="record[column.dataIndex] > 0" size="16" />
|
||||
<icon-arrow-down v-else size="16" />
|
||||
<SvgIcon name="xt-arrow-up" v-if="record[column.dataIndex] > 0" size="16" />
|
||||
<SvgIcon name="xt-arrow-down" v-else size="16" />
|
||||
{{ formatTableField(column, record) }}
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -63,13 +63,13 @@
|
||||
<div class="filter-row-item">
|
||||
<Button type="primary" ghost class="mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -19,14 +19,14 @@
|
||||
<Space size="medium" class="w-240px">
|
||||
<Input v-model:value="query.name" placeholder="请搜索..." size="middle" allowClear @change="handleSearch">
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</Space>
|
||||
</div>
|
||||
<Button type="primary" size="medium" @click="openAdd"
|
||||
><template #icon>
|
||||
<icon-plus size="16" class="mr-8px" />
|
||||
<SvgIcon name="xt-plus" size="16" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>添加新分组</template>
|
||||
</Button>
|
||||
@ -68,7 +68,7 @@
|
||||
<span class="s1 mb-16px">暂无分组</span>
|
||||
<Button type="primary" class="mb-16px" size="medium" @click="openAdd"
|
||||
><template #icon>
|
||||
<icon-plus size="16" class="mr-8px" />
|
||||
<SvgIcon name="xt-plus" size="16" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>去添加</template>
|
||||
</Button>
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
<div class="flex items-center">
|
||||
<Button type="primary" ghost class="mr-12px" @click="handleExport">
|
||||
<template #icon> <icon-download class="mr-8px" /> </template>
|
||||
<template #icon> <SvgIcon name="xt-download" class="mr-8px" /> </template>
|
||||
<template #default>导出数据</template>
|
||||
</Button>
|
||||
<Button type="primary" ghost @click="openCustomColumn">
|
||||
@ -61,7 +61,7 @@
|
||||
<img v-if="column.dataIndex === 'ai_evaluate'" width="16" height="16" :src="icon5" class="mr-4px" />
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
<template #customRender="{ record }">
|
||||
@ -101,8 +101,8 @@
|
||||
</template>
|
||||
<template v-else-if="column.isRateField">
|
||||
<div class="flex items-center rate-row justify-end" :class="record[column.dataIndex] > 0 ? 'up' : 'down'">
|
||||
<icon-arrow-up v-if="record[column.dataIndex] > 0" size="16" />
|
||||
<icon-arrow-down v-else size="16" />
|
||||
<SvgIcon name="xt-arrow-up" v-if="record[column.dataIndex] > 0" size="16" />
|
||||
<SvgIcon name="xt-arrow-down" v-else size="16" />
|
||||
{{ formatTableField(column, record) }}
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
:showUploadList="false"
|
||||
>
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px" />
|
||||
<span class="text mb-4px">点击或拖拽文件到此处上传</span>
|
||||
<span class="tip">支持 xls, xlsx格式</span>
|
||||
</div>
|
||||
@ -58,7 +58,7 @@
|
||||
}"
|
||||
>
|
||||
<div class="flex items-center">
|
||||
<icon-file size="16" class="flex-shrink-0" />
|
||||
<SvgIcon name="xt-file" size="16" class="flex-shrink-0" />
|
||||
<span class="name ml-8px">{{ fileName }}</span>
|
||||
</div>
|
||||
<span
|
||||
@ -132,7 +132,7 @@
|
||||
<template #label>
|
||||
<span class="label">同步项目数据</span>
|
||||
<Tooltip title="同步项目数据后,账户数据将同步到项目中">
|
||||
<icon-question-circle size="14" class="ml-4px color-#737478" />
|
||||
<SvgIcon name="xt-question-circle" size="14" class="ml-4px color-#737478" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
<Switch v-model:checked="form.is_sync_project" size="middle" :checkedValue="1" :unCheckedValue="0" />
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -59,13 +59,13 @@
|
||||
<div class="filter-row-item">
|
||||
<Button type="primary" ghost class="mr-12px" size="medium" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button size="medium" @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
@change="reload"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -36,7 +36,7 @@
|
||||
@change="reload"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -72,7 +72,7 @@
|
||||
<template #title>
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</template>
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<div class="flex items-center">
|
||||
<Button type="primary" class="w-112px" @click="handleOpenAccountModal">
|
||||
<template #icon>
|
||||
<icon-plus size="16" />
|
||||
<SvgIcon name="xt-plus" size="16" />
|
||||
</template>
|
||||
<template #default>添加账户</template>
|
||||
</Button>
|
||||
|
||||
@ -4,13 +4,13 @@
|
||||
<div class="part-div-header">
|
||||
<span class="part-div-header-title">投放行动指南</span>
|
||||
<Tooltip position="tl" title="投放建议优化。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="color-#737478"/>
|
||||
</Tooltip>
|
||||
</div>
|
||||
<Space>
|
||||
<span class="player-title">表现分析</span>
|
||||
<Tooltip position="tl" title="表现分析。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="color-#737478"/>
|
||||
</Tooltip>
|
||||
</Space>
|
||||
<div style="margin-right: 24px">
|
||||
@ -79,7 +79,7 @@
|
||||
<Space>
|
||||
<span class="player-title">新投放建议生成</span>
|
||||
<Tooltip position="tl" title="新投放建议生成。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="color-#737478"/>
|
||||
</Tooltip>
|
||||
</Space>
|
||||
<Row class="grid-demo" :gutter="24">
|
||||
@ -137,7 +137,6 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Space, Tooltip, Row, Col } from "ant-design-vue"
|
||||
import { IconQuestionCircle } from '@arco-design/web-vue/es/icon';
|
||||
|
||||
const props = defineProps({
|
||||
action_guide: {
|
||||
|
||||
@ -3,10 +3,10 @@
|
||||
<div class="part-div-header">
|
||||
<span class="part-div-header-title">总体摘要</span>
|
||||
<Tooltip position="tl" title="于筛选出来的投流账户/计划的情况生成的总体描述。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" size="16" class="color-#737478"/>
|
||||
</Tooltip>
|
||||
<span @click="copyData" class="copybtn">
|
||||
<icon-copy :style="{ fontSize: '14px' }" />
|
||||
<SvgIcon name="xt-copy" :style="{ fontSize: '14px' }" />
|
||||
复制
|
||||
</span>
|
||||
</div>
|
||||
@ -24,7 +24,6 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { IconQuestionCircle } from '@arco-design/web-vue/es/icon';
|
||||
import { defineProps } from 'vue';
|
||||
import { Space, message, Tooltip } from "ant-design-vue"
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<div class="part-div-header">
|
||||
<span class="part-div-header-title">投放建议优化</span>
|
||||
<Tooltip position="tl" title="基于筛选出来的投流账户/计划的情况生成的优化建议。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
<NoData v-if="isEmptyData" style="height: 100px" text="暂无数据" />
|
||||
@ -15,7 +15,7 @@
|
||||
<span class="placement-optimization-title"
|
||||
>总体策略
|
||||
<Tooltip position="tl" title="优化建议的整体调整概述。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</span>
|
||||
<span class="placement-optimization-str">{{ props.optimization?.[0]?.['content'] }}</span>
|
||||
@ -28,7 +28,7 @@
|
||||
<span class="placement-optimization-title"
|
||||
>预算分配
|
||||
<Tooltip position="tl" title="优化建议在预算分配部分的详细描述。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</span>
|
||||
<span class="placement-optimization-str">{{ props.optimization?.[1]?.['content'] }}</span>
|
||||
@ -39,7 +39,7 @@
|
||||
<span class="placement-optimization-title"
|
||||
>时段优化
|
||||
<Tooltip position="tl" title="优化建议在时段优化部分的详细描述。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</span>
|
||||
<span class="placement-optimization-str">{{ props.optimization?.[2]?.['content'] }}</span>
|
||||
@ -52,7 +52,7 @@
|
||||
<span class="placement-optimization-title"
|
||||
>人群包优化
|
||||
<Tooltip position="tl" title="优化建议在人群包优化部分的详细描述。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</span>
|
||||
<span class="placement-optimization-str">{{ props?.optimization?.[3]?.['content'] }}</span>
|
||||
@ -63,7 +63,7 @@
|
||||
<span class="placement-optimization-title"
|
||||
>素材优化
|
||||
<Tooltip position="tl" title="优化建议在素材优化部分的详细描述。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</span>
|
||||
<span class="placement-optimization-str">{{ props?.optimization?.[4]?.['content'] }}</span>
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
cancelText="取消"
|
||||
@confirm="deleteData(record.id)"
|
||||
>
|
||||
<icon-delete></icon-delete>
|
||||
<SvgIcon name="xt-delete" size="14" class="color-#55585f"/>
|
||||
</Popconfirm>
|
||||
</Space>
|
||||
<Space>
|
||||
@ -63,7 +63,6 @@
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { Button, Space, Table, message, Popconfirm } from 'ant-design-vue';
|
||||
import { IconDelete } from '@arco-design/web-vue/es/icon';
|
||||
import { PLATFORM_LIST } from '@/utils/platform';
|
||||
|
||||
|
||||
|
||||
@ -31,13 +31,13 @@
|
||||
<div class="filter-row-item flex items-center">
|
||||
<Button type="primary" ghost class="mr-12px" :disabled="disabled" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -47,7 +47,7 @@
|
||||
<Space>
|
||||
<span>本周总消耗</span>
|
||||
<Tooltip position="tl" title="当前周内所有投流账户的累计广告花费,反映整体投放规模。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -66,7 +66,7 @@
|
||||
<Space>
|
||||
<span>本周总消耗环比</span>
|
||||
<Tooltip position="tl" title="本周消耗金额与上周对比的变化百分比,用于衡量预算投放趋势。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -80,8 +80,8 @@
|
||||
}"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-arrow-rise v-if="record.pre_total_use_amount_chain > 0" />
|
||||
<icon-arrow-down v-else />
|
||||
<SvgIcon name="xt-arrow-up" v-if="record.pre_total_use_amount_chain > 0" />
|
||||
<SvgIcon name="xt-arrow-down" v-else />
|
||||
</template>
|
||||
<template #suffix>%</template>
|
||||
</Statistic>
|
||||
@ -98,7 +98,7 @@
|
||||
<Space>
|
||||
<span>ROI</span>
|
||||
<Tooltip position="tl" title="投资回报率(ROI)= 收益 ÷ 投入成本,反映整体投流账户的收益效率。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
@ -114,7 +114,7 @@
|
||||
<Space>
|
||||
<span>CTR</span>
|
||||
<Tooltip position="tl" title="点击率(CTR)= 点击量 ÷ 展示量,是衡量广告素材吸引力的关键指标。">
|
||||
<icon-question-circle />
|
||||
<SvgIcon name="xt-question-circle" />
|
||||
</Tooltip>
|
||||
</Space>
|
||||
</template>
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
<Space class="down-btn">
|
||||
<Button type="primary" ghost :loading="exportLoading" @click="downPage">
|
||||
<template #icon>
|
||||
<icon-download class="mr-8px"/>
|
||||
<SvgIcon name="xt-download" class="mr-8px"/>
|
||||
</template>
|
||||
<template #default>下载</template>
|
||||
</Button>
|
||||
|
||||
@ -55,13 +55,13 @@
|
||||
<Space class="down-btn">
|
||||
<Button type="primary" ghost :loading="exportLoading" @click="downPage">
|
||||
<template #icon>
|
||||
<icon-download class="mr-8px"/>
|
||||
<SvgIcon name="xt-download" class="mr-8px"/>
|
||||
</template>
|
||||
<template #default>下载</template>
|
||||
</Button>
|
||||
<Button type="primary" @click="handleSave">
|
||||
<template #icon>
|
||||
<icon-drive-file class="mr-8px"/>
|
||||
<SvgIcon name="xt-file" class="mr-8px"/>
|
||||
</template>
|
||||
<template #default>保存</template>
|
||||
</Button>
|
||||
|
||||
@ -3,6 +3,7 @@ import { Tabs, TabPane, Button } from 'ant-design-vue';
|
||||
import ManuscriptList from './manuscript/list/index.vue';
|
||||
import ManuscriptCheckList from './manuscript/check-list/index.vue';
|
||||
import UploadManuscriptModal from '@/views/writer-material-center/components/finished-products/manuscript/components/upload-manuscript-modal/index.vue';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import { TABS_LIST, AuditStatus } from './constants';
|
||||
|
||||
@ -34,7 +35,7 @@ export default defineComponent({
|
||||
class="ml-12px"
|
||||
onClick={openUploadModal}
|
||||
v-slots={{
|
||||
icon: () => <icon-plus size="16" class="mr-8px"/>,
|
||||
icon: () => <SvgIcon name="xt-plus" size="16" class="mr-8px"/>,
|
||||
default: () => '上传内容稿件',
|
||||
}}
|
||||
/>
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</Space>
|
||||
@ -35,7 +35,7 @@
|
||||
<!-- @change="handleSearch"-->
|
||||
<!-- >-->
|
||||
<!-- <template #prefix>-->
|
||||
<!-- <icon-search />-->
|
||||
<!-- <SvgIcon name="xt-search" />-->
|
||||
<!-- </template>-->
|
||||
<!-- </Input>-->
|
||||
<!-- </Space>-->
|
||||
@ -83,13 +83,13 @@
|
||||
<div class="filter-row-item">
|
||||
<Button type="primary" ghost class="mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
<div class="flex items-center">
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<script lang="jsx">
|
||||
import { Drawer, Image } from 'ant-design-vue';
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import icon1 from '@/assets/img/error-img.png';
|
||||
|
||||
@ -45,7 +46,12 @@ export default {
|
||||
<span class="mr-8px cts bold">批量审核列表</span>
|
||||
<span class="mr-8px cts !lh-22px !text-14px">{`共${dataSource.value.length}个`}</span>
|
||||
</div>
|
||||
<icon-menu-unfold size={16} class="color-##55585F cursor-pointer hover:color-#6D4CFE" onClick={onClose} />
|
||||
<SvgIcon
|
||||
name="xt-menu-unfold"
|
||||
size={16}
|
||||
class="color-##55585F cursor-pointer hover:color-#6D4CFE"
|
||||
onClick={onClose}
|
||||
/>
|
||||
</div>
|
||||
<div class="flex-1 overflow-y-auto px-24px">
|
||||
{dataSource.value.map((item) => (
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
import axios from 'axios';
|
||||
import { Swiper, SwiperSlide } from 'swiper/vue';
|
||||
import { Button, Form, FormItem, Input, Tabs, message, Image, Upload, Spin } from 'ant-design-vue';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
const { TextArea } = Input;
|
||||
const { TabPane } = Tabs;
|
||||
|
||||
import { IconLoading } from '@arco-design/web-vue/es/icon'; // 图标保留不更换
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import { LoadingOutlined } from '@ant-design/icons-vue';
|
||||
|
||||
import 'swiper/css';
|
||||
import 'swiper/css/navigation';
|
||||
@ -175,7 +176,7 @@ export default {
|
||||
<Button type="primary" ghost class="w-123px check-btn" onClick={onAiReplace} disabled={isDisabled.value}>
|
||||
{aiReplaceLoading.value ? (
|
||||
<>
|
||||
<IconLoading size={14} />
|
||||
<LoadingOutlined style={{ fontSize: '14px' }} spin />
|
||||
<span class="ml-8px check-text">AI生成中</span>
|
||||
</>
|
||||
) : (
|
||||
@ -272,7 +273,8 @@ export default {
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<icon-close-circle-fill
|
||||
<SvgIcon
|
||||
name="xt-close-circle-fill"
|
||||
size={16}
|
||||
class="close-icon absolute top--8px right--8px hidden cursor-pointer color-#737478 hover:!color-#211F24 z-50"
|
||||
onClick={(e) => onDeleteImage(e, item, index)}
|
||||
@ -296,7 +298,7 @@ export default {
|
||||
<div class="flex justify-center mb-16px">
|
||||
{renderUpload(
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px color-#3C4043" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px color-#3C4043" />
|
||||
<span class="cts !color-#211F24">上传图片</span>
|
||||
</div>,
|
||||
)}
|
||||
@ -427,7 +429,7 @@ export default {
|
||||
<span>{item.label}</span>
|
||||
{
|
||||
// activeTab.value === item.value && aiReview.value?.violation_items.length > 0 && (
|
||||
// <icon-exclamation-circle-fill size={14} class="color-#F64B31 absolute right--10px top-0" />
|
||||
// <SvgIcon name="xt-exclamation-circle-fill" size={14} class="color-#F64B31 absolute right--10px top-0" />
|
||||
// )
|
||||
}
|
||||
</div>
|
||||
|
||||
@ -5,6 +5,7 @@ import CheckSuccessModal from './check-success-modal.vue';
|
||||
import HeaderCard from './components/header-card';
|
||||
import ContentCard from './components/content-card';
|
||||
import CheckListDrawer from './components/check-list-drawer';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import { slsWithCatch, rlsWithCatch, glsWithCatch } from '@/utils/stroage.ts';
|
||||
import useGetAiReviewResult from '@/hooks/useGetAiReviewResult.ts';
|
||||
@ -211,7 +212,7 @@ export default {
|
||||
<span class="cts color-#4E5969 cursor-pointer" onClick={onExit}>
|
||||
成品库
|
||||
</span>
|
||||
<icon-oblique-line size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<SvgIcon name="xt-oblique-line" size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<span class="cts bold !color-#1D2129">{`${workIds.value.length > 0 ? '批量' : ''}审核内容稿件`}</span>
|
||||
</div>
|
||||
{dataSource.value.length > 1 && (
|
||||
@ -219,7 +220,8 @@ export default {
|
||||
class="check-list-icon"
|
||||
onClick={() => checkListDrawerRef.value.open(dataSource.value, selectCardInfo.value)}
|
||||
>
|
||||
<icon-menu-fold size={16} class="color-#55585F mr-4px icon" />
|
||||
<SvgIcon name="xt-menu-fold" size={16} class="color-#55585F icon mr-4px" />
|
||||
|
||||
<span class="cts !color-#211F24">审核列表</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -16,7 +16,8 @@
|
||||
>
|
||||
<div class="group-container relative rounded-8px w-100px h-100px">
|
||||
<img :src="file.url" class="object-cover w-full h-full border-1px border-#E6E6E8 rounded-8px" />
|
||||
<icon-close-circle-fill
|
||||
<SvgIcon
|
||||
name="xt-close-circle-fill"
|
||||
:size="16"
|
||||
class="absolute top--8px right--8px cursor-pointer hidden color-#939499 hidden group-hover:block z-50"
|
||||
@click="() => handleDeleteFile(index)"
|
||||
@ -35,7 +36,7 @@
|
||||
>
|
||||
<template #default>
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px color-#3C4043" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px color-#3C4043" />
|
||||
<span class="cts !color-#211F24">上传图片</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -2,10 +2,13 @@
|
||||
import axios from 'axios';
|
||||
import { Button, Form, FormItem, Input, message, Upload } from 'ant-design-vue';
|
||||
const { TextArea } = Input;
|
||||
import { Loading3QuartersOutlined } from '@ant-design/icons-vue';
|
||||
|
||||
import CommonSelect from '@/components/common-select';
|
||||
import { VueDraggable } from 'vue-draggable-plus';
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import ImgBox from './img-box';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import { formatFileSize, getVideoInfo, formatDuration, formatUploadSpeed } from '@/utils/tools';
|
||||
import { EnumManuscriptType } from '@/views/writer-material-center/components/finished-products/manuscript/list/constants.ts';
|
||||
@ -206,7 +209,7 @@ export default {
|
||||
>
|
||||
{formData.value.videoInfo.uploadStatus === ENUM_UPLOAD_STATUS.DEFAULT ? (
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px color-#3C4043" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px color-#3C4043" />
|
||||
<span class="cts !color-#211F24">上传视频</span>
|
||||
</div>
|
||||
) : (
|
||||
@ -237,7 +240,7 @@ export default {
|
||||
<div class="flex items-center mr-12px">
|
||||
{isUploading ? (
|
||||
<div class="w-80px h-80px flex items-center justify-center bg-#fff rounded-8px mr-16px">
|
||||
<icon-loading size="24" class="color-#B1B2B5" />
|
||||
<Loading3QuartersOutlined spin class="color-#B1B2B5 text-24px" />
|
||||
</div>
|
||||
) : (
|
||||
<img src={formData.value.videoInfo.poster} class="w-80 h-80 object-cover mr-16px rounded-8px" />
|
||||
@ -255,7 +258,7 @@ export default {
|
||||
) : (
|
||||
<div class="flex items-center">
|
||||
<div class="flex items-center mr-24px w-100px">
|
||||
<icon-loading size="16" class="color-#6D4CFE mr-8px" />
|
||||
<Loading3QuartersOutlined spin class="color-#6D4CFE mr-8px text-16px" />
|
||||
<span class="cts !color-#6D4CFE mr-4px">上传中</span>
|
||||
<span class="cts !color-#6D4CFE ">{formData.value.videoInfo.percent}%</span>
|
||||
</div>
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
<script lang="jsx">
|
||||
import { Modal, Button, Form, FormItem, Input, message, Upload } from 'ant-design-vue';
|
||||
const { TextArea } = Input;
|
||||
import { Loading3QuartersOutlined } from '@ant-design/icons-vue';
|
||||
|
||||
import {
|
||||
getTemplateUrlWriter,
|
||||
postWorksByLinkWriter,
|
||||
@ -11,6 +13,8 @@ import { getTemplateUrl } from '@/api/all/generationWorkshop';
|
||||
import { slsWithCatch } from '@/utils/stroage.ts';
|
||||
|
||||
import TextOverTips from '@/components/text-over-tips';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import icon1 from '@/assets/img/media-account/icon-feedback-fail.png';
|
||||
import icon2 from '@/assets/img/media-account/icon-download.png';
|
||||
|
||||
@ -208,7 +212,7 @@ export default {
|
||||
showUploadList={false}
|
||||
>
|
||||
<div class="upload-box">
|
||||
<icon-plus size="14" class="mb-16px" />
|
||||
<SvgIcon name="xt-plus" size="14" class="mb-16px" />
|
||||
<span class="text mb-4px">点击或拖拽文件到此处上传</span>
|
||||
<span class="tip">支持文档(文本+图), 视频批量上传</span>
|
||||
</div>
|
||||
@ -224,7 +228,7 @@ export default {
|
||||
// 渲染加载状态
|
||||
const renderLoadingState = () => (
|
||||
<div class="flex flex-col items-center justify-center rounded-8px bg-#F7F8FA h-208px">
|
||||
<icon-loading size="48" class="!color-#6D4CFE mb-16px" />
|
||||
<Loading3QuartersOutlined spin class="!color-#6D4CFE mb-16px text-48px" />
|
||||
<p class="tip !text-#768893">上传过程耗时可能较长,请耐心等待;</p>
|
||||
<p class="tip !text-#768893">刷新页面将会终止本次数据的上传,请谨慎操作</p>
|
||||
</div>
|
||||
@ -250,7 +254,8 @@ export default {
|
||||
<img src={item.cover} width="32" height="32" class="rounded-3px mr-8px" />
|
||||
<TextOverTips class="text !text-left" context={item.title} />
|
||||
</div>
|
||||
<icon-delete
|
||||
<SvgIcon
|
||||
name="xt-delete"
|
||||
size="16px"
|
||||
class="color-#737478 cursor-pointer hover:!color-#211F24"
|
||||
onClick={() => onDelete(index)}
|
||||
|
||||
@ -175,7 +175,7 @@ export default {
|
||||
<span class="cts color-#4E5969 cursor-pointer" onClick={onBack}>
|
||||
{sourceInfo.value.title}
|
||||
</span>
|
||||
<icon-oblique-line size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<SvgIcon name="xt-oblique-line" size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<span class="cts bold !color-#1D2129">内容稿件详情</span>
|
||||
</div>
|
||||
<div class="flex-1 bg-#fff rounded-8px content">
|
||||
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
<span class="cts color-#4E5969 cursor-pointer" onClick={onCancel}>
|
||||
成品库
|
||||
</span>
|
||||
<icon-oblique-line size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<SvgIcon name="xt-oblique-line" size="12" class="color-#C9CDD4 mx-4px" />
|
||||
<span class="cts bold !color-#1D2129">编辑内容稿件</span>
|
||||
</div>
|
||||
<div class="flex-1 overflow-y-auto p-24px bg-#fff rounded-8px ">
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
@change="handleSearch"
|
||||
>
|
||||
<template #prefix>
|
||||
<icon-search />
|
||||
<SvgIcon name="xt-search" />
|
||||
</template>
|
||||
</Input>
|
||||
</div>
|
||||
@ -38,7 +38,7 @@
|
||||
<!-- @change="handleSearch"-->
|
||||
<!-- >-->
|
||||
<!-- <template #prefix>-->
|
||||
<!-- <icon-search />-->
|
||||
<!-- <SvgIcon name="xt-search" />-->
|
||||
<!-- </template>-->
|
||||
<!-- </Input>-->
|
||||
<!-- </Space>-->
|
||||
@ -68,13 +68,13 @@
|
||||
<div class="filter-row-item">
|
||||
<Button type="primary" ghost class="mr-12px" @click="handleSearch">
|
||||
<template #icon>
|
||||
<icon-search class="mr-8px" />
|
||||
<SvgIcon name="xt-search" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>搜索</template>
|
||||
</Button>
|
||||
<Button @click="handleReset">
|
||||
<template #icon>
|
||||
<icon-refresh class="mr-8px" />
|
||||
<SvgIcon name="xt-refresh" class="mr-8px" />
|
||||
</template>
|
||||
<template #default>重置</template>
|
||||
</Button>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<div class="flex items-center">
|
||||
<span class="cts mr-4px">{{ column.title }}</span>
|
||||
<Tooltip v-if="column.tooltip" :title="column.tooltip" placement="top">
|
||||
<icon-question-circle class="tooltip-icon color-#737478" size="16" />
|
||||
<SvgIcon name="xt-question-circle" class="tooltip-icon color-#737478" size="16" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -4,6 +4,7 @@ import TextOverTips from '@/components/text-over-tips';
|
||||
import EditForm, { ENUM_UPLOAD_STATUS, INITIAL_VIDEO_INFO } from '../components/edit-form';
|
||||
import CancelUploadModal from './cancel-upload-modal.vue';
|
||||
import UploadSuccessModal from './upload-success-modal.vue';
|
||||
import SvgIcon from '@/components/svg-icon/index.vue';
|
||||
|
||||
import { EnumManuscriptType } from '@/views/writer-material-center/components/finished-products/manuscript/list/constants';
|
||||
import { postWorksBatchWriter } from '@/api/all/generationWorkshop-writer.ts';
|
||||
@ -276,7 +277,8 @@ export default {
|
||||
)}`}
|
||||
onClick={() => onSelect(item)}
|
||||
>
|
||||
<icon-close-circle-fill
|
||||
<SvgIcon
|
||||
name="xt-close-circle-fill"
|
||||
size={16}
|
||||
class="absolute top--8px right--8px color-#737478 hover:color-#211F24 hidden group-hover:block"
|
||||
onClick={(e) => onDelete(e, item, index)}
|
||||
|
||||
Reference in New Issue
Block a user