From 0b1dbf4d39fcbfc4213ec740ac6de2164ce017fe Mon Sep 17 00:00:00 2001 From: JiXinHui <985276981@qq.com> Date: Tue, 12 Aug 2025 14:39:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/modules/index.ts | 37 ++ src/assets/css/main.scss | 8 + src/assets/font/DS-DIGI-1.ttf | Bin 0 -> 24448 bytes .../img/zheke/{留言数.png => ai-stats4.png} | Bin src/components/item-wrap/item-wrap.vue | 22 +- src/mock/mock-index.ts | 126 ++++++ src/views/index/CenterBottom.vue | 119 ++++++ src/views/index/CenterTop.vue | 100 +++++ src/views/index/LeftBottom.vue | 155 ++++++++ src/views/index/LeftCenter.vue | 237 ++++++++++++ src/views/index/LeftTop.vue | 112 ++++++ src/views/index/RightCenter.vue | 158 ++++++++ src/views/index/RightTop.vue | 178 +++++++++ src/views/index/average-duration.vue | 218 +++++++++++ src/views/index/common-questions.vue | 143 +++++++ src/views/index/components/CenterBottom.vue | 119 ++++++ src/views/index/components/CenterTop.vue | 100 +++++ .../index/components/ConsultationCard.vue | 1 + src/views/index/components/LeftBottom.vue | 155 ++++++++ src/views/index/components/LeftCenter.vue | 188 +++++++++ src/views/index/components/LeftTop.vue | 132 +++++++ src/views/index/components/RightBottom.vue | 119 ++++++ src/views/index/components/RightCenter.vue | 158 ++++++++ src/views/index/components/RightTop.vue | 178 +++++++++ src/views/index/content-header.vue | 361 +++++++++--------- src/views/index/high-school-ranking.vue | 154 ++++++++ src/views/index/index.vue | 107 +++++- src/views/index/major-ranking.vue | 162 ++++++++ src/views/index/student-distribution.vue | 178 +++++++++ 29 files changed, 3529 insertions(+), 196 deletions(-) create mode 100644 src/assets/font/DS-DIGI-1.ttf rename src/assets/img/zheke/{留言数.png => ai-stats4.png} (100%) create mode 100644 src/views/index/CenterBottom.vue create mode 100644 src/views/index/CenterTop.vue create mode 100644 src/views/index/LeftBottom.vue create mode 100644 src/views/index/LeftCenter.vue create mode 100644 src/views/index/LeftTop.vue create mode 100644 src/views/index/RightCenter.vue create mode 100644 src/views/index/RightTop.vue create mode 100644 src/views/index/average-duration.vue create mode 100644 src/views/index/common-questions.vue create mode 100644 src/views/index/components/CenterBottom.vue create mode 100644 src/views/index/components/CenterTop.vue create mode 100644 src/views/index/components/ConsultationCard.vue create mode 100644 src/views/index/components/LeftBottom.vue create mode 100644 src/views/index/components/LeftCenter.vue create mode 100644 src/views/index/components/LeftTop.vue create mode 100644 src/views/index/components/RightBottom.vue create mode 100644 src/views/index/components/RightCenter.vue create mode 100644 src/views/index/components/RightTop.vue create mode 100644 src/views/index/high-school-ranking.vue create mode 100644 src/views/index/major-ranking.vue create mode 100644 src/views/index/student-distribution.vue diff --git a/src/api/modules/index.ts b/src/api/modules/index.ts index d4b30d6..502d2db 100644 --- a/src/api/modules/index.ts +++ b/src/api/modules/index.ts @@ -10,6 +10,12 @@ const indexUrl= { 'rightBottom':'/bigscreen/rightBottom',//右下 'rightCenter':'/bigscreen/ranking',// 报警排名 'consultationTrend':'/bigscreen/consultationTrend',// 咨询人数趋势图 + 'teacherConsultStats':'/bigscreen/teacherConsultStats',// 教师咨询数据统计 + 'studentDistribution':'/bigscreen/studentDistribution',// 学生用户属考生分布统计 + 'highSchoolRanking':'/bigscreen/highSchoolRanking',// 用户量属高中排行 + 'averageDuration':'/bigscreen/averageDuration',// 平均时长趋势 + 'majorRanking':'/bigscreen/majorRanking',// 用户量属专业排行 + 'commonQuestions':'/bigscreen/commonQuestions',// 常见咨询问题 } export default indexUrl @@ -54,6 +60,37 @@ export const rightBottom=(param:any={})=>{ return GET(indexUrl.rightBottom,param) } +/**咨询人数趋势图 */ export const consultationTrend=(param:any={})=>{ return GET(indexUrl.consultationTrend,param) +} + +/**教师咨询数据统计 */ +export const teacherConsultStats=(param:any={})=>{ + return GET(indexUrl.teacherConsultStats,param) +} + +/**学生用户属考生分布统计 */ +export const studentDistribution=(param:any={})=>{ + return GET(indexUrl.studentDistribution,param) +} + +/**用户量属高中排行 */ +export const highSchoolRanking=(param:any={})=>{ + return GET(indexUrl.highSchoolRanking,param) +} + +/**平均时长趋势 */ +export const averageDuration=(param:any={})=>{ + return GET(indexUrl.averageDuration,param) +} + +/**用户量属专业排行 */ +export const majorRanking=(param:any={})=>{ + return GET(indexUrl.majorRanking,param) +} + +/**常见咨询问题 */ +export const commonQuestions=(param:any={})=>{ + return GET(indexUrl.commonQuestions,param) } \ No newline at end of file diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss index a2b6318..3b923a9 100644 --- a/src/assets/css/main.scss +++ b/src/assets/css/main.scss @@ -12,6 +12,14 @@ html,body{ src: url(../font/YouSheBiaoTiHei-2.ttf); } +@font-face { + font-family: 'DS-Digital'; + src: url('../font/DS-DIGI-1.ttf') format('truetype'); + font-weight: normal; + font-style: normal; + font-display: swap; +} + html .el-message { --yh-bg-color-container:#242424; --yh-shadow-3: 0 16px 24px rgba(0, 0, 0, .14), 0 6px 30px rgba(0, 0, 0, 12%), 0 8px 10px rgba(0, 0, 0, 20%); diff --git a/src/assets/font/DS-DIGI-1.ttf b/src/assets/font/DS-DIGI-1.ttf new file mode 100644 index 0000000000000000000000000000000000000000..09258773c7219ad9e60b92b918e3c50b58f43c9e GIT binary patch literal 24448 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
-
- - -
{{ title }}
+
+ + +
{{ title }}
+
+
+ +
-
- -
-
\ No newline at end of file diff --git a/src/views/index/CenterTop.vue b/src/views/index/CenterTop.vue new file mode 100644 index 0000000..59a28ec --- /dev/null +++ b/src/views/index/CenterTop.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/LeftBottom.vue b/src/views/index/LeftBottom.vue new file mode 100644 index 0000000..302bf0c --- /dev/null +++ b/src/views/index/LeftBottom.vue @@ -0,0 +1,155 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/LeftCenter.vue b/src/views/index/LeftCenter.vue new file mode 100644 index 0000000..dfee453 --- /dev/null +++ b/src/views/index/LeftCenter.vue @@ -0,0 +1,237 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/LeftTop.vue b/src/views/index/LeftTop.vue new file mode 100644 index 0000000..8cb1cdd --- /dev/null +++ b/src/views/index/LeftTop.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/RightCenter.vue b/src/views/index/RightCenter.vue new file mode 100644 index 0000000..674a4cc --- /dev/null +++ b/src/views/index/RightCenter.vue @@ -0,0 +1,158 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/RightTop.vue b/src/views/index/RightTop.vue new file mode 100644 index 0000000..6bde41b --- /dev/null +++ b/src/views/index/RightTop.vue @@ -0,0 +1,178 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/average-duration.vue b/src/views/index/average-duration.vue new file mode 100644 index 0000000..c75719a --- /dev/null +++ b/src/views/index/average-duration.vue @@ -0,0 +1,218 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/common-questions.vue b/src/views/index/common-questions.vue new file mode 100644 index 0000000..52f2c31 --- /dev/null +++ b/src/views/index/common-questions.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/components/CenterBottom.vue b/src/views/index/components/CenterBottom.vue new file mode 100644 index 0000000..e771694 --- /dev/null +++ b/src/views/index/components/CenterBottom.vue @@ -0,0 +1,119 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/components/CenterTop.vue b/src/views/index/components/CenterTop.vue new file mode 100644 index 0000000..59a28ec --- /dev/null +++ b/src/views/index/components/CenterTop.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/components/ConsultationCard.vue b/src/views/index/components/ConsultationCard.vue new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/src/views/index/components/ConsultationCard.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/index/components/LeftBottom.vue b/src/views/index/components/LeftBottom.vue new file mode 100644 index 0000000..302bf0c --- /dev/null +++ b/src/views/index/components/LeftBottom.vue @@ -0,0 +1,155 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/components/LeftCenter.vue b/src/views/index/components/LeftCenter.vue new file mode 100644 index 0000000..0632e4c --- /dev/null +++ b/src/views/index/components/LeftCenter.vue @@ -0,0 +1,188 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/components/LeftTop.vue b/src/views/index/components/LeftTop.vue new file mode 100644 index 0000000..691f9a1 --- /dev/null +++ b/src/views/index/components/LeftTop.vue @@ -0,0 +1,132 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/components/RightBottom.vue b/src/views/index/components/RightBottom.vue new file mode 100644 index 0000000..e771694 --- /dev/null +++ b/src/views/index/components/RightBottom.vue @@ -0,0 +1,119 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/components/RightCenter.vue b/src/views/index/components/RightCenter.vue new file mode 100644 index 0000000..674a4cc --- /dev/null +++ b/src/views/index/components/RightCenter.vue @@ -0,0 +1,158 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/components/RightTop.vue b/src/views/index/components/RightTop.vue new file mode 100644 index 0000000..6bde41b --- /dev/null +++ b/src/views/index/components/RightTop.vue @@ -0,0 +1,178 @@ + + + + + \ No newline at end of file diff --git a/src/views/index/content-header.vue b/src/views/index/content-header.vue index 18f8369..ec61ea4 100644 --- a/src/views/index/content-header.vue +++ b/src/views/index/content-header.vue @@ -24,20 +24,20 @@ const formattedConsultCount = computed(() => formatNumber(consultCount.value)); // 筛选选项 const consultTypeOptions = [ - { value: 'all', label: '全部类型' }, - { value: 'academic', label: '学业咨询' }, - { value: 'career', label: '就业咨询' }, - { value: 'personal', label: '个人发展' }, - { value: 'other', label: '其他咨询' } + { value: "all", label: "全部类型" }, + { value: "academic", label: "学业咨询" }, + { value: "career", label: "就业咨询" }, + { value: "personal", label: "个人发展" }, + { value: "other", label: "其他咨询" }, ]; const selectedConsultType = ref(consultTypeOptions[0].value); const timeRangeOptions = [ - { value: '1week', label: '近一周' }, - { value: '1month', label: '近一月' }, - { value: '3months', label: '近三月' }, - { value: 'halfyear', label: '近半年' }, - { value: '1year', label: '近一年' } + { value: "1week", label: "近一周" }, + { value: "1month", label: "近一月" }, + { value: "3months", label: "近三月" }, + { value: "halfyear", label: "近半年" }, + { value: "1year", label: "近一年" }, ]; const selectedTimeRange = ref(timeRangeOptions[0].value); @@ -53,28 +53,28 @@ const dateRange = ref<[Date, Date]>(getDefaultDateRange() as [Date, Date]); // 咨询人数趋势图 const option = ref({}); const getData = () => { - // 可以添加筛选参数 - const params = { - consultType: selectedConsultType.value, - timeRange: selectedTimeRange.value, - dateRange: dateRange.value - }; - - consultationTrend().then((res)=> { - if(res.success) { - setOptions(res.data) - } else { - ElMessage({ - message: res.msg, - type: "warning", - }); - } - }) -} + // 可以添加筛选参数 + const params = { + consultType: selectedConsultType.value, + timeRange: selectedTimeRange.value, + dateRange: dateRange.value, + }; + + consultationTrend().then((res) => { + if (res.success) { + setOptions(res.data); + } else { + ElMessage({ + message: res.msg, + type: "warning", + }); + } + }); +}; // 监听筛选条件变化 const handleFilterChange = () => { - getData(); + getData(); }; // 监听筛选条件变化 @@ -82,125 +82,124 @@ watch(selectedConsultType, handleFilterChange); watch(selectedTimeRange, handleFilterChange); watch(dateRange, handleFilterChange); -const setOptions = async (newData:any) => { - option.value = { - grid: { - top: '15%', - left: '3%', - right: '4%', - bottom: '3%', - containLabel: true +const setOptions = async (newData: any) => { + option.value = { + grid: { + top: "15%", + left: "3%", + right: "4%", + bottom: "3%", + containLabel: true, + }, + backgroundColor: "#ffffff", + tooltip: { + trigger: "axis", + axisPointer: { + type: "line", + lineStyle: { + color: "#4B96FF", + width: 1, }, - backgroundColor: '#ffffff', - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'line', - lineStyle: { - color: '#4B96FF', - width: 1 - } - }, - backgroundColor: 'rgba(255, 255, 255, 0.9)', - borderColor: '#F1F1F1', - borderWidth: 1, - padding: [8, 10], - textStyle: { - color: '#666' - }, - formatter: function(params: any) { - const data = params[0]; - return `${data.name}
${data.value}`; - } + }, + backgroundColor: "rgba(255, 255, 255, 0.9)", + borderColor: "#F1F1F1", + borderWidth: 1, + padding: [8, 10], + textStyle: { + color: "#666", + }, + formatter: function (params: any) { + const data = params[0]; + return `${data.name}
${data.value}`; + }, + }, + xAxis: { + type: "category", + boundaryGap: false, + data: newData.dateList, + axisLine: { + lineStyle: { + color: "#E0E0E0", }, - xAxis: { - type: 'category', - boundaryGap: false, - data: newData.dateList, - axisLine: { - lineStyle: { - color: '#E0E0E0' - } - }, - axisLabel: { - color: '#999999', - formatter: function(value: string) { - return value.replace('2023-', ''); - } - } + }, + axisLabel: { + color: "#999999", + formatter: function (value: string) { + return value.replace("2023-", ""); }, - yAxis: { - type: 'value', - max: 900, - min: 0, - interval: 300, - splitNumber: 3, - axisLine: { - show: false - }, - axisTick: { - show: false - }, - splitLine: { - lineStyle: { - type: 'dashed', - color: '#E0E0E0' - } - }, - axisLabel: { - color: '#999999', - formatter: '{value}' - } + }, + }, + yAxis: { + type: "value", + max: 900, + min: 0, + interval: 300, + splitNumber: 3, + axisLine: { + show: false, + }, + axisTick: { + show: false, + }, + splitLine: { + lineStyle: { + type: "dashed", + color: "#E0E0E0", }, - series: [ - { - type: 'line', - data: newData.valueList, - smooth: true, - symbol: 'circle', - symbolSize: 8, - showSymbol: function(idx: number) { - // 只在特定位置显示圆点,例如第三个点 - return idx === 2; - }, - itemStyle: { - color: '#fff', - borderColor: '#4B96FF', - borderWidth: 2 - }, - lineStyle: { - color: '#4B96FF', - width: 3 - }, - areaStyle: { - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [ - { - offset: 0, - color: 'rgba(75, 150, 255, 0.3)' - }, - { - offset: 1, - color: 'rgba(75, 150, 255, 0.1)' - } - ] - } - } - } - ] - } -} + }, + axisLabel: { + color: "#999999", + formatter: "{value}", + }, + }, + series: [ + { + type: "line", + data: newData.valueList, + smooth: true, + symbol: "circle", + symbolSize: 8, + showSymbol: function (idx: number) { + // 只在特定位置显示圆点,例如第三个点 + return idx === 2; + }, + itemStyle: { + color: "#fff", + borderColor: "#4B96FF", + borderWidth: 2, + }, + lineStyle: { + color: "#4B96FF", + width: 3, + }, + areaStyle: { + color: { + type: "linear", + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: "rgba(75, 150, 255, 0.3)", + }, + { + offset: 1, + color: "rgba(75, 150, 255, 0.1)", + }, + ], + }, + }, + }, + ], + }; +}; // 组件挂载时获取数据 onMounted(() => { - getData(); + getData(); }); -