Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

sys5923812@126.com před 1 měsícem
rodič
revize
8b9f7dac26
100 změnil soubory, kde provedl 3466 přidání a 881 odebrání
  1. 1 1
      package.json
  2. 46 0
      src/api/xjc-integratedmachine/planTimeManegement/index.js
  3. 75 0
      src/api/xjc-integratedmachine/planTimeManegement/rainbow.js
  4. binární
      src/assets/images/decision/common/background.png
  5. binární
      src/assets/images/decision/common/background_no_white.png
  6. binární
      src/assets/images/decision/common/index-game-left.png
  7. binární
      src/assets/images/decision/common/index-game-right.png
  8. binární
      src/assets/images/decision/decision_balance_sheet/explanation.png
  9. binární
      src/assets/images/decision/decision_balance_sheet/game-title.png
  10. binární
      src/assets/images/decision/index/card1.png
  11. binární
      src/assets/images/decision/index/card10.png
  12. binární
      src/assets/images/decision/index/card2.png
  13. binární
      src/assets/images/decision/index/card3.png
  14. binární
      src/assets/images/decision/index/card4.png
  15. binární
      src/assets/images/decision/index/card5.png
  16. binární
      src/assets/images/decision/index/card6.png
  17. binární
      src/assets/images/decision/index/card7.png
  18. binární
      src/assets/images/decision/index/card8.png
  19. binární
      src/assets/images/decision/index/card9.png
  20. binární
      src/assets/images/decision/process_diagram_subject.png
  21. binární
      src/assets/images/timeManagement/1-1.png
  22. binární
      src/assets/images/timeManagement/1-2.png
  23. binární
      src/assets/images/timeManagement/2-1.png
  24. binární
      src/assets/images/timeManagement/2-2.png
  25. binární
      src/assets/images/timeManagement/2-3.png
  26. binární
      src/assets/images/timeManagement/3-1.png
  27. binární
      src/assets/images/timeManagement/3-2.png
  28. binární
      src/assets/images/timeManagement/bg.png
  29. binární
      src/assets/images/timeManagement/test-prev.png
  30. binární
      src/assets/images/timeManagement/test1-1.png
  31. binární
      src/assets/images/timeManagement/test2-1.png
  32. binární
      src/assets/images/timeManagement/testSubmit.png
  33. 2 1
      src/router/index.js
  34. 80 59
      src/router/router_decision.js
  35. 42 0
      src/router/router_personcenter.js
  36. 254 168
      src/router/router_plan.js
  37. 109 7
      src/views/xjc-integratedmachine/cognize/index.vue
  38. 61 49
      src/views/xjc-integratedmachine/components/drag_component.vue
  39. 228 183
      src/views/xjc-integratedmachine/components/head_component.vue
  40. 0 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_assessment.vue
  41. 0 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_pdfreport.vue
  42. 0 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_webreport.vue
  43. 0 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_explanation.vue
  44. 13 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_index.vue
  45. 70 0
      src/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet.vue
  46. 156 0
      src/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_explanation.vue
  47. 89 0
      src/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_index.vue
  48. 0 0
      src/views/xjc-integratedmachine/decision/choose_major_by_subject/choose_major_by_subject_index.vue
  49. 0 21
      src/views/xjc-integratedmachine/decision/decision_making_style.vue
  50. 14 0
      src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style.vue
  51. 14 0
      src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_explanation.vue
  52. 11 0
      src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_index.vue
  53. 14 0
      src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_webreport.vue
  54. 0 12
      src/views/xjc-integratedmachine/decision/decision_making_style_test.vue
  55. 0 30
      src/views/xjc-integratedmachine/decision/discipline_and_future.vue
  56. 0 11
      src/views/xjc-integratedmachine/decision/edecision_style_knowledge.vue
  57. 0 11
      src/views/xjc-integratedmachine/decision/edecision_style_webreport.vue
  58. 121 17
      src/views/xjc-integratedmachine/decision/index.vue
  59. 230 0
      src/views/xjc-integratedmachine/decision/major_and_future/major_and_future_index.vue
  60. 0 0
      src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment.vue
  61. 11 0
      src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_explanation.vue
  62. 13 0
      src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_index.vue
  63. 0 0
      src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_webreport.vue
  64. 73 0
      src/views/xjc-integratedmachine/decision/process_diagram/process_diagram_selecting_subjects.vue
  65. 0 14
      src/views/xjc-integratedmachine/decision/process_diagram_selecting_subjects.vue
  66. 0 11
      src/views/xjc-integratedmachine/decision/proselection_assessment_knowledge.vue
  67. 0 0
      src/views/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_detail.vue
  68. 0 0
      src/views/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_index.vue
  69. 0 0
      src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis.vue
  70. 11 0
      src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_explanation.vue
  71. 11 0
      src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_index.vue
  72. 11 0
      src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_result.vue
  73. 1 0
      src/views/xjc-integratedmachine/environment/ai_interview/ai_career_interview_chat.vue
  74. 483 277
      src/views/xjc-integratedmachine/environment/university_details_video.vue
  75. 13 0
      src/views/xjc-integratedmachine/personcenter/decision/advantageous_discipline_list.vue
  76. 21 0
      src/views/xjc-integratedmachine/personcenter/decision/decision_index.vue
  77. 14 0
      src/views/xjc-integratedmachine/personcenter/decision/decision_making_style_list.vue
  78. 18 0
      src/views/xjc-integratedmachine/personcenter/environment/environment_index.vue
  79. 2 2
      src/views/xjc-platform/personcenter/career_decision.vue
  80. 2 2
      src/views/xjc-platform/personcenter/environment_exploration.vue
  81. 0 0
      src/views/xjc-integratedmachine/personcenter/environment/environmental_collection_university.vue
  82. 28 0
      src/views/xjc-integratedmachine/personcenter/index.vue
  83. 20 0
      src/views/xjc-integratedmachine/personcenter/info/info_index.vue
  84. 21 0
      src/views/xjc-integratedmachine/personcenter/plan/plan_index.vue
  85. 13 0
      src/views/xjc-integratedmachine/personcenter/recognize/character_detail.vue
  86. 13 0
      src/views/xjc-integratedmachine/personcenter/recognize/character_list.vue
  87. 1 1
      src/views/xjc-integratedmachine/decision/edecision_style_test.vue
  88. 1 1
      src/views/xjc-integratedmachine/decision/decision_balance_sheet.vue
  89. 19 0
      src/views/xjc-integratedmachine/personcenter/recognize/recognize_index.vue
  90. 13 0
      src/views/xjc-integratedmachine/personcenter/wakeup/career_maturity_detail.vue
  91. 13 0
      src/views/xjc-integratedmachine/personcenter/wakeup/career_maturity_list.vue
  92. 1 1
      src/views/xjc-integratedmachine/decision/intelligent_selection_subjects.vue
  93. 0 0
      src/views/xjc-integratedmachine/personcenter/wakeup/rainbow_chart_list.vue
  94. 17 0
      src/views/xjc-integratedmachine/personcenter/wakeup/wakeup_index.vue
  95. 981 2
      src/views/xjc-integratedmachine/plan/aim/aim_management_index.vue
  96. 0 0
      src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment.vue
  97. 0 0
      src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment_webreport.vue
  98. 0 0
      src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_explanation.vue
  99. 11 0
      src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_index.vue
  100. 0 0
      src/views/xjc-integratedmachine/plan/index.vue

+ 1 - 1
package.json

