فهرست منبع

Merge branch 'v2.0' into v2.0_ch

chenlei 3 ماه پیش
والد
کامیت
91f443b903

+ 1 - 0
.gitignore

@@ -13,6 +13,7 @@ dist-ssr
 *.local
 eta_forum_admin_front
 eta_forum_admin_front.zip
+auto-imports.d.ts
 
 # Editor directories and files
 .vscode/*

+ 4 - 1
README.md

@@ -2,4 +2,7 @@
 1. 测试访问地址:http://8.136.199.33:8900/
 2. 项目引入了两个UI库 Tdesign 和 ElementPlus,主要使用Tdesign因为UI是按照这个组件库标准设计的,
     使用ElementPlus是因为用了其中的Tree组件
-3. t-table可以利用 cellEmptyContent插槽来实现 操作栏的渲染;具体示例 可见 customer\UserList页面中
+3. t-table 某列数据的插槽 是 直接用 
+    ``<template #EdbName="{ row }">
+        <span>指标名称</span>
+    </template>``

+ 1 - 0
package.json

@@ -27,6 +27,7 @@
   },
   "devDependencies": {
     "@vitejs/plugin-vue": "^5.0.4",
+    "@vitejs/plugin-vue-jsx": "^4.1.1",
     "archiver": "^7.0.1",
     "sass": "^1.75.0",
     "unplugin-auto-import": "^0.17.5",

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 713 - 1984
pnpm-lock.yaml


+ 8 - 4
src/api/system/common.js

@@ -1,8 +1,12 @@
 import {get,post} from '@/api/index'
 
 export default{
-    //机构用户
-    companyUserList:()=>{
-        return get('/admin/business/admin',{})
-    }
+	//机构用户
+	companyUserList:()=>{
+		return get('/admin/business/admin',{})
+	},
+	// 系统菜单
+	menuList:()=>{
+		return get('/system/menu/list',{})
+	}
 }

BIN
src/assets/icons/warning.png


+ 2 - 2
src/assets/svg/menu/customer.svg

@@ -1,4 +1,4 @@
 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M14.375 6.25C14.375 8.66625 12.4162 10.625 10 10.625C7.58375 10.625 5.625 8.66625 5.625 6.25C5.625 3.83375 7.58375 1.875 10 1.875C12.4162 1.875 14.375 3.83375 14.375 6.25ZM13.125 6.25C13.125 4.52411 11.7259 3.125 10 3.125C8.27411 3.125 6.875 4.52411 6.875 6.25C6.875 7.97589 8.27411 9.375 10 9.375C11.7259 9.375 13.125 7.97589 13.125 6.25Z" fill="black" fill-opacity="0.9"/>
-<path d="M17.4539 13.566C17.8712 13.7653 18.125 14.1933 18.125 14.6558V17.5C18.125 17.8452 17.8452 18.125 17.5 18.125H2.5C2.15482 18.125 1.875 17.8452 1.875 17.5V14.6558C1.875 14.1933 2.12877 13.7653 2.54608 13.566C4.81175 12.4838 7.33314 11.875 10 11.875C12.6669 11.875 15.1882 12.4838 17.4539 13.566ZM10 13.125C7.54175 13.125 5.21793 13.6822 3.125 14.6748V16.875H16.875V14.6748C14.7821 13.6822 12.4582 13.125 10 13.125Z" fill="black" fill-opacity="0.9"/>
+<path d="M14.375 6.25C14.375 8.66625 12.4162 10.625 10 10.625C7.58375 10.625 5.625 8.66625 5.625 6.25C5.625 3.83375 7.58375 1.875 10 1.875C12.4162 1.875 14.375 3.83375 14.375 6.25ZM13.125 6.25C13.125 4.52411 11.7259 3.125 10 3.125C8.27411 3.125 6.875 4.52411 6.875 6.25C6.875 7.97589 8.27411 9.375 10 9.375C11.7259 9.375 13.125 7.97589 13.125 6.25Z" fill="currentColor" fill-opacity="0.9"/>
+<path d="M17.4539 13.566C17.8712 13.7653 18.125 14.1933 18.125 14.6558V17.5C18.125 17.8452 17.8452 18.125 17.5 18.125H2.5C2.15482 18.125 1.875 17.8452 1.875 17.5V14.6558C1.875 14.1933 2.12877 13.7653 2.54608 13.566C4.81175 12.4838 7.33314 11.875 10 11.875C12.6669 11.875 15.1882 12.4838 17.4539 13.566ZM10 13.125C7.54175 13.125 5.21793 13.6822 3.125 14.6748V16.875H16.875V14.6748C14.7821 13.6822 12.4582 13.125 10 13.125Z" fill="currentColor" fill-opacity="0.9"/>
 </svg>

+ 6 - 0
src/assets/svg/menu/menu02.svg

@@ -0,0 +1,6 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M5.62499 15L5.625 9.37492L6.875 9.37493L6.87499 15H5.62499Z" fill="currentColor"/>
+<path d="M9.375 5.625L9.375 15H10.625L10.625 5.625H9.375Z" fill="currentColor"/>
+<path d="M13.125 15L13.125 11.25L14.375 11.25L14.375 15H13.125Z" fill="currentColor"/>
+<path d="M2.5 3.75C2.5 3.05964 3.05965 2.5 3.75 2.5H16.25C16.9404 2.5 17.5 3.05965 17.5 3.75L17.5 16.25C17.5 16.9404 16.9404 17.5 16.25 17.5L3.75 17.5C3.05964 17.5 2.5 16.9404 2.5 16.25V3.75ZM3.75 3.75L3.75 16.25L16.25 16.25L16.25 3.75L3.75 3.75Z" fill="currentColor"/>
+</svg>

+ 15 - 0
src/assets/svg/menu/menu03.svg

@@ -0,0 +1,15 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_96_4659)">
+<path d="M9.99982 1C5.029 1 1 5.0298 1 10.0004C1 14.9709 5.029 19 9.99982 19C14.9708 19 19 14.9709 19 10.0004C19 5.0298 14.9708 1 9.99982 1ZM9.99982 18.094C5.52963 18.094 1.90608 14.4705 1.90608 10.0004C1.90608 5.52956 5.52965 1.90606 9.99982 1.90606C14.47 1.90606 18.0939 5.52958 18.0939 10.0004C18.0939 14.4705 14.47 18.094 9.99982 18.094Z" fill="currentColor" stroke="#666666" stroke-width="0.3"/>
+<path d="M5.93902 7.54528C6.0449 7.8348 6.3438 7.99193 6.60757 7.89622C6.87059 7.8005 6.99921 7.48787 6.89333 7.19835L6.42293 5.94932C6.31726 5.6598 6.01796 5.50266 5.75456 5.59835C5.49075 5.69409 5.36292 6.00755 5.46861 6.29704L5.93902 7.54528Z" fill="currentColor"/>
+<path d="M13.4655 6.94739C13.6641 7.18349 13.9992 7.22895 14.2137 7.04869C14.4286 6.86841 14.442 6.53104 14.2436 6.29494L13.6611 5.68718C13.4623 5.45108 13.1279 5.40565 12.9126 5.5859C12.6978 5.76616 12.6852 6.10356 12.8828 6.34043L13.4655 6.94739Z" fill="currentColor"/>
+<path d="M14.8322 13.6978C14.5889 13.5574 14.2671 13.6603 14.1128 13.9275L13.9514 14.1691C13.367 13.4322 12.3866 11.7987 12.3862 8.64185V8.43206H13.8498C14.158 8.43206 14.4085 8.20474 14.4085 7.92478C14.4085 7.64404 14.158 7.41672 13.8498 7.41672H12.3834C12.38 6.49072 12.3742 5.55913 12.3742 5.55913C12.3742 5.24966 12.1477 5 11.8667 5C11.5866 5 11.3595 5.24966 11.3595 5.55913C11.3595 5.55913 11.3657 6.48833 11.3689 7.41672H8.17549C7.86685 7.41672 7.61719 7.64404 7.61719 7.92478C7.61719 8.20474 7.86685 8.43206 8.17549 8.43206H11.3706C11.3706 8.52059 11.3706 8.60594 11.3701 8.6833C11.3595 12.8085 13.1212 14.9413 13.4725 15.1956C13.6574 15.3297 14.1042 15.6359 14.3977 15.3105C14.4354 15.2682 14.4611 15.2268 14.4807 15.1853C14.4942 15.1669 14.5125 15.155 14.524 15.1342L14.9927 14.4355C15.1467 14.1683 15.0752 13.8373 14.8322 13.6978Z" fill="currentColor"/>
+<path d="M6.93043 14.0761V9.36791C6.93043 9.12303 6.78625 8.91804 6.58787 8.8415C6.49772 8.79125 6.39264 8.76172 6.27918 8.76172H5.13745C4.80984 8.76172 4.54443 9.0026 4.54443 9.3001C4.54443 9.59839 4.80982 9.83928 5.13745 9.83928H5.91491V14.9654C5.91491 15.274 6.14202 15.5245 6.42297 15.5245C6.47103 15.5245 6.5161 15.5149 6.56055 15.5013C6.66545 15.4862 6.76914 15.4511 6.85946 15.3761L7.53822 14.8793C7.77469 14.6806 7.82074 14.3465 7.63989 14.1311C7.47079 13.9285 7.16292 13.9126 6.93043 14.0761Z" fill="currentColor"/>
+<path d="M11.0114 13.5072L10.0722 13.583V10.7237L10.4193 10.7204C10.728 10.7204 10.9783 10.4931 10.9783 10.2132C10.9783 9.93242 10.728 9.70508 10.4193 9.70508L8.70952 9.71942C8.40064 9.71942 8.15079 9.94678 8.15079 10.2275C8.15079 10.5075 8.40064 10.7348 8.70952 10.7348L9.05666 10.7316V13.6643L8.66504 13.6954C8.35736 13.7225 8.12744 13.9706 8.15236 14.2497C8.17689 14.5289 8.4461 14.7339 8.75315 14.7068L11.1001 14.5193C11.4071 14.4922 11.6366 14.2441 11.6121 13.9642C11.588 13.6851 11.3188 13.4809 11.0114 13.5072Z" fill="currentColor"/>
+</g>
+<defs>
+<clipPath id="clip0_96_4659">
+<rect width="20" height="20" fill="currentColor"/>
+</clipPath>
+</defs>
+</svg>

+ 4 - 0
src/assets/svg/menu/menu04.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M7.50005 13.7501V15.0001H12.5V13.7501H7.50005Z" fill="currentColor" fill-opacity="0.6"/>
+<path d="M9.64649 1.96976C9.84176 1.7745 10.1583 1.7745 10.3536 1.96976L18.567 10.1832L17.6831 11.067L16.25 9.63398V17.1251C16.25 17.6774 15.8023 18.1251 15.25 18.1251H4.75005C4.19776 18.1251 3.75005 17.6774 3.75005 17.1251V9.63398L2.31699 11.067L1.43311 10.1832L9.64649 1.96976ZM10 3.38398L5.00005 8.38398V16.8751H15V8.38398L10 3.38398Z" fill="currentColor" fill-opacity="0.6"/>
+</svg>

+ 6 - 0
src/assets/svg/menu/menu05.svg

@@ -0,0 +1,6 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8.74994 6.5625H4.99994V5.3125H8.74994V6.5625Z" fill="currentColor" fill-opacity="0.6"/>
+<path d="M1.87524 3.12517C1.87515 2.77993 2.155 2.5 2.50024 2.5H17.5002C17.8454 2.5 18.1252 2.77972 18.1252 3.12483L18.1264 8.74985C18.1265 9.0951 17.8467 9.37502 17.5014 9.37502H2.50143C2.15632 9.37502 1.87652 9.0953 1.87643 8.75019L1.87524 3.12517ZM3.12626 8.12502H16.8763L16.8754 3.75H3.12541L3.12626 8.12502Z" fill="currentColor" fill-opacity="0.6"/>
+<path d="M5.00007 14.6875H8.75007V13.4375H5.00007V14.6875Z" fill="currentColor" fill-opacity="0.6"/>
+<path d="M1.8766 11.25C1.8766 10.9048 2.15642 10.625 2.5016 10.625H17.5016C17.8468 10.625 18.1266 10.9048 18.1266 11.25V16.875C18.1266 17.2202 17.8468 17.5 17.5016 17.5H2.5016C2.15642 17.5 1.8766 17.2202 1.8766 16.875V11.25ZM3.1266 16.25H16.8766V11.875H3.1266V16.25Z" fill="currentColor" fill-opacity="0.6"/>
+</svg>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 2 - 0
src/assets/svg/menu/menu06.svg


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
src/assets/svg/menu/menu07.svg


+ 4 - 0
src/assets/svg/menu/menu08.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M13.7502 10C13.7502 12.0711 12.0713 13.75 10.0002 13.75C7.92914 13.75 6.25021 12.0711 6.25021 10C6.25021 7.92893 7.92914 6.25 10.0002 6.25C12.0713 6.25 13.7502 7.92893 13.7502 10ZM12.5002 10C12.5002 8.61929 11.3809 7.5 10.0002 7.5C8.6195 7.5 7.50021 8.61929 7.50021 10C7.50021 11.3807 8.6195 12.5 10.0002 12.5C11.3809 12.5 12.5002 11.3807 12.5002 10Z" fill="currentColor" fill-opacity="0.6"/>
+<path d="M10.0002 1.5625L17.5779 5.78125V14.2188L10.0002 18.4375L2.42249 14.2188V5.78125L10.0002 1.5625ZM3.67249 6.516V13.484L10.0002 17.0068L16.3279 13.484V6.516L10.0002 2.99316L3.67249 6.516Z" fill="currentColor" fill-opacity="0.6"/>
+</svg>

+ 55 - 198
src/layout/components/LeftWrap.vue

@@ -1,210 +1,66 @@
 <script setup>
 import { useRouter } from 'vue-router'
 import { useLayoutState } from '../hooks/index'
-// import {apiSystemRole} from '@/api/system'
+import {apiSystemCommon} from '@/api/system'
 
 const router = useRouter()
 
 const { menuClose } = useLayoutState()
 
 const navList = ref([
-  {
-    name: '客户管理',
-    path: '/customer',
-    IsLevel: 2,
-    Children: [
-      {
-        name: '商家管理',
-        path: '/business'
-      },
-      {
-        name: '用户管理',
-        path: '/customer/userList'
-      }
-    ]
-  },
-  {
-    name: 'ETA客户行为统计',
-    path: '/customer',
-    IsLevel: 1,
-    Children: [
-      {
-        name: 'ETA客户行为统计',
-        path: '/customer/userActionStatistic',
-      }
-    ]
-  },
-  {
-    name: 'ETA试用管理',
-    path: '/',
-    IsLevel: 1,
-    Children: [
-      {
-        name: 'ETA试用管理',
-        path: '/',
-      }
-    ]
-  },
-  {
-    name: 'ETA社区管理',
-    path: '/etaChart',
-    IsLevel: 1,
-    Children: [
-      {
-        name: 'ETA社区管理',
-        path: '/etaChart/index',
-      }
-    ]
-  },
-  {
-    name: 'ETA菜单配置',
-    path: '/',
-    IsLevel: 1,
-    Children: [
-      {
-        name: 'ETA菜单配置',
-        path: '/',
-      }
-    ]
-  },
-  {
-    name: '培训管理',
-    path: '/',
-    IsLevel: 2,
-    Children: [
-      {
-        name: '视频管理',
-        path: '/',
-      },
-      {
-        name: '标签管理',
-        path: '/',
-      },
-      {
-        name: '分类管理',
-        path: '/',
-      }
-    ]
-  },
-  {
-    name: '个性化设置',
-    path: '/',
-    IsLevel: 1,
-    Children: [
-      {
-        name: '个性化设置',
-        path: '/',
-      }
-    ]
-  },
-  {
-    name: '权限配置',
-    path: '/',
-    IsLevel: 1,
-    Children: [
-      {
-        name: '权限配置',
-        path: '/',
-      }
-    ]
-  },
-  {
-    name: '系统设置',
-    path: '/',
-    IsLevel: 2,
-    Children: [
-      {
-        name: '更新日志配置',
-        path: '/',
-      },
-      {
-        name: '帮助中心配置',
-        path: '/',
-      }
-    ]
-  },
+  // {
+  //   name: '客户管理',
+  //   path: '/customer',
+  //   IsLevel: 2,
+  //   Children: [
+  //     {
+  //       name: '商家管理',
+  //       path: '/'
+  //     },
+  //     {
+  //       name: '用户管理',
+  //       path: '/customer/userList'
+  //     }
+  //   ]
+  // },
+  // {
+  //   name: 'ETA客户行为统计',
+  //   path: '/customer',
+  //   IsLevel: 1,
+  //   Children: [
+  //     {
+  //       name: 'ETA客户行为统计',
+  //       path: '/customer/userActionStatistic',
+  //     }
+  //   ]
+  // },
 ])
 
 function getNavList() {
-  //mock navList
-  /* navList.value = [
-      {
-          Path:'/customer',
-          Name:'客户管理',
-          Children:[
-              {
-                  Path:'/customer/tempUserList',
-                  Name:'临时用户列表',
-              }
-          ]
-      },
-      {
-          Path:'/authorMgt/authorList',
-          Name:'研究员管理',
-          Children:[]
-      },
-      {
-          Path:'/mediaMgt',
-          Name:'音视频管理',
-          Children:[
-              {
-                  Path:'/mediaMgt/audioList',
-                  Name:'音频管理',
-              },
-              {
-                  Path:'/mediaMgt/videoList',
-                  Name:'视频管理',
-              }
-          ]
-      },
-      {
-          Path:'/customer/notification',
-          Name:'消息推送管理',
-          Children:[]
-      },
-      {
-          Path:'/mediaMgt/pictureLib',
-          Name:'图片资源库',
-          Children:[]
-      },
-      {
-          Path:'/customer/feedbackList',
-          Name:'客户反馈',
-          Children:[]
-      },
-      {
-          Path:'/system',
-          Name:'系统设置',
-          Children:[
-              {
-                  Path:'/system/userList',
-                  Name:'用户列表',
-              },
-              {
-                  Path:'/system/roleList',
-                  Name:'角色管理',
-              },
-              {
-                  Path:'/system/authSet',
-                  Name:'权限管理',
-              }
-          ]
-      },
-  ] */
-
-  // apiSystemRole.menuData().then(res=>{
-  //   if(res.Ret===200){
-  //     navList.value=res.Data||[]
-  //   }
-  // })
+  apiSystemCommon.menuList().then(res=>{
+    if(res.Ret===200){
+      navList.value=res.Data.List||[]
+    }
+  })
 }
 getNavList()
 
+function handleClickMenu(path){
+  router.push(path)
+}
+
 
 
 function getMenuIcon(item) {
   const iconMap = {
-    '/customer': 'menu/customer',
+    '客户管理': 'menu/customer',
+    'ETA客户行为统计':'menu/menu02',
+    'ETA试用管理':'menu/menu03',
+    'ETA社区管理':'menu/menu04',
+    'ETA菜单配置':'menu/menu05',
+    '培训管理':'menu/menu06',
+    '个性化设置':'menu/menu07',
+    '系统设置':'menu/menu08',
   }
   return iconMap[item] || 'menu/setting'
 
@@ -220,28 +76,29 @@ function getMenuIcon(item) {
       :collapsed="menuClose"
       :width="['200px', '80px']"
     >
-      <template v-for="level1 in navList" :key="level1.SysMenuId">
-        <t-menu-item :value="level1.Children[0].path" v-if="level1.IsLevel === 1">
+      <template v-for="level1 in navList" :key="level1.MenuId">
+        <t-menu-item :value="level1.children[0].path" v-if="level1.IsLevel === 1" @click="handleClickMenu(level1.children[0].path)">
           <svg-icon
-            :name="getMenuIcon(level1.Children[0].path)"
-            :color="$route.path === level1.Children[0].path ? '#086CE0' : '#333'"
-            style="font-size: 16px"
+            :name="getMenuIcon(level1.children[0].name)"
+            :color="$route.path === level1.children[0].path ? '#086CE0' : '#333'"
+            style="font-size: 20px;position: relative;top:5px"
           ></svg-icon>
-          <span style="margin-left: 5px">{{ level1.Children[0].name }}</span>
+          <span style="margin-left: 5px">{{ level1.children[0].name }}</span>
         </t-menu-item>
-        <t-submenu :value="level1.path" v-if="level1.IsLevel === 2">
+        <t-submenu :value="level1.MenuId" v-if="level1.IsLevel === 2">
           <template #title>
             <svg-icon
-              :name="getMenuIcon(level1.path)"
+              :name="getMenuIcon(level1.name)"
               :color="$route.path === level1.path ? '#086CE0' : '#333'"
-              style="font-size: 16px"
+              style="font-size: 20px;position: relative;top:5px"
             ></svg-icon>
             <span style="margin-left: 5px">{{ level1.name }}</span>
           </template>
           <t-menu-item
-            v-for="child in level1.Children"
+            v-for="child in level1.children"
             :value="child.path"
             :key="child.path"
+            @click="handleClickMenu(child.path)"
           >
             <span style="margin-left: 5px">{{ child.name }}</span>
           </t-menu-item>

+ 27 - 0
src/plugin/dialog.jsx

@@ -0,0 +1,27 @@
+// 提示弹窗函数
+// 根据dialog-confirm-pop 类名改样式吧
+import { DialogPlugin } from 'tdesign-vue-next';
+import warningIcon from '@/assets/icons/warning.png'
+export function $confirmDialog(props){
+  const headerHtml=()=><div style="display:flex;align-items:center">
+    <img src={warningIcon} style="width:20px" />
+    <span>{props.header}</span>
+  </div>
+  return new Promise((resolve,reject)=>{
+    const confirmDia = DialogPlugin.confirm({
+      confirmBtn: '确定',
+      cancelBtn: '取消',
+      ...props,
+      className:'dialog-confirm-pop',
+      header:headerHtml,
+      onConfirm: ({ e }) => {
+        resolve(true)
+        confirmDia.destroy();
+      },
+      onClose: ({ e, trigger }) => {
+        reject(false)
+        confirmDia.destroy();
+      },
+    });
+  })
+}

+ 19 - 0
src/styles/tdesign.scss

@@ -23,6 +23,25 @@
   }
 }
 
+.dialog-confirm-pop{
+  .t-dialog__header{
+    padding: 13px 20px;
+    background-color: #fff;
+    color: #333;
+    border-bottom: 1px solid var(--border-color);
+    .t-dialog__close{
+      color: #333;
+    }
+  }
+  .t-dialog__body{
+    padding: 30px 20px;
+  }
+  .t-dialog__footer{
+    padding: 20px;
+  }
+}
+
+
 .t-table__header{
   background-color: #EBEEF5;
   tr{

+ 4 - 0
vite.config.js

@@ -6,6 +6,7 @@ import Components from "unplugin-vue-components/vite";
 import { TDesignResolver } from "unplugin-vue-components/resolvers";
 import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
 import zipBuildPlugin from './zipBuildPlugin';
+import vueJsx from '@vitejs/plugin-vue-jsx';
 
 // https://vitejs.dev/config/
 export default defineConfig(({ mode }) => {
@@ -15,14 +16,17 @@ export default defineConfig(({ mode }) => {
     base: ENV.VITE_APP_BASE_URL, // 若服务器不是将该项目放在根目录的则 需要此设置 和服务器上同名
     plugins: [
       vue(),
+      vueJsx(),
       AutoImport({
         // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
         imports: ["vue"],
+        dirs: ["./src/plugin"], // 自动扫描并导入 `src/plugin` 下的方法
         resolvers: [
           TDesignResolver({
             library: "vue-next",
           }),
         ],
+        dts: "src/auto-imports.d.ts", // 自动生成类型声明文件
       }),
       Components({
         resolvers: [

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است