11wqe1 3 недель назад
Родитель
Сommit
3631bfc05f
27 измененных файлов с 352 добавлено и 449 удалено
  1. 80 3
      src/lang/cn.json
  2. 80 1
      src/lang/en.json
  3. 80 1
      src/lang/hk.json
  4. 6 6
      src/views/HomeView.vue
  5. 4 4
      src/views/kanBan/components/dataBoardNew/AIApp/chartList/ParetoChart.vue
  6. 0 118
      src/views/kanBan/components/dataBoardNew/AIApp/chartList/appCreate.vue
  7. 0 141
      src/views/kanBan/components/dataBoardNew/AIApp/chartList/appKey.vue
  8. 5 5
      src/views/kanBan/components/dataBoardNew/AIApp/chartList/appPub.vue
  9. 5 5
      src/views/kanBan/components/dataBoardNew/AIApp/chartList/appUse.vue
  10. 0 72
      src/views/kanBan/components/dataBoardNew/AIApp/chartList/conKey.vue
  11. 3 3
      src/views/kanBan/components/dataBoardNew/AIApp/index.vue
  12. 12 12
      src/views/kanBan/components/dataBoardNew/baseData/chartList/levChart.vue
  13. 7 7
      src/views/kanBan/components/dataBoardNew/baseData/chartList/teahoop.vue
  14. 7 7
      src/views/kanBan/components/dataBoardNew/baseData/chartList/tealiveness.vue
  15. 8 8
      src/views/kanBan/components/dataBoardNew/baseData/chartList/useTimer.vue
  16. 4 4
      src/views/kanBan/components/dataBoardNew/baseData/index.vue
  17. 6 7
      src/views/kanBan/components/dataBoardNew/index.vue
  18. 1 1
      src/views/kanBan/components/dataBoardNew/teaMange/chartList/barChart.vue
  19. 4 4
      src/views/kanBan/components/dataBoardNew/teaMange/chartList/pie2.vue
  20. 3 3
      src/views/kanBan/components/dataBoardNew/teaMange/chartList/solid.vue
  21. 5 5
      src/views/kanBan/components/dataBoardNew/teaMange/index.vue
  22. 4 4
      src/views/kanBan/components/dataBoardNew/teaing/chartList/BubbleChart.vue
  23. 4 4
      src/views/kanBan/components/dataBoardNew/teaing/chartList/aidedDesign.vue
  24. 5 5
      src/views/kanBan/components/dataBoardNew/teaing/chartList/appUseAss.vue
  25. 10 10
      src/views/kanBan/components/dataBoardNew/teaing/index.vue
  26. 8 8
      src/views/kanBan/index.vue
  27. 1 1
      src/views/login/loginPage.vue

+ 80 - 3
src/lang/cn.json

@@ -58,7 +58,84 @@
 	"AIapp": "AI应用",
 	"recentlyused": "最近使用",
 	"MyCollection": "我的收藏",
-	"FailedcocoFlow": "获取cocoFlow收藏与历史失败"
-
-	
+	"FailedcocoFlow": "获取cocoFlow收藏与历史失败",
+	"exit": "退出",
+	"Loadingdes": "拼命加载中...",
+	"sureexit": "确定退出吗?",
+	"Exitsu": "退出成功",
+	"databoard": "数据看板",
+	"Campusentrance": "校区入口",
+	"GroupFeatures": "集团特色",
+	"Failedobtain": "获取校区栏失败",
+	"Intelledu": "智能教务",
+	"BasicData": "基础数据",
+	"AIapplications": "AI应用",
+	"Regularteaching": "常规教学",
+	"teamanagement": "教师管理",
+	"TopApps": "热门应用Top5",
+	"Nexttime": "次",
+	"TopCreators": "创作者Top5",
+	"AppCategories": "应用发布分类",
+	"Untitled": "未命名",
+	"propquantity": "数量占比",
+	"Total": "总计\n*个",
+	"Appusage": "应用使用分类",
+	"Totaltimes": "总计\n*次",
+	"ParetoChart": "应用使用分析(帕累托图)",
+	"UsageQuantity": "使用数量",
+	"numbercopies": "复制数量",
+	"cumpercentage": "累计百分比",
+	"Activeuserseg": "活跃用户分层",
+	"day": "日",
+	"week": "周",
+	"moon": "月",
+	"highfrequency": "高频",
+	"interfrequency": "中频",
+	"lowfrequency": "低频",
+	"person": "人",
+	"numberusers": "用户数量",
+	"Totalpeople": "总计\n *人",
+	"Activitygrowth": "活跃度增长环比",
+	"date": "日期",
+	"growthrate": "环比增长率",
+	"Teaactivity": "教师活跃度",
+	"numericalvalue": "数值",
+	"datavolume": "数据量",
+	"Usageduration": "使用时长",
+	"Nodata": "暂无数据",
+	"minute": "分钟",
+	"Totaltea": "教师总量",
+	"Totalstudents": "学生总量",
+	"Monthlylogintotal": "月登录总数",
+	"Monthlybasis": "月登录环比",
+	"AImode": "AI模式",
+	"NormalMode": "普通模式",
+	"patterncla": "模式分类",
+	"SubjectCla": "学科分类",
+	"singleclass": "单节课AI嵌入数量",
+	"Studentvolume": "学生交互量",
+	"Cladistribution": "课堂分布",
+	"grade": "年级",
+	"Numbercourses": "课程数量",
+	"discipline": "学科",
+	"Studenttop": "学生参与Top5",
+	"TopReuse": "课程复用Top5",
+	"designanalysis": "AI辅助设计分析",
+	"AIusageanalysis": "AI应用使用分析",
+	"Totalcourses": "课程总量",
+	"Newcouadded ": "本月新增课程",
+	"Newlyaddedbasis": "新增课程环比",
+	"AIembeddings": "AI应用嵌入数量",
+	"progress": "进度",
+	"complete": "完成",
+	"Unfinished": "未完成",
+	"Processdegree": "流程完成度",
+	"Formpublishing": "表单发布",
+	"Formcompleted": "表单完成",
+	"IntelligentQA": "智能问答",
+	"Intelinquiry": "表单流程转化",
+	"Summarypopular": "热门表单人数汇总",
+	"Totalforms": "表单总量",
+	"Formrate": "表单回收率",
+	"Intelfrequency": "智能回答次数"
 }

+ 80 - 1
src/lang/en.json

@@ -58,5 +58,84 @@
   "AIapp": "AI applications",
   "recentlyused": "Recently used",
   "MyCollection": "My collections",
-  "FailedcocoFlow": "Failed to retrieve cocoFlow collections and history"
+  "FailedcocoFlow": "Failed to retrieve cocoFlow collections and history",
+   "exit": "Exit",
+  "Loadingdes": "Loading frantically...",
+  "sureexit": "Confirm exit?",
+  "Exitsu": "Exit successful",
+  "databoard": "Data dashboard",
+  "Campusentrance": "Campus entrance",
+  "GroupFeatures": "Group features",
+  "Failedobtain": "Failed to obtain campus bar",
+  "Intelledu": "Intelligent education administration",
+  "BasicData": "Basic data",
+  "AIapplications": "AI applications",
+  "Regularteaching": "Regular teaching",
+  "teamanagement": "Teacher management",
+  "TopApps": "Top 5 popular apps",
+  "Nexttime": "Next time",
+  "TopCreators": "Top 5 creators",
+  "AppCategories": "App publication categories",
+  "Untitled": "Untitled",
+  "propquantity": "Quantity proportion",
+  "Total": "Total\n* items",
+  "Appusage": "App usage categories",
+  "Totaltimes": "Total\n* times",
+  "ParetoChart": "App usage analysis (Pareto chart)",
+  "UsageQuantity": "Usage quantity",
+  "numbercopies": "Copy count",
+  "cumpercentage": "Cumulative percentage",
+  "Activeuserseg": "Active user segmentation",
+  "day": "Day",
+  "week": "Week",
+  "moon": "Month",
+  "highfrequency": "High frequency",
+  "interfrequency": "Medium frequency",
+  "lowfrequency": "Low frequency",
+  "person": "Person",
+  "numberusers": "Number of users",
+  "Totalpeople": "Total\n * persons",
+  "Activitygrowth": "Activity growth MoM",
+  "date": "Date",
+  "growthrate": "MoM growth rate",
+  "Teaactivity": "Teacher activity",
+  "numericalvalue": "Numerical value",
+  "datavolume": "Data volume",
+  "Usageduration": "Usage duration",
+  "Nodata": "No data",
+  "minute": "Minute",
+  "Totaltea": "Total teachers",
+  "Totalstudents": "Total students",
+  "Monthlylogintotal": "Monthly login total",
+  "Monthlybasis": "Monthly login MoM",
+  "AImode": "AI mode",
+  "NormalMode": "Normal mode",
+  "patterncla": "Mode classification",
+  "SubjectCla": "Subject classification",
+  "singleclass": "AI embedded per class",
+  "Studentvolume": "Student interactions",
+  "Cladistribution": "Class distribution",
+  "grade": "Grade",
+  "Numbercourses": "Number of courses",
+  "discipline": "Discipline",
+  "Studenttop": "Top 5 student participants",
+  "TopReuse": "Top 5 reused courses",
+  "designanalysis": "AI-assisted design analysis",
+  "AIusageanalysis": "AI application usage analysis",
+  "Totalcourses": "Total courses",
+  "Newcouadded": "New courses added this month",
+  "Newlyaddedbasis": "New course MoM",
+  "AIembeddings": "AI application embeddings",
+  "progress": "Progress",
+  "complete": "Completed",
+  "Unfinished": "Incomplete",
+  "Processdegree": "Process completion rate",
+  "Formpublishing": "Form published",
+  "Formcompleted": "Form completed",
+  "IntelligentQA": "Intelligent QA",
+  "Intelinquiry": "Form process conversion",
+  "Summarypopular": "Summary of popular form participants",
+  "Totalforms": "Total forms",
+  "Formrate": "Form response rate",
+  "Intelfrequency": "Intelligent response frequency"
 }

+ 80 - 1
src/lang/hk.json

@@ -58,5 +58,84 @@
   "AIapp": "AI應用",
   "recentlyused": "最近使用",
   "MyCollection": "我的收藏",
-  "FailedcocoFlow": "獲取cocoFlow收藏與歷史失敗"
+  "FailedcocoFlow": "獲取cocoFlow收藏與歷史失敗",
+  "exit": "退出",
+  "Loadingdes": "拼命加載中...",
+  "sureexit": "確定退出嗎?",
+  "Exitsu": "退出成功",
+  "databoard": "數據看板",
+  "Campusentrance": "校區入口",
+  "GroupFeatures": "集團特色",
+  "Failedobtain": "獲取校區欄失敗",
+  "Intelledu": "智能教務",
+  "BasicData": "基礎數據",
+  "AIapplications": "AI應用",
+  "Regularteaching": "常規教學",
+  "teamanagement": "教師管理",
+  "TopApps": "熱門應用Top5",
+  "Nexttime": "次",
+  "TopCreators": "創作者Top5",
+  "AppCategories": "應用發布分類",
+  "Untitled": "未命名",
+  "propquantity": "數量佔比",
+  "Total": "總計\n*個",
+  "Appusage": "應用使用分類",
+  "Totaltimes": "總計\n*次",
+  "ParetoChart": "應用使用分析(帕累托圖)",
+  "UsageQuantity": "使用數量",
+  "numbercopies": "複製數量",
+  "cumpercentage": "累計百分比",
+  "Activeuserseg": "活躍用戶分層",
+  "day": "日",
+  "week": "周",
+  "moon": "月",
+  "highfrequency": "高頻",
+  "interfrequency": "中頻",
+  "lowfrequency": "低頻",
+  "person": "人",
+  "numberusers": "用戶數量",
+  "Totalpeople": "總計\n *人",
+  "Activitygrowth": "活躍度增長環比",
+  "date": "日期",
+  "growthrate": "環比增長率",
+  "Teaactivity": "教師活躍度",
+  "numericalvalue": "數值",
+  "datavolume": "數據量",
+  "Usageduration": "使用時長",
+  "Nodata": "暫無數據",
+  "minute": "分鐘",
+  "Totaltea": "教師總量",
+  "Totalstudents": "學生總量",
+  "Monthlylogintotal": "月登錄總數",
+  "Monthlybasis": "月登錄環比",
+  "AImode": "AI模式",
+  "NormalMode": "普通模式",
+  "patterncla": "模式分類",
+  "SubjectCla": "學科分類",
+  "singleclass": "單節課AI嵌入數量",
+  "Studentvolume": "學生交互量",
+  "Cladistribution": "課堂分布",
+  "grade": "年級",
+  "Numbercourses": "課程數量",
+  "discipline": "學科",
+  "Studenttop": "學生參與Top5",
+  "TopReuse": "課程複用Top5",
+  "designanalysis": "AI輔助設計分析",
+  "AIusageanalysis": "AI應用使用分析",
+  "Totalcourses": "課程總量",
+  "Newcouadded": "本月新增課程",
+  "Newlyaddedbasis": "新增課程環比",
+  "AIembeddings": "AI應用嵌入數量",
+  "progress": "進度",
+  "complete": "完成",
+  "Unfinished": "未完成",
+  "Processdegree": "流程完成度",
+  "Formpublishing": "表單發佈",
+  "Formcompleted": "表單完成",
+  "IntelligentQA": "智能問答",
+  "Intelinquiry": "表單流程轉化",
+  "Summarypopular": "熱門表單人數匯總",
+  "Totalforms": "表單總量",
+  "Formrate": "表單回收率",
+  "Intelfrequency": "智能回答次數"
 }

