Refactor API requests and update component imports

This commit is contained in:
wangqiao
2025-08-18 14:28:10 +08:00
parent 07b4d3de99
commit 9ae3abeded
91 changed files with 669 additions and 884 deletions

View File

@ -65,10 +65,10 @@
<script lang="ts" setup>
import { ref } from 'vue'
import { Plus, EditPen } from '@element-plus/icons-vue'
import { ChannelRespVO } from '@/api/channel/types'
import { createChannelFollow, deleteChannelFollow } from '@/api/channel/index'
import ChatPage from '@/pages/chat-page/index.vue'
import useUserStore from '@/store/user'
import type { ChannelRespVO } from '~/api/channel/types'
import { createChannelFollow, deleteChannelFollow } from '~/api/channel/index'
import ChatPage from '~/pages/chat-page/index.vue'
import useUserStore from '~/store/user'
const userStore = useUserStore()
const lunTanRes = defineModel<ChannelRespVO>('modelValue', {

View File

@ -17,7 +17,7 @@
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { list } from '@/api/channel/index'
import { list } from '~/api/channel/index'
const channelId = defineModel('modelValue', {
required: true,

View File

@ -36,8 +36,8 @@
</template>
<script lang="ts" setup>
import { TpageRes, ChannelRespVO } from '@/api/channel/types'
import { postsDelete } from '@/api/channel/index'
import type { TpageRes, ChannelRespVO } from '~/api/channel/types'
import { postsDelete } from '~/api/channel/index'
import ChannelHeader from './ChannelHeader.vue'
import dayjs from 'dayjs'

View File

@ -2,7 +2,7 @@
<div class="box-border h-240px w-320px border border-[#EEEEEE] rounded-8px border-solid bg-[#FFFFFF] px-31px py-25px">
<div class="flex">
<div>
<img src="@/assets/images/user2.png" alt="" srcset="" class="h-47px w-48px rounded-full" />
<img src="~/assets/images/user2.png" alt="" srcset="" class="h-47px w-48px rounded-full" />
</div>
<div class="ml-13px">
<div class="text-16px text-[#333333] font-normal">你好</div>
@ -36,7 +36,7 @@
</template>
<script setup lang="ts">
import useUserStore from '@/store/user'
import useUserStore from '~/store/user'
const userStore = useUserStore()
const handleClick = () => {
// 判断是否登录

View File

@ -46,14 +46,14 @@
</template>
<script setup lang="ts">
import { keywords } from '@/api/upnew/index'
import { keywords } from '~/api/upnew/index'
import { reactive, ref, onMounted } from 'vue'
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
import { create, list } from '@/api/channel/index'
import { parent } from '@/api/upnew/index'
import { upload } from '@/api/common/index' // 自定义上传方法
import { create, list } from '~/api/channel/index'
import { parent } from '~/api/upnew/index'
import { upload } from '~/api/common/index' // 自定义上传方法
import Editor from '@tinymce/tinymce-vue'
import tinymce from 'tinymce/tinymce'
import 'tinymce/themes/silver'
@ -74,7 +74,7 @@
import 'tinymce/plugins/advlist' //列
import 'tinymce/plugins/quickbars' //快速工具条
import 'tinymce/plugins/wordcount' // 字数统计插件
// import '@/assets/tinymce/langs/zh-Hans.js' //下载后的语言包
// import '~/assets/tinymce/langs/zh-Hans.js' //下载后的语言包
// import 'tinymce/skins/content/default/content.css'
// 获取从其他地方传过来的参数
const channelId = route.query.channelId as string

View File

@ -8,12 +8,12 @@
</template>
<script setup lang="ts">
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import LeftContent from './components/LeftContent.vue'
import RightContent from './components/RightContent.vue'
import { page, getChannelLunTanDetail } from '@/api/channel/index.ts'
import { page, getChannelLunTanDetail } from '~/api/channel/index'
import { reactive, watch, ref } from 'vue'
import { TpageRes, ChannelRespVO } from '@/api/channel/types'
import type { TpageRes, ChannelRespVO } from '~/api/channel/types'
const pageReq = reactive({
pageNo: 1,

View File

@ -13,15 +13,15 @@
</div>
<div class="mt-19px flex items-center justify-between">
<div class="flex items-center">
<img src="@/assets/images/look.png" alt="" srcset="" class="mr-4px h-17px" />
<img src="~/assets/images/look.png" alt="" srcset="" class="mr-4px h-17px" />
<span class="text-[#666666]">{{ channelDetail?.likeNum || 0 }}人赞过</span>
<div class="ml-16px flex items-center">
<img src="@/assets/images/add.png" alt="" class="mr-4px h-23px" />
<img src="~/assets/images/add.png" alt="" class="mr-4px h-23px" />
<span class="text-[#666666]">{{ channelDetail?.commentNum || 0 }}评论</span>
</div>
</div>
<div class="ml-16px flex items-center">
<img src="@/assets/images/chat.png" alt="" srcset="" class="mr-4px h-17px" />
<img src="~/assets/images/chat.png" alt="" srcset="" class="mr-4px h-17px" />
<span class="text-[#666666]">{{ channelDetail?.browseNum || 0 }}人看过</span>
</div>
</div>
@ -66,7 +66,7 @@
</div>
<div class="right ml-23px w-100%">
<div class="mt-20px w-398px border border-[#EEEEEE] border-rd-[10px_10px_0px_0px] border-solid bg-[#FFFFFF]">
<img src="@/assets/images/sign.png" alt="" srcset="" class="h-206px w-100%" />
<img src="~/assets/images/sign.png" alt="" srcset="" class="h-206px w-100%" />
<div class="box-border border border-[#EEEEEE] border-rd-[10px_10px_0px_0px] border-solid border-t-none bg-[#FFFFFF] pa-18px">
<div class="mt-10px flex items-center">
<div class="text-18px text-[#333333] font-bold">王琦</div>
@ -96,10 +96,10 @@
<script setup lang="ts">
import dayjs from 'dayjs'
import { watch, ref, reactive } from 'vue'
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import { useRoute } from 'vue-router'
import { getChannelDetail, postscommentpage, createPostsComment } from '@/api/channel'
import type { TGetChannelPostsRes, PageResultPostsCommentRespVO } from '@/api/channel/types'
import { getChannelDetail, postscommentpage, createPostsComment } from '~/api/channel'
import type { TGetChannelPostsRes, PageResultPostsCommentRespVO } from '~/api/channel/types'
const route = useRoute()
const channelId = route.query.channelId as string

View File

@ -100,13 +100,13 @@
</template>
<script setup lang="ts">
import { upload } from '@/api/common/index'
import { upload } from '~/api/common/index'
import { Picture, Sunrise } from '@element-plus/icons-vue'
import { getGroupMembers } from '@/api/channel/index'
import { msgType, PageResultMessageRespVO, MemberUserRespDTO } from '@/api/channel/types'
import { getGroupMembers } from '~/api/channel/index'
import type { msgType, PageResultMessageRespVO, MemberUserRespDTO } from '~/api/channel/types'
import { ref, onMounted, nextTick, watch, onUnmounted } from 'vue'
// import dayjs from 'dayjs'
import useUserStore from '@/store/user'
import useUserStore from '~/store/user'
const userStore = useUserStore()
const props = defineProps({

View File

@ -128,7 +128,7 @@
justify-content: space-between;
align-items: center;
margin-bottom: 40px;
background-image: url('@/assets/images/community-banner.png');
background-image: url('~/assets/images/community-banner.png');
background-size: 100% 100%;
background-position: center;
background-repeat: no-repeat;
@ -161,7 +161,7 @@
h2 {
color: #333;
margin: 40px 0 20px;
background-image: url('@/assets/images/community-bg.png');
background-image: url('~/assets/images/community-bg.png');
background-size: 120px 16px;
background-position: 14px 22px;
background-repeat: no-repeat;

View File

@ -43,7 +43,8 @@
</div>
</template>
<script setup lang="ts">
import { ref, PropType, watch, nextTick } from 'vue'
import type { PropType} from 'vue'
import { ref, watch, nextTick } from 'vue'
// @ts-ignore
import { Swiper, SwiperSlide } from 'swiper/vue'

View File

@ -12,17 +12,17 @@
<div class="ml-23px flex flex-1 text-18px text-[#FFFFFF] font-normal">
<div class="h-60px w-160px flex cursor-pointer items-center justify-center rounded-8px bg-[#1A65FF]" @click="handleDownload">
<img src="@/assets/images/download.png" alt="" srcset="" class="mr-4px h-22px w-27px" />
<img src="~/assets/images/download.png" alt="" srcset="" class="mr-4px h-22px w-27px" />
{{ detail.points === 0 ? '免费下载' : '立即下载' }}
</div>
<div
v-if="!detail.favoriteId"
class="ml-11px h-60px flex flex-1 cursor-pointer items-center justify-center rounded-8px bg-[#E7B03B]"
@click="handleCollect"
><img src="@/assets/images/collect.png" alt="" srcset="" class="mr-4px h-24px w-24px" /> 收藏</div
><img src="~/assets/images/collect.png" alt="" srcset="" class="mr-4px h-24px w-24px" /> 收藏</div
>
<div v-else class="ml-11px h-60px flex flex-1 cursor-pointer items-center justify-center rounded-8px bg-[#E7B03B]" @click="handleCollect"
><img src="@/assets/images/wjx2.png" alt="" srcset="" class="mr-4px h-18px w-18px" /> 已收藏</div
><img src="~/assets/images/wjx2.png" alt="" srcset="" class="mr-4px h-18px w-18px" /> 已收藏</div
>
<div class="ml-11px h-60px flex flex-1 cursor-pointer items-center justify-center rounded-8px bg-[#F56C6C]" @click="handleReport"
@ -52,7 +52,7 @@
</div>
<div>
<div v-for="item in detail.files" :key="item.id" class="flex items-center justify-between border-b-1px border-b-[#eee] border-b-solid py-10px">
<!-- <img src="@/assets/images/avater.png" alt="" srcset="" class="h-30px w-30px" /> -->
<!-- <img src="~/assets/images/avater.png" alt="" srcset="" class="h-30px w-30px" /> -->
<div>
<span class="ml-10px cursor-pointer" @click="handleDownloadPreview(item)">{{ item.title }}</span>
<span v-if="item.size" class="ml-200px color-#999">{{ item.size || '-' }}</span>
@ -107,7 +107,7 @@
<div class="mb-10px">软件分类{{ detail.editionsName }}</div>
</div>
<div class="mt-20px w-398px border border-[#EEEEEE] border-rd-[10px_10px_0px_0px] border-solid bg-[#FFFFFF]">
<img src="@/assets/images/banner.png" alt="" srcset="" class="w-100%" />
<img src="~/assets/images/banner.png" alt="" srcset="" class="w-100%" />
<div class="box-border border border-[#EEEEEE] border-rd-[10px_10px_0px_0px] border-solid border-t-none bg-[#FFFFFF] pa-18px">
<div class="flex flex-wrap items-start">
<div v-if="userInfo.nickname" class="mt-10px text-18px text-[#333333] font-bold">{{ userInfo.nickname }}</div>
@ -123,13 +123,13 @@
<div class="flex items-center gap-40px">
<div class="flex items-center">
<div class="h-20px">
<img src="@/assets/images/folder.png" alt="works" class="w-80%" />
<img src="~/assets/images/folder.png" alt="works" class="w-80%" />
</div>
<div class="ml-8px mt--4px text-14px text-[#666] font-normal">作品: {{ userInfo.projectCount || 0 }}</div>
</div>
<div class="flex items-center">
<div class="h-20px">
<img src="@/assets/images/user4.png" alt="fans" class="w-80% rounded-full vertical-top" />
<img src="~/assets/images/user4.png" alt="fans" class="w-80% rounded-full vertical-top" />
</div>
<div class="relative top--3px ml-8px text-14px text-[#666] font-normal">粉丝: {{ userInfo.fansCount || 0 }}</div>
</div>
@ -170,18 +170,18 @@
<script setup lang="ts">
import dayjs from 'dayjs'
import { downloadFile } from '@/utils/utils'
import { useMessage } from '@/utils/useMessage'
import { downloadFile } from '~/utils/utils'
import { useMessage } from '~/utils/useMessage'
import { Warning } from '@element-plus/icons-vue'
import CardPicture from '@/components/kl-card-picture/index.vue'
import { getDetail, getRelationRecommend, report, getUserInfo, getMainWork, createContent, createUserProject, deleteProject } from '@/api/drawe-detail/index'
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import CardPicture from '~/components/kl-card-picture/index.vue'
import { getDetail, getRelationRecommend, report, getUserInfo, getMainWork, createContent, createUserProject, deleteProject } from '~/api/drawe-detail/index'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import ThumBnail from './components/swiper.vue'
import CommentSection from '@/components/comment-section/index.vue'
import CommentSection from '~/components/comment-section/index.vue'
import { useRoute } from 'vue-router'
import { ref } from 'vue'
import { ProjectRespVO, ProjectDrawPageRespVO, UserExtendSimpleRespDTO, ProjectDrawMemberRespVO } from '@/api/drawe-detail/types'
import useUserStore from '@/store/user'
import type { ProjectRespVO, ProjectDrawPageRespVO, UserExtendSimpleRespDTO, ProjectDrawMemberRespVO } from '~/api/drawe-detail/types'
import useUserStore from '~/store/user'
const message = useMessage()
const userStore = useUserStore()
// 获取路由参数
@ -244,7 +244,7 @@
}
const handleDownloadPreview = (item: any) => {
// 预览pdf
window.open(`/pdf-preview?url=${item.url}`)
navigateTo(`/pdf-preview?url=${item.url}`)
}
/** 获取下载类型 */
@ -341,7 +341,7 @@
}
const handleClick = (id: string | number) => {
window.open(`/down-drawe-detail?id=${id}`, '_blank') // 修改为在新窗口打开
navigateTo(`/down-drawe-detail?id=${id}`) // 修改为在新窗口打开
}
const handleDownloadFile = (url: string, name: string) => {

View File

@ -14,9 +14,10 @@
</template>
<script setup lang="ts">
import { PropType, ref, watch } from 'vue'
import { recommendTop } from '@/api/upnew/index'
import { recommendTopRes } from '@/api/upnew/types'
import type { PropType} from 'vue'
import { ref, watch } from 'vue'
import { recommendTop } from '~/api/upnew/index'
import type { recommendTopRes } from '~/api/upnew/types'
const props = defineProps({
type: {
type: Number as PropType<1 | 2 | 3>,

View File

@ -17,11 +17,11 @@
</template>
<script lang="ts" setup>
import KlTabBar from '@/components/kl-tab-bar/index.vue'
import CardPicture from '@/components/kl-card-picture/index.vue'
import KlTabBar from '~/components/kl-tab-bar/index.vue'
import CardPicture from '~/components/kl-card-picture/index.vue'
import { ref } from 'vue'
import { pageRes, pageReq } from '@/api/upnew/types'
import emptyImg from '@/assets/images/empty.png'
import type { pageRes, pageReq } from '~/api/upnew/types'
import emptyImg from '~/assets/images/empty.png'
const query = defineModel<pageReq>('modelValue', {
required: true,

View File

@ -23,14 +23,14 @@
</div>
</template>
<script setup lang="ts">
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import KlWallpaperCategory from '@/components/kl-wallpaper-category/index.vue'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import KlWallpaperCategory from '~/components/kl-wallpaper-category/index.vue'
import RecommendedColumnsV2 from './components/RecommendedColumnsV2.vue'
// import FeaturedSpecials from './components/FeaturedSpecials.vue'
import { useRoute } from 'vue-router'
import { reactive, watch, ref } from 'vue'
import { page } from '@/api/upnew/index'
import { pageRes, pageReq } from '@/api/upnew/types'
import { page } from '~/api/upnew/index'
import type { pageRes, pageReq } from '~/api/upnew/types'
const route = useRoute()
const level = ref(
route.query.level

View File

@ -2,10 +2,10 @@
<div class="wscn-http404-container">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" src="@/assets/images/404.png" alt="404" />
<img class="left pic-404__child" src="@/assets/images/404_cloud.png" alt="404" />
<img class="pic-404__child mid" src="@/assets/images/404_cloud.png" alt="404" />
<img class="pic-404__child right" src="@/assets/images/404_cloud.png" alt="404" />
<img class="pic-404__parent" src="~/assets/images/404.png" alt="404" />
<img class="left pic-404__child" src="~/assets/images/404_cloud.png" alt="404" />
<img class="pic-404__child mid" src="~/assets/images/404_cloud.png" alt="404" />
<img class="pic-404__child right" src="~/assets/images/404_cloud.png" alt="404" />
</div>
<div class="bullshit">
<div class="bullshit__oops"> 404错误! </div>

View File

@ -7,7 +7,7 @@
<button class="join-button">快来加入</button>
</div>
<div class="banner-image">
<img src="@/assets/images/foreign_banner.png" alt="CAD工作环境" />
<img src="~/assets/images/foreign_banner.png" alt="CAD工作环境" />
</div>
</div>
</div>

View File

@ -96,7 +96,7 @@
.large-card {
grid-column: 1;
grid-row: 1 / span 2;
background-image: url('@/assets/images/hardware-tools.png');
background-image: url('~/assets/images/hardware-tools.png');
display: flex;
align-items: center;
justify-content: center;
@ -115,22 +115,22 @@
/* CAD设计工作站卡片 - 较宽 */
.top-row .card-wide {
background-image: url('@/assets/images/cad-workstation.png');
background-image: url('~/assets/images/cad-workstation.png');
}
/* 工作站卡片 - 较窄 */
.top-row .card-narrow {
background-image: url('@/assets/images/laptop-workspace.png');
background-image: url('~/assets/images/laptop-workspace.png');
}
/* 工业机器人卡片 - 较窄 */
.bottom-row .card-narrow {
background-image: url('@/assets/images/industrial-robots.png');
background-image: url('~/assets/images/industrial-robots.png');
}
/* CAD工业设计卡片 - 较宽 */
.bottom-row .card-wide {
background-image: url('@/assets/images/cad-industrial-design.png');
background-image: url('~/assets/images/cad-industrial-design.png');
}
.card-content {

View File

@ -18,10 +18,10 @@
</template>
<script lang="ts" setup>
import KlTabBar from '@/components/kl-tab-bar/index.vue'
import CardPicture from '@/components/kl-card-picture/index.vue'
import KlTabBar from '~/components/kl-tab-bar/index.vue'
import CardPicture from '~/components/kl-card-picture/index.vue'
import { ref } from 'vue'
import { pageRes } from '@/api/upnew/types'
import type { pageRes } from '~/api/upnew/types'
const level = ref([
{

View File

@ -25,15 +25,15 @@
</div>
</template>
<script setup lang="ts">
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import RecommendedColumnsV2 from './components/RecommendedColumnsV2.vue'
// import FeaturedSpecials from './components/FeaturedSpecials.vue'
import BannerTips from './components/BannerTips.vue'
// import ImageTips from './components/ImageTips.vue'
import { reactive, watch } from 'vue'
import { page } from '@/api/upnew/index'
import { pageRes, pageReq } from '@/api/upnew/types'
import { page } from '~/api/upnew/index'
import type { pageRes, pageReq } from '~/api/upnew/types'
const query = reactive<pageReq>({
pageNo: 1,

View File

@ -1,7 +1,7 @@
<template>
<div class="flex">
<div>
<div class="my-32px mb-20px text-18px text-[#333333] font-normal"><img src="@/assets/images/2.png" alt="" srcset="" /> 多多排行榜</div>
<div class="my-32px mb-20px text-18px text-[#333333] font-normal"><img src="~/assets/images/2.png" alt="" srcset="" /> 多多排行榜</div>
<div class="flex">
<div class="ma-auto box-border h-470px w-460px border border-[#EEEEEE] rounded-12px border-solid bg-[#FFFFFF] px-28px">
<div class="title-bg ma-auto mb-40px mt-20px">一周图纸作者排行</div>
@ -22,12 +22,12 @@
</div>
<div class="ml-20px flex text-14px text-[#666666] font-normal">
<!-- <el-icon class="text-17px color-#a8abb2!"><Folder /></el-icon> -->
<img src="@/assets/images/file.png" alt="" srcset="" class="h-18px" />
<img src="~/assets/images/file.png" alt="" srcset="" class="h-18px" />
<div class="ellipsis1 ml-10px">作品{{ item.projectCount || 0 }}</div>
</div>
<div class="ml-20px flex text-14px text-[#666666] font-normal">
<!-- <el-icon class="text-17px color-[#e4e7ed!]"><User /></el-icon> -->
<img src="@/assets/images/user4.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/user4.png" alt="" srcset="" class="h-17px" />
<div class="ellipsis1 ml-10px">粉丝{{ item.fansCount || 0 }}</div>
</div>
</div>
@ -52,11 +52,11 @@
<span class="ellipsis1 ml-10px">{{ item.nickname }}</span>
</div>
<div class="ml-20px flex text-14px text-[#666666] font-normal">
<img src="@/assets/images/file.png" alt="" srcset="" class="h-18px" />
<img src="~/assets/images/file.png" alt="" srcset="" class="h-18px" />
<div class="ellipsis1 ml-10px">作品{{ item.projectCount || 0 }}</div>
</div>
<div class="ml-20px flex text-14px text-[#666666] font-normal">
<img src="@/assets/images/user4.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/user4.png" alt="" srcset="" class="h-17px" />
<div class="ellipsis1 ml-10px">粉丝{{ item.fansCount || 0 }}</div>
</div>
</div>
@ -66,7 +66,7 @@
</div>
</div>
<div class="ml-63px">
<div class="my-32px mb-20px text-18px text-[#333333] font-normal"><img src="@/assets/images/2.png" alt="" srcset="" /> 发布动态</div>
<div class="my-32px mb-20px text-18px text-[#333333] font-normal"><img src="~/assets/images/2.png" alt="" srcset="" /> 发布动态</div>
<div class="box-border h-470px w-437px border border-[#EEEEEE] rounded-12px border-solid bg-[#FFFFFF] p-15px">
<div
v-for="item in newDrawList"
@ -87,11 +87,11 @@
<script setup lang="ts">
import { computed, ref } from 'vue'
// import { Folder, User } from '@element-plus/icons-vue'
import { newDraw, userTop } from '@/api/home/index'
import { ProjectDrawPageRespVO, ProjectTrendingScoreUserInfoVO } from '@/api/home/type'
import { newDraw, userTop } from '~/api/home/index'
import type { ProjectDrawPageRespVO, ProjectTrendingScoreUserInfoVO } from '~/api/home/type'
import dayjs from 'dayjs'
const Url = Object.values(
import.meta.glob('@/assets/images/no*.png', {
import.meta.glob('~/assets/images/no*.png', {
eager: true,
query: 'url',
})
@ -133,7 +133,7 @@
.title-bg {
width: 224px;
height: 52px;
background-image: url('@/assets/images/name_bg.png');
background-image: url('~/assets/images/name_bg.png');
background-size: 100% 100%;
text-align: center;
line-height: 48px;

View File

@ -23,8 +23,8 @@
<script setup lang="ts">
import { reactive, ref } from 'vue'
import { getSettingPage } from '@/api/home/index'
import { PageResultIndexSettingRespVO } from '@/api/home/type'
import { getSettingPage } from '~/api/home/index'
import type { PageResultIndexSettingRespVO } from '~/api/home/type'
const pageReq = reactive({
type: 2,
@ -41,7 +41,7 @@
getBanner()
const handleClick = (url: string) => {
window.open(url, '_blank')
navigateTo(url)
}
</script>

View File

@ -11,29 +11,29 @@
@click="handleUserInfo"
/>
<div class="mt-10px text-16px text-[#333333] font-normal">
<img v-if="userStore.userInfoRes.vipLevel === 1" src="@/assets/svg/vip.svg" alt="" class="relative top-12px" />
<img v-if="userStore.userInfoRes.vipLevel === 2" src="@/assets/svg/svip.svg" alt="" class="relative top-12px" />
<img v-if="userStore.userInfoRes.vipLevel === 1" src="~/assets/svg/vip.svg" alt="" class="relative top-12px" />
<img v-if="userStore.userInfoRes.vipLevel === 2" src="~/assets/svg/svip.svg" alt="" class="relative top-12px" />
Hi{{ userStore.userInfoRes.nickname || '欢迎访问~' }}
</div>
</div>
<div v-if="isLogin" class="mt-20px flex flex-col gap-20px px-20px text-14px text-[#333333] font-normal">
<div class="flex items-center justify-between">
<div class="flex items-center">
<img src="@/assets/images/cad_0 (1).png" alt="" srcset="" />
<img src="~/assets/images/cad_0 (1).png" alt="" srcset="" />
<span class="title ml-4px" :title="`${userStaticInfo?.pointCount}`">我的积分: {{ userStaticInfo?.pointCount || 0 }}</span>
</div>
<div class="flex items-center">
<img src="@/assets/images/cad_0 (2).png" alt="" srcset="" />
<img src="~/assets/images/cad_0 (2).png" alt="" srcset="" />
<span class="title ml-4px" :title="`${userStaticInfo?.followCount}`">我的收藏: {{ userStaticInfo?.followCount || 0 }}</span>
</div>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center">
<img src="@/assets/images/cad_0 (3).png" alt="" srcset="" />
<img src="~/assets/images/cad_0 (3).png" alt="" srcset="" />
<span class="title ml-4px" :title="`${userStaticInfo?.projectCount}`">我的发布: {{ userStaticInfo?.projectCount || 0 }}</span>
</div>
<div class="flex items-center">
<img src="@/assets/images/cad_0 (4).png" alt="" srcset="" />
<img src="~/assets/images/cad_0 (4).png" alt="" srcset="" />
<span class="title ml-4px" :title="`${userStaticInfo?.downloadCount}`">我的下载: {{ userStaticInfo?.downloadCount || 0 }}</span>
</div>
</div>
@ -63,25 +63,25 @@
>
</div>
<div v-if="!isLogin" class="mt-30px flex justify-between px-20px">
<img src="@/assets/images/qq-v2.png" alt="QQ登录" class="social-icon" @click="handleLoginQQ" />
<img src="@/assets/images/weixin-v2.png" alt="微信登录" class="social-icon" @click="handleLoginWechat" />
<img src="@/assets/images/email-v2.png" alt="邮箱登录" class="social-icon" @click="handleLoginEmail" />
<img src="@/assets/images/phone-v2.png" alt="手机登录" class="social-icon" @click="handleLoginPhone" />
<img src="~/assets/images/qq-v2.png" alt="QQ登录" class="social-icon" @click="handleLoginQQ" />
<img src="~/assets/images/weixin-v2.png" alt="微信登录" class="social-icon" @click="handleLoginWechat" />
<img src="~/assets/images/email-v2.png" alt="邮箱登录" class="social-icon" @click="handleLoginEmail" />
<img src="~/assets/images/phone-v2.png" alt="手机登录" class="social-icon" @click="handleLoginPhone" />
</div>
<div class="sign-bonus mt-18px" @click="handleSign">
<img src="@/assets/images/sign.png" alt="签到奖励" class="bonus-image" />
<img src="~/assets/images/sign.png" alt="签到奖励" class="bonus-image" />
</div>
</div>
</template>
<script setup lang="ts">
import { refreshToken as REFRESHTOKEN } from '@/utils/axios'
import { refreshToken as REFRESHTOKEN } from '~/utils/axios'
import { getCurrentInstance, computed, watchEffect, ref } from 'vue'
import { handleLoginQQ, handleLoginWechat } from '@/utils/login'
import { UserStatisticsCountRespVO } from '@/api/personal-center/types'
import { getUserStatistics } from '@/api/personal-center/index'
import useUserStore from '@/store/user'
import { handleLoginQQ, handleLoginWechat } from '~/utils/login'
import type { UserStatisticsCountRespVO } from '~/api/personal-center/types'
import { getUserStatistics } from '~/api/personal-center/index'
import useUserStore from '~/store/user'
const userStore = useUserStore()
const instance = getCurrentInstance()
@ -103,36 +103,36 @@
const handleLogin = () => {
if (instance) {
instance.appContext.config.globalProperties.$openLogin()
// instance.appContext.config.globalProperties.$openLogin()
}
}
const handleRegister = () => {
if (instance) {
instance.appContext.config.globalProperties.$openRegister()
// instance.appContext.config.globalProperties.$openRegister()
}
}
const handleLoginPhone = () => {
if (instance) {
instance.appContext.config.globalProperties.$openLogin('verify')
// instance.appContext.config.globalProperties.$openLogin('verify')
}
}
const handleLoginEmail = () => {
if (instance) {
instance.appContext.config.globalProperties.$openLoginEmail()
// instance.appContext.config.globalProperties.$openLoginEmail()
}
}
const handleUserInfo = () => {
if (!isLogin.value) return
window.open('/personal-detail', '_blank') // 修改为在新窗口打开
navigateTo('/personal-detail') // 修改为在新窗口打开
}
// 发布图纸
const handleDrawe = () => {
window.open('/upnew/drawe', '_blank') // 修改为在新窗口打开
navigateTo('/upnew/drawe') // 修改为在新窗口打开
}
// 推出登录
@ -145,7 +145,7 @@
}
const handleSign = () => {
window.open('/sign-page', '_blank') // 修改为在新窗口打开
navigateTo('/sign-page') // 修改为在新窗口打开
}
watchEffect(() => {

View File

@ -11,7 +11,7 @@
<LoginForm />
</div>
<div class="box-border h-56px w-1219px flex items-center border border-[#EEEEEE] border-solid border-t-none bg-[#FFFFFF] pl-10px line-height-46px">
<img src="@/assets/images/voice.png" alt="" srcset="" class="mr-10px h-15px w-16px" />
<img src="~/assets/images/voice.png" alt="" srcset="" class="mr-10px h-15px w-16px" />
<Vue3Marquee :duration="10" direction="normal" pause-on-hover>· 经典来袭SolidWorks装配经典案例之气动发动机 </Vue3Marquee>
</div>
</div>
@ -21,8 +21,8 @@
import { reactive, ref } from 'vue'
import LoginForm from './LoginForm.vue'
import { getSettingPage } from '@/api/home/index'
import { PageResultIndexSettingRespVO } from '@/api/home/type'
import { getSettingPage } from '~/api/home/index'
import type { PageResultIndexSettingRespVO } from '~/api/home/type'
const pageReq = reactive({
type: 1,
@ -40,7 +40,7 @@
const handleClick = (url: string) => {
if (url) {
window.open(url, '_blank')
navigateTo(url)
}
}
</script>

View File

@ -18,7 +18,7 @@
<div class="content mt-10px flex">
<!-- <div class="sider">
<div class="box-border h-100% h-55px w-221px flex items-center rounded-lg bg-[#1A65FF] pl-24px text-white">
<img src="@/assets/images/1.png" alt="" srcset="" />
<img src="~/assets/images/1.png" alt="" srcset="" />
<span class="ml-12px text-16px">全部资源分类</span>
</div>
<div class="side-menu border border-[#EEEEEE] border-solid">
@ -65,10 +65,10 @@
<script lang="ts" setup>
import { reactive, ref, watch } from 'vue'
import KlTabBar from '@/components/kl-tab-bar/index.vue'
// import KlCardDetail from '@/components/kl-card-detail/index.vue'
import { hotTop, hotTag } from '@/api/home/index'
import { ProjectDrawPageRespVO, ProjectDictNodeVO } from '@/api/home/type'
import KlTabBar from '~/components/kl-tab-bar/index.vue'
// import KlCardDetail from '~/components/kl-card-detail/index.vue'
import { hotTop, hotTag } from '~/api/home/index'
import type { ProjectDrawPageRespVO, ProjectDictNodeVO } from '~/api/home/type'
/** 请求参数 */
const query = reactive({
@ -105,7 +105,7 @@
/** 点击卡片 */
const handleCardClick = (item: ProjectDrawPageRespVO) => {
// 跳转到下载详情页 并且是单独开标签
window.open(`/down-drawe-detail?id=${item.id}`, '_blank') // 修改为在新窗口打开
navigateTo(`/down-drawe-detail?id=${item.id}`) // 修改为在新窗口打开
}
const handleClickType = (primary?: ProjectDictNodeVO, secondary?: ProjectDictNodeVO) => {
@ -118,11 +118,11 @@
level.unshift(normal)
}
if (query.type === 1) {
window.open(`/drawe?level=${JSON.stringify(level)}`)
navigateTo(`/drawe?level=${JSON.stringify(level)}`)
} else if (query.type === 2) {
window.open(`/text?level=${JSON.stringify(level)}`)
navigateTo(`/text?level=${JSON.stringify(level)}`)
} else if (query.type === 3) {
window.open(`/model?level=${JSON.stringify(level)}`)
navigateTo(`/model?level=${JSON.stringify(level)}`)
}
}

View File

@ -16,10 +16,10 @@
<script lang="ts" setup>
import { ref, reactive, watch } from 'vue'
import KlTabBar from '@/components/kl-tab-bar/index.vue'
import CardPicture from '@/components/kl-card-picture/index.vue'
import { recommendTop } from '@/api/home/index'
import { ProjectDrawPageRespVO } from '@/api/home/type'
import KlTabBar from '~/components/kl-tab-bar/index.vue'
import CardPicture from '~/components/kl-card-picture/index.vue'
import { recommendTop } from '~/api/home/index'
import type { ProjectDrawPageRespVO } from '~/api/home/type'
const query = reactive({
type: 1,
@ -55,11 +55,11 @@
const handleClick = () => {
if (query.type === 1) {
window.open('/drawe', '_blank')
navigateTo('/drawe')
} else if (query.type === 2) {
window.open('/text', '_blank')
navigateTo('/text')
} else {
window.open('/model', '_blank')
navigateTo('/model')
}
}

View File

@ -33,8 +33,8 @@
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import type { ComponentPublicInstance } from 'vue'
import { tab2 } from '@/api/home/index'
import { ProjectDictNodeVO } from '@/api/home/type'
import { tab2 } from '~/api/home/index'
import type { ProjectDictNodeVO } from '~/api/home/type'
const activeIndex = ref(-1)
const submenuTop = ref(0)
@ -67,7 +67,7 @@
level.unshift(normal)
}
window.open(`/drawe?level=${JSON.stringify(level)}`, '_blank')
navigateTo(`/drawe?level=${JSON.stringify(level)}`)
}
const keepSubmenuVisible = () => {

View File

@ -17,11 +17,11 @@
</template>
<script lang="ts" setup>
import KlTabBar from '@/components/kl-tab-bar/index.vue'
import CardPicture from '@/components/kl-card-picture/index.vue'
import KlTabBar from '~/components/kl-tab-bar/index.vue'
import CardPicture from '~/components/kl-card-picture/index.vue'
import { ref } from 'vue'
import { pageRes, pageReq } from '@/api/upnew/types'
import emptyImg from '@/assets/images/empty.png'
import type { pageRes, pageReq } from '~/api/upnew/types'
import emptyImg from '~/assets/images/empty.png'
const query = defineModel<pageReq>('modelValue', {
required: true,

View File

@ -23,14 +23,14 @@
</div>
</template>
<script setup lang="ts">
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import KlWallpaperCategory from '@/components/kl-wallpaper-category/index.vue'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import KlWallpaperCategory from '~/components/kl-wallpaper-category/index.vue'
import RecommendedColumnsV2 from './components/RecommendedColumnsV2.vue'
// import FeaturedSpecials from './components/FeaturedSpecials.vue'
import { reactive, watch, ref } from 'vue'
import { page } from '@/api/upnew/index'
import { pageRes, pageReq } from '@/api/upnew/types'
import { page } from '~/api/upnew/index'
import type { pageRes, pageReq } from '~/api/upnew/types'
import { useRoute } from 'vue-router'
const route = useRoute()
const level = ref(

View File

@ -54,9 +54,9 @@
<script lang="ts" setup>
import { reactive, ref } from 'vue'
import { resetPassoword } from '@/api/login/index'
import { sendSms } from '@/api/common/index'
import useUserStore from '@/store/user'
import { resetPassoword } from '~/api/login/index'
import { sendSms } from '~/api/common/index'
import useUserStore from '~/store/user'
const userStore = useUserStore()
const activeName = ref('修改密码')

View File

@ -20,7 +20,7 @@
</template>
<script lang="ts" setup>
import { ProjectHistoryResVO } from '@/api/personal-center/types'
import type { ProjectHistoryResVO } from '~/api/personal-center/types'
import dayjs from 'dayjs'
const modelValue = defineModel<ProjectHistoryResVO[]>('modelValue', {

View File

@ -9,15 +9,15 @@
<div class="text-14px text-[#333333] font-normal my-10px!">by {{ scope.row?.ownedUserIdInfo?.nickName }}</div>
<div class="flex items-center">
<div class="flex items-center">
<img src="@/assets/images/look.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/look.png" alt="" srcset="" class="h-17px" />
<span class="ml-4px">{{ scope.row.previewPoint }}</span>
</div>
<div class="ml-13px flex items-center">
<img src="@/assets/images/add.png" alt="" srcset="" class="h-23px" />
<img src="~/assets/images/add.png" alt="" srcset="" class="h-23px" />
<span class="ml-4px">{{ scope.row.hotPoint }}</span>
</div>
<div class="ml-13px flex items-center">
<img src="@/assets/images/chat.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/chat.png" alt="" srcset="" class="h-17px" />
<span class="ml-4px">{{ scope.row.commentsPoint }}</span>
</div>
</div>
@ -35,7 +35,7 @@
</template>
<script lang="ts" setup>
import { ProjectHistoryResVO } from '@/api/personal-center/types'
import type { ProjectHistoryResVO } from '~/api/personal-center/types'
import dayjs from 'dayjs'
const modelValue = defineModel<ProjectHistoryResVO[]>('modelValue', {

View File

@ -10,15 +10,15 @@
<div class="text-14px text-[#333333] font-normal my-10px!">{{ scope.row?.ownedUserIdInfo?.nickName }}</div>
<div class="flex items-center">
<div class="flex items-center">
<img src="@/assets/images/look.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/look.png" alt="" srcset="" class="h-17px" />
<span class="ml-4px">{{ scope.rowpreviewPoint || 0 }}</span>
</div>
<div class="ml-13px flex items-center">
<img src="@/assets/images/add.png" alt="" srcset="" class="h-23px" />
<img src="~/assets/images/add.png" alt="" srcset="" class="h-23px" />
<span class="ml-4px">{{ scope.row.hotPoint || 0 }}</span>
</div>
<div class="ml-13px flex items-center">
<img src="@/assets/images/chat.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/chat.png" alt="" srcset="" class="h-17px" />
<span class="ml-4px">{{ scope.row.commentsPoint || 0 }}</span>
</div>
</div>
@ -42,11 +42,11 @@
<script lang="ts" setup>
import { ref } from 'vue'
import KlTabBar from '@/components/kl-tab-bar/v2/index.vue'
import { PageResultProjectMemberFavoritesRespVO } from '@/api/personal-center/types'
import { deleteProject } from '@/api/drawe-detail/index'
import KlTabBar from '~/components/kl-tab-bar/v2/index.vue'
import type { PageResultProjectMemberFavoritesRespVO } from '~/api/personal-center/types'
import { deleteProject } from '~/api/drawe-detail/index'
import dayjs from 'dayjs'
import { useMessage } from '@/utils/useMessage'
import { useMessage } from '~/utils/useMessage'
const message = useMessage()
const type = defineModel<number | string>('type', {

View File

@ -128,10 +128,10 @@
import { throttle } from 'lodash'
import { ref, computed, onMounted, nextTick } from 'vue'
import { Picture, Position, Sunrise, Search, Loading } from '@element-plus/icons-vue'
import { upload } from '@/api/common'
import { sendSingleChat, conversationList, getChatDetail, clearUnreadMessage } from '@/api/channel/index'
import { chatMessagesReq, msgType, PageResultSessionRespVO, PageResultMessageRespVO } from '@/api/channel/types'
import useUserStore from '@/store/user'
import { upload } from '~/api/common'
import { sendSingleChat, conversationList, getChatDetail, clearUnreadMessage } from '~/api/channel/index'
import type { chatMessagesReq, msgType, PageResultSessionRespVO, PageResultMessageRespVO } from '~/api/channel/types'
import useUserStore from '~/store/user'
const userStore = useUserStore()
import dayjs from 'dayjs'

View File

@ -23,11 +23,11 @@
<script setup lang="ts">
import { reactive } from 'vue'
// import { accDiv } from '@/utils/utils'
// import { accDiv } from '~/utils/utils'
import dayjs from 'dayjs'
import { bizTypeMap } from '@/enum/index'
import { getWalletRechargeRecordPage } from '@/api/pay/index'
import { AppPayWalletRechargeRespVO } from '@/api/pay/types'
import { bizTypeMap } from '~/enum/index'
import { getWalletRechargeRecordPage } from '~/api/pay/index'
import type { AppPayWalletRechargeRespVO } from '~/api/pay/types'
const result = reactive({
data: [] as AppPayWalletRechargeRespVO[],

View File

@ -38,13 +38,13 @@
<script setup lang="ts">
import { ref, watch, onMounted } from 'vue'
import { listWalletRechargePackage, submitPayOrder, getPayStatus } from '@/api/pay/index'
import { accDiv } from '@/utils/utils'
import { listWalletRechargePackage, submitPayOrder, getPayStatus } from '~/api/pay/index'
import { accDiv } from '~/utils/utils'
import { Close } from '@element-plus/icons-vue'
import type { AppPayWalletPackageRespVO } from '@/api/pay/types'
import type { AppPayWalletPackageRespVO } from '~/api/pay/types'
// @ts-ignore
import QrcodeVue from 'qrcode.vue'
import useUserStore from '@/store/user'
import useUserStore from '~/store/user'
const userStore = useUserStore()
const props = defineProps({

View File

@ -10,15 +10,15 @@
<div class="text-14px text-[#333333] font-normal my-10px!">{{ dayjs(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</div>
<div class="flex items-center">
<div class="flex items-center">
<img src="@/assets/images/look.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/look.png" alt="" srcset="" class="h-17px" />
<span class="ml-4px">{{ scope.row.previewPoint }}</span>
</div>
<div class="ml-13px flex items-center">
<img src="@/assets/images/add.png" alt="" srcset="" class="h-23px" />
<img src="~/assets/images/add.png" alt="" srcset="" class="h-23px" />
<span class="ml-4px">{{ scope.row.hotPoint }}</span>
</div>
<div class="ml-13px flex items-center">
<img src="@/assets/images/chat.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/chat.png" alt="" srcset="" class="h-17px" />
<span class="ml-4px">{{ scope.row.commentsPoint }}</span>
</div>
</div>
@ -43,11 +43,11 @@
<script lang="ts" setup>
import { ref } from 'vue'
import { offShelf, deleteResource } from '@/api/personal-center'
import { offShelf, deleteResource } from '~/api/personal-center'
import KlTabBar from '@/components/kl-tab-bar/v2/index.vue'
import KlTabBar from '~/components/kl-tab-bar/v2/index.vue'
import dayjs from 'dayjs'
import { useMessage } from '@/utils/useMessage'
import { useMessage } from '~/utils/useMessage'
const message = useMessage()
const type = defineModel<number | string>('type', {

View File

@ -17,7 +17,7 @@
<script setup lang="ts">
import { onMounted, ref, onUnmounted } from 'vue'
import * as echarts from 'echarts'
import { getRecentIncomeAndActive, getResourceDistribution } from '@/api/personal-center/index'
import { getRecentIncomeAndActive, getResourceDistribution } from '~/api/personal-center/index'
const incomeChartRef = ref<HTMLElement>()
const activeChartRef = ref<HTMLElement>()

View File

@ -5,8 +5,8 @@
<div class="ml-29px">
<div class="flex items-center">
<span class="text-20px text-[#333333] font-normal">Hi{{ userStore.userInfoRes.nickname }}</span>
<img v-if="userStore.userInfoRes.vipLevel === 1" src="@/assets/svg/vip.svg" alt="" class="relative top-2px ml-5px" />
<img v-if="userStore.userInfoRes.vipLevel === 2" src="@/assets/svg/svip.svg" alt="" class="relative top-2px ml-5px" />
<img v-if="userStore.userInfoRes.vipLevel === 1" src="~/assets/svg/vip.svg" alt="" class="relative top-2px ml-5px" />
<img v-if="userStore.userInfoRes.vipLevel === 2" src="~/assets/svg/svip.svg" alt="" class="relative top-2px ml-5px" />
<div
class="ml-18px h-30px w-80px cursor-pointer border border-[#1A65FF] rounded-15px border-solid text-center text-14px text-[#1A65FF] font-normal line-height-30px"
@click="handleClick"
@ -15,19 +15,19 @@
</div>
<div class="mt-20px flex items-center text-14px text-[#333333] font-normal">
<div class="flex items-center">
<img src="@/assets/images/cad_0 (1).png" alt="" srcset="" />
<img src="~/assets/images/cad_0 (1).png" alt="" srcset="" />
<span class="ml-4px">我的积分: {{ userStaticInfo?.pointCount || 0 }}</span>
</div>
<div class="ml-37px flex items-center">
<img src="@/assets/images/cad_0 (2).png" alt="" srcset="" />
<img src="~/assets/images/cad_0 (2).png" alt="" srcset="" />
<span class="ml-4px">我的收藏: {{ userStaticInfo?.followCount || 0 }}</span>
</div>
<div class="ml-37px flex items-center">
<img src="@/assets/images/cad_0 (3).png" alt="" srcset="" />
<img src="~/assets/images/cad_0 (3).png" alt="" srcset="" />
<span class="ml-4px">我的发布: {{ userStaticInfo?.projectCount || 0 }}</span>
</div>
<div class="ml-37px flex items-center">
<img src="@/assets/images/cad_0 (4).png" alt="" srcset="" />
<img src="~/assets/images/cad_0 (4).png" alt="" srcset="" />
<span class="ml-4px">我的下载: {{ userStaticInfo?.downloadCount || 0 }}</span>
</div>
</div>
@ -36,8 +36,8 @@
<div class="mt-30px flex items-center justify-around">
<div class="flex items-center">
<div class="relative">
<img src="@/assets/images/info_1 (3).png" alt="" srcset="" />
<img src="@/assets/images/info_1 (4).png" alt="" srcset="" class="absolute left-18px top-18px" />
<img src="~/assets/images/info_1 (3).png" alt="" srcset="" />
<img src="~/assets/images/info_1 (4).png" alt="" srcset="" class="absolute left-18px top-18px" />
</div>
<div class="ml-18px">
<div class="flex items-center">
@ -49,8 +49,8 @@
</div>
<div class="flex items-center">
<div class="relative">
<img src="@/assets/images/info_1 (5).png" alt="" srcset="" />
<img src="@/assets/images/info_1 (6).png" alt="" srcset="" class="absolute left-18px top-22px" />
<img src="~/assets/images/info_1 (5).png" alt="" srcset="" />
<img src="~/assets/images/info_1 (6).png" alt="" srcset="" class="absolute left-18px top-22px" />
</div>
<div class="ml-18px">
<div>
@ -61,8 +61,8 @@
</div>
<div class="flex items-center">
<div class="relative">
<img src="@/assets/images/info_1 (1).png" alt="" srcset="" />
<img src="@/assets/images/info_1 (2).png" alt="" srcset="" class="absolute left-20px top-18px" />
<img src="~/assets/images/info_1 (1).png" alt="" srcset="" />
<img src="~/assets/images/info_1 (2).png" alt="" srcset="" class="absolute left-20px top-18px" />
</div>
<div class="ml-18px">
<div>
@ -78,15 +78,15 @@
<div class="title">快捷入口</div>
<div class="mt-20px flex items-center">
<div class="info_item cursor-pointer" @click="handleClickPush('/upnew/drawe')">
<img src="@/assets/images/fabu_2 (3).png" alt="" srcset="" />
<img src="~/assets/images/fabu_2 (3).png" alt="" srcset="" />
<div class="mt-10px">发布资源</div>
</div>
<div class="info_item ml-31px cursor-pointer" @click="handleClickPush('/communication/channel')">
<img src="@/assets/images/fabu_2 (1).png" alt="" srcset="" />
<img src="~/assets/images/fabu_2 (1).png" alt="" srcset="" />
<div class="mt-10px">交流频道</div>
</div>
<div class="info_item ml-31px cursor-pointer" @click="handleService">
<img src="@/assets/images/fabu_2 (2).png" alt="" srcset="" />
<img src="~/assets/images/fabu_2 (2).png" alt="" srcset="" />
<div class="mt-10px">消息</div>
</div>
</div>
@ -102,12 +102,12 @@
<script setup lang="ts">
import { ref } from 'vue'
import { getUserStatistics } from '@/api/personal-center/index'
import { UserStatisticsCountRespVO } from '@/api/personal-center/types'
import { getUserStatistics } from '~/api/personal-center/index'
import type { UserStatisticsCountRespVO } from '~/api/personal-center/types'
import Message from './components/message.vue'
import InfoEcharts from './info-echarts.vue'
import Pay from './components/pay.vue'
import useUserStore from '@/store/user'
import useUserStore from '~/store/user'
const userStore = useUserStore()
// 路由跳转
@ -136,7 +136,7 @@
if (!path) {
return
}
window.open(path, '_blank')
navigateTo(path)
}
const dialogVisible = ref(false)

View File

@ -3,7 +3,7 @@
<div class="flex items-center justify-between border-b-1px border-b-[#eeeeee] border-b-solid pb-18px">
<div class="text-16px text-[#333333] font-normal">个人资料</div>
<div class="flex items-center">
<!-- <img src="@/assets/images/fans.png" alt="" srcset="" /> -->
<!-- <img src="~/assets/images/fans.png" alt="" srcset="" /> -->
<span class="ml-8px text-14px text-[#333333] font-normal"></span>
</div>
</div>
@ -118,13 +118,13 @@
</div>
<div class="flex flex-col justify-center text-14px text-[#333333] font-normal">
<div class="mt-30px flex items-center">
<img src="@/assets/images/qq-v2.png" alt="" srcset="" class="h-35px w-34px" />
<img src="~/assets/images/qq-v2.png" alt="" srcset="" class="h-35px w-34px" />
<div class="ml-19px">QQ</div>
<div class="ml-100px flex items-center"><div class="w-90px">QQ昵称</div><div class="w-180px">xxx</div></div>
<div class="btn">绑定</div>
</div>
<div class="mt-30px flex items-center">
<img src="@/assets/images/weixin-v2.png" alt="" srcset="" class="h-35px w-34px" />
<img src="~/assets/images/weixin-v2.png" alt="" srcset="" class="h-35px w-34px" />
<div class="ml-19px">微信</div>
<div class="ml-95px flex items-center"><div class="w-90px">微信昵称</div><div class="w-180px">xxx</div></div>
<div class="btn">绑定</div>
@ -137,10 +137,10 @@
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { Plus } from '@element-plus/icons-vue'
import { tree, upload } from '@/api/common/index'
import { keywords } from '@/api/upnew/index'
import { userExtend, getUserInfo, updateUserExtend } from '@/api/personal-center/index.ts'
import { UserExtendSaveReqVO } from '@/api/personal-center/types'
import { tree, upload } from '~/api/common/index'
import { keywords } from '~/api/upnew/index'
import { userExtend, getUserInfo, updateUserExtend } from '~/api/personal-center/index'
import type { UserExtendSaveReqVO } from '~/api/personal-center/types'
import verifyDialog from './verify-dialog.vue'
const userFormRef = ref()

View File

@ -33,14 +33,14 @@
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { getContentPage, getUserToolBoxPage, getUserFavoritePage, getOwnContentPage } from '@/api/personal-center/index'
// import { ProjectHistoryResVO } from '@/api/personal-center/types'
import { getContentPage, getUserToolBoxPage, getUserFavoritePage, getOwnContentPage } from '~/api/personal-center/index'
// import { ProjectHistoryResVO } from '~/api/personal-center/types'
import uploadTable from './components/upload-table.vue'
import downloadTable from './components/download-table.vue'
import favoriteTable from './components/favorite-table.vue'
import browseTable from './components/browse-table.vue'
import useUserStore from '@/store/user'
import useUserStore from '~/store/user'
const userStore = useUserStore()
const activeName = ref('我的上传')

View File

@ -39,8 +39,8 @@
import { ref } from 'vue'
import Pay from './components/pay.vue'
import PayRecords from './components/pay-records.vue'
import { getUserStatistics } from '@/api/personal-center/index'
import { UserStatisticsCountRespVO } from '@/api/personal-center/types'
import { getUserStatistics } from '~/api/personal-center/index'
import type { UserStatisticsCountRespVO } from '~/api/personal-center/types'
const activeTab = ref('purchase')
// const currentMonth = ref('2025.03')

View File

@ -38,8 +38,8 @@
import { ref, reactive } from 'vue'
import { Plus } from '@element-plus/icons-vue'
import type { FormInstance, FormRules } from 'element-plus'
import { getUserAuthInfo, createUserAuthInfo, updateUserAuthInfo } from '@/api/personal-center/index.ts'
import { UserAuthInfoRespVO } from '@/api/personal-center/types'
import { getUserAuthInfo, createUserAuthInfo, updateUserAuthInfo } from '~/api/personal-center/index'
import type { UserAuthInfoRespVO } from '~/api/personal-center/types'
const dialogVisible = ref(false)
const formRef = ref<FormInstance>()

View File

@ -2,77 +2,77 @@
<KlNavTab />
<div class="ma-auto w-1198px flex justify-between">
<div class="left mt-25px box-border h-370px w-260px border border-[#EEEEEE] rounded-4px border-solid bg-[#FFFFFF] text-15px text-[#333333] font-medium">
<router-link to="/personal/center/info" class="flex items-center justify-between py-14px">
<nuxt-link to="/personal/center/info" class="flex items-center justify-between py-14px">
<div class="flex items-center pl-20px">
<img v-if="route.path.startsWith('/personal/center/info')" src="@/assets/images/user3.png" alt="" srcset="" class="h-20px" />
<img v-else src="@/assets/images/个人.png" alt="" srcset="" class="h-20px" />
<img v-if="route.path.startsWith('/personal/center/info')" src="~/assets/images/user3.png" alt="" srcset="" class="h-20px" />
<img v-else src="~/assets/images/个人.png" alt="" srcset="" class="h-20px" />
<span class="ml-10px">个人中心</span>
</div>
<div class="pr-20px">
<el-icon><ArrowRight /></el-icon>
</div>
</router-link>
</nuxt-link>
<router-link to="/personal/profile" class="flex items-center justify-between py-14px">
<nuxt-link to="/personal/profile" class="flex items-center justify-between py-14px">
<div class="flex items-center pl-20px">
<img v-if="!route.path.startsWith('/personal/profile')" src="@/assets/images/user_zl.png" alt="" srcset="" class="h-16px" />
<img v-else src="@/assets/images/个人资料 (1).png" alt="" srcset="" class="h-16px" />
<img v-if="!route.path.startsWith('/personal/profile')" src="~/assets/images/user_zl.png" alt="" srcset="" class="h-16px" />
<img v-else src="~/assets/images/个人资料 (1).png" alt="" srcset="" class="h-16px" />
<span class="ml-10px">个人资料</span>
</div>
<div class="pr-20px">
<el-icon><ArrowRight /></el-icon>
</div>
</router-link>
<router-link to="/personal/account/security" class="flex items-center justify-between py-14px">
</nuxt-link>
<nuxt-link to="/personal/account/security" class="flex items-center justify-between py-14px">
<div class="flex items-center pl-20px">
<img v-if="!route.path.startsWith('/personal/account/security')" src="@/assets/images/account.png" alt="" srcset="" class="h-20px" />
<img v-else src="@/assets/images/账户安全.png" alt="" srcset="" class="h-20px" />
<img v-if="!route.path.startsWith('/personal/account/security')" src="~/assets/images/account.png" alt="" srcset="" class="h-20px" />
<img v-else src="~/assets/images/账户安全.png" alt="" srcset="" class="h-20px" />
<span class="ml-14px">账户与安全</span>
</div>
<div class="pr-20px">
<el-icon><ArrowRight /></el-icon>
</div>
</router-link>
<router-link to="/personal/resource/center" class="flex items-center justify-between py-14px">
</nuxt-link>
<nuxt-link to="/personal/resource/center" class="flex items-center justify-between py-14px">
<div class="flex items-center pl-20px">
<img v-if="!route.path.startsWith('/personal/resource/center')" src="@/assets/images/ziyuan.png" alt="" srcset="" class="h-18px" />
<img v-else src="@/assets/images/资源.png" alt="" srcset="" class="h-18px" />
<img v-if="!route.path.startsWith('/personal/resource/center')" src="~/assets/images/ziyuan.png" alt="" srcset="" class="h-18px" />
<img v-else src="~/assets/images/资源.png" alt="" srcset="" class="h-18px" />
<span class="ml-12px">资源中心</span>
</div>
<div class="pr-20px">
<el-icon><ArrowRight /></el-icon>
</div>
</router-link>
<router-link to="/personal/trading/center" class="flex items-center justify-between py-14px">
</nuxt-link>
<nuxt-link to="/personal/trading/center" class="flex items-center justify-between py-14px">
<div class="flex items-center pl-20px">
<img v-if="!route.path.startsWith('/personal/trading/center')" src="@/assets/images/pay.png" alt="" srcset="" class="h-20px" />
<img v-else src="@/assets/images/交易管理.png" alt="" srcset="" class="h-20px" />
<img v-if="!route.path.startsWith('/personal/trading/center')" src="~/assets/images/pay.png" alt="" srcset="" class="h-20px" />
<img v-else src="~/assets/images/交易管理.png" alt="" srcset="" class="h-20px" />
<span class="ml-12px">交易中心</span>
</div>
<div class="pr-20px">
<el-icon><ArrowRight /></el-icon>
</div>
</router-link>
<router-link to="/personal/center/message" class="flex items-center justify-between py-14px">
</nuxt-link>
<nuxt-link to="/personal/center/message" class="flex items-center justify-between py-14px">
<div class="flex items-center pl-20px">
<img v-if="!route.path.startsWith('/personal/center/message')" src="@/assets/images/message.png" alt="" srcset="" class="h-18px" />
<img v-else src="@/assets/images/消息.png" alt="" srcset="" class="h-18px" />
<img v-if="!route.path.startsWith('/personal/center/message')" src="~/assets/images/message.png" alt="" srcset="" class="h-18px" />
<img v-else src="~/assets/images/消息.png" alt="" srcset="" class="h-18px" />
<span class="ml-14px">消息通知</span>
</div>
<div class="pr-20px">
<el-icon><ArrowRight /></el-icon>
</div>
</router-link>
</nuxt-link>
</div>
<div class="right mt-25px">
<router-view></router-view>
<NuxtPage />
</div>
</div>
</template>
<script setup lang="ts">
import { ArrowRight } from '@element-plus/icons-vue'
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import { useRoute } from 'vue-router'
const route = useRoute()

View File

@ -41,15 +41,15 @@
<div class="text-14px text-[#666] font-normal my-10px!">{{ dayjs(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</div>
<div class="flex items-center">
<div class="flex items-center">
<img src="@/assets/images/look.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/look.png" alt="" srcset="" class="h-17px" />
<span class="ml-4px">{{ scope.row.previewPoint }}</span>
</div>
<div class="ml-13px flex items-center">
<img src="@/assets/images/add.png" alt="" srcset="" class="h-23px" />
<img src="~/assets/images/add.png" alt="" srcset="" class="h-23px" />
<span class="ml-4px">{{ scope.row.hotPoint }}</span>
</div>
<div class="ml-13px flex items-center">
<img src="@/assets/images/chat.png" alt="" srcset="" class="h-17px" />
<img src="~/assets/images/chat.png" alt="" srcset="" class="h-17px" />
<span class="ml-4px">{{ scope.row.commentsPoint }}</span>
</div>
</div>
@ -104,13 +104,13 @@
<script setup lang="ts">
import { ref, onMounted, reactive } from 'vue'
import { UserExtendSaveReqVO } from '@/api/personal-center/types'
import { getMainWork } from '@/api/drawe-detail/index'
import { getOwnContentPage } from '@/api/personal-center/index.ts'
import { offShelf, deleteResource, getUserExtend } from '@/api/personal-center'
import { ProjectDrawMemberRespVO } from '@/api/drawe-detail/types'
import type { UserExtendSaveReqVO } from '~/api/personal-center/types'
import { getMainWork } from '~/api/drawe-detail/index'
import { getOwnContentPage } from '~/api/personal-center/index'
import { offShelf, deleteResource, getUserExtend } from '~/api/personal-center'
import type { ProjectDrawMemberRespVO } from '~/api/drawe-detail/types'
import dayjs from 'dayjs'
import { useMessage } from '@/utils/useMessage'
import { useMessage } from '~/utils/useMessage'
const message = useMessage()
// 用户信息
const userForm = reactive<UserExtendSaveReqVO>({
@ -249,7 +249,7 @@
}
const handleClickV2 = (id: string | number) => {
window.open(`/down-drawe-detail?id=${id}`, '_blank') // 修改为在新窗口打开
navigateTo(`/down-drawe-detail?id=${id}`) // 修改为在新窗口打开
}
// 获取最新发布
const mainWork = ref<ProjectDrawMemberRespVO[]>([])

View File

@ -67,9 +67,9 @@
<script setup lang="ts">
import { reactive } from 'vue'
import { Search } from '@element-plus/icons-vue'
import { signIn, getUserPointPage } from '@/api/personal-center/index'
import { PageResultMemberPointRecordRespVO } from '@/api/personal-center/types'
import useUserStore from '@/store/user'
import { signIn, getUserPointPage } from '~/api/personal-center/index'
import type { PageResultMemberPointRecordRespVO } from '~/api/personal-center/types'
import useUserStore from '~/store/user'
import dayjs from 'dayjs'
const userStore = useUserStore()

View File

@ -17,11 +17,11 @@
</template>
<script lang="ts" setup>
import KlTabBar from '@/components/kl-tab-bar/index.vue'
import CardPicture from '@/components/kl-card-picture/index.vue'
import KlTabBar from '~/components/kl-tab-bar/index.vue'
import CardPicture from '~/components/kl-card-picture/index.vue'
import { ref } from 'vue'
import { pageRes, pageReq } from '@/api/upnew/types'
import emptyImg from '@/assets/images/empty.png'
import type { pageRes, pageReq } from '~/api/upnew/types'
import emptyImg from '~/assets/images/empty.png'
const query = defineModel<pageReq>('modelValue', {
required: true,

View File

@ -23,14 +23,14 @@
</div>
</template>
<script setup lang="ts">
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import KlWallpaperCategory from '@/components/kl-wallpaper-category/index.vue'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import KlWallpaperCategory from '~/components/kl-wallpaper-category/index.vue'
import RecommendedColumnsV2 from './components/RecommendedColumnsV2.vue'
// import FeaturedSpecials from './components/FeaturedSpecials.vue'
import { reactive, watch, ref } from 'vue'
import { page } from '@/api/upnew/index'
import { pageRes, pageReq } from '@/api/upnew/types'
import { page } from '~/api/upnew/index'
import type { pageRes, pageReq } from '~/api/upnew/types'
import { useRoute } from 'vue-router'
const route = useRoute()

View File

@ -88,10 +88,10 @@
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { Plus } from '@element-plus/icons-vue'
import KlUploader from '@/components/kl-uploader/index.vue'
import { parent, keywords, labels } from '@/api/upnew/index'
import { create } from '@/api/toolbox/index.js'
import { TcreateReq } from '@/api/toolbox/types'
import KlUploader from '~/components/kl-uploader/index.vue'
import { parent, keywords, labels } from '~/api/upnew/index'
import { create } from '~/api/toolbox/index.js'
import type { TcreateReq } from '~/api/toolbox/types'
const form = reactive<TcreateReq>({
title: '',

View File

@ -37,7 +37,7 @@
<script setup lang="ts">
import { ref } from 'vue'
import { Search } from '@element-plus/icons-vue'
import useUserStore from '@/store/user'
import useUserStore from '~/store/user'
const userStore = useUserStore()
const emits = defineEmits(['search'])
@ -48,7 +48,7 @@
// 是否登录
if (!userStore.token) return ElMessage.error('请先登录')
// 新开窗口 用router跳转 新窗口打开
window.open('/toolbox-publish', '_blank')
navigateTo('/toolbox-publish')
}
const search = () => {

View File

@ -4,7 +4,7 @@
<KlSearch @search="search"></KlSearch>
<div v-loading="loading" class="ml-auto mr-auto mt-20px w1440 flex justify-center gap-60px">
<div class="left w-821px">
<img src="@/assets/images/banner2.png" alt="" srcset="" class="h-284px w-100%" />
<img src="~/assets/images/banner2.png" alt="" srcset="" class="h-284px w-100%" />
<div
class="box-border border border-t-0px border-t-0px border-[#EEEEEE] rounded-12px border-solid border-t-none bg-[#FFFFFF] px-28px py-17px"
style="border-top-left-radius: 0px; border-top-right-radius: 0px"
@ -19,10 +19,10 @@
<div class="mt-10px flex items-center justify-between">
<div class="flex items-center">
<div class="flex items-center text-14px text-[#666666] font-normal">
<img src="@/assets/images/look.png" alt="" srcset="" class="mr-4px h-17px w-23px" />{{ item.previewPoint }}
<img src="~/assets/images/look.png" alt="" srcset="" class="mr-4px h-17px w-23px" />{{ item.previewPoint }}
</div>
<div class="ml-26px flex items-center text-14px text-[#666666] font-normal">
<img src="@/assets/images/chat.png" alt="" srcset="" class="mr-4px h-17px w-19px" /> {{ item.commentsPoint }}
<img src="~/assets/images/chat.png" alt="" srcset="" class="mr-4px h-17px w-19px" /> {{ item.commentsPoint }}
</div>
<div class="ml-20px">
<div v-for="(v, index) in item.labels" :key="index" class="mr-10px inline-block text-14px text-[#1A65FF] font-normal">#{{ v }}</div>
@ -85,7 +85,7 @@
:key="item"
class="mt-16px flex items-center border-b-1px border-b-[#eee] border-b-solid pb-16px text-16px text-[#333333] font-normal"
>
<img src="@/assets/images/aucad.png" alt="" srcset="" class="h-68px w-110px" />
<img src="~/assets/images/aucad.png" alt="" srcset="" class="h-68px w-110px" />
<div class="ml-20px text-16px text-[#333333] font-normal">Stable Diffusion 商业变现与 绘画大模型多场景实战</div>
</div>
</div> -->
@ -94,14 +94,14 @@
</template>
<script setup lang="ts">
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import { page } from '@/api/toolbox/index.js'
import { TpageReq, TpageRes } from '@/api/toolbox/types'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import { page } from '~/api/toolbox/index.js'
import type { TpageReq, TpageRes } from '~/api/toolbox/types'
import { reactive, ref } from 'vue'
import KlSearch from '@/pages/toolbox/components/search.vue'
import { getRelationRecommend } from '@/api/drawe-detail/index'
import { ProjectDrawPageRespVO } from '@/api/drawe-detail/types'
import emptyImg from '@/assets/images/empty.png'
import KlSearch from '~/pages/toolbox/components/search.vue'
import { getRelationRecommend } from '~/api/drawe-detail/index'
import type { ProjectDrawPageRespVO } from '~/api/drawe-detail/types'
import emptyImg from '~/assets/images/empty.png'
import dayjs from 'dayjs'
const pageReq = reactive<TpageReq>({

View File

@ -157,11 +157,12 @@
</template>
<script setup lang="ts">
import { ref, PropType, computed } from 'vue'
import type { PropType } from 'vue'
import { ref, computed } from 'vue'
import { Plus } from '@element-plus/icons-vue'
import KlUploader from '@/components/kl-uploader/index.vue'
import { parent, keywords, labels, indexTabs } from '@/api/upnew/index'
import { TcreateReq } from '@/api/upnew/types'
import KlUploader from '~/components/kl-uploader/index.vue'
import { parent, keywords, labels, indexTabs } from '~/api/upnew/index'
import type { TcreateReq } from '~/api/upnew/types'
const props = defineProps({
vaildRules: {

View File

@ -53,9 +53,9 @@
<script setup lang="ts">
import { nextTick, ref } from 'vue'
import { TcreateReq } from '@/api/upnew/types'
import { tree } from '@/api/common/index'
import { DrawsEnmu } from '../util.ts'
import type { TcreateReq } from '~/api/upnew/types'
import { tree } from '~/api/common/index'
import { DrawsEnmu } from '../util'
const form = defineModel<TcreateReq>('modelValue', {
required: true,

View File

@ -1,7 +1,7 @@
<template>
<div class="ml-23px box-border min-h-930px w-516px border border-[#EEEEEE] rounded-12px border-solid bg-[#FFFFFF] px-33px py-22px">
<div class="flex items-center">
<img src="@/assets/images/preview.png" alt="" srcset="" width="16px" height="19px" /><span class="ml-7px text-18px text-[#333333] font-normal"
<img src="~/assets/images/preview.png" alt="" srcset="" width="16px" height="19px" /><span class="ml-7px text-18px text-[#333333] font-normal"
>预览</span
></div
>
@ -11,7 +11,7 @@
>
<div class="my-30px h-1px w-460px rounded-1px bg-[#EEEEEE]"></div>
<div class="flex items-center"
><img src="@/assets/images/tip.png" width="20px" height="20px" /><span class="ml-7px text-18px text-[#333333] font-normal"
><img src="~/assets/images/tip.png" width="20px" height="20px" /><span class="ml-7px text-18px text-[#333333] font-normal"
>上传遇到问题可以咨询</span
></div
>

View File

@ -28,11 +28,11 @@
import PreView from './components/Preview.vue'
import DrawType from './components/DrawType.vue'
import DrawForm from './components/DrawForm.vue'
import KlNavTab from '@/components/kl-nav-tab/index.vue'
import KlNavTab from '~/components/kl-nav-tab/index.vue'
import { reactive, ref, onMounted, computed } from 'vue'
import { TcreateReq } from '@/api/upnew/types'
import { create } from '@/api/upnew/index'
import type { TcreateReq } from '~/api/upnew/types'
import { create } from '~/api/upnew/index'
const form = reactive<TcreateReq>({
activeName: '', // 标签