From c31924a8d88f0bd2f2122d85da0aee36f7226414 Mon Sep 17 00:00:00 2001 From: bestlee Date: Mon, 28 Sep 2026 11:50:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E9=97=B4=E4=B8=BB=E4=BB=BB=E9=A6=96?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/langs/zh-cn.ts | 1 + src/router/elegant/imports.ts | 1 + src/router/elegant/routes.ts | 11 + src/router/elegant/transform.ts | 1 + src/service/api/statistics.ts | 30 +- src/typings/elegant-router.d.ts | 3 + src/views/changeLedger/modules/list.vue | 2 +- src/views/details/index/index.vue | 5 - src/views/home/modules/ringChart.vue | 116 ++++ src/views/home/modules/template1.vue | 2 +- src/views/home/modules/template10.vue | 2 +- src/views/home/modules/template3.vue | 2 +- src/views/home/modules/template4.vue | 204 +++---- src/views/home/modules/template6.vue | 6 +- src/views/home/modules/template7.vue | 567 ++++++++++-------- src/views/home/modules/template8.vue | 2 +- src/views/home/modules/template9.vue | 2 +- src/views/my/effect/index.vue | 2 +- src/views/my/highRisk/modules/risk.vue | 2 +- src/views/my/myTask/index.vue | 2 +- src/views/my/pendingChange/index.vue | 2 +- src/views/my/pssr/index.vue | 2 +- src/views/professionalStatistics/index.vue | 189 ++++++ .../modules/ringChart.vue | 88 +++ 24 files changed, 862 insertions(+), 382 deletions(-) create mode 100644 src/views/home/modules/ringChart.vue create mode 100644 src/views/professionalStatistics/index.vue create mode 100644 src/views/professionalStatistics/modules/ringChart.vue diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index ccb720d..2519eb8 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -253,6 +253,7 @@ const local: App.I18n.Schema = { riskstatistics: '安全与风险统计', report: '统计报表', signstatistics: '质量会签统计', + professionalstatistics: '本专业变更统计', factoryoverview: '全工厂统计概览', systemmanage_setting: '系统配置', }, diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 1ece55e..679e18d 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -39,6 +39,7 @@ export const views: Record Promise import("@/views/my/myTask/index.vue"), my_pendingchange: () => import("@/views/my/pendingChange/index.vue"), my_pssr: () => import("@/views/my/pssr/index.vue"), + professionalstatistics: () => import("@/views/professionalStatistics/index.vue"), report: () => import("@/views/report/index.vue"), riskstatistics: () => import("@/views/riskStatistics/index.vue"), signstatistics: () => import("@/views/signStatistics/index.vue"), diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index 4167dcd..9146bb4 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -288,6 +288,17 @@ export const generatedRoutes: GeneratedRoute[] = [ } ] }, + { + name: 'professionalstatistics', + path: '/professionalstatistics', + component: 'layout.base$view.professionalstatistics', + meta: { + title: '本专业变更统计', + icon: 'ix:barchart', + order: 3, + i18nKey: 'route.professionalstatistics' + } + }, { name: 'report', path: '/report', diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 5304f3e..56eb71a 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -190,6 +190,7 @@ const routeMap: RouteMap = { "my_mytask": "/my/mytask", "my_pendingchange": "/my/pendingchange", "my_pssr": "/my/pssr", + "professionalstatistics": "/professionalstatistics", "report": "/report", "riskstatistics": "/riskstatistics", "signstatistics": "/signstatistics", diff --git a/src/service/api/statistics.ts b/src/service/api/statistics.ts index ec05c66..9cd7fd9 100644 --- a/src/service/api/statistics.ts +++ b/src/service/api/statistics.ts @@ -1,13 +1,41 @@ // 数据统计 import { request } from '../request'; -// 首页 +// 首页(申请人) export function homeApi() { return request({ url: `/api/workbench`, method: 'get', }); } +// 首页(专业会签) +export function homeProfessionalApi() { + return request({ + url: `/api/workbench/specialty-sign`, + method: 'get', + }); +} +// 首页(安全工程师) +export function homeSafeApi() { + return request({ + url: `/api/workbench/safety`, + method: 'get', + }); +} +// 首页(车间主任) +export function homeManagerApi() { + return request({ + url: `/api/workbench/dept`, + method: 'get', + }); +} +// 首页(分管领导) +export function homeLeaderApi() { + return request({ + url: `/api/workbench/vp`, + method: 'get', + }); +} // 本部门变更统计 export function departmentStatisticsApi(params: {from: string | null, to: string | null}) { diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index 3e6db28..e3c6ecd 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -44,6 +44,7 @@ declare module "@elegant-router/types" { "my_mytask": "/my/mytask"; "my_pendingchange": "/my/pendingchange"; "my_pssr": "/my/pssr"; + "professionalstatistics": "/professionalstatistics"; "report": "/report"; "riskstatistics": "/riskstatistics"; "signstatistics": "/signstatistics"; @@ -95,6 +96,7 @@ declare module "@elegant-router/types" { | "home" | "login" | "my" + | "professionalstatistics" | "report" | "riskstatistics" | "signstatistics" @@ -139,6 +141,7 @@ declare module "@elegant-router/types" { | "my_mytask" | "my_pendingchange" | "my_pssr" + | "professionalstatistics" | "report" | "riskstatistics" | "signstatistics" diff --git a/src/views/changeLedger/modules/list.vue b/src/views/changeLedger/modules/list.vue index c432241..f175f04 100644 --- a/src/views/changeLedger/modules/list.vue +++ b/src/views/changeLedger/modules/list.vue @@ -196,7 +196,7 @@ const sortChoose = (val:string) => { // 跳转详情 const jumpTo = (r:any) => { - routerPushByKey("details_index",{ query: { id: r?.id?.toString(),status:r?.status?.toString() || '',key:props.keyValue } }); + routerPushByKey("details_index",{ query: { id: r?.id?.toString(),key:props.keyValue } }); } // 打开进度 const openProgress = (r: any) => { diff --git a/src/views/details/index/index.vue b/src/views/details/index/index.vue index 6d35fcb..ff2d45f 100644 --- a/src/views/details/index/index.vue +++ b/src/views/details/index/index.vue @@ -24,8 +24,6 @@ const typeAi = ref<{ type: string; confidence: number; conclusion: string; hit_r const currentInfo = ref(null); // 当前变更id const currentId = ref(0); -// 当前变更状态 -const currentStatus = ref(''); // 是否开启 AI 辅助功能 const isAiOn = ref(false); // 变更等级选项 @@ -320,9 +318,6 @@ onMounted(() => { currentId.value = Number(route.query.id); getConfig(); } - if(route.query.status){ - currentStatus.value = route.query.status.toString(); - } } }) diff --git a/src/views/home/modules/ringChart.vue b/src/views/home/modules/ringChart.vue new file mode 100644 index 0000000..b95fc98 --- /dev/null +++ b/src/views/home/modules/ringChart.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/home/modules/template1.vue b/src/views/home/modules/template1.vue index bcba9ee..27756a9 100644 --- a/src/views/home/modules/template1.vue +++ b/src/views/home/modules/template1.vue @@ -44,7 +44,7 @@ const jumpTo = (key: string,qid:number = 0) => { } // 打开变更详情 const openDetail = (row: any) => { - routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),status:row?.status?.toString() || '',key:'home' } }); + routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),key:'home' } }); }; // 获取当前时间字符串 diff --git a/src/views/home/modules/template10.vue b/src/views/home/modules/template10.vue index bcba9ee..27756a9 100644 --- a/src/views/home/modules/template10.vue +++ b/src/views/home/modules/template10.vue @@ -44,7 +44,7 @@ const jumpTo = (key: string,qid:number = 0) => { } // 打开变更详情 const openDetail = (row: any) => { - routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),status:row?.status?.toString() || '',key:'home' } }); + routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),key:'home' } }); }; // 获取当前时间字符串 diff --git a/src/views/home/modules/template3.vue b/src/views/home/modules/template3.vue index bcba9ee..27756a9 100644 --- a/src/views/home/modules/template3.vue +++ b/src/views/home/modules/template3.vue @@ -44,7 +44,7 @@ const jumpTo = (key: string,qid:number = 0) => { } // 打开变更详情 const openDetail = (row: any) => { - routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),status:row?.status?.toString() || '',key:'home' } }); + routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),key:'home' } }); }; // 获取当前时间字符串 diff --git a/src/views/home/modules/template4.vue b/src/views/home/modules/template4.vue index 46565bc..8f878fa 100644 --- a/src/views/home/modules/template4.vue +++ b/src/views/home/modules/template4.vue @@ -5,7 +5,7 @@ import { useThemeStore } from '@/store/modules/theme'; import { useRouterPush } from '@/hooks/common/router'; import { getColorWithOpacity, tagTextColor, tagBgColor, tagBorderColor } from '@/utils/common'; import { systemConfigApi } from "@/service/api/system"; -import { homeApi } from "@/service/api/statistics"; +import { homeProfessionalApi } from "@/service/api/statistics"; const themeStore = useThemeStore(); const { routerPushByKey } = useRouterPush(); @@ -35,6 +35,8 @@ const jumpTo = (key: string,qid:number = 0) => { routerPushByKey(key,{ query: { id: qid.toString() } }); }else if(key==='details_closedoc' && qid){ routerPushByKey(key,{ query: { id: qid.toString(),key:'home' } }); + }else if(key==='details_index' && qid){ + routerPushByKey("details_index",{ query: { id: qid.toString(),key:'home' } }); }else{ routerPushByKey(key as any); } @@ -73,10 +75,10 @@ const matchObj = (list:any,val:number) => { // 获取数据 const getData = async () => { loading.value = true; - const {data,error} = await homeApi(); + const {data,error} = await homeProfessionalApi(); if(!error){ - homeData.value = data; console.log(data) + homeData.value = data; } loading.value = false; } @@ -176,12 +178,12 @@ onUnmounted(() => {
@@ -196,7 +198,7 @@ onUnmounted(() => {
{
@@ -239,83 +241,83 @@ onUnmounted(() => { -
-
- -

待我会签

-

超期项行内红色标记 · 审批时自动展示专业相关附件

+
+
+ +

待我会签

+

超期项行内红色标记 · 审批时自动展示专业相关附件

+
+ + 我的任务 + +
- - 我的任务 - - -
-
- - -
@@ -327,39 +329,21 @@ onUnmounted(() => {

最近已会签

本人签署记录 · 点击直达变更内容

-
-
+
+
-

R-102 安全阀校验周期调整

-

- MOC-2026-R02-0037 - · 07-30 10:24 +

{{ item.title }}

+

+ {{ item.change_no }} + {{ item.finished_at?.slice(0, 16) }}

- 同意 -
-
-
-

R-102 安全阀校验周期调整

-

- MOC-2026-R02-0037 - · 07-30 10:24 -

-
- 同意 -
-
-
-

R-102 安全阀校验周期调整

-

- MOC-2026-R02-0037 - · 07-30 10:24 -

-
- 同意 + 待会签 + 通过 + 驳回
- +

暂无数据

@@ -401,7 +385,7 @@ onUnmounted(() => { @@ -409,11 +393,11 @@ onUnmounted(() => {
- 平均耗时 + 最长耗时 diff --git a/src/views/home/modules/template6.vue b/src/views/home/modules/template6.vue index 9a00e75..47c3978 100644 --- a/src/views/home/modules/template6.vue +++ b/src/views/home/modules/template6.vue @@ -5,7 +5,7 @@ import { useThemeStore } from '@/store/modules/theme'; import { useRouterPush } from '@/hooks/common/router'; import { getColorWithOpacity, tagTextColor, tagBgColor, tagBorderColor, downloadFileFun } from '@/utils/common'; import { systemConfigApi } from "@/service/api/system"; -import { homeApi } from "@/service/api/statistics"; +import { homeSafeApi } from "@/service/api/statistics"; import previewComponent from '@/components/previewFile/index.vue' const themeStore = useThemeStore(); @@ -96,10 +96,10 @@ const matchObj = (list:any,val:number) => { // 获取数据 const getData = async () => { loading.value = true; - const {data,error} = await homeApi(); + const {data,error} = await homeSafeApi(); if(!error){ - homeData.value = data; console.log(data) + homeData.value = data; } loading.value = false; } diff --git a/src/views/home/modules/template7.vue b/src/views/home/modules/template7.vue index bcba9ee..4aafb50 100644 --- a/src/views/home/modules/template7.vue +++ b/src/views/home/modules/template7.vue @@ -4,13 +4,34 @@ import { Icon } from '@iconify/vue' import { useThemeStore } from '@/store/modules/theme'; import { useRouterPush } from '@/hooks/common/router'; import { getColorWithOpacity, tagTextColor, tagBgColor, tagBorderColor } from '@/utils/common'; +import RingChart from "./ringChart.vue"; import { systemConfigApi } from "@/service/api/system"; import { homeApi } from "@/service/api/statistics"; const themeStore = useThemeStore(); const { routerPushByKey } = useRouterPush(); +const DEPT_ACCEPT2 = [ + { name: "完全达到", value: 13, money: 61.2, rate: 68 }, + { name: "基本达到", value: 4, money: 19.8, rate: 21 }, + { name: "未达到", value: 2, money: 5.4, rate: 11 }, +]; +const ACCEPT_COLORS2 = ["#52c41a", "#faad14", "#ff4d4f"]; + +const DATE_RANGE_OPTIONS = [ + { label: "近一年", value: 'year' }, + { label: "近半年", value: 'half_year' }, + { label: "近三个月", value: 'quarter' }, + { label: "近一个月", value: 'month' }, + { label: "自定义", value: 'custom' }, +] + const loading = ref(false); +// 日期范围 +const dateRange = ref('year'); +// 自定义日期范围 +const form = ref(null); +const to = ref(null); // 变更临期天数 const remindDays = ref(0); // 变更类型列表 @@ -22,16 +43,17 @@ const clock = ref(''); let timer: any = null; // 首页数据 const homeData = ref(null); -// 尚未关闭总数 -const openTotal = computed(() => { - return homeData.value?.unclosed_status?.items?.reduce((sum:number, item:any) => sum + item.count, 0) || 0; -}); -// 临时变更到期提醒情况 -const tempTotal = computed(() => { - return (homeData.value?.dept_stats?.unclosed_total || 0) + (homeData.value?.dept_stats?.near_overdue_total || 0) + (homeData.value?.dept_stats?.overdue_total || 0); -}); +// 时间范围改变 +const timeChange = (type: string, value: number | null) => { + if(type === 'start'){ + form.value = value; + }else if(type === 'end'){ + to.value = value; + } +} + // 跳转变更申请页面、变更台账、我的任务、发起变更 const jumpTo = (key: string,qid:number = 0) => { if(key==='my_initiatechange' && qid){ @@ -44,7 +66,7 @@ const jumpTo = (key: string,qid:number = 0) => { } // 打开变更详情 const openDetail = (row: any) => { - routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),status:row?.status?.toString() || '',key:'home' } }); + routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),key:'home' } }); }; // 获取当前时间字符串 @@ -143,39 +165,25 @@ onUnmounted(() => {

{{clock}}

- - - 发起变更 + + 车间变更看板 + + + + 审批待办
- -
-

待修改驳回

-
- -
-

修改后重新提交

-
-
-

待上传资料

+

待我审批

{ class="text-26px font-600 text-[#333]" />
-

培训 / PSSR / 验收材料补交

-
-
- -
-

临时变更到期

-
- -
-

到期 ≤ {{remindDays}} 天 · 及时处置

+

含超期未审 · 请优先处理

@@ -209,7 +200,41 @@ onUnmounted(() => { :style="{ borderRadius: themeStore.themeRadius + 'px' }" @click="jumpTo('my_mytask')" > -

超期未处置

+

重要变更未关闭

+
+ +
+

本车间 · 需重点跟踪

+
+ + +
+

未通过审批

+
+ +
+

本车间 · 驳回待修改重报

+
+
+ +
+

超期未关闭

{ class="text-26px font-600" />
-

超期临时变更 · 需恢复 / 延期 / 转永久

+

本车间 · 红色预警

- - - - -
-
- -

我的变更进度

-

阶段进度与台账实时联动

-
- - 全部台账 - - -
-
- - -
-
- - - - + + + -
- -

临时变更到期提醒情况

-

共 {{tempTotal}} 项

-
-
-
-
- - 正常(到期 > {{remindDays}} 天) - {{homeData?.dept_stats?.unclosed_total || 0}} 项 +
+
+ +

审批待办

+

属地变更审批

+
+ + 我的任务 + +
+
+ +
-
-
- - 临期(到期 ≤ {{remindDays}} 天) - {{homeData?.dept_stats?.near_overdue_total || 0}} 项 + + + +
+
+ +

未关闭变更进度一览

+

本车间 · 全部未关闭变更

+
+ + 变更台账 + +
-
-
-
- - 已超期 - {{homeData?.dept_stats?.overdue_total || 0}} 项 +
+ + +
+ + + +
+
+ +

临时变更投用后情况

+

临期提醒 · 超期催办 · 延期 / 转永久跟踪

+
+
+
+ +
-
-
提醒规则:到期前 {{remindDays}} 天触发(可在「我的任务 · 我的申请」中调整)· 临期 / 超期项请按期办理延期、恢复或转永久
- - 前往「我的任务」办理延期 / 恢复 / 转永久 → - -
- - - + + + + +
+ +

本车间统计

+

一车间 · 近一年

+ +
+
+ + 至 + +
+
+
+
+ 14 + 变更总数 +
+ 状态构成占比条 +
+
+
+
+
+
+
+
+
+ + 已关闭 + 8 +
+
+ + 审批中 + 3 +
+
+ + 实施中 + 2 +
+
+ + 超期未关闭 + 1 +
+
+
+
+ +
-

尚未关闭的变更所处状态

-

共 {{openTotal}} 项

+

近一年验收结论占比

+

本车间 · 已验收变更

-
-
-
- {{ s.label }} - {{ s.count }} 项 -
-
- -
- -
- -
- -
- -
-
-
-
阶段口径:审批中(含会签)→ 已批准待投用 → 待验收 → 待关闭 · 培训 / PSSR 线下签字后拍照上传,并入资料归档
- - 明细见变更台账 → - + +
+ 投入合计(变更材料和实施费) + 86.4 万元
- - - - - - -
- -

被驳回信息处理

-

修改后可重新提交

-
-
- - -
-
- - -
- -

资料归档待办

-

{{homeData?.archive_todo?.total || 0}} 项待补交

-
-
-
-
- 待归档 - {{ d.change_no }} -
-
{{ d.title }}
-
缺项:{{ d.missing_names }}
- - 去补交(资料关闭页上传)→ - -
-
上传纸质扫描件 / 照片即视为完成确认并联动归档清单;支持传错删除重传、阶段性保存
-
-
-
diff --git a/src/views/home/modules/template8.vue b/src/views/home/modules/template8.vue index bcba9ee..27756a9 100644 --- a/src/views/home/modules/template8.vue +++ b/src/views/home/modules/template8.vue @@ -44,7 +44,7 @@ const jumpTo = (key: string,qid:number = 0) => { } // 打开变更详情 const openDetail = (row: any) => { - routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),status:row?.status?.toString() || '',key:'home' } }); + routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),key:'home' } }); }; // 获取当前时间字符串 diff --git a/src/views/home/modules/template9.vue b/src/views/home/modules/template9.vue index bcba9ee..27756a9 100644 --- a/src/views/home/modules/template9.vue +++ b/src/views/home/modules/template9.vue @@ -44,7 +44,7 @@ const jumpTo = (key: string,qid:number = 0) => { } // 打开变更详情 const openDetail = (row: any) => { - routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),status:row?.status?.toString() || '',key:'home' } }); + routerPushByKey("details_index",{ query: { id: row?.change_id?.toString(),key:'home' } }); }; // 获取当前时间字符串 diff --git a/src/views/my/effect/index.vue b/src/views/my/effect/index.vue index 0f3ea1e..cd18624 100644 --- a/src/views/my/effect/index.vue +++ b/src/views/my/effect/index.vue @@ -57,7 +57,7 @@ const exportFile = async () => { } // 查看 const openRow = (r: any) => { - routerPushByKey("details_index",{ query: { id: r?.change_id?.toString(),status:r?.status?.toString() || '',key:'my_effect' } }); + routerPushByKey("details_index",{ query: { id: r?.change_id?.toString(),key:'my_effect' } }); }; // 分页改变 diff --git a/src/views/my/highRisk/modules/risk.vue b/src/views/my/highRisk/modules/risk.vue index a8ad444..29b1c3e 100644 --- a/src/views/my/highRisk/modules/risk.vue +++ b/src/views/my/highRisk/modules/risk.vue @@ -35,7 +35,7 @@ const list = ref([]); // 查看变更 const jumpTo = (r: any) => { - routerPushByKey("details_index",{ query: { id: r?.change_id?.toString(),status:r?.status?.toString() || '',key:'my_highrisk' } }); + routerPushByKey("details_index",{ query: { id: r?.change_id?.toString(),key:'my_highrisk' } }); }; // 查看分析记录 const viewAnalysis = (record: any) => { diff --git a/src/views/my/myTask/index.vue b/src/views/my/myTask/index.vue index bc29393..bd25005 100644 --- a/src/views/my/myTask/index.vue +++ b/src/views/my/myTask/index.vue @@ -82,7 +82,7 @@ const jumpTo = (act: string) => { // 打开详情、修改重报 const openDetail = (c: any,type:string = '') => { if(type==='detail'){ - routerPushByKey("details_index",{ query: { id: c?.change_id?.toString(),status:c?.status?.toString() || '',key:'my_mytask' } }); + routerPushByKey("details_index",{ query: { id: c?.change_id?.toString(),key:'my_mytask' } }); } if(type==='edit'){ routerPushByKey("my_initiatechange",{ query: { id: c?.change_id?.toString() } }); diff --git a/src/views/my/pendingChange/index.vue b/src/views/my/pendingChange/index.vue index 9edbe65..e8fce28 100644 --- a/src/views/my/pendingChange/index.vue +++ b/src/views/my/pendingChange/index.vue @@ -44,7 +44,7 @@ const downloadFile = (file: any) => { }; // 打开变更单 const openChange = (record: any) => { - routerPushByKey("details_index",{ query: { id: record?.id?.toString(),status:record?.status?.toString() || '',key:'my_pendingchange' } }); + routerPushByKey("details_index",{ query: { id: record?.id?.toString(),key:'my_pendingchange' } }); }; // 分页改变 diff --git a/src/views/my/pssr/index.vue b/src/views/my/pssr/index.vue index 8aa7ade..52cd655 100644 --- a/src/views/my/pssr/index.vue +++ b/src/views/my/pssr/index.vue @@ -79,7 +79,7 @@ const downloadTemplate = (record: any) => { }; // 打开变更单 const openChange = (r: any) => { - routerPushByKey("details_index",{ query: { id: r?.id?.toString(),status:r?.status?.toString() || '',key:'my_pssr' } }); + routerPushByKey("details_index",{ query: { id: r?.id?.toString(),key:'my_pssr' } }); }; // 分页改变 diff --git a/src/views/professionalStatistics/index.vue b/src/views/professionalStatistics/index.vue new file mode 100644 index 0000000..e4bbcbf --- /dev/null +++ b/src/views/professionalStatistics/index.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/src/views/professionalStatistics/modules/ringChart.vue b/src/views/professionalStatistics/modules/ringChart.vue new file mode 100644 index 0000000..3183b06 --- /dev/null +++ b/src/views/professionalStatistics/modules/ringChart.vue @@ -0,0 +1,88 @@ + + + + +