+ 6 - 6
src/views/HomeView.vue

@@ -47,7 +47,7 @@
 								type="text"
 								@click="handleLogout"
 								style="margin-left: 20px"
-								>退出</el-button
+								>{{ lang.exit }}</el-button
 							>
 						</div>
 					</div>
@@ -110,7 +110,7 @@
 							src="../assets/img/cocoloading.gif"
 							alt=""
 						/>
-						<div style="color: #0354d7">拼命加载中...</div>
+						<div style="color: #0354d7">{{ lang.Loadingdes }}</div>
 					</div>
 				</div>
 			</div>
@@ -268,16 +268,16 @@ export default {
 			console.log('iframe加载完成');
 		},
 		async handleLogout() {
-			this.$confirm("确定退出吗", "提示", {
-				confirmButtonText: "确定",
-				cancelButtonText: "取消",
+			this.$confirm(this.lang.sureexit, this.lang.tip, {
+				confirmButtonText: this.lang.confirm,
+				cancelButtonText: this.lang.Cancel,
 				type: "warning",
 			})
 				.then(async () => {
 					loginOut()
 						.then(async () => {
 							this.$message({
-								message: "退出成功",
+								message: this.lang.Exitsu,
 								type: "success",
 							});
 							await this.logout();

+ 4 - 4
src/views/kanBan/components/dataBoardNew/AIApp/chartList/ParetoChart.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="chartsT">
-      应用使用分析(帕累托图)
+      {{ lang.ParetoChart }}
       <div ref="chart" style="width:100%;flex: 1;"></div>
   </div>
 </template>
@@ -106,7 +106,7 @@ export default {
         ],
         series: [
           {
-            name: '使用数量',
+            name: this.lang.UsageQuantity,
             type: 'bar',
             data: this.barData,
             itemStyle: {
@@ -114,7 +114,7 @@ export default {
             }
           },
           {
-              name: '复制数量',
+              name: this.lang.numbercopies,
               type: 'line',
               yAxisIndex: 1,
               data: this.rawData.map(e=> e.copy_count),
@@ -123,7 +123,7 @@ export default {
               }
           },
           {
-            name: '累计百分比',
+            name: this.lang.cumpercentage,
               type: 'line',
               yAxisIndex: 1,
               data: this.lineData,

+ 0 - 118
src/views/kanBan/components/dataBoardNew/AIApp/chartList/appCreate.vue

@@ -1,118 +0,0 @@
-<template>
-  <div ref="chart" style="height: 100%;width: 100%;"></div>
-</template>
-
-<script>
-import * as echarts from 'echarts';
-
-export default {
-  props: {
-    // chartData: {
-    //   type: Array, // 数据形式为 [[x1, y1], [x2, y2], ...]
-    //   required: true,
-    // },
-  },
-  mounted() {
-    console.log('chartData',this.chartData);
-    
-    // this.initChart();
-  },
-  methods: {
-    calculateTrendLine(data) {
-      // 计算趋势线的斜率和截距
-      const n = data.length;
-      let sumX = 0,
-        sumY = 0,
-        sumXY = 0,
-        sumX2 = 0;
-
-      data.forEach(([x, y]) => {
-        sumX += x;
-        sumY += y;
-        sumXY += x * y;
-        sumX2 += x * x;
-      });
-
-      const slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
-      const intercept = (sumY - slope * sumX) / n;
-
-      // 根据斜率和截距生成趋势线数据
-      const minX = Math.min(...data.map(([x]) => x));
-      const maxX = Math.max(...data.map(([x]) => x));
-      const trendLine = [
-        [minX, slope * minX + intercept],
-        [maxX, slope * maxX + intercept],
-      ];
-
-      return trendLine;
-    },
-    initChart() {
-      const chart = echarts.init(this.$refs.chart);
-
-      // 计算趋势线数据
-      const trendLine = this.calculateTrendLine(this.chartData);
-
-      const option = {
-        title: {
-          text: '散点图(带趋势线)',
-          left: 'center',
-          textStyle: {
-            fontSize: 16,
-          },
-        },
-        tooltip: {
-          trigger: 'item',
-          formatter: (params) => {
-            if (params.seriesName === '数据点') {
-              return `X: ${params.data[0]}<br>Y: ${params.data[1]}`;
-            }
-            return '';
-          },
-        },
-        xAxis: {
-          type: 'value',
-        //   name: 'X',
-          min: 0,
-        },
-        yAxis: {
-          type: 'value',
-        //   name: 'Y',
-          min: 0,
-        },
-        series: [
-          {
-            name: '数据点',
-            type: 'scatter',
-            data: this.chartData,
-            symbolSize: 10,
-            itemStyle: {
-              color: '#4C76F3',
-            },
-          },
-          {
-            name: '趋势线',
-            type: 'line',
-            data: trendLine,
-            lineStyle: {
-              color: '#F56C6C',
-              type: 'dashed',
-            },
-            symbol: 'none', // 去掉趋势线的点
-          },
-        ],
-      };
-
-      chart.setOption(option);
-      this.chartInstance = chart;
-    },
-  },
- 
-};
-</script>
-
-<style>
-.chart-container {
-  width: 100%;
-  height: 400px;
-}
-</style>

+ 0 - 141
src/views/kanBan/components/dataBoardNew/AIApp/chartList/appKey.vue

@@ -1,141 +0,0 @@
-<template>
-  <div ref="chart" style="width: 100%; height: 100%;"></div>
-</template>
-
-<script>
-import * as echarts from 'echarts';
-
-export default {
-  name: 'NetworkChart',
-  data() {
-    return {
-      chart: null,
-      staticData: {
-        nodes: [
-          { id: "1", name: "中心节点", symbolSize: 45, category: 0 },
-          { id: "2", name: "技术部", symbolSize: 28, category: 1 },
-          { id: "3", name: "市场部", symbolSize: 32, category: 2 },
-          { id: "4", name: "研发A组", symbolSize: 18, category: 3 },
-          { id: "5", name: "研发B组", symbolSize: 22, category: 3 },
-          { id: "6", name: "华东区", symbolSize: 26, category: 4 },
-          { id: "7", name: "华南区", symbolSize: 24, category: 4 },
-          { id: "8", name: "数据中心", symbolSize: 35, category: 5 },
-          { id: "9", name: "云服务", symbolSize: 30, category: 5 },
-          { id: "10", name: "客户端", symbolSize: 20, category: 6 },
-          { id: "11", name: "移动端", symbolSize: 25, category: 6 },
-          { id: "12", name: "Web端", symbolSize: 22, category: 6 }
-        ],
-        links: [
-          { source: "1", target: "2" },
-          { source: "1", target: "3" },
-          { source: "2", target: "4" },
-          { source: "2", target: "5" },
-          { source: "3", target: "6" },
-          { source: "3", target: "7" },
-          { source: "1", target: "8" },
-          { source: "8", target: "9" },
-          { source: "9", target: "10" },
-          { source: "9", target: "11" },
-          { source: "9", target: "12" },
-          { source: "4", target: "10" },
-          { source: "5", target: "11" },
-          { source: "6", target: "12" },
-          { source: "7", target: "10" }
-        ],
-        categories: [
-          { name: "总部" },
-          { name: "技术部门" },
-          { name: "市场部门" },
-          { name: "研发团队" },
-          { name: "大区" },
-          { name: "基础服务" },
-          { name: "终端平台" }
-        ]
-      }
-    }
-  },
-  mounted() {
-    this.initChart();
-    window.addEventListener('resize', this.handleResize);
-  },
-  methods: {
-    initChart() {
-      this.chart = echarts.init(this.$refs.chart);
-      
-      // 动态计算标签显示条件
-      this.staticData.nodes.forEach(node => {
-        node.label = { 
-          show: node.symbolSize > 20,
-          fontSize: Math.sqrt(node.symbolSize) * 2
-        };
-      });
-
-      this.setChartOption(this.staticData);
-    },
-    setChartOption(graph) {
-      const option = {
-        // title: {
-        //   text: '企业架构关系图',
-        //   subtext: '静态数据示例',
-        //   top: 20,
-        //   left: 'center'
-        // },
-        tooltip: {},
-        legend: {
-          data: graph.categories.map(a => a.name),
-          // orient: 'vertical',
-          right: 10,
-          top: 10
-        },
-        animationDuration: 1500,
-        series: [{
-          type: 'graph',
-          layout: 'force',
-          force: {
-            repulsion: 200,
-            edgeLength: 100
-          },
-          data: graph.nodes,
-          links: graph.links,
-          categories: graph.categories,
-          roam: true,
-          label: {
-            position: 'right',
-            formatter: '{b}',
-            color: '#666'
-          },
-          lineStyle: {
-            color: 'source',
-            curveness: 0.1
-          },
-          emphasis: {
-            focus: 'adjacency',
-            label: {
-              show: true,
-              fontWeight: 'bold'
-            }
-          },
-          // itemStyle: {
-          //   color: (params) => {
-          //     const colors = [
-          //       '#5470c6', '#91cc75', '#fac858', 
-          //       '#ee6666', '#73c0de', '#3ba272', 
-          //       '#fc8452'
-          //     ];
-          //     return colors[params.data.category % colors.length];
-          //   }
-          // }
-        }]
-      };
-      this.chart.setOption(option);
-    },
-    handleResize() {
-      this.chart && this.chart.resize();
-    }
-  },
-  beforeDestroy() {
-    window.removeEventListener('resize', this.handleResize);
-    this.chart.dispose();
-  }
-};
-</script>

+ 5 - 5
src/views/kanBan/components/dataBoardNew/AIApp/chartList/appPub.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="chartsT">
-      应用发布分类
+      {{ lang.AppCategories }}
       <div ref="chartDom" style="width:100%;height:100%"></div>
   </div>
 </template>
@@ -58,11 +58,11 @@ export default {
         legend: {
           orient: 'vertical',
           right:'right',
-          data: this.chartData.map(item => item.name || '未命名')
+          data: this.chartData.map(item => item.name || this.lang.Untitled)
         },
         series: [
           {
-            name: '数量占比',
+            name: this.lang.propquantity,
             type: 'pie',
             radius: ['30%', '70%'], // 创建环形图
             avoidLabelOverlap: false,
@@ -79,7 +79,7 @@ export default {
             },
             data: this.chartData.map(item => ({
               value: item.form_count,
-              name: item.name || '未命名'
+              name: item.name || this.lang.Untitled
             }))
           }
         ],
@@ -88,7 +88,7 @@ export default {
           left: 'center',
           top: 'middle',
           style: {
-            text: `总计\n${this.allNum}个`,
+            text: this.lang.Total.replace(/\*/g, this.allNum),
             fill: '#000',
             font: '20px Arial',
             textAlign: 'center',

+ 5 - 5
src/views/kanBan/components/dataBoardNew/AIApp/chartList/appUse.vue

@@ -1,7 +1,7 @@
 
 <template>
     <div class="chartsT">
-      应用使用分类
+      {{ lang.Appusage }}
       <div ref="chartDom" style="width:100%;height:100%"></div>
   </div>
 </template>
@@ -59,11 +59,11 @@ export default {
         legend: {
           orient: 'vertical',
           right:'right',
-          data: this.chartData.map(item => item.name || '未命名')
+          data: this.chartData.map(item => item.name || this.lang.Untitled)
         },
         series: [
           {
-            name: '数量占比',
+            name: this.lang.propquantity,
             type: 'pie',
             radius: ['30%', '70%'], // 创建环形图
             avoidLabelOverlap: false,
@@ -80,7 +80,7 @@ export default {
             },
             data: this.chartData.map(item => ({
               value: item.form_count,
-              name: item.name || '未命名'
+              name: item.name || this.lang.Untitled
             }))
           }
         ],
@@ -89,7 +89,7 @@ export default {
           left: 'center',
           top: 'middle',
           style: {
-            text: `总计\n${this.numL}次`,
+            text: this.lang.Totaltimes.replace(/\*/g, this.numL),
             fill: '#000',
             font: '20px Arial',
             textAlign: 'center',

+ 0 - 72
src/views/kanBan/components/dataBoardNew/AIApp/chartList/conKey.vue

@@ -1,72 +0,0 @@
-
-<template>
-  <div ref="chartContainer" style="width: 100%; height: 100%;"></div>
-</template>
-
-<script>
-import * as echarts from 'echarts';
-
-export default {
-  name: 'SankeyChart',
-  data() {
-    return {
-      chart: null,
-      chartOption: {
-        series: {
-          type: 'sankey',
-          layout: 'none',
-          emphasis: {
-            focus: 'adjacency'
-          },
-          data: [
-            { name: 'a' },
-            { name: 'b' },
-            { name: 'a1' },
-            { name: 'a2' },
-            { name: 'b1' },
-            { name: 'c' }
-          ],
-          links: [
-            { source: 'a', target: 'a1', value: 5 },
-            { source: 'a', target: 'a2', value: 3 },
-            { source: 'b', target: 'b1', value: 8 },
-            { source: 'a', target: 'b1', value: 3 },
-            { source: 'b1', target: 'a1', value: 1 },
-            { source: 'b1', target: 'c', value: 2 }
-          ],
-          itemStyle: {
-            color: '#4b94d1',
-            borderColor: '#2a5d8a'
-          },
-          lineStyle: {
-            color: 'source',
-            curveness: 0.5
-          }
-        }
-      }
-    }
-  },
-  mounted() {
-    this.initChart();
-    window.addEventListener('resize', this.handleResize);
-  },
-  methods: {
-    initChart() {
-      this.chart = echarts.init(this.$refs.chartContainer);
-      this.chart.setOption(this.chartOption);
-      
-      // 添加点击事件监听
-      this.chart.on('click', params => {
-        console.log('节点点击:', params.name);
-      });
-    },
-    handleResize() {
-      this.chart && this.chart.resize();
-    }
-  },
-  beforeDestroy() {
-    window.removeEventListener('resize', this.handleResize);
-    this.chart && this.chart.dispose();
-  }
-};
-</script>

+ 3 - 3
src/views/kanBan/components/dataBoardNew/AIApp/index.vue

@@ -5,19 +5,19 @@
     <div class="AIAppOne">
       <div style="display: flex;flex-direction: column;gap: 10px;max-width: 360px;min-width: 314px;">
         <div class="AIAppOneCon" style="flex: 1;">
-          热门应用Top5
+          {{ lang.TopApps }}
           <div class="hotCon">
             <div v-for="(i,index) in alldata[0]" :key="index" class="hotConA">
               <div class="hotConAA">
                 <span>{{ index + 1 }}</span>
                 <div class="hotConAATxt">{{ i.name }}</div>
               </div>
-              <div style="color: #3072D8;width: 80px;text-align: right">{{ i.form_count }}</div>
+              <div style="color: #3072D8;width: 80px;text-align: right">{{ i.form_count }}{{ lang.Nexttime }}</div>
             </div>
           </div>
         </div>
         <div class="AIAppOneCon" style="flex: 1;">
-          创作者Top5
+          {{ lang.TopCreators }}
           <div class="hotCon">
             <div v-for="(i,index) in alldata[1]" :key="index" class="hotConA">
               <div class="hotConAA">

+ 12 - 12
src/views/kanBan/components/dataBoardNew/baseData/chartList/levChart.vue

@@ -1,11 +1,11 @@
 <template>
   <div  style="display: flex;flex-direction: column;">
     <div class="top">
-      <div>活跃用户分层</div>
+      <div>{{ lang.Activeuserseg }}</div>
       <div class="timeL">
-        <div @click="cut(0)" :class="cutNum == 0 ? 'hov' : ''"></div>
-        <div @click="cut(1)" :class="cutNum == 1 ? 'hov' : ''"></div>
-        <div @click="cut(2)" :class="cutNum == 2 ? 'hov' : ''"></div>
+        <div @click="cut(0)" :class="cutNum == 0 ? 'hov' : ''">{{ lang.day }}</div>
+        <div @click="cut(1)" :class="cutNum == 1 ? 'hov' : ''">{{ lang.week }}</div>
+        <div @click="cut(2)" :class="cutNum == 2 ? 'hov' : ''">{{ lang.moon }}</div>
       </div>
     </div>
     <div ref="chartContainer" style="width: 100%; flex: 1;"></div>
@@ -84,9 +84,9 @@ export default {
       const total = this.chartData[0].high + this.chartData[0].mid + this.chartData[0].low;
 
       const data = [
-        { value: this.chartData[0].high, name: '高频' },
-        { value: this.chartData[0].mid, name: '中频' },
-        { value: this.chartData[0].low, name: '低频' },
+        { value: this.chartData[0].high, name: this.lang.highfrequency },
+        { value: this.chartData[0].mid, name: this.lang.interfrequency },
+        { value: this.chartData[0].low, name: this.lang.lowfrequency },
       ];
 
       const option = {
@@ -100,16 +100,16 @@ export default {
           top:'10%',
           formatter: (name) => {
             const dataInfo = {
-              '高频': `高频 ${((this.chartData[0].high / total) * 100).toFixed(2)}% (${this.chartData[0].high}人)`,
-              '中频': `中频 ${((this.chartData[0].mid / total) * 100).toFixed(2)}% (${this.chartData[0].mid}人)`,
-              '低频': `低频 ${((this.chartData[0].low / total) * 100).toFixed(2)}% (${this.chartData[0].low}人)`,
+              [this.lang.highfrequency]: `${this.lang.highfrequency} ${((this.chartData[0].high / total) * 100).toFixed(2)}% (${this.chartData[0].high}${this.langl.person})`,
+              [this.lang.interfrequency]: `${this.lang.interfrequency} ${((this.chartData[0].mid / total) * 100).toFixed(2)}% (${this.chartData[0].mid}${this.langl.person})`,
+              [this.lang.lowfrequency]: `${this.lang.lowfrequency} ${((this.chartData[0].low / total) * 100).toFixed(2)}% (${this.chartData[0].low}${this.langl.person})`,
             };
             return dataInfo[name] || '';
           }
         },
         series: [
           {
-            name: '用户数量',
+            name: this.lang.numberusers,
             type: 'pie',
             radius: ['30%', '60%'], // 创建环形图
             data: data,
@@ -131,7 +131,7 @@ export default {
           left: 'center',
           top: 'middle',
           style: {
-            text: `总计\n ${total}人`,
+            text: this.lang.Totalpeople.replace(/\*/g, total),
             fill: '#000',
             font: '20px Arial',
             textAlign: 'center',

+ 7 - 7
src/views/kanBan/components/dataBoardNew/baseData/chartList/teahoop.vue

@@ -1,11 +1,11 @@
 <template>
   <div style="display: flex;flex-direction: column;">
     <div class="top">
-      <div>活跃度增长环比</div>
+      <div>{{ lang.Activitygrowth }}</div>
       <div class="timeL">
-        <div @click="cut(0)" :class="cutNum == 0 ? 'hov' : ''"></div>
-        <div @click="cut(1)" :class="cutNum == 1 ? 'hov' : ''"></div>
-        <div @click="cut(2)" :class="cutNum == 2 ? 'hov' : ''"></div>
+        <div @click="cut(0)" :class="cutNum == 0 ? 'hov' : ''">{{ lang.day }}</div>
+        <div @click="cut(1)" :class="cutNum == 1 ? 'hov' : ''">{{ lang.week }}</div>
+        <div @click="cut(2)" :class="cutNum == 2 ? 'hov' : ''">{{ lang.moon }}</div>
       </div>
     </div>
     <div ref="chartContainer" style="width: 100%; flex: 1;"></div>
@@ -89,7 +89,7 @@ export default {
         tooltip: {
           trigger: 'axis',
           formatter: params => {
-            return `日期: ${params[0].name}${this.cutNum == 0 ? '日' : this.cutNum == 1 ? '周' : '月'}<br/>环比增长率: ${Math.round(params[0].value)}%`;
+            return `${this.lang.date}: ${params[0].name}${this.cutNum == 0 ? this.lang.day : this.cutNum == 1 ? this.lang.week : this.lang.moon}<br/>${this.lang.growthrate}: ${Math.round(params[0].value)}%`;
           }
         },
         xAxis: {
@@ -97,7 +97,7 @@ export default {
           data: xData,
           axisLabel: {
             color: '#666',
-            formatter: value => `${value}${this.cutNum == 0 ? '日' : this.cutNum == 1 ? '周' : '月'}`
+            formatter: value => `${value}${this.cutNum == 0 ? this.lang.day : this.cutNum == 1 ? this.lang.week : this.lang.moon}`
           },
           axisLine: {
             lineStyle: { color: '#6FC6F3', width: 2 }
@@ -115,7 +115,7 @@ export default {
           splitLine: { show: true }
         },
         series: [{
-          name: '环比增长率',
+          name: this.lang.growthrate,
           type: 'bar', // 使用柱状图
           data: growthRates,
           itemStyle: {

+ 7 - 7
src/views/kanBan/components/dataBoardNew/baseData/chartList/tealiveness.vue

@@ -2,11 +2,11 @@
 <template>
   <div style="display: flex;flex-direction: column;">
     <div class="top">
-        <div>教师活跃度</div>
+        <div>{{ lang.Teaactivity }}</div>
         <div class="timeL">
-            <div @click="cut(0)" :class="cutNum ==0 ? 'hov' :''"></div>
-            <div @click="cut(1)" :class="cutNum ==1 ? 'hov' :''"></div>
-            <div @click="cut(2)" :class="cutNum ==2 ? 'hov' :''"></div>
+            <div @click="cut(0)" :class="cutNum ==0 ? 'hov' :''">{{ lang.day }}</div>
+            <div @click="cut(1)" :class="cutNum ==1 ? 'hov' :''">{{ lang.week }}</div>
+            <div @click="cut(2)" :class="cutNum ==2 ? 'hov' :''">{{ lang.moon }}</div>
         </div>
     </div>
     <div ref="chartContainer" style="width: 100%; flex: 1;"></div>
@@ -90,7 +90,7 @@ props:['alldata'],
         tooltip: {
           trigger: 'axis',
           formatter: params => {
-            return `日期: ${params[0].name}日<br/>数值: ${params[0].value}人`;
+            return `${this.lang.date}: ${params[0].name}${this.lang.day}<br/>${this.lang.numericalvalue}: ${params[0].value}${this.lang.person}`;
           }
         },
         xAxis: {
@@ -98,7 +98,7 @@ props:['alldata'],
           data: xData,
           axisLabel: {
             color: '#666',
-            formatter: value => `${value}${this.cutNum == 0 ? '日' : this.cutNum == 1 ? '周' :'月'}`
+            formatter: value => `${value}${this.cutNum == 0 ? this.lang.day : this.cutNum == 1 ? this.lang.week :this.lang.moon}`
           },
           axisLine: {
             lineStyle: { color: '#6FC6F3', width: 2 }
@@ -115,7 +115,7 @@ props:['alldata'],
           splitLine: { show: true }
         },
         series: [{
-          name: '数据量',
+          name: this.lang.datavolume,
           type: 'line',
           data: yData,
           itemStyle: { 

+ 8 - 8
src/views/kanBan/components/dataBoardNew/baseData/chartList/useTimer.vue

@@ -1,15 +1,15 @@
 <template>
   <div  style="display: flex;flex-direction: column;">
     <div class="top">
-        <div>使用时长</div>
+        <div>{{ lang.Usageduration }}</div>
         <div class="timeL">
-            <div @click="cut(0)" :class="cutNum ==0 ? 'hov' :''"></div>
-            <div @click="cut(1)" :class="cutNum ==1 ? 'hov' :''"></div>
-            <div @click="cut(2)" :class="cutNum ==2 ? 'hov' :''"></div>
+            <div @click="cut(0)" :class="cutNum ==0 ? 'hov' :''">{{ lang.day }}</div>
+            <div @click="cut(1)" :class="cutNum ==1 ? 'hov' :''">{{ lang.week }}</div>
+            <div @click="cut(2)" :class="cutNum ==2 ? 'hov' :''">{{ lang.moon }}</div>
         </div>
     </div>
     <div ref="chartContainer" v-if="chartData.length" style="width: 100%; flex: 1;"></div>
-    <div style="width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;" v-else>暂无数据</div>
+    <div style="width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;" v-else>{{ lang.Nodata }}</div>
   </div>
 </template>
 
@@ -192,7 +192,7 @@ export default {
             type: 'shadow'  // 阴影样式
           },
           formatter: function(params) {  // 自定义提示内容
-            return `${params[0].name}<br/>数值: ${params[0].value}分钟`;
+            return `${params[0].name}<br/>${this.lang.numericalvalue}: ${params[0].value}${this.lang.minute}`;
           }
         },
 
@@ -200,12 +200,12 @@ export default {
           data: this.chartData.map(e => e.lab),
           axisLabel: {
             color: '#666',
-            formatter: value => `${value}${this.cutNum == 0 ? '日' : this.cutNum == 1 ? '周' :'月'}`
+            formatter: value => `${value}${this.cutNum == 0 ? this.lang.day : this.cutNum == 1 ? this.lang.week :this.lang.moon}`
           },
         },
         yAxis: {
            axisLabel: {
-            formatter: value => `${value}分钟`,  // 添加“分钟”单位
+            formatter: value => `${value}${this.lang.minute}`,  // 添加“分钟”单位
             color: '#666'
           }
         },

+ 4 - 4
src/views/kanBan/components/dataBoardNew/baseData/index.vue

@@ -65,10 +65,10 @@ export default {
                 .post(API_CONFIG.baseUrl, params)
                 .then((res) => {
                     let top = [
-                        { label: '教师总量', value: 0 },
-                        { label: '学生总量', value: 0 },
-                        { label: '月登录总数', value: 0 },
-                        { label: '月登录环比', value: 0 },
+                        { label: this.lang.Totaltea, value: 0 },
+                        { label: this.lang.Totalstudents, value: 0 },
+                        { label: this.lang.Monthlylogintotal, value: 0 },
+                        { label: this.lang.Monthlybasis, value: 0 },
                     ]
                     top[0].value = res.data[0][0].num
                     top[1].value = res.data[1][0].num 

+ 6 - 7
src/views/kanBan/components/dataBoardNew/index.vue

@@ -3,7 +3,7 @@
     <div v-if="gotype" class="pgb">
         <div @click="backO" class="pgbL">
             <img src="../../../../assets/kanban/backPage.svg" alt="">
-            <div>智能教务</div>
+            <div>{{ lang.Intelledu }}</div>
         </div>
     </div>
     <div class="barList">
@@ -54,10 +54,10 @@ export default {
       useridL: this.$route.query.userid,
       opl:0,
       barList: [
-          { name: '基础数据', ind: 1 },
-          { name: 'AI应用', ind: 2 },
-          { name: '常规教学', ind: 3 },
-          { name: '教师管理', ind: 4 },
+          { name: this.lang.BasicData, ind: 1 },
+          { name: this.lang.AIapplications, ind: 2 },
+          { name: this.lang.Regularteaching, ind: 3 },
+          { name: this.lang.teamanagement, ind: 4 },
       ] ,
       pageEnd: 0
     };
@@ -67,8 +67,7 @@ export default {
         this.pageEnd = val
     },
     backO(){
-      let betaL = this.$region
-      if (betaL == 'beta') {
+      if (this.$region == 'beta') {
         window.location.href = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/#/aiOffice?userid=${this.userid}&oid=${this.oid}&org=${this.org}&role=${this.role}&tType=${this.tType}`
       }else{
         window.location.href = `https://pbl.cocorobo.cn/pbl-teacher-table/dist/#/aiOffice?userid=${this.userid}&oid=${this.oid}&org=${this.org}&role=${this.role}&tType=${this.tType}`

+ 1 - 1
src/views/kanBan/components/dataBoardNew/teaMange/chartList/barChart.vue

@@ -44,7 +44,7 @@ export default {
             type: 'shadow'  // 阴影样式
           },
           formatter: function(params) {  // 自定义提示内容
-            return `${params[0].name}<br/>数值: ${params[0].value}人`;
+            return `${params[0].name}<br/>${this.lang.numericalvalue}: ${params[0].value}${this.lang.person}`;
           }
         },
 

+ 4 - 4
src/views/kanBan/components/dataBoardNew/teaMange/chartList/pie2.vue

@@ -48,7 +48,7 @@ export default {
         },
         series: [
           {
-            name: "进度",
+            name: this.lang.progress,
             type: "pie",
             radius: ["50%", "70%"], // 内外半径
             avoidLabelOverlap: false,
@@ -59,8 +59,8 @@ export default {
 
             startAngle: 90,
             data: [
-              { value: this.progress, name: "完成" },
-              { value: 100 - this.progress, name: "未完成" }
+              { value: this.progress, name: this.lang.complete },
+              { value: 100 - this.progress, name: this.lang.Unfinished }
             ],
             color: ["#4caf50", "#e0e0e0"], // 颜色设置
             itemStyle: {
@@ -89,7 +89,7 @@ export default {
             left: "center",
             top: '52%', // 向下偏移,避免重叠
             style: {
-              text: "流程完成度",
+              text: this.lang.Processdegree,
               fill: "#6F6869", // 设置另一部分的颜色
               font: "20px Arial", // 设置另一部分的字体大小
               textAlign: "center"

+ 3 - 3
src/views/kanBan/components/dataBoardNew/teaMange/chartList/solid.vue

@@ -12,9 +12,9 @@ export default {
     return {
       chart: null,
       chartData: [
-        { value: 0, name: "表单发布" },
-        { value: 0, name: "表单完成" },
-        { value: 0, name: "智能问答" }
+        { value: 0, name: this.lang.Formpublishing },
+        { value: 0, name: this.lang.Formcompleted },
+        { value: 0, name: this.lang.IntelligentQA }
       ]
     };
   },

+ 5 - 5
src/views/kanBan/components/dataBoardNew/teaMange/index.vue

@@ -2,14 +2,14 @@
     <div class="baseDataBox" v-loading="isLoadingData">
         <barList :dataExponentList="dataExponentList"></barList>
         <div class="DataDiv">
-            表单流程转化
+            {{ lang.Intelinquiry }}
             <div class="imgArea" style="display: flex;height: 100%;">
                 <solid :alldata="dataJ" :alltest="dataExponentList"/>
                 <pie2 :alldata="dataJ" :alltest="dataExponentList[0]"/>
             </div>
         </div>
         <div class="DataDiv">
-            热门表单人数汇总
+            {{ lang.Summarypopular }}
             <div class="imgArea" style="display: flex;height: 100%;">
                 <barChart :alldata="chartsData"/>
             </div>
@@ -120,9 +120,9 @@ export default {
                     }
                     this.dataJ = dataJ
                     let top = [
-                        { label: '表单总量', value: 0 },
-                        { label: '表单回收率', value: 0 },
-                        { label: '智能回答次数', value: 0 }
+                        { label: this.lang.Totalforms, value: 0 },
+                        { label: this.lang.Formrate, value: 0 },
+                        { label: this.lang.Intelfrequency, value: 0 }
                     ]
 
                     top[0].value = res.data[0][0].num

+ 4 - 4
src/views/kanBan/components/dataBoardNew/teaing/chartList/BubbleChart.vue

@@ -1,7 +1,7 @@
 
 <template>
   <div style="display: flex;flex-direction: column;height: 100%;">
-    课堂分布
+    {{ this.lang.Cladistribution }}
     <div ref="chart" style="width: 100%; flex: 1;height: 100%;"></div>
   </div>
 </template>
@@ -79,7 +79,7 @@ export default {
       const option = {
         tooltip: {
           formatter: params => {
-            return `${params.data[3]}<br/>年级: ${params.data[4]}<br/>课程数量: ${params.data[2]}`;
+            return `${params.data[3]}<br/>${this.lang.grade}: ${params.data[4]}<br/>${this.lang.Numbercourses}: ${params.data[2]}`;
           }
         },
         grid: {
@@ -92,13 +92,13 @@ export default {
         },
         xAxis: {
           type: 'category',
-          name: '年级',
+          name: this.lang.grade,
           data: [...new Set(this.grades.map(item => item.name))],
           axisLabel: { interval: 0, rotate: 30 }
         },
         yAxis: {
           type: 'category',
-          name: '学科',
+          name: this.lang.discipline,
           data: [...new Set(this.subjects.map(item => item.name))]
         },
         series: [{

+ 4 - 4
src/views/kanBan/components/dataBoardNew/teaing/chartList/aidedDesign.vue

@@ -12,8 +12,8 @@ export default {
     return {
       chart: null,
       innerData: [
-        { value: 0, name: 'AI模式' },
-        { value: 0, name: '普通模式' }
+        { value: 0, name: this.lang.AImode },
+        { value: 0, name: this.lang.NormalMode }
       ],
       outerData: []
     };
@@ -89,7 +89,7 @@ export default {
         },
         series: [
           {
-            name: '模式分类',
+            name: this.lang.patterncla,
             type: 'pie',
             center: ['50%', '40%'], // 调整饼图的中心位置
             radius: ['0%', '30%'],
@@ -105,7 +105,7 @@ export default {
             }
           },
           {
-            name: '学科分类',
+            name: this.lang.SubjectCla,
             type: 'pie',
             center: ['50%', '40%'], // 调整饼图的中心位置
             radius: ['40%', '65%'],

+ 5 - 5
src/views/kanBan/components/dataBoardNew/teaing/chartList/appUseAss.vue

@@ -2,7 +2,7 @@
   <div style="height: 100%;width: 100%;">
     <div v-if="chartData.length" ref="chartContainer" style="width: 100%; height: 100%;"></div>
     <div v-else style="display: flex;justify-content: center;
-    align-items: center;height: 100%;width: 100%;">暂无数据</div>
+    align-items: center;height: 100%;width: 100%;">{{ lang.Nodata }}</div>
   </div>
 </template>
 
@@ -114,8 +114,8 @@ export default {
           trigger: "item",
           formatter: params => {
             return `${params.seriesName}<br/>
-                    单节课AI嵌入数量: ${params.value[0]}<br/>
-                    学生交互量: ${params.value[1]}`;
+                    ${this.lang.singleclass}: ${params.value[0]}<br/>
+                    ${this.lang.Studentvolume}: ${params.value[1]}`;
           }
         },
         legend: {
@@ -130,7 +130,7 @@ export default {
           left: 50
         },
         xAxis: {
-          name: "单节课程AI迁入数量",
+          name: this.lang.singleclass,
           type: "value",
           scale: true,
           nameLocation: "middle", // 将名称放在轴的中间
@@ -141,7 +141,7 @@ export default {
           }
         },
         yAxis: {
-          name: "学生交互量",
+          name: this.lang.Studentvolume,
           type: "value",
           scale: true,
           nameLocation: "middle", // 将名称放在轴的中间

+ 10 - 10
src/views/kanBan/components/dataBoardNew/teaing/index.vue

@@ -7,26 +7,26 @@
       </div>
       <div style="display: flex;flex-direction: column;gap: 10px;padding: 0;">
           <div class="AIAppOneCon" style="flex: 1;">
-            学生参与Top5
+            {{ lang.Studenttop }}
             <div class="hotCon">
               <div v-for="(i,index) in alldata[4]" :key="index" class="hotConA">
                 <div class="hotConAA">
                   <span>{{ index + 1 }}</span>
                   <div class="hotConAATxt">{{ i.title }}</div>
                 </div>
-                <div style="color: #3072D8;width: 80px;text-align: right">{{ i.num }}</div>
+                <div style="color: #3072D8;width: 80px;text-align: right">{{ i.num }}{{ lang.Nexttime }}</div>
               </div>
             </div>
           </div>
           <div class="AIAppOneCon" style="flex: 1;">
-            课程复用Top5
+            {{ lang.TopReuse }}
             <div class="hotCon">
               <div v-for="(i,index) in alldata[5]" :key="index" class="hotConA">
                 <div class="hotConAA">
                   <span>{{ index + 1 }}</span>
                   <div class="hotConAATxt">{{ i.title }}</div>
                 </div>
-                <div style="color: #3072D8;width: 80px;text-align: right">{{ i.opennum }}</div>
+                <div style="color: #3072D8;width: 80px;text-align: right">{{ i.opennum }}{{ lang.Nexttime }}</div>
               </div>
             </div>
           </div>
@@ -36,11 +36,11 @@
 
     <div class="AIAppTwo">
       <div class="AIAppOneCon">
-        AI辅助设计分析
+        {{ lang.designanalysis }}
         <aidedDesign :alldata="alldata[0]" :subject="alldata[2]"></aidedDesign>
       </div>
       <div class="AIAppOneCon">
-        AI应用使用分析
+        {{ lang.AIusageanalysis }}
         <appUseAss :alldata="alldata[0]" :subject="alldata[2]"></appUseAss>
       </div>
     </div>
@@ -103,10 +103,10 @@ export default {
         .post(API_CONFIG.baseUrl, params)
         .then((res) => {
             let top = [
-              { label: '课程总量', value: 0 },
-              { label: '本月新增课程', value: 0 },
-              { label: '新增课程环比', value: 0 },
-              { label: 'AI应用嵌入数量', value: 0 },
+              { label: this.lang.Totalcourses, value: 0 },
+              { label: this.lang.Newcouadded, value: 0 },
+              { label: this.lang.Newlyaddedbasis, value: 0 },
+              { label: this.lang.AIembeddings, value: 0 },
             ]
 
             top[0].value = res.data[0][0].num

+ 8 - 8
src/views/kanBan/index.vue

@@ -32,13 +32,13 @@
                 <div :style="{width: '500px',display: 'flex',justifyContent : userinfo.role == 1 && userinfo.rrole == 1 && userinfo.type ==1? 'space-between' : 'center'}">
                     <div class="btnDiv"  :class="{ active: isActive === 1 }" >
                         <div v-if="userinfo.role == 1 && userinfo.rrole == 1 && userinfo.type ==1" @click="setActive(1)">
-                            数据看板
+                            {{ lang.databoard }}
                         </div>
                     </div>
-                    <div class="btnDiv" :class="{ active: isActive === 2 }" @click="setActive(2)">集团特色</div>
+                    <div class="btnDiv" :class="{ active: isActive === 2 }" @click="setActive(2)">{{ this.lang.GroupFeatures }}</div>
                     <div class="btnDiv" :class="{ active: isActive === 3 }" >
                         <div v-if="userinfo.role == 1 && userinfo.rrole == 1 && userinfo.type ==1"  @click="setActive(3)">
-                            校区入口
+                            {{ lang.Campusentrance }}
                         </div>
                     </div>
                 </div>
@@ -149,15 +149,15 @@ export default {
         },
         // 退出登录
         async handleLogout() {
-            this.$confirm('确定退出吗', '提示', {
-                confirmButtonText: '确定',
-                cancelButtonText: '取消',
+            this.$confirm(this.lang.sureexit, this.lang.tip, {
+                confirmButtonText: this.lang.confirm,
+                cancelButtonText: this.lang.Cancel,
                 type: 'warning'
             }).then(async () => {
                 loginOut()
                 .then(async () => {
                     this.$message({
-                    message: '退出成功',
+                    message: this.lang.Exitsu,
                     type: 'success'
                     });
                     await this.logout();
@@ -194,7 +194,7 @@ export default {
                 })
                 .catch((err) => {
                     console.log(err);
-                    this.$message.error("获取校区栏失败");
+                    this.$message.error(this.lang.Failedobtain);
                 });
         },
         // 导航栏切换

+ 1 - 1
src/views/login/loginPage.vue

@@ -995,7 +995,7 @@ export default {
 			// let courseid = this.courseId;
 			try {
 				await this.$confirm(
-					this.lang.GroupName1.replace(/\*/g, this.stuInfoCode.username),
+					this.lang.loginCode.replace(/\*/g, this.stuInfoCode.username),
 					this.lang.tip,
 					{
 						confirmButtonText: this.lang.confirm,