@@ -47,7 +47,7 @@
   "devDependencies": {
     "@vitejs/plugin-vue": "5.2.4",
     "less": "^4.4.0",
-    "sass-embedded": "1.89.1",
+    "sass": "^1.91.0",
     "unplugin-auto-import": "0.18.6",
     "unplugin-vue-setup-extend-plus": "1.0.1",
     "vite": "6.3.5",

+ 46 - 0
src/api/xjc-integratedmachine/planTimeManegement/index.js

@@ -0,0 +1,46 @@
+import request from "@/utils/request";
+
+export function platformytjappraisalreport1061(query) {
+  return request({
+    url: "/platform/ytj/appraisal/report/1061",
+    method: "post",
+    data: query,
+  });
+}
+export function platformytjappraisalcommon(query) {
+  return request({
+    url: "/platform/ytj/appraisal/common",
+    method: "post",
+    data: query,
+  });
+}
+
+export function platformytjappraisalinsertAppraisalAnswer(query) {
+  return request({
+    url: "/platform/ytj/appraisal/insertAppraisalAnswer",
+    method: "post",
+    data: query,
+  });
+}
+//成熟度测评题目
+export function maturityAppraisalList(query) {
+  return request({
+    url: "/platform/ytj/appraisal/common",
+    method: "post",
+    data: query,
+  });
+}
+export function insertAppraisalAnswer(query) {
+  return request({
+    url: "/platform/ytj/appraisal/insertAppraisalAnswer",
+    method: "post",
+    data: query,
+  });
+}
+export function maturityReport(query) {
+  return request({
+    url: "/platform/ytj/appraisal/report/3001",
+    method: "post",
+    data: query,
+  });
+}

+ 75 - 0
src/api/xjc-integratedmachine/planTimeManegement/rainbow.js

@@ -0,0 +1,75 @@
+import request from '@/utils/request'
+
+// 查询彩虹图数据列表
+export function listRainbow(query) {
+  return request({
+    url: '/integratedmachine/wakeup/rainbow/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询彩虹图数据详细
+export function getRainbow(id) {
+  return request({
+    url: '/integratedmachine/wakeup/rainbow/' + id,
+    method: 'get'
+  })
+}
+
+// 新增彩虹图数据
+export function addRainbow(data) {
+  return request({
+    url: '/integratedmachine/wakeup/rainbow',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改彩虹图数据
+export function updateRainbow(data) {
+  return request({
+    url: '/integratedmachine/wakeup/rainbow',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除彩虹图数据
+export function delRainbow(id) {
+  return request({
+    url: '/integratedmachine/wakeup/rainbow/' + id,
+    method: 'delete'
+  })
+}
+//
+export function newRainbow(data) {
+  return request({
+    url: '/integratedmachine/wakeup/rainbow/newRainbow',
+    method: 'post',
+    data : data
+  })
+}
+export function saveRainbow(data) {
+  return request({
+    url: '/integratedmachine/wakeup/rainbow/saveRainbow',
+    method: 'post',
+    data : data
+  })
+}
+export function finish(data) {
+  return request({
+    url: '/integratedmachine/wakeup/rainbow/finish',
+    method: 'post',
+    data : data
+  })
+}
+
+export function sendRainbowMail(data) {
+  console.log("dddd",data)
+  return request({
+    url: '/integratedmachine/wakeup/rainbow/sendMail',
+    method: 'post',
+    data : data
+  })
+}

binární
src/assets/images/decision/common/background.png


binární
src/assets/images/decision/common/background_no_white.png


binární
src/assets/images/decision/common/index-game-left.png


binární
src/assets/images/decision/common/index-game-right.png


binární
src/assets/images/decision/decision_balance_sheet/explanation.png


binární
src/assets/images/decision/decision_balance_sheet/game-title.png


binární
src/assets/images/decision/index/card1.png


binární
src/assets/images/decision/index/card10.png


binární
src/assets/images/decision/index/card2.png


binární
src/assets/images/decision/index/card3.png


binární
src/assets/images/decision/index/card4.png


binární
src/assets/images/decision/index/card5.png


binární
src/assets/images/decision/index/card6.png


binární
src/assets/images/decision/index/card7.png


binární
src/assets/images/decision/index/card8.png


binární
src/assets/images/decision/index/card9.png


binární
src/assets/images/decision/process_diagram_subject.png


binární
src/assets/images/timeManagement/1-1.png


binární
src/assets/images/timeManagement/1-2.png


binární
src/assets/images/timeManagement/2-1.png


binární
src/assets/images/timeManagement/2-2.png


binární
src/assets/images/timeManagement/2-3.png


binární
src/assets/images/timeManagement/3-1.png


binární
src/assets/images/timeManagement/3-2.png


binární
src/assets/images/timeManagement/bg.png


binární
src/assets/images/timeManagement/test-prev.png


binární
src/assets/images/timeManagement/test1-1.png


binární
src/assets/images/timeManagement/test2-1.png


binární
src/assets/images/timeManagement/testSubmit.png


+ 2 - 1
src/router/index.js

@@ -7,6 +7,7 @@ import router_decision from '@/router/router_decision.js'
 import router_environment from '@/router/router_environment.js'
 import router_plan from '@/router/router_plan.js'
 import router_common from '@/router/router_common.js'
+import router_personcenter from '@/router/router_personcenter.js'
 
 // 公共路由
 export const constantRoutes = [
@@ -196,7 +197,7 @@ export const dynamicRoutes = [
     }
 ]
 const routerArrs = [...router_wakeup.router, ...router_cognize.router, ...router_decision.router,
-    ...router_environment.router, ...router_plan.router, ...router_common.router, ...constantRoutes]
+    ...router_environment.router, ...router_plan.router, ...router_common.router, ...router_personcenter.router, ...constantRoutes]
 
 /**
  * Note: 路由配置项

+ 80 - 59
src/router/router_decision.js

@@ -4,40 +4,35 @@ const router = [
         path: '/xjc-integratedmachine/decision/index',
         component: () => import('@/views/xjc-integratedmachine/decision/index'),
     },
-    //决策风格知识讲解
-    {
-        path: '/xjc-integratedmachine/decision/edecision_style_knowledge',
-        component: () => import('@/views/xjc-integratedmachine/decision/edecision_style_knowledge.vue'),
-    },
-    //决策风格测试
+    //选科流程图
     {
-        path: '/xjc-integratedmachine/decision/edecision_style_test',
-        component: () => import('@/views/xjc-integratedmachine/decision/edecision_style_test.vue'),
+        path: '/xjc-integratedmachine/decision/process_diagram/process_diagram_selecting_subjects',
+        component: () => import('@/views/xjc-integratedmachine/decision/process_diagram/process_diagram_selecting_subjects.vue'),
     },
-    //决策风格网页报告
+    // 优势学科首页
     {
-        path: '/xjc-integratedmachine/decision/edecision_style_webreport',
-        component: () => import('@/views/xjc-integratedmachine/decision/edecision_style_webreport.vue'),
+        path: '/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_index',
+        component: () => import('@/views/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_index.vue'),
     },
-    //测试员优势学科测评知识讲解
+    //优势学科测评知识讲解
     {
-        path: '/xjc-integratedmachine/decision/advantages_assessment_knowledge',
-        component: () => import('@/views/xjc-integratedmachine/decision/advantages_assessment_knowledge.vue'),
+        path: '/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_explanation',
+        component: () => import('@/views/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_explanation.vue'),
     },
     //优势学科测评
     {
-        path: '/xjc-integratedmachine/decision/advantageous_discipline_assessment',
-        component: () => import('@/views/xjc-integratedmachine/decision/advantageous_discipline_assessment.vue'),
+        path: '/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_assessment',
+        component: () => import('@/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_assessment.vue'),
     },
     //优势学科网页报告
     {
-        path: '/xjc-integratedmachine/decision/advantageous_discipline_webreport',
-        component: () => import('@/views/xjc-integratedmachine/decision/advantageous_discipline_webreport.vue'),
+        path: '/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_webreport',
+        component: () => import('@/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_webreport.vue'),
     },
     //优势学科pdf报告
     {
-        path: '/xjc-integratedmachine/decision/advantageous_discipline_pdfreport',
-        component: () => import('@/views/xjc-integratedmachine/decision/advantageous_discipline_pdfreport.vue'),
+        path: '/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_pdfreport',
+        component: () => import('@/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_pdfreport.vue'),
     },
     //根据高校/专业选科目1
     {
@@ -49,76 +44,102 @@ const router = [
         path: '/xjc-integratedmachine/decision/choose_subjects_2',
         component: () => import('@/views/xjc-integratedmachine/decision/choose_subjects_2.vue'),
     },
-    //智能选科
+
+    // 专业选择测评首页
     {
-        path: '/xjc-integratedmachine/decision/intelligent_selection_subjects',
-        component: () => import('@/views/xjc-integratedmachine/decision/intelligent_selection_subjects.vue'),
+        path: '/xjc-integratedmachine/decision/major_selection_assessment/index',
+        component: () => import('@/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_index.vue'),
     },
-    //业选择测评知识讲解
+    //业选择测评知识讲解
     {
-        path: '/xjc-integratedmachine/decision/proselection_assessment_knowledge',
-        component: () => import('@/views/xjc-integratedmachine/decision/proselection_assessment_knowledge.vue'),
+        path: '/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_explanation',
+        component: () => import('@/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_explanation.vue'),
     },
     //专业选择测评
     {
-        path: '/xjc-integratedmachine/decision/proselection_evaluation',
-        component: () => import('@/views/xjc-integratedmachine/decision/proselection_evaluation.vue'),
+        path: '/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment',
+        component: () => import('@/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment.vue'),
     },
     //专业选择测评网页报告
     {
-        path: '/xjc-integratedmachine/decision/proselection_evaluation_webreport',
-        component: () => import('@/views/xjc-integratedmachine/decision/proselection_evaluation_webreport.vue'),
+        path: '/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_webreport',
+        component: () => import('@/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_webreport.vue'),
     },
-    //根据科目选专业
+    //根据科目选专业首页
     {
-        path: '/xjc-integratedmachine/decision/choosemajor_subject',
-        component: () => import('@/views/xjc-integratedmachine/decision/choosemajor_subject.vue'),
+        path: '/xjc-integratedmachine/decision/choose_major_by_subject/choose_major_by_subject_index',
+        component: () => import('@/views/xjc-integratedmachine/decision/choose_major_by_subject/choose_major_by_subject_index.vue'),
     },
-    //学科专业相关性
+    //学科专业相关性首页
     {
-        path: '/xjc-integratedmachine/decision/disciplinary_professional_relevance',
-        component: () => import('@/views/xjc-integratedmachine/decision/disciplinary_professional_relevance.vue'),
+        path: '/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_index',
+        component: () => import('@/views/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_index.vue'),
     },
     //学科专业相关性(详情)
     {
-        path: '/xjc-integratedmachine/decision/disciplinary_professional_detail',
-        component: () => import('@/views/xjc-integratedmachine/decision/disciplinary_professional_detail.vue'),
+        path: '/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_detail',
+        component: () => import('@/views/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_detail.vue'),
     },
     //学科与未来专业
     {
-        path: '/xjc-integratedmachine/decision/discipline_and_future',
-        component: () => import('@/views/xjc-integratedmachine/decision/discipline_and_future.vue'),
+        path: '/xjc-integratedmachine/decision/major_and_future/major_and_future_index',
+        component: () => import('@/views/xjc-integratedmachine/decision/major_and_future/major_and_future_index.vue'),
+    },
+    //SWOT态势分析首页
+    {
+        path: '/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_index',
+        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_index.vue'),
+    },
+    //SWOT态势分析知识讲解
+    {
+        path: '/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_explanation',
+        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_explanation.vue'),
     },
-
-
     //SWOT态势分析
     {
-        path: '/xjc-integratedmachine/decision/swot_situation_analysis',
-        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis.vue'),
+        path: '/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis',
+        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis.vue'),
+    },
+    //SWOT态势分析结果
+    {
+        path: '/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_result',
+        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_result.vue'),
+    },
+    //决策风格测试首页
+    {
+        path: '/xjc-integratedmachine/decision/decision_making_style/decision_making_style_index',
+        component: () => import('@/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_index.vue'),
     },
     //决策风格知识讲解
     {
-        path: '/xjc-integratedmachine/decision/decision_making_style',
-        component: () => import('@/views/xjc-integratedmachine/decision/decision_making_style.vue'),
+        path: '/xjc-integratedmachine/decision/decision_making_style/decision_making_style_explanation',
+        component: () => import('@/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_explanation.vue'),
     },
-//决策风格测试
+    //决策风格测试
     {
-        path: '/xjc-integratedmachine/decision/decision_making_style_test',
-        component: () => import('@/views/xjc-integratedmachine/decision/decision_making_style_test.vue'),
+        path: '/xjc-integratedmachine/decision/decision_making_style/decision_making_style',
+        component: () => import('@/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style.vue'),
     },
-
-
-    //决策平衡单
+    //决策风格测试网页报告
     {
-        path: '/xjc-integratedmachine/decision/decision_balance_sheet',
-        component: () => import('@/views/xjc-integratedmachine/decision/decision_balance_sheet.vue'),
+        path: '/xjc-integratedmachine/decision/decision_making_style/decision_making_style_webreport',
+        component: () => import('@/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_webreport.vue'),
     },
-    //选科流程图
+    //决策平衡单首页
     {
-        path: '/xjc-integratedmachine/decision/process_diagram_selecting_subjects',
-        component: () => import('@/views/xjc-integratedmachine/decision/process_diagram_selecting_subjects.vue'),
-    }
-
+        path: '/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_index',
+        component: () => import('@/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_index.vue'),
+    },
+    //决策平衡单知识讲解
+    {
+        path: '/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_explanation',
+        component: () => import('@/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_explanation.vue'),
+    },
+    //决策平衡单
+    {
+        path: '/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet',
+        component: () => import('@/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet.vue'),
+    },
 
 ]
 export default {

+ 42 - 0
src/router/router_personcenter.js

@@ -0,0 +1,42 @@
+const router = [
+    //个人中心首页
+    {
+        path: '/xjc-integratedmachine/personcenter/index',
+        component: () => import('@/views/xjc-integratedmachine/personcenter/index.vue'),
+    },
+    //生涯唤醒
+    {
+        path: '/xjc-integratedmachine/personcenter/wakeup/wakeup_index',
+        component: () => import('@/views/xjc-integratedmachine/personcenter/wakeup/wakeup_index.vue'),
+    },
+    //自我认知
+    {
+        path: '/xjc-integratedmachine/personcenter/recognize/recognize_index',
+        component: () => import('@/views/xjc-integratedmachine/personcenter/recognize/recognize_index.vue'),
+    },
+    //环境探索
+    {
+        path: '/xjc-integratedmachine/personcenter/environment/environment_index',
+        component: () => import('@/views/xjc-integratedmachine/personcenter/environment/environment_index.vue'),
+    },
+    //生涯决策
+    {
+        path: '/xjc-integratedmachine/personcenter/decision/decision_index',
+        component: () => import('@/views/xjc-integratedmachine/personcenter/decision/decision_index.vue'),
+    },
+    //规划管理
+    {
+        path: '/xjc-integratedmachine/personcenter/plan/plan_index',
+        component: () => import('@/views/xjc-integratedmachine/personcenter/plan/plan_index.vue'),
+    },
+    //个人信息
+    {
+        path: '/xjc-integratedmachine/personcenter/info/info_index',
+        component: () => import('@/views/xjc-integratedmachine/personcenter/info/info_index.vue'),
+    },
+
+]
+
+export default {
+    router
+}

+ 254 - 168
src/router/router_plan.js

@@ -1,170 +1,256 @@
 const router = [
-    //规划管理首页
-    {
-        path: '/xjc-integratedmachine/plan/index',
-        component: () => import('@/views/xjc-integratedmachine/plan/index'),
-    },
-    //制定生涯规划书1
-    {
-        path: '/xjc-integratedmachine/plan/develop_career_plan1',
-        component: () => import('@/views/xjc-integratedmachine/plan/develop_career_plan1.vue'),
-    },
-    //制定生涯规划书2
-    {
-        path: '/xjc-integratedmachine/plan/develop_career_plan2',
-        component: () => import('@/views/xjc-integratedmachine/plan/develop_career_plan2.vue'),
-    },
-    //制定生涯规划书评估信息
-    {
-        path: '/xjc-integratedmachine/plan/develop_careerplan_information',
-        component: () => import('@/views/xjc-integratedmachine/plan/develop_careerplan_information.vue'),
-    },
-    //目标管理首页
-    {
-        path: '/xjc-integratedmachine/plan/aim/aim_management_index',
-        component: () => import('@/views/xjc-integratedmachine/plan/aim/aim_management_index.vue'),
-    },
-    //目标管理知识讲解
-    {
-        path: '/xjc-integratedmachine/plan/aim/aim_explanation_knowledge',
-        component: () => import('@/views/xjc-integratedmachine/plan/aim/aim_explanation_knowledge.vue'),
-    },
-    //目标管理交互
-    {
-        path: '/xjc-integratedmachine/plan/aim/aim_management_interaction',
-        component: () => import('@/views/xjc-integratedmachine/plan/aim/aim_management_interaction.vue'),
-    },
-    //时间管理菜单页
-    {
-        path: '/xjc-integratedmachine/plan/time/time_management_menu',
-        component: () => import('@/views/xjc-integratedmachine/plan/time/time_management_menu.vue'),
-    },
-    //时间管理4D法首页
-    {
-        path: '/xjc-integratedmachine/plan/time/time_management_4d_index',
-        component: () => import('@/views/xjc-integratedmachine/plan/time/time_management_4d_index.vue'),
-    },
-    //时间管理4D法讲解
-    {
-        path: '/xjc-integratedmachine/plan/time/time_management_4d_explanation',
-        component: () => import('@/views/xjc-integratedmachine/plan/time/time_management_4d_explanation.vue'),
-    },
-    //时间管理测评首页
-    {
-        path: '/xjc-integratedmachine/plan/time/time_management_assessment_index',
-        component: () => import('@/views/xjc-integratedmachine/plan/time/time_management_assessment.vue'),
-    },
-    //时间管理测评知识讲解
-    {
-        path: '/xjc-integratedmachine/plan/time/time_management_assessment_explanation',
-        component: () => import('@/views/xjc-integratedmachine/plan/time/time_management_assessment_explanation.vue'),
-    },
-    //时间管理测评
-    {
-        path: '/xjc-integratedmachine/plan/time/time_management_assessment',
-        component: () => import('@/views/xjc-integratedmachine/plan/time/time_management_assessment.vue'),
-    },
-    //时间管理测评网页报告
-    {
-        path: '/xjc-integratedmachine/plan/time/time_management_assessment_webreport',
-        component: () => import('@/views/xjc-integratedmachine/plan/time/time_management_assessment_webreport.vue'),
-    },
-    //自控力测评首页
-    {
-        path: '/xjc-integratedmachine/plan/self_control/self_control/self_control_index',
-        component: () => import('@/views/xjc-integratedmachine/plan/self_control/self_control_index.vue'),
-    },
-    //自控力测评知识讲解
-    {
-        path: '/xjc-integratedmachine/plan/self_control/self_control_explanation',
-        component: () => import('@/views/xjc-integratedmachine/plan/self_control/self_control_explanation.vue'),
-    },
-    //自控力测评
-    {
-        path: '/xjc-integratedmachine/plan/self_control/self_control_assessment',
-        component: () => import('@/views/xjc-integratedmachine/plan/self_control/self_control_assessment.vue'),
-    },
-    //自控力测评网页报告
-    {
-        path: '/xjc-integratedmachine/plan/self_control/self_control_assessment_webreport',
-        component: () => import('@/views/xjc-integratedmachine/plan/self_control/self_control_assessment_webreport.vue'),
-    },
-    //生涯成熟度复测知识讲解
-    {
-        path: '/xjc-integratedmachine/plan/explanation_career_knowledge',
-        component: () => import('@/views/xjc-integratedmachine/plan/explanation_career_knowledge.vue'),
-    },
-    //生涯成熟度复测测评
-    {
-        path: '/xjc-integratedmachine/plan/career_maturity_retest_evaluation',
-        component: () => import('@/views/xjc-integratedmachine/plan/career_maturity_retest_evaluation.vue'),
-    },
-    //生涯成熟度复测测评网页报告
-    {
-        path: '/xjc-integratedmachine/plan/career_maturity_retest_evaluation_webreport',
-        component: () => import('@/views/xjc-integratedmachine/plan/career_maturity_retest_evaluation_webreport.vue'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    },
-    //
-    {
-        path: '/xjc-integratedmachine/plan/',
-        component: () => import('@/views/xjc-integratedmachine/plan/'),
-    }
-]
+  //时间管理测评答题页
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_assessment_init",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_assessment_init"
+      ),
+  },
+  //时间管理测评首页
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_assessment_index",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_assessment_index"
+      ),
+  },
+  //时间管理4d开始测评
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_4d_evaluation",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_4d_evaluation"
+      ),
+  },
+  //规划管理首页
+  {
+    path: "/xjc-integratedmachine/plan/index",
+    component: () => import("@/views/xjc-integratedmachine/plan/index"),
+  },
+  //制定生涯规划书1
+  {
+    path: "/xjc-integratedmachine/plan/develop_career_plan1",
+    component: () =>
+      import("@/views/xjc-integratedmachine/plan/develop_career_plan1.vue"),
+  },
+  //制定生涯规划书2
+  {
+    path: "/xjc-integratedmachine/plan/develop_career_plan2",
+    component: () =>
+      import("@/views/xjc-integratedmachine/plan/develop_career_plan2.vue"),
+  },
+  //制定生涯规划书评估信息
+  {
+    path: "/xjc-integratedmachine/plan/develop_careerplan_information",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/develop_careerplan_information.vue"
+      ),
+  },
+  //目标管理首页
+  {
+    path: "/xjc-integratedmachine/plan/aim/aim_management_index",
+    component: () =>
+      import("@/views/xjc-integratedmachine/plan/aim/aim_management_index.vue"),
+  },
+  //目标管理知识讲解
+  {
+    path: "/xjc-integratedmachine/plan/aim/aim_explanation_knowledge",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/aim/aim_explanation_knowledge.vue"
+      ),
+  },
+  //目标管理交互
+  {
+    path: "/xjc-integratedmachine/plan/aim/aim_management_interaction",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/aim/aim_management_interaction.vue"
+      ),
+  },
+  //时间管理菜单页
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_menu",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_menu.vue"
+      ),
+  },
+  //时间管理4D法首页
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_4d_index",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_4d_index.vue"
+      ),
+  },
+  //时间管理4D法讲解
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_4d_explanation",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_4d_explanation.vue"
+      ),
+  },
+  //时间管理测评首页
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_assessment_index",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_assessment.vue"
+      ),
+  },
+  //时间管理测评知识讲解
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_assessment_explanation",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_assessment_explanation.vue"
+      ),
+  },
+  //时间管理测评
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_assessment",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_assessment.vue"
+      ),
+  },
+  //时间管理测评网页报告
+  {
+    path: "/xjc-integratedmachine/plan/time/time_management_assessment_webreport",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/time/time_management_assessment_webreport.vue"
+      ),
+  },
+  //自控力测评首页
+  {
+    path: "/xjc-integratedmachine/plan/self_control/self_control/self_control_index",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/self_control/self_control_index.vue"
+      ),
+  },
+  //自控力测评知识讲解
+  {
+    path: "/xjc-integratedmachine/plan/self_control/self_control_explanation",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/self_control/self_control_explanation.vue"
+      ),
+  },
+  //自控力测评
+  {
+    path: "/xjc-integratedmachine/plan/self_control/self_control_assessment",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/self_control/self_control_assessment.vue"
+      ),
+  },
+  //自控力测评网页报告
+  {
+    path: "/xjc-integratedmachine/plan/self_control/self_control_assessment_webreport",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/self_control/self_control_assessment_webreport.vue"
+      ),
+  },
+  //生涯成熟度复测首页
+  {
+    path: "/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_index",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_index.vue"
+      ),
+  },
+  //生涯成熟度复测知识讲解
+  {
+    path: "/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_explanation",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_explanation.vue"
+      ),
+  },
+  //生涯成熟度复测测评
+  {
+    path: "/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment.vue"
+      ),
+  },
+  //生涯成熟度复测测评网页报告
+  {
+    path: "/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment_webreport",
+    component: () =>
+      import(
+        "@/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment_webreport.vue"
+      ),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+  //
+  {
+    path: "/xjc-integratedmachine/plan/",
+    component: () => import("@/views/xjc-integratedmachine/plan/"),
+  },
+];
 export default {
-    router
-}
+  router,
+};

+ 109 - 7
src/views/xjc-integratedmachine/cognize/index.vue

@@ -1,13 +1,115 @@
 <template>
-    自我认知首页
+  <div class="maturity-game-page">
+    <head-component :headinfo="headinfo"></head-component>
+    <div class="page-content">
+      <!-- <div class="top">
+        <img src="@/assets/images/wakeup/maturity/maturity-game-title.png" />
+      </div> -->
+      <div class="bottom">
+        <img
+          src="@/assets/images/wakeup/maturity/maturity-game-left.png"
+          @click="
+            jumpTo(
+              '/xjc-integratedmachine/wakeup/career_maturity/knowledge_explanation'
+            )
+          "
+        />
+        <img
+          src="@/assets/images/wakeup/maturity/maturity-game-right.png"
+          @click="
+            jumpTo(
+              '/xjc-integratedmachine/wakeup/career_maturity/maturity_game'
+            )
+          "
+        />
+      </div>
+      <drag_component></drag_component>
+    </div>
+  </div>
 </template>
 
-<script>
-    export default {
-        name: "index"
-    }
-</script>
+<script setup>
+import headComponent from "@/views/xjc-integratedmachine/components/head_component.vue";
+import drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
+import { onMounted } from "vue";
+
+const router = useRouter();
+
+const headinfo = ref({});
+const draggedItem = ref(null);
+
+function dragStart(event) {
+  draggedItem.value = event.target;
+}
 
-<style scoped>
+function drop(event) {
+  event.preventDefault(); // 防止默认处理(例如打开链接)
+  if (event.target !== draggedItem.value) {
+    const target = event.target; // 获取放置的目标元素
+    const item = draggedItem.value; // 获取被拖拽的元素
+    // 交换位置或进行其他操作
+    item.parentNode.insertBefore(item, target); // 将被拖拽的元素插入到目标元素之前
+  }
+}
 
+function setHeadinfo() {
+  headinfo.value = {
+    title: "生涯唤醒学习系统",
+    user: {
+      avatar: "头像路径",
+      nickName: "张三",
+    },
+    backUrl: "/xjc-integratedmachine/wakeup/index",
+    backUrlUse: true,
+  };
+}
+onMounted(() => {
+  setHeadinfo();
+});
+
+function jumpTo(path) {
+  router.push({
+    path: path,
+    query: { name: 123 },
+  });
+}
+</script>
+
+<style scoped lang="scss">
+.maturity-game-page {
+  background: url("@/assets/images/wakeup/maturity/maturity-game-bg.png")
+    no-repeat;
+  background-size: 1920px 1080px;
+  z-index: 10;
+  width: 100%;
+  height: 1080px;
+  .page-content {
+    width: 100%;
+    position: absolute;
+    top: 123px;
+    bottom: 0;
+    .top {
+      width: 100%;
+      height: 212px;
+      display: flex;
+      justify-content: center;
+      margin-top: 104px;
+      img {
+        width: 864px;
+        height: 212px;
+      }
+    }
+    .bottom {
+      width: 100%;
+      height: 248px;
+      display: flex;
+      justify-content: space-around;
+      margin-top: 186px;
+      img {
+        width: 398px;
+        height: 248px;
+      }
+    }
+  }
+}
 </style>

+ 61 - 49
src/views/xjc-integratedmachine/components/drag_component.vue

@@ -1,29 +1,34 @@
 <template>
   <div class="fixed-box">
     <div class="content-bottom">
-      <div class="draw draggable" ref="draggableRef" :style="{ top: position.y + 'px', left: position.x + 'px' }">
-        <img src="@/assets/images/wakeup/float-box.png"/>
+      <div
+        class="draw draggable"
+        ref="draggableRef"
+        :style="{ top: position.y - 360 + 'px', left: position.x + 'px' }"
+      >
+        <img src="@/assets/images/wakeup/float-box.png" />
       </div>
       <div class="ai-rabit">
-        <img src="@/assets/images/wakeup/ai-rabit.png"/>
+        <img src="@/assets/images/wakeup/ai-rabit.png" />
       </div>
     </div>
   </div>
 </template>
 <script setup>
-import {ref, onMounted, onUnmounted} from 'vue';
+import { ref, onMounted, onUnmounted } from "vue";
 
 const draggableRef = ref(null);
-const position = ref({x: 0, y: 0});
+const position = ref({ x: 0, y: 0 });
 const dragging = ref(false);
 const startX = ref(0);
 const startY = ref(0);
+
 const onMouseDown = (event) => {
   dragging.value = true;
   startX.value = event.clientX - position.value.x;
   startY.value = event.clientY - position.value.y;
-  document.addEventListener('mousemove', onMouseMove);
-  document.addEventListener('mouseup', onMouseUp);
+  document.addEventListener("mousemove", onMouseMove);
+  document.addEventListener("mouseup", onMouseUp);
 };
 
 const onTouchStart = (event) => {
@@ -31,8 +36,8 @@ const onTouchStart = (event) => {
     dragging.value = true;
     startX.value = event.touches[0].clientX - position.value.x;
     startY.value = event.touches[0].clientY - position.value.y;
-    document.addEventListener('touchmove', onTouchMove, {passive: true});
-    document.addEventListener('touchend', onTouchEnd, {passive: true});
+    document.addEventListener("touchmove", onTouchMove, { passive: true });
+    document.addEventListener("touchend", onTouchEnd, { passive: true });
   }
 };
 
@@ -52,35 +57,35 @@ const onTouchMove = (event) => {
 
 const onMouseUp = () => {
   dragging.value = false;
-  document.removeEventListener('mousemove', onMouseMove);
-  document.removeEventListener('mouseup', onMouseUp);
+  document.removeEventListener("mousemove", onMouseMove);
+  document.removeEventListener("mouseup", onMouseUp);
 };
 
 const onTouchEnd = () => {
   dragging.value = false;
-  document.removeEventListener('touchmove', onTouchMove, {passive: true});
-  document.removeEventListener('touchend', onTouchEnd, {passive: true});
+  document.removeEventListener("touchmove", onTouchMove);
+  document.removeEventListener("touchend", onTouchEnd);
 };
 
 onMounted(() => {
   const draggable = draggableRef.value;
-  draggable.addEventListener('mousedown', onMouseDown);
-  draggable.addEventListener('touchstart', onTouchStart, {passive: true});
+  draggable.addEventListener("mousedown", onMouseDown);
+  draggable.addEventListener("touchstart", onTouchStart, { passive: true });
 });
 
-// onUnmounted(() => {
-//   const draggable = draggableRef.value;
-//   draggable.removeEventListener('mousedown', onMouseDown);
-//   draggable.removeEventListener('touchstart', onTouchStart, {passive: true});
-//   document.removeEventListener('mousemove', onMouseMove);
-//   document.removeEventListener('mouseup', onMouseUp);
-//   document.removeEventListener('touchmove', onTouchMove, {passive: true});
-//   document.removeEventListener('touchend', onTouchEnd, {passive: true});
-// });
-
+onUnmounted(() => {
+  const draggable = draggableRef.value;
+  if (draggable) {
+    draggable.removeEventListener("mousedown", onMouseDown);
+    draggable.removeEventListener("touchstart", onTouchStart);
+  }
+  document.removeEventListener("mousemove", onMouseMove);
+  document.removeEventListener("mouseup", onMouseUp);
+  document.removeEventListener("touchmove", onTouchMove);
+  document.removeEventListener("touchend", onTouchEnd);
+});
 </script>
 
-
 <style scoped lang="scss">
 .draggable {
   width: 100px;
@@ -92,55 +97,62 @@ onMounted(() => {
   cursor: pointer;
   user-select: none;
 }
-.fixed-box{
+
+.fixed-box {
+  position: fixed;
+  bottom: 0;
+  left: 0;
   width: 100%;
-  height: 100px;
-  position: absolute;
-  //bottom: 0px;
-  top: 678px;
+  height: auto;
+  pointer-events: none; /* 让背景不阻挡其他元素的点击 */
+  z-index: 9999; /* 确保在最上层显示 */
 }
-.content-bottom{
+
+.content-bottom {
   width: 100%;
-  height: 270px;
+  height: 0px; /* 给容器一个明确的高度 */
   display: flex;
   justify-content: space-between;
   position: relative;
-  align-items: center;
-  .draw{
+  align-items: flex-end;
+  pointer-events: auto; /* 恢复子元素的点击事件 */
+
+  .draw {
     width: 109px;
     height: 170px;
-    img{
+    pointer-events: auto;
+    position: absolute;
+
+    img {
       width: 109px;
       height: 170px;
     }
   }
 
-  .ai-rabit{
+  .ai-rabit {
     position: absolute;
     right: 0px;
-    bottom: 20px;
+    bottom: 0px;
     display: flex;
-    align-items: center;
-    .ai-rabit-text{
+    align-items: flex-end;
+    pointer-events: auto;
+
+    .ai-rabit-text {
       width: 345px;
       height: 89px;
-      background: #E8EEF7;
+      background: #e8eef7;
       font-weight: 300;
       margin-bottom: 20px;
       font-size: 22px;
       color: #000000;
-      padding:16px;
+      padding: 16px;
       border-radius: 24px 24px 24px 24px;
     }
-    img{
+
+    img {
       width: 178px;
       height: 270px;
     }
   }
 }
-.draggable-ball {
-  position: absolute;
-  cursor: pointer;
-  user-select: none; /* 防止拖拽时选中文字 */
-}
-</style>
+</style>

+ 228 - 183
src/views/xjc-integratedmachine/components/head_component.vue

@@ -1,199 +1,244 @@
 <template>
-    <div class="contenter">
-      <div class="head-left">
-        <img  class="head-icon" src="@/assets/images/login/login-return.png" @click="backTo" alt="404">
-      </div>
-<!-- 等UI图更新继续画     <div>-->
-      <div class="head-title">
-        <div v-if="headinfo.title">{{headinfo.title}}</div>
-      </div>
-      <div class="contrast-box"  >
-        <img class="contrast" v-show="headinfo.contrast" src="@/assets/images/environment/contrast-btn.png"
-             @click="contrastTo">
-        <p class="text" v-show="headinfo.contrast">{{contrastSize}}</p>
-      </div>
-      <div class="head-right" v-if="!headinfo.isLogin">
-        <div class="right-user">
-          <img src="@/assets/images/wakeup/user.png" @click="backTo" alt="404">
-        </div>
-        <el-button class="head-right-btn1" v-if="headinfo.isHome">使用说明</el-button>
-        <el-button class="head-right-btn1" v-else @click="homeUrlTo">首页</el-button>
-        <el-button class="head-right-btn2" @click="exit">退出登录</el-button>
+  <div class="contenter">
+    <div class="head-left">
+      <img
+        class="head-icon"
+        src="@/assets/images/login/login-return.png"
+        @click="backTo"
+        alt="404"
+      />
+    </div>
+    <!-- 等UI图更新继续画     <div>-->
+    <div class="head-title">
+      <div v-if="headinfo.title">{{ headinfo.title }}</div>
+    </div>
+    <div class="contrast-box">
+      <img
+        class="contrast"
+        v-show="headinfo.contrast"
+        src="@/assets/images/environment/contrast-btn.png"
+        @click="contrastTo"
+      />
+      <p class="text" v-show="headinfo.contrast">{{ contrastSize }}</p>
+    </div>
+    <div class="head-right" v-if="!headinfo.isLogin">
+      <div class="right-user">
+        <img src="@/assets/images/wakeup/user.png" @click="gotoPersonCenter" alt="404" />
       </div>
+      <el-button class="head-right-btn1" v-if="headinfo.isHome"
+        >使用说明</el-button
+      >
+      <el-button class="head-right-btn1" v-else @click="homeUrlTo"
+        >首页</el-button
+      >
+      <el-button class="head-right-btn2" @click="exit">退出登录</el-button>
     </div>
+  </div>
+  <!-- 等UI图更新继续画     <div>-->
+  <!-- <div class="head-title">
+    <div v-if="headinfo.title">{{ headinfo.title }}</div>
+  </div>
+  <div class="contrast-box">
+    <img
+      v-show="headinfo.contrast"
+      class="contrast"
+      src="@/assets/images/environment/contrast-btn.png"
+      @click="contrastTo"
+    />
+  </div> -->
+  <!-- <div class="head-right" v-if="!headinfo.isLogin">
+    <div class="right-user">
+      <img src="@/assets/images/wakeup/user.png" @click="backTo" alt="404" />
+    </div>
+    <el-button class="head-right-btn1" v-if="headinfo.isHome"
+      >使用说明</el-button
+    >
+    <el-button class="head-right-btn1" v-else @click="homeUrlTo"
+      >首页</el-button
+    >
+    <el-button class="head-right-btn2" @click="exit">退出登录</el-button>
+  </div> -->
 </template>
 
 <script setup>
-    import {ElMessage} from "element-plus";
-    import {getCompareSize} from '@/api/xjc-integratedmachine/environment/common.js'
-    import {defineEmits} from "vue";
-    const {proxy} = getCurrentInstance()
-    const router = useRouter()
-    const props = defineProps({
-      headinfo: {}
-    })
-    const contrastSize = ref(null);
-    const emit = defineEmits(['childEvent']);
-    function backTo() {
-      clear()
-      if(props.headinfo.backUrlUse){
-        router.push({
-            path: props.headinfo.backUrl,
-            query:{
-             code : props.headinfo.backQuery
-          }
-        })
-      }else {
-        router.go(-1);
-      }
-      emit('childEvent')
-    }
-    function clear(){
-      if(props.headinfo.contrastPage){
-        // clearData()
-      }
-    }
-    function homeUrlTo() {
-        router.push({
-          path: props.headinfo.homeUrl
-        })
-    }
-    //跳转对比页面
-    function contrastTo(){
-      console.log('contrastSize.value',contrastSize.value)
-      if(contrastSize.value === 2){
-       console.log("props.headinfo.contrastType",props.headinfo.contrastType)
-        if(props.headinfo.contrastType === 2){
-          router.push({
-            path: '/xjc-integratedmachine/environment/contrast_major'
-          })
-        }else if(props.headinfo.contrastType === 1){
-          router.push({
-            path: '/xjc-integratedmachine/environment/contrast_university'
-          })
-        }else if(props.headinfo.contrastType === 3){
-          router.push({
-            path: '/xjc-integratedmachine/environment/contrast_career'
-          })
-        }
-      }else {
-        ElMessage({
-          type: 'info',
-          message: '对比列表不满两组数据',
-        })
-        return;
-      }
-    }
-
-    function exit() {
-        proxy.$modal.confirm('您确认退出吗').then(function () {
-            router.push({
-                path: '/xjc_login'
-            })
-        }).then(() => {
-        }).catch(() => {
-        })
+import { ElMessage } from "element-plus";
+import { getCompareSize } from "@/api/xjc-integratedmachine/environment/common.js";
+import { defineEmits } from "vue";
+const { proxy } = getCurrentInstance();
+const router = useRouter();
+const props = defineProps({
+  headinfo: {},
+});
+const contrastSize = ref(null);
+const emit = defineEmits(["childEvent"]);
+function backTo() {
+  clear();
+  if (props.headinfo.backUrlUse) {
+    router.push({
+      path: props.headinfo.backUrl,
+      query: {
+        code: props.headinfo.backQuery,
+      },
+    });
+  } else {
+    router.go(-1);
+  }
+  emit("childEvent");
+}
+function clear() {
+  if (props.headinfo.contrastPage) {
+    // clearData()
+  }
+}
+function homeUrlTo() {
+  router.push({
+    path: props.headinfo.homeUrl,
+  });
+}
+//跳转对比页面
+function contrastTo() {
+  console.log("contrastSize.value", contrastSize.value);
+  if (contrastSize.value === 2) {
+    console.log("props.headinfo.contrastType", props.headinfo.contrastType);
+    if (props.headinfo.contrastType === 2) {
+      router.push({
+        path: "/xjc-integratedmachine/environment/contrast_major",
+      });
+    } else if (props.headinfo.contrastType === 1) {
+      router.push({
+        path: "/xjc-integratedmachine/environment/contrast_university",
+      });
+    } else if (props.headinfo.contrastType === 3) {
+      router.push({
+        path: "/xjc-integratedmachine/environment/contrast_career",
+      });
     }
-    //拿到对比数量
-   function getCompareSizeData (num){
-      console.log("num",num)
-     setTimeout(() => {
-       getCompareSize({
-         type:props.headinfo.contrastType || num
-       }).then(resp => {
-         contrastSize.value =  resp.data
-       })
-     }, 500)
+  } else {
+    ElMessage({
+      type: "info",
+      message: "对比列表不满两组数据",
+    });
+    return;
+  }
+}
 
-   }
-    onMounted(() => {
-      // getCompareSizeData()
+function exit() {
+  proxy.$modal
+    .confirm("您确认退出吗")
+    .then(function () {
+      router.push({
+        path: "/xjc_login",
+      });
     })
-    defineExpose({
-      getCompareSizeData
+    .then(() => {})
+    .catch(() => {});
+}
+//拿到对比数量
+function getCompareSizeData(num) {
+  console.log("num", num);
+  setTimeout(() => {
+    getCompareSize({
+      type: props.headinfo.contrastType || num,
+    }).then((resp) => {
+      contrastSize.value = resp.data;
     });
-</script>
+  }, 500);
+}
 
-<style scoped lang='scss'>
-    .contenter{
-      position: absolute;
-      top: 0;
-      left: 0;
-      width:100%;
-      height: 100px;
-      display: flex;
-      align-items: center;
-      background-color: rgba(251,252,253,0.5);
-      justify-content: space-between;
-      .head-left{
-        width: 750px;
-      }
-      .head-icon{
-        width: 74px;
-        height: 74px;
-        margin-left: 74px;
-      }
-      .head-title{
-        width: 464px;
-        //margin: ;
-        text-align: center;
-        font-weight: bold;
-        font-size: 48px;
-        color: #060606;
-      }
-      .contrast-box{
-        width: 209px;
-        height: 80px;
-        position: relative;
-        img{
-          width: 209px;
-          height: 80px;
-        }
-        .text{
-          position: absolute;
-          bottom: 3px;
-          left: 107px;
-          font-size: 20px;
-          color: #2BC17B;
-          font-size: 20px;
-          color: #2BC17B;
-          line-height: 31px;
-          bottom: -7px;
-        }
-      }
-      .head-right{
-          width:750px;
-          display: flex;
-          justify-content: space-around;
-          align-items: center;
-          width: 464px;
-         .head-right-btn1{
-           width: 136px;
-           height: 74px;
-           background: #2BC17B;
-           border-radius: 10px 10px 10px 10px;
-           font-weight: 400;
-           font-size: 24px;
-           color: #FFFFFF;
-        }
-        .head-right-btn2{
-          width: 136px;
-          height: 74px;
-          background: #FB5451;
-          border-radius: 10px 10px 10px 10px;
-          font-weight: 400;
-          font-size: 24px;
-          color: #FFFFFF;
-          margin-right: 48px;
-        }
-        .right-user{
+// 前往个人中心
+function gotoPersonCenter(){
+  router.push({
+    path: "/xjc-integratedmachine/personcenter/index",
+  });
+}
 
-          img{
-            width: 85px;
-            height: 85px;
-          }
-        }
+onMounted(() => {
+  // getCompareSizeData()
+});
+defineExpose({
+  getCompareSizeData,
+});
+</script>
 
+<style scoped lang="scss">
+.contenter {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100px;
+  display: flex;
+  align-items: center;
+  background-color: rgba(251, 252, 253, 0.5);
+  justify-content: space-between;
+  .head-left {
+    width: 750px;
+  }
+  .head-icon {
+    width: 74px;
+    height: 74px;
+    margin-left: 74px;
+  }
+  .head-title {
+    width: 464px;
+    //margin: ;
+    text-align: center;
+    font-weight: bold;
+    font-size: 48px;
+    color: #060606;
+  }
+  .contrast-box {
+    width: 209px;
+    height: 80px;
+    position: relative;
+    img {
+      width: 209px;
+      height: 80px;
+    }
+    .text {
+      position: absolute;
+      bottom: 3px;
+      left: 107px;
+      font-size: 20px;
+      color: #2bc17b;
+      font-size: 20px;
+      color: #2bc17b;
+      line-height: 31px;
+      bottom: -7px;
+    }
+  }
+  .head-right {
+    width: 750px;
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    width: 464px;
+    .head-right-btn1 {
+      width: 136px;
+      height: 74px;
+      background: #2bc17b;
+      border-radius: 10px 10px 10px 10px;
+      font-weight: 400;
+      font-size: 24px;
+      color: #ffffff;
+    }
+    .head-right-btn2 {
+      width: 136px;
+      height: 74px;
+      background: #fb5451;
+      border-radius: 10px 10px 10px 10px;
+      font-weight: 400;
+      font-size: 24px;
+      color: #ffffff;
+      margin-right: 48px;
+    }
+    .right-user {
+      cursor: pointer;
+      img {
+        width: 85px;
+        height: 85px;
       }
     }
+  }
+}
 </style>

src/views/xjc-integratedmachine/decision/advantageous_discipline_assessment.vue → src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_assessment.vue


src/views/xjc-integratedmachine/decision/advantageous_discipline_pdfreport.vue → src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_pdfreport.vue


src/views/xjc-integratedmachine/decision/advantageous_discipline_webreport.vue → src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_webreport.vue


src/views/xjc-integratedmachine/decision/advantages_assessment_knowledge.vue → src/views/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_explanation.vue


+ 13 - 0
src/views/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_index.vue

@@ -0,0 +1,13 @@
+<template>
+    优势学科首页
+</template>
+
+<script>
+    export default {
+        name: "advantages_assessment_index"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 70 - 0
src/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet.vue

@@ -0,0 +1,70 @@
+<template>
+    <div class="decision_balance_sheet">
+        <head-component :headinfo=headinfo></head-component>
+        <div class="page-content">
+            <div class="page-box">
+                <div>
+
+                </div>
+            </div>
+            <drag_component></drag_component>
+        </div>
+    </div>
+
+</template>
+
+<script setup>
+    import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
+    import {onMounted, reactive} from "vue";
+    import drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
+    const headinfo = ref({})
+
+    function setHeadinfo(){
+        headinfo.value = {
+            title: '决策平衡单',
+            user: {
+                avatar: '头像路径',
+                nickName: '张三'
+            },
+            backUrl : '/xjc-integratedmachine/wakeup/career_recognize/index'
+        }
+    }
+
+    onMounted(() => {
+        setHeadinfo()
+    })
+
+</script>
+
+<style scoped lang="scss">
+    p{
+        margin: 0;
+        padding: 0;
+    }
+    .decision_balance_sheet{
+        background: url('@/assets/images/decision/common/background.png') no-repeat;
+        background-size: 1920px 1080px;
+        z-index:10;
+        width: 100%;
+        height: 1080px;
+        .page-content {
+            width: 100%;
+            height: 980px;
+            position: absolute;
+            top: 100px;
+            bottom: 0;
+        }
+        .page-box{
+            width: 1832px;
+            height: 910px;
+            overflow: auto;
+            margin: 13px auto 0;
+            padding-top: 25px;
+            position: relative;
+            overflow: auto;
+
+        }
+
+    }
+
+</style>

+ 156 - 0
src/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_explanation.vue

@@ -0,0 +1,156 @@
+<template>
+    <div class="plan_significance">
+        <head-component :headinfo=headinfo></head-component>
+        <div class="page-content">
+            <div class="page-box">
+                <p class="text-info">
+                    <span class="center-text">选科决策平衡单</span>是辅助新高考选科的重要工具,帮助我们通过赋值方式对影响选科决策的内在和外在考虑因素进行量化处理,让我们在各科目选择上多角度权衡利弊,最后获得更具有综合优势的选科结论。
+                </p>
+                <p class="text-info">
+                    选科决策平衡单的具体使用方法如下:
+                </p>
+                <p class="text-info">
+                    <span class="center-text">第一步:</span>罗列可选的选考科目。如:物理、化学、生物、历史、政治、地理等。
+                </p>
+                <p class="text-info">
+                    <span class="center-text">第二步:</span>梳理并罗列对选科有影响的考虑因素。如:人生目标与职业目标、学科基础与学科成绩、学科优势、专业倾向与限考要求、父母等家人建议、教师建议与同学建议、学校特色与师资水平、社会发展需要与贡献等。
+                </p>
+                <p class="text-info">
+                    <span class="center-text">第三步:</span>评估各考虑因素的重要程度并分配权重分数,范围通常为1-5分(1分表示该因素最不重要,5分表示最重要)。
+                </p>
+                <p class="text-info">
+                    <span class="center-text">第四步:</span>衡量每个选考科目中各考虑因素的得失程度。依据自己在每个选考科目对应因素上的优势(得分)、劣势(失分),为每个科目在该因素上设定得失分数,范围可在-5到+5之间。
+                </p>
+                <p class="text-info">
+                    <span class="center-text">第五步:</span>加权计算并得出结果。根据每个考虑因素的权重和得失分数,计算每个选考科目的总得分(将每个因素的权重分数乘以该科目在该因素上的得失分数,再将所有因素的乘积相加,得到总得分),然后依据总得分的高低来排列选考科目的优先级。
+                </p>
+                <p class="text-info">
+                    选科决策平衡单的结果主要是个人认知层面的反映,实际上仍有许多部分是决策平衡单无法展现出来的。因此,得分高的科目或许会与最终的决策不一致,但我们仍可通过选科决策平衡单来帮助自己清楚地了解整个选科决策过程。
+                </p>
+                <div class="img-box">
+                    <img src="@/assets/images/decision/decision_balance_sheet/explanation.png">
+                </div>
+            </div>
+            <drag_component></drag_component>
+        </div>
+    </div>
+
+</template>
+
+<script setup>
+    import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
+    import {onMounted, reactive} from "vue";
+    import drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
+    const headinfo = ref({})
+    const describeInfo = ref('')
+    function setHeadinfo(){
+        headinfo.value = {
+            title: '生涯唤醒学习系统',
+            user: {
+                avatar: '头像路径',
+                nickName: '张三'
+            },
+            backUrl : '/xjc-integratedmachine/wakeup/career_recognize/index'
+        }
+    }
+    const centerDialogVisible = ref(false)
+    const position = reactive({ x: 10, y: 10 });
+    let isDragging = false;
+    let originX, originY;
+
+    const startDrag = (e) => {
+        console.log("e",e)
+        isDragging = true;
+        originX = e.clientX - position.x;
+        originY = e.clientY - position.y;
+        console.log("originX",originX,originY,"originY")
+        document.addEventListener('mousemove', onMouseMove);
+        document.addEventListener('mouseup', stopDrag);
+    };
+
+    const onMouseMove = (e) => {
+        if (isDragging) {
+            position.x = e.clientX - originX;
+            position.y = e.clientY - originY;
+            console.log("position.x",position.x,"position.y",position.y)
+        }
+    };
+
+    const stopDrag = () => {
+        isDragging = false;
+        document.removeEventListener('mousemove', onMouseMove);
+        document.removeEventListener('mouseup', stopDrag);
+    };
+
+    onMounted(() => {
+        setHeadinfo()
+    })
+
+</script>
+
+<style scoped lang="scss">
+    p{
+        margin: 0;
+        padding: 0;
+    }
+    .plan_significance{
+        background: url('@/assets/images/login/login-home-background.png') no-repeat;
+        background-size: 1920px 1080px;
+        z-index:10;
+        width: 100%;
+        height: 1080px;
+        .page-content {
+            width: 100%;
+            height: 980px;
+            position: absolute;
+            top: 100px;
+            bottom: 0;
+        }
+        .page-box{
+            width: 1832px;
+            height: 910px;
+            background: #FFFFFF;
+            border-radius: 35px 35px 35px 35px;
+            margin: 13px auto 0;
+            padding-top: 25px;
+            position: relative;
+            overflow: auto;
+            .text-info{
+                font-weight: 400;
+                font-size: 30px;
+                color: #333333;
+                line-height: 52px;
+                padding: 0 150px;
+                text-indent: 2em;
+                margin-top: 20px;
+                .center-text{
+                    font-weight: bold;
+                }
+            }
+            .img-box{
+                width: 1810px;
+                height: 773px;
+                display: flex;
+                justify-content: center;
+                margin-bottom: 20px;
+                position: relative;
+                img{
+                    width: 1525px;
+                    height: 770px;
+                }
+            }
+
+            .title-text{
+                margin-left: 150px;
+                margin-right: 150px;
+                margin-top: 28px;
+                font-weight: bold;
+                font-size: 32px;
+                color: #333333;
+                line-height: 52px;
+            }
+        }
+
+    }
+
+</style>

+ 89 - 0
src/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_index.vue

@@ -0,0 +1,89 @@
+<template>
+    <div class="maturity-game-page">
+        <head-component :headinfo=headinfo></head-component>
+        <div class="page-content">
+            <div class="top">
+                <img src="@/assets/images/decision/decision_balance_sheet/game-title.png" >
+            </div>
+            <div class="bottom">
+                <img src="@/assets/images/decision/common/index-game-left.png" @click="jumpTo('/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_explanation')">
+                <img src="@/assets/images/decision/common/index-game-right.png" @click="jumpTo('/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet')">
+            </div>
+            <drag_component></drag_component>
+        </div>
+    </div>
+</template>
+
+<script setup>
+    import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
+    import drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
+    import {onMounted} from "vue";
+    const router = useRouter()
+
+    const headinfo = ref({})
+
+    function setHeadinfo(){
+        headinfo.value = {
+            title: '',
+            user: {
+                avatar: '头像路径',
+                nickName: '张三'
+            },
+            backUrl: '/xjc-integratedmachine/decision/index',
+            backUrlUse:true,
+        }
+    }
+
+    function jumpTo(path) {
+        router.push({
+            path: path,
+            query: {name: 123}
+        })
+    }
+
+    onMounted(() => {
+        setHeadinfo()
+    })
+</script>
+
+
+<style scoped lang="scss">
+    .maturity-game-page{
+        background: url('@/assets/images/wakeup/maturity/maturity-game-bg.png') no-repeat;
+        background-size: 1920px 1080px;
+        z-index:10;
+        width: 100%;
+        height: 1080px;
+        .page-content{
+            width: 100%;
+            position: absolute;
+            top: 123px;
+            bottom: 0;
+            .top{
+                width: 100%;
+                height: 212px;
+                display: flex;
+                justify-content: center;
+                margin-top: 104px;
+                img{
+                    width: 864px;
+                    height: 212px;
+                }
+            }
+            .bottom{
+                width: 100%;
+                height: 248px;
+                display: flex;
+                justify-content: space-around;
+                margin-top:186px;
+                img{
+                    width: 398px;
+                    height: 248px;
+                }
+            }
+        }
+
+    }
+
+</style>
+

src/views/xjc-integratedmachine/decision/choosemajor_subject.vue → src/views/xjc-integratedmachine/decision/choose_major_by_subject/choose_major_by_subject_index.vue


+ 0 - 21
src/views/xjc-integratedmachine/decision/decision_making_style.vue

@@ -1,21 +0,0 @@
-<template>
-    决策风格
-
-    <el-button @click="jump">开始测试</el-button>
-</template>
-
-<script setup>
-    const router = useRouter()
-    const route = useRoute()
-
-    function jump() {
-        router.push({
-            path : '/xjc-integratedmachine/decision/decision_making_style_test'
-        })
-    }
-
-</script>
-
-<style scoped>
-
-</style>

+ 14 - 0
src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style.vue

@@ -0,0 +1,14 @@
+<template>
+    决策风格测试
+</template>
+
+<script setup>
+    const router = useRouter()
+    const route = useRoute()
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 14 - 0
src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_explanation.vue

@@ -0,0 +1,14 @@
+<template>
+    决策风格测试知识讲解
+</template>
+
+<script setup>
+    const router = useRouter()
+    const route = useRoute()
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 11 - 0
src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_index.vue

@@ -0,0 +1,11 @@
+<template>
+    决策风格测试首页
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 14 - 0
src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_webreport.vue

@@ -0,0 +1,14 @@
+<template>
+    决策风格测试网页版报告
+</template>
+
+<script setup>
+    const router = useRouter()
+    const route = useRoute()
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 0 - 12
src/views/xjc-integratedmachine/decision/decision_making_style_test.vue

@@ -1,12 +0,0 @@
-<template>
-    决策风格
-    测试
-</template>
-
-<script setup>
-
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 30
src/views/xjc-integratedmachine/decision/discipline_and_future.vue

@@ -1,30 +0,0 @@
-<template>
-    学科与未来专业
-
-    <div>
-        英语
-    </div>
-    <div>
-        语文
-    </div>
-    <div>
-        物理
-    </div>
-    <div>
-        生物
-    </div>
-    <div>
-        化学
-    </div>
-    <div>
-        政治
-    </div>
-</template>
-
-<script setup>
-
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 11
src/views/xjc-integratedmachine/decision/edecision_style_knowledge.vue

@@ -1,11 +0,0 @@
-<template>
-    决策风格知识讲解
-</template>
-
-<script setup>
-
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 11
src/views/xjc-integratedmachine/decision/edecision_style_webreport.vue

@@ -1,11 +0,0 @@
-<template>
-    决策风格网页报告
-</template>
-
-<script setup>
-
-</script>
-
-<style scoped>
-
-</style>

+ 121 - 17
src/views/xjc-integratedmachine/decision/index.vue

@@ -1,33 +1,137 @@
 <template>
-    生涯决策学习系统
-
-    <el-button @click="jumpTo('/xjc-integratedmachine/decision/process_diagram_selecting_subjects')">高中选科流程图</el-button>
-    <el-button>优势学科测评</el-button>
-    <el-button>专业选择测评</el-button>
-    <el-button @click="jumpTo('/xjc-integratedmachine/decision/choose_subjects_1')">根据高校/专业选科目</el-button>
-    <el-button @click="jumpTo('/xjc-integratedmachine/decision/choose_subjects_2')">根据科目选专业</el-button>
-<br>
-    <el-button @click="jumpTo('/xjc-integratedmachine/decision/disciplinary_professional_relevance')">学科专业相关性</el-button>
-    <el-button @click="jumpTo('/xjc-integratedmachine/decision/discipline_and_future')">学科与未来专业</el-button>
-    <el-button @click="jumpTo('/xjc-integratedmachine/decision/swot_situation_analysis')">SWOT态势分析</el-button>
-    <el-button @click="jumpTo('/xjc-integratedmachine/decision/decision_making_style')">决策风格测试</el-button>
-    <el-button>选科决策平衡单</el-button>
+    <div class="wake-up-page">
+        <head-component :headinfo=headinfo></head-component>
+        <div class="page-content">
+            <div class="page-img-box">
+                <div class="img-box">
+                    <!--高中选科流程图-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card1.png" @click="jumpTo('/xjc-integratedmachine/decision/process_diagram/process_diagram_selecting_subjects')">
+                    <!--优势学科测评-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card2.png" @click="jumpTo('/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_index')">
+                    <!--专业选择测评-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card3.png" @click="jumpTo('/xjc-integratedmachine/decision/major_selection_assessment/index')">
+                    <!--根据高校科目选专业-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card4.png" @click="jumpTo('/xjc-integratedmachine/decision/time/time_management_menu')">
+                    <!--根据科目选专业-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card5.png" @click="jumpTo('/xjc-integratedmachine/decision/choose_major_by_subject/choose_major_by_subject_index')">
+                </div>
+                <div class="bottom-img">
+                    <!--学科专业相关性-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card6.png" @click="jumpTo('/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_index')">
+                    <!--学科与未来专业-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card7.png" @click="jumpTo('/xjc-integratedmachine/decision/major_and_future/major_and_future_index')">
+                    <!--Swot态势分析-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card8.png" @click="jumpTo('/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_index')">
+                    <!--决策风格测试-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card9.png" @click="jumpTo('/xjc-integratedmachine/decision/decision_making_style/decision_making_style_index')">
+                    <!--选择决策平衡单-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card10.png" @click="jumpTo('/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_index')">
+                </div>
+            </div>
+            <drag_component></drag_component>
+        </div>
+    </div>
 
 </template>
 
 <script setup>
+    import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
+    import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
 
     const router = useRouter()
-    const route = useRoute()
+
+    const headinfo = ref({})
+
+    function setHeadinfo(){
+        headinfo.value = {
+            title: '生涯决策学习系统',
+            user: {
+                avatar: '头像路径',
+                nickName: '张三'
+            },
+            backUrl : '/index',
+            isHome:true,
+            backUrlUse:true,
+        }
+    }
+
 
     function jumpTo(path) {
         router.push({
-            path : path
+            path: path,
+            query: {name: 123}
         })
     }
-
+    onMounted(() => {
+        setHeadinfo()
+    })
 </script>
 
-<style scoped>
+
+<style scoped lang="scss">
+    .wake-up-page{
+        background: url('@/assets/images/login/login-home-background.png') no-repeat;
+        background-size: 1920px 1080px;
+        z-index:10;
+        width: 100%;
+        height: 1080px;
+        .page-content{
+            width: 100%;
+            position: absolute;
+            top: 123px;
+            bottom: 0;
+            p{
+                padding-left: 44px;
+                padding-right: 44px;
+                font-weight: 400;
+                font-size: 30px;
+                color: #333333;
+                line-height: 52px;
+                letter-spacing: 3px;
+                text-indent: 2em;
+            }
+        }
+        .content-text-box{
+            width: 100%;
+            height: 126px;
+            background: url('@/assets/images/wakeup/background-content-style.png') no-repeat;
+            background-size: 1920px 126px;
+            margin-top:23px;
+            display: flex;
+            align-items: center;
+        }
+        .page-img-box{
+            width: 100%;
+            display: flex;
+            justify-content:space-around;
+            flex-direction: column;
+            align-items: center;
+            margin-top: 40px;
+            .img-box{
+                width: 1900px;
+                display: flex;
+                justify-content: space-around;
+                img{
+                    width: 350px;
+                    height: 400px;
+                }
+            }
+            .bottom-img{
+                width: 1900px;
+                margin-top: 40px;
+                display: flex;
+                justify-content: space-around;
+                img{
+                    width: 350px;
+                    height: 400px;
+                }
+            }
+        }
+
+
+    }
+
 
 </style>
+
+

+ 230 - 0
src/views/xjc-integratedmachine/decision/major_and_future/major_and_future_index.vue

@@ -0,0 +1,230 @@
+<template>
+    <div class="major_and_future">
+        <head-component :headinfo=headinfo></head-component>
+        <div class="page-content">
+            <div class="content-box">
+                <div class="box-main">
+                    <div class="box-item" v-for="(item,index) in cinemaData">
+                        <div class="video-left" @click="playVideo(item.filmPath,item.name)">
+                            <img :src= "`${baseUrl}`+ item.picPath" />
+                            <img class="pause" src="@/assets/images/wakeup/pause.png" />
+                        </div>
+                        <div class="video-right">
+                            <p class="title">{{item.name}}</p>
+                            <div class="text-box">
+                                <p class="text" v-html="item.introduce">
+                                </p>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <!--      <div class="content-bottom">-->
+            <!--        <div class="draw draggable-ball" @mousedown="startDrag" :style="{ left: position.x + 'px', top: position.y + 'px' }">-->
+            <!--          <img src="@/assets/images/wakeup/float-box.png" />-->
+            <!--        </div>-->
+            <!--        <div class="ai-rabit">-->
+            <!--          <div class="ai-rabit-text">-->
+            <!--            你好,同学欢迎进入生涯学习系统-->
+            <!--          </div>-->
+            <!--          <img  src="@/assets/images/wakeup/ai-rabit.png" />-->
+            <!--        </div>-->
+            <!--      </div>-->
+        </div>
+
+        <el-dialog
+                v-model="centerDialogVisible"
+                destroy-on-close
+                :title="videoName"
+                width="1832px"
+                height="915px"
+                center
+                @before-close="dialogBeforeClose"
+                align-center
+        >
+            <div class="video-content">
+                <video ref="videoPlayer" video preload="auto" autoplay muted controls width="1798" height="900" >
+                    <source :src="`${videoPath}`" type="video/ogg">
+                </video>
+            </div>
+        </el-dialog>
+    </div>
+
+</template>
+
+<script setup>
+    import { reactive, onMounted } from 'vue';
+    import {cinemaList} from "@/api/xjc-integratedmachine/wakeup/index.js";
+    import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
+
+
+    const router = useRouter()
+
+    const headinfo = ref({})
+    const cinemaData = ref([
+        {
+            name: '英语',
+            filePath: 'http://unimajorvedio.shengyazhidao.com/course/英语学科与未来专业职业.mp4'
+        },
+        {
+            name: '历史',
+            filePath: 'http://unimajorvedio.shengyazhidao.com/course/历史学科与未来专业职业.mp4'
+        },
+    ])
+    const baseUrl = ref('https://www.shengyazhidao.com')
+    const centerDialogVisible = ref(false)
+    const videoPlayer = ref(null);
+    const videoPath = ref(null);
+    const videoName = ref(null);
+    // const isDragging = ref(false)
+    const offset = ref({ x: 0, y: 0 })
+    const startX = ref(0)
+    const startY = ref(0)
+
+    function setHeadinfo(){
+        headinfo.value = {
+            title: '生涯影院',
+            user: {
+                avatar: '头像路径',
+                nickName: '张三'
+            },
+            backUrl : '/xjc-integratedmachine/wakeup/index'
+        }
+    }
+
+    function jumpTo(path) {
+        router.push({
+            path: path,
+            query: {name: 123}
+        })
+    }
+
+    function playVideo(filmPath,name) {
+        console.log("filmPath",filmPath)
+
+        centerDialogVisible.value = true;
+        console.log("filmPath",filmPath)
+        videoPath.value = filmPath
+        videoName.value = name
+    }
+    function dialogBeforeClose(){
+        videoPath.value = null;
+    }
+
+    onMounted(() => {
+        setHeadinfo();
+    })
+
+
+</script>
+
+
+<style scoped lang="scss">
+    p{
+        margin: 0;
+        padding: 0;
+    }
+    .major_and_future{
+        background: url('@/assets/images/decision/common/background.png') no-repeat;
+        background-size: 1920px 1080px;
+        z-index:10;
+        width: 100%;
+        height: 1080px;
+        .page-content{
+            width: 100%;
+            position: absolute;
+            top: 123px;
+            bottom: 0;
+            .content-box{
+                width: 1832px;
+                height:910px;
+                background: #FFFFFF;
+                background: rgba(255,255,255,0.2);
+                border-radius: 35px 35px 35px 35px;
+                margin: 0 auto;
+                .box-main{
+                    width: 1810px;
+                    height:850px;
+                    overflow:auto;
+                    margin-left: 26px;
+                    scrollbar-color: #D9D9D9 #9feafa0f;
+                    scrollbar-width: thin;
+                    .box-item{
+                        margin-top: 29px;
+                        width: 1786px;
+                        height: 487px;
+                        background: white;
+                        border-radius: 35px 35px 35px 35px;
+                        display: flex;
+                        justify-content: space-around;
+                        margin-bottom: 20px;
+                        .video-left{
+                            width: 300px;
+                            height: 418px;
+                            //border: 1px solid;
+                            margin-top: 25px;
+                            position: relative;
+                            img{
+                                width: 300px;
+                                height: 418px;
+                            }
+                            .pause{
+                                width:146px;
+                                height:146px;
+                                position: absolute;
+                                top: 131px;
+                                left: 72px;
+                            }
+                        }
+                        .video-right{
+                            width: 1395px;
+                            height: 314px;
+                            .text-box{
+                                overflow:auto;
+                                scrollbar-color: #D9D9D9 #9feafa0f;
+                                scrollbar-width: thin;
+                                height: 314px;
+                                //border: 1px solid;
+                                .text{
+                                    text-indent: 2em;
+                                    font-weight: 400;
+                                    font-size: 30px;
+                                    color: #333333;
+                                    line-height: 42px;
+                                }
+                            }
+                            .title{
+                                font-weight: bold;
+                                font-size: 32px;
+                                color: #333333;
+                                line-height: 52px;
+                                margin-top: 38px;
+                            }
+                        }
+                    }
+                    .box-item{
+                        scrollbar-color: #9be9fa #ffffff;
+                    }
+                }
+            }
+        }
+        .video-content{
+            width: 1798px;
+            height: 915px;
+            //border: 1px solid;
+            //background: pink;
+            z-index:10;
+        }
+        ::v-deep .el-dialog__header{
+            height: 60px;
+        }
+        ::v-deep .el-dialog__title{
+            font-size: 30px;
+            font-weight: bold;
+            line-height: 50px;
+        }
+    }
+
+
+</style>
+

src/views/xjc-integratedmachine/decision/proselection_evaluation.vue → src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment.vue


+ 11 - 0
src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_explanation.vue

@@ -0,0 +1,11 @@
+<template>
+    专业选择测评知识讲解
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 0
src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_index.vue

@@ -0,0 +1,13 @@
+<template>
+    专业选择测评首页
+</template>
+
+<script>
+    export default {
+        name: "major_selection_assessment_index"
+    }
+</script>
+
+<style scoped>
+
+</style>

src/views/xjc-integratedmachine/decision/proselection_evaluation_webreport.vue → src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_webreport.vue


+ 73 - 0
src/views/xjc-integratedmachine/decision/process_diagram/process_diagram_selecting_subjects.vue

@@ -0,0 +1,73 @@
+<template>
+    <div class="process_diagram_selecting_subject">
+        <head-component :headinfo=headinfo></head-component>
+        <div class="page-content">
+            <div class="page-box">
+                <img class="diagram-img" src="@/assets/images/decision/process_diagram_subject.png">
+            </div>
+            <drag_component></drag_component>
+        </div>
+    </div>
+
+</template>
+
+<script setup>
+    import {onMounted, ref} from "vue";
+    import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
+    import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
+    const headinfo = ref({})
+
+    const router = useRouter()
+
+    function setHeadinfo(){
+        headinfo.value = {
+            title: '高中选科流程图',
+            user: {
+                avatar: '头像路径',
+                nickName: '张三'
+            },
+            backUrl : '/xjc-integratedmachine/environment/index'
+        }
+    }
+
+    onMounted(() => {
+        setHeadinfo();
+    })
+
+</script>
+
+<style scoped lang="scss">
+    p{
+        margin: 0;
+        padding: 0;
+    }
+    .process_diagram_selecting_subject{
+        background: url('@/assets/images/decision/common/background.png') no-repeat;
+        background-size: 1920px 1080px;
+        z-index:10;
+        width: 100%;
+        height: 1080px;
+        .page-content {
+            width: 100%;
+            height: 980px;
+            position: absolute;
+            top: 100px;
+            bottom: 0;
+        }
+        .page-box{
+            width: 1832px;
+            height: 910px;
+            overflow: auto;
+            margin: 13px auto 0;
+            padding-top: 25px;
+            position: relative;
+            .diagram-img{
+                width: 1832px;
+                height: 1448px;
+
+            }
+        }
+
+    }
+
+</style>

+ 0 - 14
src/views/xjc-integratedmachine/decision/process_diagram_selecting_subjects.vue

@@ -1,14 +0,0 @@
-<template>
-    高中选科流程图<br>
-
-美工大哥:给我一张图片
-
-</template>
-
-<script setup>
-
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 11
src/views/xjc-integratedmachine/decision/proselection_assessment_knowledge.vue

@@ -1,11 +0,0 @@
-<template>
-    业选择测评知识讲解
-</template>
-
-<script setup>
-
-</script>
-
-<style scoped>
-
-</style>

src/views/xjc-integratedmachine/decision/disciplinary_professional_detail.vue → src/views/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_detail.vue


src/views/xjc-integratedmachine/decision/disciplinary_professional_relevance.vue → src/views/xjc-integratedmachine/decision/subject_major_relevance/subject_major_relevance_index.vue


src/views/xjc-integratedmachine/decision/swot_situation_analysis.vue → src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis.vue


+ 11 - 0
src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_explanation.vue

@@ -0,0 +1,11 @@
+<template>
+    SWOT态势分析知识讲解
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 11 - 0
src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_index.vue

@@ -0,0 +1,11 @@
+<template>
+    SWOT态势分析首页
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 11 - 0
src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_result.vue

@@ -0,0 +1,11 @@
+<template>
+    SWOT态势分析结果
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 0
src/views/xjc-integratedmachine/environment/ai_interview/ai_career_interview_chat.vue

@@ -612,6 +612,7 @@
         };
         audioPlayer.onStop = (audioDatas) => {
             console.log('停止播放');
+            playButtonFlag.value = false;
             // 修改为undefined,下次播放重头开始
             btnStatus === "PLAY" && changeBtnStatus("UNDEFINED");
         };

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 483 - 277
src/views/xjc-integratedmachine/environment/university_details_video.vue


+ 13 - 0
src/views/xjc-integratedmachine/personcenter/decision/advantageous_discipline_list.vue

@@ -0,0 +1,13 @@
+<template>
+    优势学科列表
+</template>
+
+<script>
+    export default {
+        name: "advantageous_discipline_list"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 21 - 0
src/views/xjc-integratedmachine/personcenter/decision/decision_index.vue

@@ -0,0 +1,21 @@
+<template>
+    <div>
+        <div>生涯决策</div>
+        <ul>
+            <li>查看决策风格报告</li>
+            <li>查看优势学科报告</li>
+            <li>查看专业选择测评报告</li>
+            <li>查看决策平衡单报告</li>
+        </ul>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: "decision_index"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 14 - 0
src/views/xjc-integratedmachine/personcenter/decision/decision_making_style_list.vue

@@ -0,0 +1,14 @@
+<template>
+    决策风格列表
+</template>
+
+<script setup>
+    const router = useRouter()
+    const route = useRoute()
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 18 - 0
src/views/xjc-integratedmachine/personcenter/environment/environment_index.vue

@@ -0,0 +1,18 @@
+<template>
+    <div>
+        <div>环境探索</div>
+        <ul>
+           <li>收藏的高校</li>
+           <li>收藏的专业</li>
+           <li>收藏的职业</li>
+        </ul>
+    </div>
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 2 - 2
src/views/xjc-platform/personcenter/career_decision.vue

@@ -1,8 +1,8 @@
 <template>
-    生涯决策
+    环境收藏职业
 </template>
 
-<script setup>
+<script>
 
 </script>
 

+ 2 - 2
src/views/xjc-platform/personcenter/environment_exploration.vue

@@ -1,8 +1,8 @@
 <template>
-    环境探索
+    环境收藏专业
 </template>
 
-<script setup>
+<script>
 
 </script>
 

src/views/xjc-platform/personcenter/environmental_collection_university.vue → src/views/xjc-integratedmachine/personcenter/environment/environmental_collection_university.vue


+ 28 - 0
src/views/xjc-integratedmachine/personcenter/index.vue

@@ -0,0 +1,28 @@
+<template>
+    <div>
+        个人中心
+        <el-button @click="jumpTo('/xjc-integratedmachine/personcenter/wakeup/wakeup_index')">生涯唤醒</el-button>
+        <el-button @click="jumpTo('/xjc-integratedmachine/personcenter/recognize/recognize_index')">自我认知</el-button>
+        <el-button @click="jumpTo('/xjc-integratedmachine/personcenter/environment/environment_index')">环境探索</el-button>
+        <el-button @click="jumpTo('/xjc-integratedmachine/personcenter/decision/decision_index')">生涯决策</el-button>
+        <el-button @click="jumpTo('/xjc-integratedmachine/personcenter/plan/plan_index')">规划管理</el-button>
+        <el-button @click="jumpTo('')">生涯护照</el-button>
+        <el-button @click="jumpTo('/xjc-integratedmachine/personcenter/info/info_index')">账号信息</el-button>
+    </div>
+</template>
+
+<script setup>
+
+    const router = useRouter();
+
+    function jumpTo(path) {
+        router.push({
+            path: path
+        })
+    }
+
+</script>
+
+<style scoped>
+
+</style>

+ 20 - 0
src/views/xjc-integratedmachine/personcenter/info/info_index.vue

@@ -0,0 +1,20 @@
+<template>
+    <div>
+        <div>账号信息</div>
+        <ul>
+            <li>个人邮箱</li>
+            <li>修改密码</li>
+            <li>设置密保问题</li>
+        </ul>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: "info_index"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 21 - 0
src/views/xjc-integratedmachine/personcenter/plan/plan_index.vue

@@ -0,0 +1,21 @@
+<template>
+    <div>
+        <div>规划管理</div>
+        <ul>
+            <li>查看生涯规划书</li>
+            <li>查看时间管理测评报告</li>
+            <li>查看自控力测评报告</li>
+            <li>查看成熟度发展报告</li>
+        </ul>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: "plan_index"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 0
src/views/xjc-integratedmachine/personcenter/recognize/character_detail.vue

@@ -0,0 +1,13 @@
+<template>
+    性格探索详情页
+</template>
+
+<script>
+    export default {
+        name: "character_list"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 0
src/views/xjc-integratedmachine/personcenter/recognize/character_list.vue

@@ -0,0 +1,13 @@
+<template>
+    性格探索列表页
+</template>
+
+<script>
+    export default {
+        name: "character_list"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 1
src/views/xjc-integratedmachine/decision/edecision_style_test.vue

@@ -1,5 +1,5 @@
 <template>
-    决策风格测试
+    兴趣探索详情
 </template>
 
 <script setup>

+ 1 - 1
src/views/xjc-integratedmachine/decision/decision_balance_sheet.vue

@@ -1,5 +1,5 @@
 <template>
-    决策平衡单
+    兴趣探索列表
 </template>
 
 <script setup>

+ 19 - 0
src/views/xjc-integratedmachine/personcenter/recognize/recognize_index.vue

@@ -0,0 +1,19 @@
+<template>
+    <div>
+        <div>自我认知</div>
+        <ul>
+           <li>查看兴趣探索报告</li>
+           <li>查看性格探索报告</li>
+           <li>查看能力探索探索报告</li>
+           <li>查看价值观报告</li>
+        </ul>
+    </div>
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 0
src/views/xjc-integratedmachine/personcenter/wakeup/career_maturity_detail.vue

@@ -0,0 +1,13 @@
+<template>
+    生涯成熟度详情页
+</template>
+
+<script>
+    export default {
+        name: "career_maturity_detail"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 0
src/views/xjc-integratedmachine/personcenter/wakeup/career_maturity_list.vue

@@ -0,0 +1,13 @@
+<template>
+    生涯成熟度列表
+</template>
+
+<script>
+    export default {
+        name: "career_maturity_list"
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 1
src/views/xjc-integratedmachine/decision/intelligent_selection_subjects.vue

@@ -1,5 +1,5 @@
 <template>
-    智能选科
+    彩虹图详情页
 </template>
 
 <script setup>

src/views/xjc-platform/personcenter/rainbow_chartlist.vue → src/views/xjc-integratedmachine/personcenter/wakeup/rainbow_chart_list.vue


+ 17 - 0
src/views/xjc-integratedmachine/personcenter/wakeup/wakeup_index.vue

@@ -0,0 +1,17 @@
+<template>
+    <div>
+        <div>生涯唤醒</div>
+        <ul>
+           <li>查看生涯彩虹图</li>
+           <li>查看生涯成熟度报告</li>
+        </ul>
+    </div>
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 981 - 2
src/views/xjc-integratedmachine/plan/aim/aim_management_index.vue

@@ -1,11 +1,990 @@
 <template>
-    目标管理首页
+  <div class="maturity-game-page">
+    <head-component :headinfo="headinfo"></head-component>
+    <div class="page-content">
+      <div class="pyramid-container">
+        <div class="lbline l1"></div>
+        <div class="lbline l2"></div>
+        <div class="lbline l3"></div>
+        <div class="lbline l4"></div>
+        <div class="lbline l5"></div>
+        <div class="lbline l6"></div>
+        <div class="lbline l7"></div>
+        <div class="lbline l8"></div>
+        <div class="lbline l9"></div>
+        <div class="lbline l10"></div>
+        <div class="lbline l11"></div>
+        <div class="lbline l12"></div>
+        <div class="lbline l13"></div>
+        <div class="lbline l14"></div>
+        <!-- 长期目标层 -->
+        <div class="pyramid-layer layer-1">
+          <div
+            class="goal-box"
+            :class="longTermGoal ? 'filled' : 'empty'"
+            @dragover.prevent
+            @drop="onDrop('longTerm', $event)"
+            :data-drop-target="'longTerm'"
+          >
+            {{ longTermGoal || "长期目标" }}
+          </div>
+        </div>
+
+        <!-- 中期目标层 -->
+        <div class="pyramid-layer layer-2">
+          <div
+            v-for="(goal, index) in midTermGoals"
+            :key="'mid-' + index"
+            class="goal-box"
+            :class="goal ? 'filled' : 'empty'"
+            @dragover.prevent
+            @drop="onDrop('midTerm' + (index + 1), $event)"
+            :data-drop-target="'midTerm' + (index + 1)"
+          >
+            {{ goal || `中期目标${index + 1}` }}
+          </div>
+        </div>
+
+        <!-- 短期目标层 -->
+        <div class="pyramid-layer layer-3">
+          <div
+            v-for="(goal, index) in shortTermGoals"
+            :key="'short-' + index"
+            class="goal-box"
+            :class="goal ? 'filled' : 'empty'"
+            @dragover.prevent
+            @drop="onDrop('shortTerm' + (index + 1), $event)"
+            :data-drop-target="'shortTerm' + (index + 1)"
+          >
+            {{ goal || `短期目标${index + 1}` }}
+          </div>
+        </div>
+
+        <!-- 小目标层 -->
+        <div class="pyramid-layer layer-4">
+          <div
+            v-for="(goal, index) in smallGoals"
+            :key="'small-' + index"
+            class="goal-box"
+            :class="goal ? 'filled' : 'empty'"
+            @dragover.prevent
+            @drop="onDrop('small' + (index + 1), $event)"
+            :data-drop-target="'small' + (index + 1)"
+          >
+            {{ goal || `小目标${index + 1}` }}
+          </div>
+        </div>
+      </div>
+      <div
+        style="
+          width: 100%;
+          height: 8px;
+          background: rgb(173 173 173);
+          border-top: 3px solid #fff;
+        "
+      ></div>
+      <div class="action-row">
+        <el-button type="success">返回上一级</el-button>
+        <p class="instruction">
+          请选择一项你想实现的长期目标,并将其拖拽到目标金字塔中相应位置。
+        </p>
+      </div>
+
+      <div class="goal-options">
+        <div
+          v-for="(option, index) in goalOptions"
+          :key="'goal-option-' + index"
+          class="goal-btn"
+          :class="{ dragging: isDragging && currentDragItem === option.text }"
+          draggable="true"
+          @dragstart="onDragStart($event, option.text)"
+          @touchstart="onTouchStart($event, option.text, option)"
+          @touchmove="onTouchMove($event)"
+          @touchend="onTouchEnd($event, option)"
+        >
+          {{ option.text }}
+        </div>
+      </div>
+
+      <!-- 拖拽时的虚拟图 -->
+      <div
+        v-if="isDragging"
+        class="drag-ghost"
+        :style="ghostStyle"
+        ref="dragGhost"
+      >
+        {{ currentDragItem }}
+      </div>
+
+      <drag_component></drag_component>
+    </div>
+  </div>
 </template>
 
 <script setup>
+import headComponent from "@/views/xjc-integratedmachine/components/head_component.vue";
+import drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
+import { onMounted, watch, nextTick } from "vue";
+
+const router = useRouter();
+
+const headinfo = ref({});
+const draggedItem = ref(null);
+
+// 移动端拖拽相关状态
+const isDragging = ref(false);
+const currentDragItem = ref(null);
+const dragStartPos = ref({ x: 0, y: 0 });
+const currentDropTarget = ref(null);
+const dragGhost = ref(null);
+const ghostStyle = ref({
+  position: "fixed",
+  left: "0px",
+  top: "0px",
+  transform: "translate(-50%, -50%)",
+  zIndex: 9999,
+  pointerEvents: "none",
+});
+
+function dragStart(event) {
+  draggedItem.value = event.target;
+}
+
+function drop(event) {
+  event.preventDefault(); // 防止默认处理(例如打开链接)
+  if (event.target !== draggedItem.value) {
+    const target = event.target; // 获取放置的目标元素
+    const item = draggedItem.value; // 获取被拖拽的元素
+    // 交换位置或进行其他操作
+    item.parentNode.insertBefore(item, target); // 将被拖拽的元素插入到目标元素之前
+  }
+}
+
+function setHeadinfo() {
+  headinfo.value = {
+    title: "目标管理",
+    user: {
+      avatar: "头像路径",
+      nickName: "张三",
+    },
+    backUrl: "/xjc-integratedmachine/wakeup/index",
+    backUrlUse: true,
+  };
+}
+onMounted(() => {
+  setHeadinfo();
+});
+
+function jumpTo(path) {
+  router.push({
+    path: path,
+    query: { name: 123 },
+  });
+}
+
+// lb
+const longTermGoal = ref("");
+const midTermGoals = ref(["", ""]);
+const shortTermGoals = ref(["", "", "", ""]);
+const smallGoals = ref(["", "", "", "", "", "", "", ""]);
+
+// 目标选项数据
+const goalOptions = ref([
+  {
+    id: 1,
+    text: "考上国内双一流A类高校",
+    category: "education",
+  },
+  {
+    id: 2,
+    text: "健康生活模式",
+    category: "health",
+  },
+  {
+    id: 3,
+    text: "留学",
+    category: "education",
+  },
+  {
+    id: 4,
+    text: "创业成功",
+    category: "career",
+  },
+  {
+    id: 5,
+    text: "学会一门新技能",
+    category: "personal",
+  },
+  {
+    id: 6,
+    text: "财务自由",
+    category: "financial",
+  },
+]);
+
+// 桌面端拖拽
+const onDragStart = (event, goalText) => {
+  event.dataTransfer.setData("text/plain", goalText);
+};
+
+// 移动端触摸拖拽
+const onTouchStart = (event, goalText, obj) => {
+  console.log(event, obj, 33);
+  event.preventDefault();
+  isDragging.value = true;
+  currentDragItem.value = goalText;
+
+  const touch = event.touches[0];
+  dragStartPos.value = {
+    x: touch.clientX,
+    y: touch.clientY,
+  };
+
+  // 初始化虚拟图位置
+  ghostStyle.value.left = touch.clientX + "px";
+  ghostStyle.value.top = touch.clientY + "px";
+
+  // 添加视觉反馈
+  event.currentTarget.style.opacity = "0.5";
+  event.currentTarget.style.transform = "scale(0.95)";
+};
+
+const onTouchMove = (event) => {
+  if (!isDragging.value) return;
+
+  event.preventDefault();
+  const touch = event.touches[0];
+
+  // 更新虚拟图位置
+  ghostStyle.value.left = touch.clientX + "px";
+  ghostStyle.value.top = touch.clientY + "px";
+
+  // 获取触摸点下的元素
+  const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);
+
+  // 清除之前的高亮
+  document.querySelectorAll(".goal-box.drop-highlight").forEach((el) => {
+    el.classList.remove("drop-highlight");
+  });
 
+  // 检查是否是有效的放置目标
+  if (
+    elementBelow &&
+    elementBelow.classList.contains("goal-box") &&
+    elementBelow.dataset.dropTarget
+  ) {
+    elementBelow.classList.add("drop-highlight");
+    currentDropTarget.value = elementBelow.dataset.dropTarget;
+  } else {
+    currentDropTarget.value = null;
+  }
+};
+
+const onTouchEnd = (event, obj) => {
+  console.log(obj, 22);
+  if (!isDragging.value) return;
+
+  event.preventDefault();
+
+  // 恢复原始样式
+  event.currentTarget.style.opacity = "";
+  event.currentTarget.style.transform = "";
+
+  // 清除高亮
+  document.querySelectorAll(".goal-box.drop-highlight").forEach((el) => {
+    el.classList.remove("drop-highlight");
+  });
+
+  // 如果有有效的放置目标,执行放置逻辑
+  if (currentDropTarget.value && currentDragItem.value) {
+    handleDrop(currentDropTarget.value, currentDragItem.value);
+  }
+
+  // 重置状态
+  isDragging.value = false;
+  currentDragItem.value = null;
+  currentDropTarget.value = null;
+};
+
+const handleDrop = (target, goalText) => {
+  console.log(target, goalText, "mobile drop");
+  switch (target) {
+    case "longTerm":
+      longTermGoal.value = goalText;
+      document.querySelector(".l1").style.border = "2px solid #00754d";
+      document.querySelector(".l2").style.border = "2px solid #00754d";
+      break;
+    case "midTerm1":
+      midTermGoals.value[0] = goalText;
+      document.querySelector(".l3").style.border = "2px solid #00754d";
+      document.querySelector(".l4").style.border = "2px solid #00754d";
+      break;
+    case "midTerm2":
+      midTermGoals.value[1] = goalText;
+      document.querySelector(".l5").style.border = "2px solid #00754d";
+      document.querySelector(".l6").style.border = "2px solid #00754d";
+      break;
+    case "shortTerm1":
+      shortTermGoals.value[0] = goalText;
+      document.querySelector(".l7").style.border = "2px solid #00754d";
+      document.querySelector(".l8").style.border = "2px solid #00754d";
+      break;
+    case "shortTerm2":
+      shortTermGoals.value[1] = goalText;
+      document.querySelector(".l9").style.border = "2px solid #00754d";
+      document.querySelector(".l10").style.border = "2px solid #00754d";
+      break;
+    case "shortTerm3":
+      shortTermGoals.value[2] = goalText;
+      document.querySelector(".l11").style.border = "2px solid #00754d";
+      document.querySelector(".l12").style.border = "2px solid #00754d";
+      break;
+    case "shortTerm4":
+      shortTermGoals.value[3] = goalText;
+      document.querySelector(".l13").style.border = "2px solid #00754d";
+      document.querySelector(".l14").style.border = "2px solid #00754d";
+      break;
+    default:
+      if (target.startsWith("small")) {
+        const index = parseInt(target.replace("small", "")) - 1;
+        smallGoals.value[index] = goalText;
+      }
+  }
+  // 输出当前状态
+  console.log("长期目标:", longTermGoal.value);
+  console.log("中期目标:", midTermGoals.value);
+  console.log("短期目标:", shortTermGoals.value);
+  console.log("小目标:", smallGoals.value);
+};
+
+const onDrop = (target, event) => {
+  const goalText = event.dataTransfer.getData("text/plain");
+  handleDrop(target, goalText);
+};
+// ed
 </script>
 
-<style scoped>
+<style scoped lang="scss">
+/* lb */
+.action-row {
+  display: flex;
+  align-items: center; // 垂直居中
+  justify-content: flex-start; // 左对齐,可改为 space-between
+  gap: 20px; // 元素之间的间距
+  margin: 30px 0;
+
+  .el-button {
+    margin-left: 32px;
+    padding: 25px 25px;
+    border-radius: 12px;
+    font-size: 20px; // 按钮字体变大
+  }
+
+  .instruction {
+    margin: 0; // 去掉段落默认 margin
+    font-weight: bold;
+    margin-left: 410px;
+
+    font-size: 22px;
+    color: #00a524;
+  }
+}
+
+.layer-1 .goal-box.empty {
+  border: 4px dashed #e8d344;
+}
+.layer-1 .goal-box.filled {
+  border: 4px solid #e8d344;
+}
+
+.layer-2 .goal-box.empty {
+  border: 4px dashed #00754d;
+}
+.layer-2 .goal-box.filled {
+  border: 4px solid #e8d344;
+}
+
+.layer-3 .goal-box.empty {
+  border: 4px dashed #00754d;
+}
+.layer-3 .goal-box.filled {
+  border: 4px solid #e8d344;
+}
+
+.layer-4 .goal-box.empty {
+  border: 4px dashed #00754d;
+}
+.layer-4 .goal-box.filled {
+  border: 4px solid #3ff032;
+}
+
+// 移动端拖拽相关样式
+.goal-box.drop-highlight {
+  background: rgba(255, 255, 0, 0.3) !important;
+  border-color: #ffeb3b !important;
+  transform: scale(1.02);
+}
+
+.goal-btn.dragging {
+  opacity: 0.7;
+  transform: scale(1.05);
+}
+
+// 增强移动端触摸体验
+.goal-btn {
+  touch-action: none; // 防止页面滚动
+  user-select: none; // 防止文本选择
+}
+
+.goal-box {
+  touch-action: none;
+  user-select: none;
+}
+
+/* 拖拽虚拟图样式 */
+.drag-ghost {
+  padding: 15px 20px;
+  border: 3px solid #4caf50;
+  border-radius: 25px;
+  background: rgba(76, 175, 80, 0.9);
+  color: white;
+  font-size: 18px;
+  font-weight: bold;
+  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
+  backdrop-filter: blur(10px);
+  animation: ghostPulse 1s ease-in-out infinite alternate;
+  white-space: nowrap;
+  max-width: 250px;
+  text-align: center;
+}
+
+@keyframes ghostPulse {
+  0% {
+    transform: translate(-50%, -50%) scale(0.95);
+    box-shadow: 0 8px 25px rgba(76, 175, 80, 0.4);
+  }
+  100% {
+    transform: translate(-50%, -50%) scale(1.05);
+    box-shadow: 0 12px 35px rgba(76, 175, 80, 0.6);
+  }
+}
+
+.lbline {
+  width: 130px;
+  border-top: 4px dashed #00754d;
+  /* transition: revert; */
+  position: absolute;
+}
+.l1 {
+  transform: rotate(-16deg);
+  top: 103px;
+  left: 720px;
+}
+.l2 {
+  transform: rotate(16deg);
+  top: 103px;
+  left: 1050px;
+}
+.l3 {
+  transform: rotate(-16deg);
+  top: 275px;
+  left: 239px;
+}
+.l4 {
+  transform: rotate(16deg);
+  top: 273px;
+  left: 640px;
+}
+.l5 {
+  transform: rotate(-16deg);
+  top: 273px;
+  left: 1140px;
+}
+.l6 {
+  transform: rotate(16deg);
+  top: 273px;
+  left: 1490px;
+}
+.l7 {
+  transform: rotate(-16deg);
+  top: 445px;
+  left: 101px;
+}
+.l8 {
+  transform: rotate(16deg);
+  top: 444px;
+  left: 268px;
+}
+.l9 {
+  transform: rotate(-16deg);
+  top: 444px;
+  left: 568px;
+}
+.l10 {
+  transform: rotate(16deg);
+  top: 444px;
+  left: 737px;
+}
+.l11 {
+  transform: rotate(-16deg);
+  top: 444px;
+  left: 1041px;
+}
+.l12 {
+  transform: rotate(16deg);
+  top: 444px;
+  left: 1208px;
+}
+.l13 {
+  transform: rotate(-16deg);
+  top: 444px;
+  left: 1496px;
+}
+.l14 {
+  transform: rotate(16deg);
+  top: 444px;
+  left: 1673px;
+}
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+  font-family: "Arial", "Microsoft YaHei", sans-serif;
+}
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+  font-family: "Arial", "Microsoft YaHei", sans-serif;
+}
+
+body {
+  background: linear-gradient(135deg, #e0f7fa 0%, #bbdefb 100%);
+  min-height: 100vh;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding: 20px;
+  margin: 0; // 确保没有默认边距
+}
+
+// 全局背景覆盖
+html,
+body {
+  margin: 0;
+  padding: 0;
+  background: linear-gradient(to right, #bef3fc, #3dd3f5);
+  min-height: 100vh;
+}
+
+.container {
+  width: 100%;
+  max-width: 900px;
+  background: white;
+  border-radius: 20px;
+  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
+  padding: 30px;
+  position: relative;
+  overflow: hidden;
+}
+
+.title {
+  text-align: center;
+  color: #2c3e50;
+  margin-bottom: 30px;
+  font-size: 24px;
+  font-weight: bold;
+}
+
+/* 金字塔容器 */
+.pyramid-container {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  margin-bottom: 0px;
+  position: relative;
+}
+
+/* 金字塔层 */
+.pyramid-layer {
+  display: flex;
+  justify-content: center;
+  margin-bottom: 32px;
+  position: relative;
+}
+
+/* 长期目标层 - 页面宽度的三分之一 */
+.layer-1 .goal-box.empty {
+  height: 88px;
+}
+.layer-1 .goal-box.filled {
+  height: 88px;
+}
+.layer-1 {
+  width: 33.33%;
+}
+
+/* 中期目标层 - 页面宽度的二分之一 */
+.layer-2 {
+  width: 85%;
+  justify-content: space-between;
+}
+
+/* 短期目标层 - 页面宽度的四分之三 */
+.layer-3 {
+  width: 98%;
+  justify-content: space-between;
+}
+
+/* 小目标层 - 页面宽度的90% */
+.layer-4 {
+  width: 98%;
+  justify-content: space-between;
+}
+
+/* 目标框样式 */
+.goal-box {
+  border-radius: 33px;
+  background: rgba(255, 255, 255, 0.9);
+  text-align: center;
+  cursor: pointer;
+  transition: all 0.3s;
+  position: relative;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 22px;
+  color: #555;
+  height: 140px;
+  z-index: 2;
+}
+
+.goal-box:hover {
+  background: rgba(236, 252, 237, 0.9);
+  transform: translateY(-2px);
+}
+
+.goal-box.empty {
+  margin: 0px 9px;
+  color: #95a5a6;
+  border-style: dashed;
+  width: 100%;
+}
+.layer-2 .goal-box.filled {
+  margin: 0px 9px;
+  width: 100%;
+  color: #fff;
+  border-style: solid;
+  background: #00d89c;
+  font-weight: bold;
+}
+.layer-3 .goal-box.filled {
+  margin: 0px 9px;
+  width: 100%;
+  color: #fff;
+  border-style: solid;
+  background: #00d89c;
+  font-weight: bold;
+}
+.layer-4 .goal-box.filled {
+  margin: 0px 9px;
+  width: 100%;
+  color: #fff;
+  border-style: solid;
+  background: #00d89c;
+  font-weight: bold;
+}
+.goal-box.filled {
+  margin: 0px 9px;
+  width: 100%;
+  color: #fff;
+  border-style: solid;
+  background: #303030;
+  font-weight: bold;
+}
+
+/* 连接线容器 */
+.connections {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 1;
+  pointer-events: none;
+}
+
+/* 连接线 */
+.connection {
+  position: absolute;
+  background: transparent;
+  border-left: 4px dashed #2c8f30;
+}
+
+/* 长期目标到中期目标的连线 */
+.long-to-mid-1,
+.long-to-mid-2 {
+  height: 60px;
+  top: 60px;
+  left: 50%;
+}
+
+.long-to-mid-1 {
+  transform: translateX(-100%) rotate(-30deg);
+  transform-origin: top center;
+}
+
+.long-to-mid-2 {
+  transform: translateX(0) rotate(30deg);
+  transform-origin: top center;
+}
+
+/* 中期目标到短期目标的连线 */
+.mid-to-short-1,
+.mid-to-short-2,
+.mid-to-short-3,
+.mid-to-short-4 {
+  height: 60px;
+  top: 180px;
+}
+
+.mid-to-short-1 {
+  left: 25%;
+  transform: translateX(-150%) rotate(-20deg);
+  transform-origin: top center;
+}
+
+.mid-to-short-2 {
+  left: 25%;
+  transform: translateX(-50%) rotate(20deg);
+  transform-origin: top center;
+}
+
+.mid-to-short-3 {
+  left: 75%;
+  transform: translateX(-150%) rotate(-20deg);
+  transform-origin: top center;
+}
+
+.mid-to-short-4 {
+  left: 75%;
+  transform: translateX(-50%) rotate(20deg);
+  transform-origin: top center;
+}
+
+/* 短期目标到小目标的连线 */
+.short-to-small-1,
+.short-to-small-2,
+.short-to-small-3,
+.short-to-small-4,
+.short-to-small-5,
+.short-to-small-6,
+.short-to-small-7,
+.short-to-small-8 {
+  height: 60px;
+  top: 300px;
+}
+
+.short-to-small-1 {
+  left: 12.5%;
+  transform: translateX(-175%) rotate(-15deg);
+  transform-origin: top center;
+}
+
+.short-to-small-2 {
+  left: 12.5%;
+  transform: translateX(-75%) rotate(15deg);
+  transform-origin: top center;
+}
+
+.short-to-small-3 {
+  left: 37.5%;
+  transform: translateX(-175%) rotate(-15deg);
+  transform-origin: top center;
+}
+
+.short-to-small-4 {
+  left: 37.5%;
+  transform: translateX(-75%) rotate(15deg);
+  transform-origin: top center;
+}
+
+.short-to-small-5 {
+  left: 62.5%;
+  transform: translateX(-175%) rotate(-15deg);
+  transform-origin: top center;
+}
+
+.short-to-small-6 {
+  left: 62.5%;
+  transform: translateX(-75%) rotate(15deg);
+  transform-origin: top center;
+}
+
+.short-to-small-7 {
+  left: 87.5%;
+  transform: translateX(-175%) rotate(-15deg);
+  transform-origin: top center;
+}
+
+.short-to-small-8 {
+  left: 87.5%;
+  transform: translateX(-75%) rotate(15deg);
+  transform-origin: top center;
+}
+
+/* 底部按钮区域 */
+.goal-options {
+  display: flex;
+  flex-wrap: wrap; // 允许换行
+  justify-content: flex-start;
+  height: 191px;
+  overflow-y: auto;
+  gap: 20px;
+  margin-top: 40px;
+  padding: 20px;
+
+  // 可选:自适应居中
+  justify-content: center;
+}
+
+.goal-btn {
+  flex: 0 0 calc(33.33% - 13.33px); // 每行3个,减去gap平均值
+  min-width: 200px; // 保持最小宽度
+  padding: 60px 25px;
+  border: 4px solid #95a5a6;
+  border-radius: 40px;
+  background: #fff;
+  color: #95a5a6;
+  font-size: 22px;
+  text-align: center;
+  cursor: grab;
+  box-sizing: border-box;
+}
+
+.goal-btn:hover {
+  border: 4px solid #a2d532;
+  color: #2c3e50;
+  transform: translateY(-3px);
+  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
+}
+
+.goal-btn:active {
+  cursor: grabbing;
+}
+
+.instruction {
+  text-align: center;
+  margin: 30px 0;
+  color: #00a524;
+  font-weight: bold;
+  font-size: 22px;
+}
+
+/* 装饰元素 */
+.decoration {
+  position: absolute;
+}
+
+.cartoon {
+  top: 20px;
+  left: 20px;
+  width: 80px;
+  height: 80px;
+  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><circle cx="50" cy="40" r="30" fill="%23FFD54F"/><circle cx="40" cy="35" r="5" fill="white"/><circle cx="60" cy="35" r="5" fill="white"/><path d="M35 55 Q50 65 65 55" stroke="%23E57373" stroke-width="3" fill="none"/></svg>')
+    no-repeat center;
+  background-size: contain;
+}
+
+.robot {
+  bottom: 20px;
+  right: 20px;
+  width: 80px;
+  height: 126px;
+  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><circle cx="50" cy="30" r="20" fill="%234caf50"/><rect x="30" y="50" width="40" height="40" rx="5" fill="%234caf50"/><circle cx="40" cy="60" r="5" fill="white"/><circle cx="60" cy="60" r="5" fill="white"/></svg>')
+    no-repeat center;
+  background-size: contain;
+}
+
+@media (max-width: 768px) {
+  .goal-options {
+    padding: 15px;
+    gap: 15px;
+
+    // 移动端滚动条隐藏
+    scrollbar-width: none; // Firefox
+    -ms-overflow-style: none; // IE
+
+    &::-webkit-scrollbar {
+      display: none; // Chrome/Safari
+    }
+  }
+
+  .goal-btn {
+    width: 30%; // 移动端也保持原来的宽度
+    min-width: 200px; // 保持原来的最小宽度
+    padding: 40px 20px;
+    font-size: 18px;
+  }
+
+  .layer-2,
+  .layer-3,
+  .layer-4 {
+    flex-wrap: wrap;
+    height: auto;
+    justify-content: center;
+  }
+
+  .goal-box {
+    flex: 1;
+    min-width: 120px;
+  }
+
+  .connections {
+    display: none;
+  }
+}
+/*ed*/
+
+.maturity-game-page {
+  //   background: url("@/assets/images/wakeup/maturity/maturity-game-bg.png")
+  //     no-repeat;
+  background: linear-gradient(to right, #bef3fc, #3dd3f5);
+  background-attachment: fixed;
+  z-index: 10;
+  width: 100%;
+  min-height: 100vh;
+  position: relative;
+
+  .page-content {
+    width: 100%;
+    position: relative;
+    padding-top: 123px;
+    min-height: calc(100vh - 123px);
+    padding-bottom: 0px; // 添加底部内边距防止内容贴边
 
+    .top {
+      width: 100%;
+      height: 212px;
+      display: flex;
+      justify-content: center;
+      margin-top: 104px;
+      img {
+        width: 864px;
+        height: 212px;
+      }
+    }
+    .bottom {
+      width: 100%;
+      height: 248px;
+      display: flex;
+      justify-content: space-around;
+      margin-top: 186px;
+      img {
+        width: 398px;
+        height: 248px;
+      }
+    }
+  }
+}
 </style>

src/views/xjc-integratedmachine/plan/career_maturity_retest_evaluation.vue → src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment.vue


src/views/xjc-integratedmachine/plan/career_maturity_retest_evaluation_webreport.vue → src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment_webreport.vue


src/views/xjc-integratedmachine/plan/explanation_career_knowledge.vue → src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_explanation.vue


+ 11 - 0
src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_index.vue

@@ -0,0 +1,11 @@
+<template>
+    生涯成熟度复测测评
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 0 - 0
src/views/xjc-integratedmachine/plan/index.vue


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů