From 6ee9d8f0ff946d8e1a0964548e36be4fad130f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=82=A0=E9=9D=99=E8=90=9D=E8=8E=89?= Date: Fri, 8 Jul 2022 15:01:22 +0800 Subject: [PATCH 1/6] =?UTF-8?q?chore:=20=E4=BF=AE=E6=94=B9=E5=8F=91?= =?UTF-8?q?=E7=89=88=E6=97=B6=E6=B2=A1=E4=BF=AE=E6=94=B9=E7=9A=84=E7=89=88?= =?UTF-8?q?=E5=8F=B7=20(#219)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ca13b92..71d44c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tdesign-vue-next-starter", - "version": "0.3.0", + "version": "0.3.5", "scripts": { "dev:mock": "vite --open --mode mock", "dev": "vite --open --mode development", From 6abf4ccbb39e18e5bef541bf7cc5db59bbe3d68f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=82=A0=E9=9D=99=E8=90=9D=E8=8E=89?= Date: Sun, 10 Jul 2022 14:53:22 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0hiddenBreadcrumb?= =?UTF-8?q?=E9=80=89=E9=A1=B9=20(#224)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layouts/components/Breadcrumb.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/layouts/components/Breadcrumb.vue b/src/layouts/components/Breadcrumb.vue index 593e09a..ff347ff 100644 --- a/src/layouts/components/Breadcrumb.vue +++ b/src/layouts/components/Breadcrumb.vue @@ -17,6 +17,11 @@ const crumbs = computed(() => { pathArray.shift(); const breadcrumbs = pathArray.reduce((breadcrumbArray, path, idx) => { + // 如果路由下有hiddenBreadcrumb或当前遍历到参数则隐藏 + if (route.matched[idx]?.meta?.hiddenBreadcrumb || Object.values(route.params).includes(path)) { + return breadcrumbArray; + } + breadcrumbArray.push({ path, to: breadcrumbArray[idx - 1] ? `/${breadcrumbArray[idx - 1].path}/${path}` : `/${path}`, From 88feed0e8c44e9264c43fc7cd9edff47a7d2980b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=82=A0=E9=9D=99=E8=90=9D=E8=8E=89?= Date: Sun, 10 Jul 2022 14:58:21 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=E5=B0=86=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E8=87=B3api=E6=96=87=E4=BB=B6=E5=A4=B9=20(#2?= =?UTF-8?q?21)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 将请求分类至api文件夹 * chore: 修改接口的导入方式为类型,防止vite打包错误 --- src/api/detail.ts | 19 +++++++++++++++++ src/api/list.ts | 19 +++++++++++++++++ src/api/model/detailModel.ts | 23 ++++++++++++++++++++ src/api/model/listModel.ts | 26 +++++++++++++++++++++++ src/pages/detail/advanced/index.vue | 18 ++++++---------- src/pages/detail/deploy/index.vue | 18 ++++++---------- src/pages/list/base/index.vue | 18 ++++++---------- src/pages/list/card/index.vue | 18 ++++++---------- src/pages/list/components/CommonTable.vue | 18 ++++++---------- src/types/axios.d.ts | 4 +--- src/types/interface.d.ts | 5 ----- src/utils/request/index.ts | 12 +++++------ 12 files changed, 129 insertions(+), 69 deletions(-) create mode 100644 src/api/detail.ts create mode 100644 src/api/list.ts create mode 100644 src/api/model/detailModel.ts create mode 100644 src/api/model/listModel.ts diff --git a/src/api/detail.ts b/src/api/detail.ts new file mode 100644 index 0000000..78c51d2 --- /dev/null +++ b/src/api/detail.ts @@ -0,0 +1,19 @@ +import { request } from '@/utils/request'; +import type { ProjectListResult, PurchaseListResult } from '@/api/model/detailModel'; + +const Api = { + PurchaseList: '/get-purchase-list', + ProjectList: '/get-project-list', +}; + +export function getPurchaseList() { + return request.get({ + url: Api.PurchaseList, + }); +} + +export function getProjectList() { + return request.get({ + url: Api.ProjectList, + }); +} diff --git a/src/api/list.ts b/src/api/list.ts new file mode 100644 index 0000000..e84218b --- /dev/null +++ b/src/api/list.ts @@ -0,0 +1,19 @@ +import { request } from '@/utils/request'; +import type { CardListResult, ListResult } from '@/api/model/listModel'; + +const Api = { + BaseList: '/get-list', + CardList: '/get-card-list', +}; + +export function getList() { + return request.get({ + url: Api.BaseList, + }); +} + +export function getCardList() { + return request.get({ + url: Api.CardList, + }); +} diff --git a/src/api/model/detailModel.ts b/src/api/model/detailModel.ts new file mode 100644 index 0000000..c144b48 --- /dev/null +++ b/src/api/model/detailModel.ts @@ -0,0 +1,23 @@ +export interface PurchaseListResult { + list: Array; +} +export interface PurchaseInfo { + adminName: string; + index: string; + pdName: string; + pdNum: string; + pdType: string; + purchaseNum: number; + updateTime: Date; +} + +export interface ProjectListResult { + list: Array; +} +export interface ProjectInfo { + adminName: string; + adminPhone: string; + index: number; + name: string; + updateTime: Date; +} diff --git a/src/api/model/listModel.ts b/src/api/model/listModel.ts new file mode 100644 index 0000000..453114d --- /dev/null +++ b/src/api/model/listModel.ts @@ -0,0 +1,26 @@ +export interface ListResult { + list: Array; +} +export interface ListModel { + adminName: string; + amount: string; + contractType: number; + index: number; + name: string; + no: string; + paymentType: number; + status: number; + updateTime: Date; +} + +export interface CardListResult { + list: Array; +} +export interface CardList { + banner: string; + description: string; + index: number; + isSetup: boolean; + name: string; + type: number; +} diff --git a/src/pages/detail/advanced/index.vue b/src/pages/detail/advanced/index.vue index 7da16be..fe61985 100644 --- a/src/pages/detail/advanced/index.vue +++ b/src/pages/detail/advanced/index.vue @@ -120,8 +120,7 @@ export default { import { ref, onMounted } from 'vue'; import { prefix } from '@/config/global'; import { BASE_INFO_DATA, TABLE_COLUMNS_DATA as columns, PRODUCT_LIST } from './constants'; -import { request } from '@/utils/request'; -import { ResDataType } from '@/types/interface'; +import { getPurchaseList } from '@/api/detail'; import Product from './components/Product.vue'; @@ -145,15 +144,12 @@ const stepUpdate = () => { const fetchData = async () => { try { - const res: ResDataType = await request.get({ url: '/api/get-purchase-list' }); - if (res.code === 0) { - const { list = [] } = res.data; - data.value = list; - pagination.value = { - ...pagination.value, - total: list.length, - }; - } + const { list } = await getPurchaseList(); + data.value = list; + pagination.value = { + ...pagination.value, + total: list.length, + }; } catch (e) { console.log(e); } diff --git a/src/pages/detail/deploy/index.vue b/src/pages/detail/deploy/index.vue index 9b26352..2f6921e 100644 --- a/src/pages/detail/deploy/index.vue +++ b/src/pages/detail/deploy/index.vue @@ -89,8 +89,7 @@ import { BASE_INFO_DATA, TABLE_COLUMNS as columns } from './constants'; import { changeChartsTheme } from '@/utils/color'; import { prefix } from '@/config/global'; -import { ResDataType } from '@/types/interface'; -import { request } from '@/utils/request'; +import { getProjectList } from '@/api/detail'; echarts.use([ TitleComponent, @@ -115,15 +114,12 @@ const pagination = ref({ const fetchData = async () => { try { - const res: ResDataType = await request.get({ url: '/api/get-project-list' }); - if (res.code === 0) { - const { list = [] } = res.data; - data.value = list; - pagination.value = { - ...pagination.value, - total: list.length, - }; - } + const { list } = await getProjectList(); + data.value = list; + pagination.value = { + ...pagination.value, + total: list.length, + }; } catch (e) { console.log(e); } diff --git a/src/pages/list/base/index.vue b/src/pages/list/base/index.vue index e8e5151..889c8e1 100644 --- a/src/pages/list/base/index.vue +++ b/src/pages/list/base/index.vue @@ -81,8 +81,7 @@ import { MessagePlugin } from 'tdesign-vue-next'; import { CONTRACT_STATUS, CONTRACT_TYPES, CONTRACT_PAYMENT_TYPES } from '@/constants'; import Trend from '@/components/trend/index.vue'; -import { ResDataType } from '@/types/interface'; -import { request } from '@/utils/request'; +import { getList } from '@/api/list'; import { useSettingStore } from '@/store'; import { COLUMNS } from './constants'; @@ -102,15 +101,12 @@ const dataLoading = ref(false); const fetchData = async () => { dataLoading.value = true; try { - const res: ResDataType = await request.get({ url: '/api/get-list' }); - if (res.code === 0) { - const { list = [] } = res.data; - data.value = list; - pagination.value = { - ...pagination.value, - total: list.length, - }; - } + const { list } = await getList(); + data.value = list; + pagination.value = { + ...pagination.value, + total: list.length, + }; } catch (e) { console.log(e); } finally { diff --git a/src/pages/list/card/index.vue b/src/pages/list/card/index.vue index beef005..c6f7679 100644 --- a/src/pages/list/card/index.vue +++ b/src/pages/list/card/index.vue @@ -73,8 +73,7 @@ import { SearchIcon } from 'tdesign-icons-vue-next'; import { MessagePlugin } from 'tdesign-vue-next'; import ProductCard from '@/components/product-card/index.vue'; import DialogForm from './components/DialogForm.vue'; -import { request } from '@/utils/request'; -import { ResDataType } from '@/types/interface'; +import { getCardList } from '@/api/list'; const INITIAL_DATA = { name: '', @@ -93,15 +92,12 @@ const dataLoading = ref(true); const fetchData = async () => { try { - const res: ResDataType = await request.get({ url: '/api/get-card-list' }); - if (res.code === 0) { - const { list = [] } = res.data; - productList.value = list; - pagination.value = { - ...pagination.value, - total: list.length, - }; - } + const { list } = await getCardList(); + productList.value = list; + pagination.value = { + ...pagination.value, + total: list.length, + }; } catch (e) { console.log(e); } finally { diff --git a/src/pages/list/components/CommonTable.vue b/src/pages/list/components/CommonTable.vue index b91e931..eef4454 100644 --- a/src/pages/list/components/CommonTable.vue +++ b/src/pages/list/components/CommonTable.vue @@ -116,8 +116,7 @@ import { ref, computed, onMounted } from 'vue'; import { MessagePlugin } from 'tdesign-vue-next'; import Trend from '@/components/trend/index.vue'; -import { request } from '@/utils/request'; -import { ResDataType } from '@/types/interface'; +import { getList } from '@/api/list'; import { useSettingStore } from '@/store'; import { @@ -198,15 +197,12 @@ const dataLoading = ref(false); const fetchData = async () => { dataLoading.value = true; try { - const res: ResDataType = await request.get({ url: '/api/get-list' }); - if (res.code === 0) { - const { list = [] } = res.data; - data.value = list; - pagination.value = { - ...pagination.value, - total: list.length, - }; - } + const { list } = await getList(); + data.value = list; + pagination.value = { + ...pagination.value, + total: list.length, + }; } catch (e) { console.log(e); } finally { diff --git a/src/types/axios.d.ts b/src/types/axios.d.ts index 0a28f0c..6f044c2 100644 --- a/src/types/axios.d.ts +++ b/src/types/axios.d.ts @@ -19,9 +19,7 @@ export interface RequestOptions { export interface Result { code: number; - type: 'success' | 'error' | 'warning'; - message: string; - result: T; + data: T; } export interface AxiosRequestConfigRetry extends AxiosRequestConfig { diff --git a/src/types/interface.d.ts b/src/types/interface.d.ts index 4a201b8..7299deb 100644 --- a/src/types/interface.d.ts +++ b/src/types/interface.d.ts @@ -1,11 +1,6 @@ import { RouteRecordName } from 'vue-router'; import STYLE_CONFIG from '@/config/style'; -export interface ResDataType { - code: number; - data: any; -} - export interface MenuRoute { path: string; title?: string; diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts index 7fe70f6..5828458 100644 --- a/src/utils/request/index.ts +++ b/src/utils/request/index.ts @@ -40,16 +40,16 @@ const transform: AxiosTransform = { throw new Error('请求接口错误'); } - // 这里 message为 后台统一的字段,需要在 types.ts内修改为项目自己的接口返回格式 - const { message } = data; + // 这里 code为 后台统一的字段,需要在 types.ts内修改为项目自己的接口返回格式 + const { code } = data; // 这里逻辑可以根据项目进行修改 - const hasSuccess = data && !Reflect.has(data, 'error'); + const hasSuccess = data && code === 0; if (hasSuccess) { - return data; + return data.data; } - throw new Error(message); + throw new Error(`请求接口错误, 错误码: ${code}`); }, // 请求前处理配置 @@ -162,7 +162,7 @@ function createAxios(opt?: Partial) { // 接口地址 apiUrl: host, // 是否自动添加接口前缀 - isJoinPrefix: false, + isJoinPrefix: true, // 接口前缀 // 例如: https://www.baidu.com/api // urlPrefix: '/api' From 3afb38d1d138bdb10b30055d7e104ffac4ce8068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=82=A0=E9=9D=99=E8=90=9D=E8=8E=89?= Date: Sun, 10 Jul 2022 14:59:17 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix(echart):=20=E4=BF=AE=E5=A4=8D=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E7=9A=84warn=E9=97=AE=E9=A2=98=20(#218)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(echart): 修复图表的warn问题 * fix(echart): 修复遗漏的图表warn问题 --- src/pages/dashboard/base/index.ts | 26 ++++++++------------------ src/pages/dashboard/detail/index.ts | 24 ++++++++---------------- src/pages/detail/deploy/index.ts | 4 +--- src/pages/user/index.ts | 24 ++++++++---------------- 4 files changed, 25 insertions(+), 53 deletions(-) diff --git a/src/pages/dashboard/base/index.ts b/src/pages/dashboard/base/index.ts index a386bce..c45e3d1 100644 --- a/src/pages/dashboard/base/index.ts +++ b/src/pages/dashboard/base/index.ts @@ -41,12 +41,8 @@ export function constructInitDashboardDataset(type: string) { { type: 'min', name: '最小值' }, ], }, - itemStyle: { - normal: { - lineStyle: { - width: 2, - }, - }, + lineStyle: { + width: 2, }, }, ], @@ -278,15 +274,11 @@ export function getLineChartDataSet({ symbol: 'circle', symbolSize: 8, itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, areaStyle: { - normal: { - opacity: 0.1, - }, + opacity: 0.1, }, }, { @@ -298,10 +290,8 @@ export function getLineChartDataSet({ symbol: 'circle', symbolSize: 8, itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, ], @@ -352,7 +342,6 @@ export function getPieChartDataSet({ radius: ['48%', '60%'], avoidLabelOverlap: true, selectedMode: true, - hoverAnimation: true, silent: true, itemStyle: { borderColor: containerColor, @@ -377,6 +366,7 @@ export function getPieChartDataSet({ }, }, emphasis: { + scale: true, label: { show: true, formatter: ['{value|{d}%}', '{name|{b}渠道占比}'].join('\n'), diff --git a/src/pages/dashboard/detail/index.ts b/src/pages/dashboard/detail/index.ts index 4a388f0..8221a7c 100644 --- a/src/pages/dashboard/detail/index.ts +++ b/src/pages/dashboard/detail/index.ts @@ -188,10 +188,8 @@ export function getFolderLineDataSet({ ], type: 'line', itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, { @@ -211,10 +209,8 @@ export function getFolderLineDataSet({ ], type: 'line', itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, { @@ -234,10 +230,8 @@ export function getFolderLineDataSet({ ], type: 'line', itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, { @@ -257,10 +251,8 @@ export function getFolderLineDataSet({ ], type: 'line', itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, ], diff --git a/src/pages/detail/deploy/index.ts b/src/pages/detail/deploy/index.ts index 21680c9..e52126c 100644 --- a/src/pages/detail/deploy/index.ts +++ b/src/pages/detail/deploy/index.ts @@ -82,9 +82,7 @@ export function getSmoothLineDataSet({ symbol: 'circle', symbolSize: 8, areaStyle: { - normal: { - opacity: 0.1, - }, + opacity: 0.1, }, }, { diff --git a/src/pages/user/index.ts b/src/pages/user/index.ts index 73edef3..cf25481 100644 --- a/src/pages/user/index.ts +++ b/src/pages/user/index.ts @@ -77,10 +77,8 @@ export function getFolderLineDataSet({ ], type: 'line', itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, { @@ -100,10 +98,8 @@ export function getFolderLineDataSet({ ], type: 'line', itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, { @@ -123,10 +119,8 @@ export function getFolderLineDataSet({ ], type: 'line', itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, { @@ -146,10 +140,8 @@ export function getFolderLineDataSet({ ], type: 'line', itemStyle: { - normal: { - borderColor, - borderWidth: 1, - }, + borderColor, + borderWidth: 1, }, }, ], From 4067e7ca30ca53dc3b1165fbe090cc1b5cfcdba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=82=A0=E9=9D=99=E8=90=9D=E8=8E=89?= Date: Tue, 12 Jul 2022 14:14:44 +0800 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20router=E4=BF=AE=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=AF=BC=E5=85=A5=20(#223)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: router修改为自动导入 * fix: 修复CI编译错误并移除多余声明 * feat: 添加orderNo令自动导入的路由可以排序 --- src/layouts/components/MenuContent.tsx | 4 ++++ src/router/index.ts | 16 ++++++++++++---- src/types/globals.d.ts | 7 ------- tsconfig.json | 3 +++ 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/layouts/components/MenuContent.tsx b/src/layouts/components/MenuContent.tsx index 2132661..4b35286 100755 --- a/src/layouts/components/MenuContent.tsx +++ b/src/layouts/components/MenuContent.tsx @@ -7,6 +7,10 @@ const getMenuList = (list: MenuRoute[], basePath?: string): MenuRoute[] => { if (!list) { return []; } + // 如果meta中有orderNo则按照从小到大排序 + list.sort((a, b) => { + return (a.meta?.orderNo || 0) - (b.meta?.orderNo || 0); + }); return list .map((item) => { const path = basePath ? `${basePath}/${item.path}` : item.path; diff --git a/src/router/index.ts b/src/router/index.ts index 5921674..09ad02b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,13 +1,21 @@ import { useRoute, createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'; -import baseRouters from './modules/base'; -import componentsRouters from './modules/components'; -import othersRouters from './modules/others'; +// 自动导入modules文件夹下所有ts文件 +const modules = import.meta.globEager('./modules/**/*.ts'); + +// 路由暂存 +const routeModuleList: Array = []; + +Object.keys(modules).forEach((key) => { + const mod = modules[key].default || {}; + const modList = Array.isArray(mod) ? [...mod] : [mod]; + routeModuleList.push(...modList); +}); // 关于单层路由,meta 中设置 { single: true } 即可为单层路由,{ hidden: true } 即可在侧边栏隐藏该路由 // 存放动态路由 -export const asyncRouterList: Array = [...baseRouters, ...componentsRouters, ...othersRouters]; +export const asyncRouterList: Array = [...routeModuleList]; // 存放固定的路由 const defaultRouterList: Array = [ diff --git a/src/types/globals.d.ts b/src/types/globals.d.ts index 7a5db4b..49efe88 100644 --- a/src/types/globals.d.ts +++ b/src/types/globals.d.ts @@ -10,13 +10,6 @@ declare module '*.vue' { declare type ClassName = { [className: string]: any } | ClassName[] | string; -declare interface ImportMeta { - env: { - MODE: 'mock' | 'development' | 'test' | 'release'; - }; - glob: (url: string) => { url }; -} - declare module '*.svg' { const CONTENT: string; export default CONTENT; diff --git a/tsconfig.json b/tsconfig.json index 110f73c..56263f0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,10 @@ "sourceMap": true, "resolveJsonModule": true, "esModuleInterop": true, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, "lib": ["esnext", "dom"], + "types": ["vite/client"], "noEmit": true, "baseUrl": "./", "paths": { From 267546321fca810b931be9c815f80f3e4a3cd766 Mon Sep 17 00:00:00 2001 From: PY Date: Tue, 12 Jul 2022 14:16:08 +0800 Subject: [PATCH 6/6] feat: upgrade 0.17.4 (#225) --- package.json | 2 +- src/layouts/components/Notice.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 71d44c7..36340ba 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "qrcode.vue": "^3.2.2", "qs": "^6.10.5", "tdesign-icons-vue-next": "^0.1.1", - "tdesign-vue-next": "0.17.3", + "tdesign-vue-next": "0.17.4", "tvision-color": "^1.3.1", "vue": "^3.2.31", "vue-clipboard3": "^2.0.0", diff --git a/src/layouts/components/Notice.vue b/src/layouts/components/Notice.vue index 8bcfb95..e570d98 100644 --- a/src/layouts/components/Notice.vue +++ b/src/layouts/components/Notice.vue @@ -37,7 +37,7 @@ - +