Browse Source

解决合并冲突

liubing 1 month ago
parent
commit
a2b0dfafb3
91 changed files with 2023 additions and 839 deletions
  1. 17 0
      src/App.vue
  2. 5 5
      src/api/xjc-integratedmachine/environment/common.js
  3. 7 0
      src/api/xjc-integratedmachine/plan/careeplan.js
  4. 9 0
      src/api/xjc-integratedmachine/plan/estimate.js
  5. BIN
      src/assets/images/decision/index/card1.png
  6. BIN
      src/assets/images/decision/index/card10.png
  7. BIN
      src/assets/images/decision/index/card2.png
  8. BIN
      src/assets/images/decision/index/card3.png
  9. BIN
      src/assets/images/decision/index/card4.png
  10. BIN
      src/assets/images/decision/index/card5.png
  11. BIN
      src/assets/images/decision/index/card6.png
  12. BIN
      src/assets/images/decision/index/card7.png
  13. BIN
      src/assets/images/decision/index/card8.png
  14. BIN
      src/assets/images/decision/index/card9.png
  15. BIN
      src/assets/images/environment/career/01.png
  16. BIN
      src/assets/images/environment/contrast-btn.png
  17. BIN
      src/assets/images/environment/contrast/career/01-active.png
  18. BIN
      src/assets/images/environment/contrast/career/01.png
  19. BIN
      src/assets/images/environment/contrast/career/02-active.png
  20. BIN
      src/assets/images/environment/contrast/career/02.png
  21. BIN
      src/assets/images/wakeup/maturity/report-icon1-active.png
  22. BIN
      src/assets/images/wakeup/maturity/report-icon1.png
  23. BIN
      src/assets/images/wakeup/maturity/report-icon2-active.png
  24. BIN
      src/assets/images/wakeup/maturity/report-icon2.png
  25. BIN
      src/assets/images/wakeup/maturity/report-icon3-active.png
  26. BIN
      src/assets/images/wakeup/maturity/report-icon3.png
  27. 3 0
      src/components/Pagination/index.vue
  28. 83 49
      src/router/router_decision.js
  29. 5 0
      src/router/router_environment.js
  30. 228 0
      src/router/router_plan.js
  31. 2 1
      src/utils/request.js
  32. 47 0
      src/views/xjc-integratedmachine/components/ai_rabit_component.vue
  33. 44 68
      src/views/xjc-integratedmachine/components/collection_component.vue
  34. 0 63
      src/views/xjc-integratedmachine/components/dialog_component.vue
  35. 194 8
      src/views/xjc-integratedmachine/components/head_component.vue
  36. 8 10
      src/views/xjc-integratedmachine/components/xjc_pagination.vue
  37. 0 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_assessment.vue
  38. 0 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_pdfreport.vue
  39. 0 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantageous_discipline_webreport.vue
  40. 0 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_explanation.vue
  41. 13 0
      src/views/xjc-integratedmachine/decision/advantageous_discipline/advantages_assessment_index.vue
  42. 1 1
      src/views/xjc-integratedmachine/decision/decision_balance_sheet.vue
  43. 11 0
      src/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_explanation.vue
  44. 11 0
      src/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet_index.vue
  45. 0 21
      src/views/xjc-integratedmachine/decision/decision_making_style.vue
  46. 14 0
      src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style.vue
  47. 14 0
      src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_explanation.vue
  48. 11 0
      src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_index.vue
  49. 14 0
      src/views/xjc-integratedmachine/decision/decision_making_style/decision_making_style_webreport.vue
  50. 0 12
      src/views/xjc-integratedmachine/decision/decision_making_style_test.vue
  51. 120 17
      src/views/xjc-integratedmachine/decision/index.vue
  52. 0 0
      src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment.vue
  53. 11 0
      src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_explanation.vue
  54. 13 0
      src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_index.vue
  55. 0 0
      src/views/xjc-integratedmachine/decision/major_selection_assessment/major_selection_assessment_webreport.vue
  56. 0 0
      src/views/xjc-integratedmachine/decision/process_diagram/process_diagram_selecting_subjects.vue
  57. 0 11
      src/views/xjc-integratedmachine/decision/proselection_assessment_knowledge.vue
  58. 0 0
      src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis.vue
  59. 11 0
      src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_explanation.vue
  60. 1 1
      src/views/xjc-integratedmachine/decision/intelligent_selection_subjects.vue
  61. 11 0
      src/views/xjc-integratedmachine/decision/swot_situation_analysis/swot_situation_analysis_result.vue
  62. 1 0
      src/views/xjc-integratedmachine/environment/ai_interview/ai_career_interview_chat.vue
  63. 3 3
      src/views/xjc-integratedmachine/environment/career_story1.vue
  64. 38 106
      src/views/xjc-integratedmachine/environment/constrast_career.vue
  65. 33 38
      src/views/xjc-integratedmachine/environment/contrast_major.vue
  66. 40 25
      src/views/xjc-integratedmachine/environment/contrast_university.vue
  67. 29 29
      src/views/xjc-integratedmachine/environment/mycos_info.vue
  68. 25 14
      src/views/xjc-integratedmachine/environment/occ_details_video.vue
  69. 246 7
      src/views/xjc-integratedmachine/environment/occdb_interestcode.vue
  70. 189 16
      src/views/xjc-integratedmachine/environment/occdb_interestcode_list.vue
  71. 0 51
      src/views/xjc-integratedmachine/environment/occdb_interestcode_list1.vue
  72. 10 1
      src/views/xjc-integratedmachine/environment/occdb_list.vue
  73. 15 2
      src/views/xjc-integratedmachine/environment/occdb_search_industry.vue
  74. 0 84
      src/views/xjc-integratedmachine/environment/occdb_search_industry1.vue
  75. 10 1
      src/views/xjc-integratedmachine/environment/occdb_search_industry_list.vue
  76. 25 22
      src/views/xjc-integratedmachine/environment/pro_details_video.vue
  77. 13 2
      src/views/xjc-integratedmachine/environment/prodb_search_undergraduate.vue
  78. 40 5
      src/views/xjc-integratedmachine/environment/prodb_specialtylist1.vue
  79. 10 1
      src/views/xjc-integratedmachine/environment/prodb_specialtylist2.vue
  80. 102 85
      src/views/xjc-integratedmachine/environment/query_universitydb_conditions.vue
  81. 21 12
      src/views/xjc-integratedmachine/environment/university_details_video.vue
  82. 9 2
      src/views/xjc-integratedmachine/environment/university_list.vue
  83. 0 0
      src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment.vue
  84. 0 0
      src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_assessment_webreport.vue
  85. 0 0
      src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_explanation.vue
  86. 11 0
      src/views/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_index.vue
  87. 228 53
      src/views/xjc-integratedmachine/plan/develop_career_plan1.vue
  88. 10 8
      src/views/xjc-integratedmachine/plan/index.vue
  89. 5 1
      src/views/xjc-integratedmachine/wakeup/index.vue
  90. 1 1
      src/views/xjc-platform/collection/index.vue
  91. 1 3
      vite.config.js

+ 17 - 0
src/App.vue

@@ -17,5 +17,22 @@ onMounted(() => {
 html,body,p,div{
   font-family: Microsoft YaHei UI, Microsoft YaHei UI;
 }
+/* 更不显眼的滚动条样式 */
+::-webkit-scrollbar {
+  width: 6px;
+  height: 6px;
+}
+
+::-webkit-scrollbar-track {
+  background: transparent;
+}
 
+::-webkit-scrollbar-thumb {
+  background: rgba(136, 136, 136, 0.5);
+  border-radius: 3px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+  background: rgba(85, 85, 85, 0.7);
+}
 </style>

+ 5 - 5
src/api/xjc-integratedmachine/environment/common.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 获取对比实体
+// 获取对比实体 type
 export function getCompareList(data) {
     return request({
         url: '/integratedmachine/smo/compare/list',
@@ -9,7 +9,7 @@ export function getCompareList(data) {
     })
 }
 
-// 添加对比
+// 添加对比 businessId type
 export function addCompare(data) {
     return request({
         url: '/integratedmachine/smo/compare/add',
@@ -27,11 +27,11 @@ export function removeBybusinessId(data) {
     })
 }
 
-// 获取对比数量
+// 获取对比数量 type
 export function getCompareSize(data) {
     return request({
         url: '/integratedmachine/smo/compare/size',
-        method: 'get',
-        params : data
+        method: 'post',
+        data : data
     })
 }

+ 7 - 0
src/api/xjc-integratedmachine/plan/careeplan.js

@@ -15,3 +15,10 @@ export function doSaveCareerplan(data) {
     })
 }
 
+export function finishCareerplan(data) {
+    return request({
+        url: '/integratedmachine/careerplan/finishCareerplan',
+        method: 'post',
+        data : data
+    })
+}

+ 9 - 0
src/api/xjc-integratedmachine/plan/estimate.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function doEstimateSave(data) {
+    return request({
+        url: '/integratedmachine/we/careerplan/doEstimateSave',
+        method: 'post',
+        data : data
+    })
+}

BIN
src/assets/images/decision/index/card1.png


BIN
src/assets/images/decision/index/card10.png


BIN
src/assets/images/decision/index/card2.png


BIN
src/assets/images/decision/index/card3.png


BIN
src/assets/images/decision/index/card4.png


BIN
src/assets/images/decision/index/card5.png


BIN
src/assets/images/decision/index/card6.png


BIN
src/assets/images/decision/index/card7.png


BIN
src/assets/images/decision/index/card8.png


BIN
src/assets/images/decision/index/card9.png


BIN
src/assets/images/environment/career/01.png


BIN
src/assets/images/environment/contrast-btn.png


BIN
src/assets/images/environment/contrast/career/01-active.png


BIN
src/assets/images/environment/contrast/career/01.png


BIN
src/assets/images/environment/contrast/career/02-active.png


BIN
src/assets/images/environment/contrast/career/02.png


BIN
src/assets/images/wakeup/maturity/report-icon1-active.png


BIN
src/assets/images/wakeup/maturity/report-icon1.png


BIN
src/assets/images/wakeup/maturity/report-icon2-active.png


BIN
src/assets/images/wakeup/maturity/report-icon2.png


BIN
src/assets/images/wakeup/maturity/report-icon3-active.png


BIN
src/assets/images/wakeup/maturity/report-icon3.png


+ 3 - 0
src/components/Pagination/index.vue

@@ -115,6 +115,8 @@
     .pagination-container {
         background: #f4f4f4;
         color: #64748b;
+        width:100%;
+        height: 40px;
     }
 
     .pagination-container.hidden {
@@ -127,6 +129,7 @@
     ::v-deep .el-pager li {
         background-color: #f4f4f4; /* 替换为你想要的背景色 */
         color : #64748b;
+        font-size: 30px;
     }
 
     ::v-deep .el-pagination.is-background .btn-next .is-active,

+ 83 - 49
src/router/router_decision.js

@@ -4,41 +4,52 @@ 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/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_test',
-        component: () => import('@/views/xjc-integratedmachine/decision/edecision_style_test.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/edecision_style_webreport',
-        component: () => import('@/views/xjc-integratedmachine/decision/edecision_style_webreport.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'),
     },
+    //决策风格知识讲解
+    {
+        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/edecision_style_webreport',
+        component: () => import('@/views/xjc-integratedmachine/decision/edecision_style_webreport.vue'),
+    },
+
     //根据高校/专业选科目1
     {
         path: '/xjc-integratedmachine/decision/choose_subjects_1',
@@ -49,25 +60,26 @@ 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'),
     },
     //根据科目选专业
     {
@@ -89,35 +101,57 @@ const router = [
         path: '/xjc-integratedmachine/decision/discipline_and_future',
         component: () => import('@/views/xjc-integratedmachine/decision/discipline_and_future.vue'),
     },
-
-
-    //SWOT态势分析
+    //SWOT态势分析首页
+    {
+        path: '/xjc-integratedmachine/decision/swot_situation_analysis_index',
+        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis_index.vue'),
+    },
+    //SWOT态势分析知识讲解
+    {
+        path: '/xjc-integratedmachine/decision/swot_situation_analysis_explanation',
+        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis_explanation.vue'),
+    },
+    //SWOT态势分析结果
+    {
+        path: '/xjc-integratedmachine/decision/swot_situation_analysis_result',
+        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis_result.vue'),
+    },
+    //决策风格测试首页
     {
-        path: '/xjc-integratedmachine/decision/swot_situation_analysis',
-        component: () => import('@/views/xjc-integratedmachine/decision/swot_situation_analysis.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/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/process_diagram_selecting_subjects',
-        component: () => import('@/views/xjc-integratedmachine/decision/process_diagram_selecting_subjects.vue'),
-    }
+        path: '/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet',
+        component: () => import('@/views/xjc-integratedmachine/decision/balance_sheet/decision_balance_sheet.vue'),
+    },
+
 
 
 ]

+ 5 - 0
src/router/router_environment.js

@@ -167,6 +167,11 @@ const router = [
     {
         path: '/xjc-integratedmachine/environment/contrast_major',
         component: () => import('@/views/xjc-integratedmachine/environment/contrast_major.vue'),
+    },
+    //专业对比
+    {
+        path: '/xjc-integratedmachine/environment/contrast_career',
+        component: () => import('@/views/xjc-integratedmachine/environment/constrast_career.vue'),
     }
 ]
 export default {

+ 228 - 0
src/router/router_plan.js

@@ -234,6 +234,234 @@ const router = [
     path: "/xjc-integratedmachine/plan/",
     component: () => import("@/views/xjc-integratedmachine/plan/"),
   },
+
+  //规划管理首页
+  {
+    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,

+ 2 - 1
src/utils/request.js

@@ -55,7 +55,8 @@ service.interceptors.request.use(config => {
             const s_url = sessionObj.url                // 请求地址
             const s_data = sessionObj.data              // 请求数据
             const s_time = sessionObj.time              // 请求时间
-            const interval = 1000                       // 间隔时间(ms),小于此时间视为重复提交
+            const interval = 1000// 间隔时间(ms),小于此时间视为重复提交
+            console.log("s_url",s_url);
             if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
                 const message = '数据正在处理,请勿重复提交'
                 console.warn(`[${s_url}]: ` + message)

+ 47 - 0
src/views/xjc-integratedmachine/components/ai_rabit_component.vue

@@ -0,0 +1,47 @@
+<template>
+  <div class="ai_rabit_component">
+      <div class="ai-rabit">
+        <img src="@/assets/images/wakeup/ai-rabit.png"/>
+      </div>
+<!--    </div>-->
+  </div>
+</template>
+<script setup>
+import {ref, onMounted, onUnmounted} from 'vue';
+
+onMounted(() => {
+});
+
+</script>
+
+
+<style scoped lang="scss">
+.ai_rabit_component{
+position: absolute;
+right: 0px;
+bottom: 20px;
+  .ai-rabit{
+    border: 1px solid;
+    display: flex;
+    align-items: center;
+    .ai-rabit-text{
+      width: 345px;
+      height: 89px;
+      background: #E8EEF7;
+      font-weight: 300;
+      margin-bottom: 20px;
+      font-size: 22px;
+      color: #000000;
+      padding:16px;
+      border-radius: 24px 24px 24px 24px;
+    }
+    img{
+      width: 178px;
+      height: 270px;
+    }
+  }
+}
+
+
+
+</style>

+ 44 - 68
src/views/xjc-integratedmachine/components/collection_component.vue

@@ -7,9 +7,9 @@
     <img @click="cancle_collection" v-if="collectionList.length >= 1" src="@/assets/images/environment/collaged.png">
     <p @click="cancle_collection" v-if="collectionList.length >= 1">取消收藏</p>
   </div>
-    <div class="item-img" >
-      <img v-if="isContrastVal" @click="contrastCancel" src="@/assets/images/environment/contrasted.png">
-      <img v-else @click="contrastAdd" src="@/assets/images/environment/contrast.png">
+    <div class="item-img">
+      <img @click="contrastCancel" v-if="isContrast"  src="@/assets/images/environment/contrasted.png">
+      <img @click="addCompareList" v-else src="@/assets/images/environment/contrast.png">
       <p>对比</p>
     </div>
 </template>
@@ -17,9 +17,11 @@
 <script setup>
 import {addCollection, getCollection, removeCollection} from '@/api/xjc-integratedmachine/environment/university.js'
 import {ElMessage} from "element-plus";
+import { inject } from 'vue';
 import {handleThemeStyle} from "@/utils/theme.js";
 import useSettingsStore from "@/store/modules/settings.js";
 import { defineExpose } from 'vue';
+import {addCompare, removeBybusinessId} from "@/api/xjc-integratedmachine/environment/common.js";
 const props = defineProps({
   collection: {
     contentType: null,
@@ -30,7 +32,7 @@ const props = defineProps({
 })
 
 const collectionList = ref([])
-const isContrastVal = ref(false)
+
 function collection() {
   let data = {
     contentType: props.collection.contentType,
@@ -40,70 +42,35 @@ function collection() {
     queryConnection()
   })
 }
-let SESSION_COLLECT_KEY = 'contrastList'
-function getSource (source){
-  console.log("11111",source);
-  if(props.collection.source === 'pro_details_video' || source ===  'pro_details_video'){
-    SESSION_COLLECT_KEY = 'majorList'
-  }else if(props.collection.source === 'occ_details_video' || source ===  'occ_details_video'){
-    SESSION_COLLECT_KEY = 'occList'
-  }else {
-    SESSION_COLLECT_KEY = 'contrastList'
-  }
-}
-//查询详情中学校是否被加入对比列表
-function isContrast (val,source){
-  let collectArrayStr = window.sessionStorage.getItem(SESSION_COLLECT_KEY);
-  // 如果有值
-  if(collectArrayStr){
-    let collectArray = JSON.parse(collectArrayStr);
-    isContrastVal.value = collectArrayStr.includes(JSON.stringify(val.value));
-  }
-  // 如果没有值
-  else{
-    isContrastVal.value = false;
-  }
-}
+//加入对比
+function addCompareList (){
+  let data = {
+    type: props.collection.contentType,
+    businessId: props.collection.contentId}
+    setTimeout(() => {
+    addCompare(
+        data
+    ).then(resp => {
 
-function contrastAdd(){
-  let contrastArrayStr = sessionStorage.getItem(SESSION_COLLECT_KEY)
-  if(contrastArrayStr){
-    let contrastArray = JSON.parse(contrastArrayStr);
-    if(contrastArray.includes(JSON.stringify(props.collection.contentVal))){
-      ElMessage.error('已加入,不可以在加入对比列表')
-    }else{
-      if(contrastArray.length == 2){
-        ElMessage.error('对比列表已满')
-      }else{
-        contrastArray.push(props.collection.contentVal);
-        window.sessionStorage.setItem(SESSION_COLLECT_KEY,  JSON.stringify(contrastArray));
-        isContrastVal.value = true;
-        ElMessage.success('加入对比成功');
-      }
-    }
-  }
-  // 如果没有值
-  else{
-    let contrastArray = new Array();
-  contrastArray.push(props.collection.contentVal);
-  window.sessionStorage.setItem(SESSION_COLLECT_KEY, JSON.stringify(contrastArray));
-  isContrastVal.value = true;
-  ElMessage.success('加入对比成功');
-  }
+    })
+      parentMethod();
+  }, 700)
 }
-function contrastCancel(){
-  let collectArrayStr = window.sessionStorage.getItem(SESSION_COLLECT_KEY);
-  // 如果有值
-  if(collectArrayStr){
-    let collectArray = JSON.parse(collectArrayStr);
-    if(collectArrayStr.includes(JSON.stringify(props.collection.contentVal))){
-      let index = collectArray.indexOf(props.collection.contentVal);
-      collectArray.splice(index, 1);
-      window.sessionStorage.setItem(SESSION_COLLECT_KEY, JSON.stringify(collectArray));
-      isContrastVal.value = false;
-      ElMessage.success('取消对比成功')
-    }
+
+const parentMethod = inject('parentMethod');
+
+//取消对比
+function contrastCancel (){
+
+  let data = {
+    type: props.collection.contentType,
+    businessId: props.collection.contentId
   }
+  removeBybusinessId(
+      data
+  ).then(resp => {
+    parentMethod();
+  })
 }
 function queryConnection() {
   let data = {
@@ -115,7 +82,7 @@ function queryConnection() {
   })
 }
 onMounted(() => {
-  getSource()
+
 })
 function cancle_collection() {
   let data = {
@@ -125,9 +92,18 @@ function cancle_collection() {
     queryConnection()
   })
 }
+const isContrast = ref(false)
+function getIsContrast(val){
+   console.log("val-------",val.compare)
+  if(val.compare > 0  ){
+    isContrast.value = true
+  }else {
+    isContrast.value = false
+  }
+}
 defineExpose({
-  isContrast,getSource
-})
+  getIsContrast
+});
 
 </script>
 

+ 0 - 63
src/views/xjc-integratedmachine/components/dialog_component.vue

@@ -1,63 +0,0 @@
-<template>
-  <div>
-    <el-dialog v-model="centerDialogVisible" :show-close="false" width="500" center>
-      <div class="dialog-box">
-        {{ dialogInfo.content }}
-      </div>
-      <div class="footer-box">
-        <el-button type="primary" @click=""handClick>
-          {{dialogInfo.confirm}}
-        </el-button>
-        <el-button type="primary" @click="centerDialogVisible = false">
-          关闭
-        </el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script setup>
-import { defineEmit } from 'vue';
-const centerDialogVisible = ref(false)
-const props = defineProps({
-  dialogInfo: {}
-})
-function handClick(){
-  emit('notify');
-}
-const emit = defineEmit(['notify']);
-</script>
-
-
-
-<style scoped lang="scss">
-.dialog-box{
-  width: 463px;
-  height: 188px;
-  font-weight: bold;
-  font-size: 32px;
-  color: #000000;
-  text-align: center;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-.footer-box{
-  width: 100%;
-  display: flex;
-  justify-content: space-around;
-  ::v-deep .el-button:nth-child(1){
-    width: 136px;
-    height: 60px;
-    background: #2BC17B;
-  }
-  ::v-deep .el-button:nth-child(2){
-    width: 136px;
-    height: 60px;
-    background: #FB5451;
-  }
-  ::v-deep .el-button>span{
-    font-size: 24px;
-  }
-}
-</style>

+ 194 - 8
src/views/xjc-integratedmachine/components/head_component.vue

@@ -1,12 +1,25 @@
 <template>
-  <div class="contenter">
-    <div class="head-left">
-      <img
-        class="head-icon"
-        src="@/assets/images/login/login-return.png"
-        @click="backTo"
-        alt="404"
-      />
+    <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>
     </div>
     <!-- 等UI图更新继续画     <div>-->
     <div class="head-title">
@@ -36,6 +49,7 @@
 </template>
 
 <script setup>
+<<<<<<< HEAD
 import { ElMessage } from "element-plus";
 import { defineEmits } from "vue";
 const { proxy } = getCurrentInstance();
@@ -185,6 +199,178 @@ function exit() {
       img {
         width: 85px;
         height: 85px;
+=======
+    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(() => {
+        })
+    }
+    //拿到对比数量
+   function getCompareSizeData (num){
+      console.log("num",num)
+     setTimeout(() => {
+       getCompareSize({
+         type:props.headinfo.contrastType || num
+       }).then(resp => {
+         contrastSize.value =  resp.data
+       })
+     }, 500)
+
+   }
+    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{
+
+          img{
+            width: 85px;
+            height: 85px;
+          }
+        }
+
+>>>>>>> 5b33994a39751a55209a84f426e3274d1d08191d
       }
     }
   }

+ 8 - 10
src/views/xjc-integratedmachine/components/xjc_pagination.vue

@@ -1,13 +1,11 @@
 <template>
-    <div style="width: 100%;height: 100px;">
+    <div class="fenye">
         <pagination v-show="pageProps.total" :total="pageProps.total" v-model:page="pageProps.pageNum"
                     v-model:limit="pageProps.pageSize" @pagination="changePage"/>
     </div>
-
 </template>
 
 <script setup>
-    import {defineExpose} from 'vue';
     import {defineEmits} from "vue";
     import { onMounted} from 'vue';
     const emit = defineEmits(['changePage'])
@@ -27,16 +25,16 @@
         pageProps.value.pageNum = props.pageNum;
         pageProps.value.pageSize = props.pageSize;
     })
-
-
-
     function changePage() {
         emit('changePage', pageProps)
     }
-
-
 </script>
 
-<style scoped>
-
+<style scoped lang="scss">
+.fenye{
+  align-self: center;
+  margin-top: 10px;
+  border-radius: 0px 0px 0px 0px;
+  /*border: 1px solid #E2E8F0;*/
+}
 </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>

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

@@ -1,5 +1,5 @@
 <template>
-    决策平衡单
+    选科决策平衡单
 </template>
 
 <script setup>

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

@@ -0,0 +1,11 @@
+<template>
+    选科决策平衡单知识讲解
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

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

@@ -0,0 +1,11 @@
+<template>
+    选科决策平衡单首页
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+
+</style>

+ 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>

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

@@ -1,33 +1,136 @@
 <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/time/time_management_menu')">
+                </div>
+                <div class="bottom-img">
+                    <!--学科专业相关性-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card6.png" @click="jumpTo('/xjc-integratedmachine/decision/self_control/self_control/self_control_index')">
+                    <!--学科与未来专业-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card7.png" @click="jumpTo('/xjc-integratedmachine/decision/career_maturity/career_maturity_retest_index')">
+                    <!--Swot态势分析-->
+                    <img class="common-img-button" src="@/assets/images/decision/index/card8.png" @click="jumpTo('/xjc-integratedmachine/decision/career_maturity/career_maturity_retest_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>
+
+

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


src/views/xjc-integratedmachine/decision/process_diagram_selecting_subjects.vue → src/views/xjc-integratedmachine/decision/process_diagram/process_diagram_selecting_subjects.vue


+ 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/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>

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

@@ -1,5 +1,5 @@
 <template>
-    智能选科
+    SWOT态势分析首页
 </template>
 
 <script setup>

+ 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");
         };

+ 3 - 3
src/views/xjc-integratedmachine/environment/career_story1.vue

@@ -137,7 +137,7 @@
 
     const queryParams = ref({
         pageNum: 1,
-        pageSize: 5,
+        pageSize: 3,
         type: '5'
     })
     const loading = ref(false)
@@ -191,13 +191,13 @@
 
         .page-img-box {
             width: 1832px;
-            height: 922px;
+            height: 860px;
             margin-top: 13px;
             background: rgba(255, 255, 255, 0.4);
             border-radius: 35px 35px 35px 35px;
             display: flex;
             flex-direction: column;
-            overflow: auto;
+            //overflow: auto;
 
             .item-box {
                 width: 1750px;

+ 38 - 106
src/views/xjc-integratedmachine/environment/constrast_career.vue

@@ -5,29 +5,14 @@
       <div class="content-left">
         <div class="tab-box">
           <div :class="[onePage?'item-box-active':'item-box']" @click="showPage(1)">
-            <img v-if="onePage" src="@/assets/images/environment/contrast/01-active.png">
-            <img v-else src="@/assets/images/environment/contrast/01.png">
+            <img v-if="onePage" src="@/assets/images/environment/contrast/career/01-active.png">
+            <img v-else src="@/assets/images/environment/contrast/career/01.png">
             基本信息
           </div>
           <div :class="[twoPage?'item-box-active':'item-box']" @click="showPage(2)">
-            <img v-if="twoPage" src="@/assets/images/environment/contrast/02-active.png">
-            <img v-else src="@/assets/images/environment/contrast/02.png">
-            主修课程
-          </div>
-          <div :class="[threePage?'item-box-active':'item-box']" @click="showPage(3)">
-            <img v-if="threePage" src="@/assets/images/environment/contrast/03.png">
-            <img v-else src="@/assets/images/environment/contrast/03-active.png">
-            专业解读
-          </div>
-          <div :class="[fourPage?'item-box-active':'item-box']" @click="showPage(4)">
-            <img v-if="fourPage" src="@/assets/images/environment/contrast/04-active.png">
-            <img v-else src="@/assets/images/environment/contrast/04.png">
-            就业前景与方向
-          </div>
-          <div :class="[fivePage?'item-box-active':'item-box']" @click="showPage(5)">
-            <img v-if="fivePage" src="@/assets/images/environment/contrast/05-active.png">
-            <img v-else src="@/assets/images/environment/contrast/05.png">
-            开设院校
+            <img v-if="twoPage" src="@/assets/images/environment/contrast/career/02-active.png">
+            <img v-else src="@/assets/images/environment/contrast/career/02.png">
+            工作内容
           </div>
         </div>
       </div>
@@ -37,39 +22,35 @@
             <thead>
             <tr class="one-tr">
               <td class="first-title">专业名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
+              <td v-for="(item,index) in contrastData" :key="index">{{ item.occupation.name }}</td>
             </tr>
             </thead>
             <tbody>
             <tr v-show="false"></tr>
             <tr class="two-tr">
-              <td>专业代码</td>
+              <td>职业兴趣代码</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p style="text-align: center">{{ item.code }}</p>
+                <p style="text-align: center">{{ item.occupation.interestcode }}</p>
               </td>
             </tr>
             <tr>
-              <td>学科门类</td>
+              <td>行业分类</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p style="text-align: center">{{ item.subjectcategories }}</p>
+                <p style="text-align: center;font-size:32px;">{{ item.occupation.industryname }}</p>
               </td>
             </tr>
             <tr>
-              <td>一级学科</td>
+              <td>职业定义</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p style="text-align: center">{{ item.firstsubject }}</p>
+                <p style="padding:0 15px;text-indent: 2em;" v-html="item.occupation.definition"></p>
               </td>
             </tr>
             <tr>
-              <td>授权学位</td>
-              <td v-for="(item,index) in contrastData" :key="index" >
-                <p>{{ item.degree }}</p>
+              <td>相关专业</td>
+              <td v-for="(item,index) in contrastData" :key="index">
+                <p v-for="(ite,index) in item.bk_list">{{ ite.name }}</p>
               </td>
             </tr>
-            <tr>
-              <td>修学年限</td>
-              <td v-for="(item,index) in contrastData" :key="index" class="text-td">{{ item.years }}</td>
-            </tr>
             </tbody>
           </table>
         </div>
@@ -77,79 +58,16 @@
           <table class="table table-bordered">
             <thead>
             <tr class="one-tr">
-              <td class="first-title">专业名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
-            </tr>
-            </thead>
-            <tbody>
-            <tr v-show="false"></tr>
-            <tr class="two-tr">
-              <td>主修课程</td>
-              <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p style="text-align: center" v-html="item.course"></p>
-              </td>
-            </tr>
-            </tbody>
-          </table>
-        </div>
-        <div class="three-page" v-show="threePage">
-          <table class="table table-bordered">
-            <thead>
-            <tr class="one-tr">
-              <td class="first-title">专业名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
-            </tr>
-            </thead>
-            <tbody>
-            <tr v-show="false"></tr>
-            <tr class="two-tr">
-              <td>专业解读</td>
-              <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <div class="info" v-if="!item.describe"  v-html="item.describe"></div>
-                <div class="info" v-else >暂无</div>
-
-                <!--                <p style="text-align: center" >{{ item.code }}</p>-->
-              </td>
-            </tr>
-            </tbody>
-          </table>
-        </div>
-        <div class="four-page" v-show="fourPage">
-          <table class="table table-bordered">
-            <thead>
-            <tr class="one-tr">
-              <td class="first-title">专业名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
+              <td class="first-title">职业名称</td>
+              <td v-for="(item,index) in contrastData" :key="index">{{ item.occupation.name }}</td>
             </tr>
             </thead>
             <tbody>
             <tr v-show="false"></tr>
             <tr class="two-tr">
-              <td>就业前景与方向</td>
+              <td>工作内容</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <div class="info"  v-html="item.describe"></div>
-                <!--                <p style="text-align: center" >{{ item.code }}</p>-->
-              </td>
-            </tr>
-            </tbody>
-          </table>
-        </div>
-        <div class="five-page" v-show="fivePage">
-          <table class="table table-bordered">
-            <thead>
-            <tr class="one-tr">
-              <td class="first-title">专业名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
-            </tr>
-            </thead>
-            <tbody>
-            <tr v-show="false"></tr>
-            <tr class="two-tr">
-              <td>开设院校</td>
-              <td class="school-box" v-for="(item,index) in contrastData" :key="index">
-                <div class="info"  v-for="(item,index) in item.kaishe_list">
-                  {{ item.name }}
-                </div>
+                <p style="font-size:32px;padding:0 15px;text-indent: 2em;text-align: left;" v-html="item.occupation.definition"></p>
               </td>
             </tr>
             </tbody>
@@ -167,6 +85,8 @@ import headComponent from '@/views/xjc-integratedmachine/components/head_compone
 import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
 import {ref} from "vue";
 import {getUniversityByKeyword} from "@/api/xjc-integratedmachine/environment/university.js";
+import {getCompareList} from "@/api/xjc-integratedmachine/environment/common.js";
+import {occupationDetail} from "@/api/xjc-integratedmachine/environment/occupation.js";
 
 
 const router = useRouter()
@@ -198,7 +118,9 @@ function setHeadinfo() {
       nickName: '张三'
     },
     backUrl: '/xjc-integratedmachine/environment/index',
-    homeUrl: '/xjc-integratedmachine/environment/index'
+    homeUrl: '/xjc-integratedmachine/environment/index',
+    contrastPage:true,
+    contrastType:'occ'
   }
 }
 
@@ -251,14 +173,24 @@ function backTo() {
 
 onMounted(() => {
   setHeadinfo()
-
+  getData();
 })
 
 const contrastData = ref({})
 function getData() {
-  const contrastList = sessionStorage.getItem('majorList') && JSON.parse(sessionStorage.getItem('majorList'));
-  contrastData.value = contrastList;
-  console.log("{{contrastA.name}}", contrastData.value)
+  getCompareList({
+    type:'3'
+  }).then(resp => {
+    contrastData.value = resp.rows
+    contrastData.value.map(item =>{
+      occupationDetail({
+        id: item.id
+      }).then(res => {
+        item.bk_list = res.bk_list;
+      })
+      console.log("contrastData",contrastData)
+    })
+  })
 }
 
 const universityList = ref([])

+ 33 - 38
src/views/xjc-integratedmachine/environment/contrast_major.vue

@@ -37,7 +37,7 @@
             <thead>
             <tr class="one-tr">
               <td class="first-title">专业名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
+              <td v-for="(item,index) in contrastData" :key="index">{{ item.specialty.name }}</td>
             </tr>
             </thead>
             <tbody>
@@ -45,30 +45,30 @@
             <tr class="two-tr">
               <td>专业代码</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p style="text-align: center">{{ item.code }}</p>
+                <p style="text-align: center">{{ item.specialty.code }}</p>
               </td>
             </tr>
             <tr>
               <td>学科门类</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p style="text-align: center">{{ item.subjectcategories }}</p>
+                <p style="text-align: center;font-size: 32px">{{ item.smoSpecialty && item.smoSpecialty.subjectcategories }}</p>
               </td>
             </tr>
             <tr>
               <td>一级学科</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p style="text-align: center">{{ item.firstsubject }}</p>
+                <p style="text-align: center">{{ item.smoSpecialty &&  item.smoSpecialty.firstsubject }}</p>
               </td>
             </tr>
             <tr>
               <td>授权学位</td>
               <td v-for="(item,index) in contrastData" :key="index" >
-                <p>{{ item.degree }}</p>
+                <p>{{ item.specialty.degree }}</p>
                 </td>
             </tr>
             <tr>
               <td>修学年限</td>
-              <td v-for="(item,index) in contrastData" :key="index" class="text-td">{{ item.years }}</td>
+              <td v-for="(item,index) in contrastData" :key="index" class="text-td">{{ item.specialty.years }}</td>
             </tr>
             </tbody>
           </table>
@@ -86,7 +86,7 @@
             <tr class="two-tr">
               <td>主修课程</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p style="text-align: center" v-html="item.course"></p>
+                <p style="text-align: left;padding:10px;font-size: 28px" v-html="item.specialty.course"></p>
               </td>
             </tr>
             </tbody>
@@ -105,10 +105,8 @@
             <tr class="two-tr">
               <td>专业解读</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <div class="info" v-if="!item.describe"  v-html="item.describe"></div>
+                <div class="info" v-if="!item.specialty.describe"  v-html="item.specialty.describe"></div>
                 <div class="info" v-else >暂无</div>
-
-<!--                <p style="text-align: center" >{{ item.code }}</p>-->
               </td>
             </tr>
             </tbody>
@@ -119,7 +117,7 @@
             <thead>
             <tr class="one-tr">
               <td class="first-title">专业名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
+              <td v-for="(item,index) in contrastData" :key="index">{{ item.specialty.name }}</td>
             </tr>
             </thead>
             <tbody>
@@ -127,7 +125,7 @@
             <tr class="two-tr">
               <td>就业前景与方向</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <div class="info"  v-html="item.describe"></div>
+                <div class="info"  v-html="item.specialty.describe"></div>
                 <!--                <p style="text-align: center" >{{ item.code }}</p>-->
               </td>
             </tr>
@@ -167,6 +165,9 @@ import headComponent from '@/views/xjc-integratedmachine/components/head_compone
 import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
 import {ref} from "vue";
 import {getUniversityByKeyword} from "@/api/xjc-integratedmachine/environment/university.js";
+import {getCompareList} from "@/api/xjc-integratedmachine/environment/common.js";
+import {occupationDetail} from "@/api/xjc-integratedmachine/environment/occupation.js";
+import {specialtyDetail} from "@/api/xjc-integratedmachine/environment/specialty.js";
 
 
 const router = useRouter()
@@ -198,7 +199,9 @@ function setHeadinfo() {
       nickName: '张三'
     },
     backUrl: '/xjc-integratedmachine/environment/index',
-    homeUrl: '/xjc-integratedmachine/environment/index'
+    homeUrl: '/xjc-integratedmachine/environment/index',
+    contrastPage:true,
+    contrastType:'major'
   }
 }
 
@@ -245,23 +248,32 @@ function jumpTo(path) {
 }
 
 function backTo() {
-  sessionStorage.removeItem('contrastA');
-  sessionStorage.removeItem('contrastB');
 }
 
 onMounted(() => {
   setHeadinfo()
-
 })
 
-const contrastData = ref({})
+const contrastData = ref([])
+
 function getData() {
-  const contrastList = sessionStorage.getItem('majorList') && JSON.parse(sessionStorage.getItem('majorList'));
-  contrastData.value = contrastList;
-  console.log("{{contrastA.name}}", contrastData.value)
+  getCompareList({
+    type:'2'
+  }).then(resp => {
+    contrastData.value = resp.rows
+    contrastData.value.map(item =>{
+      specialtyDetail({
+        id: item.businessId
+      }).then(resp => {
+        console.log(resp,"resp")
+        item.smoSpecialty = resp.smoSpecialty
+        item.kaishe_list = resp.kaishe_list
+      })
+    })
+    console.log("contrastData.value",contrastData.value);
+  })
 }
 
-const universityList = ref([])
 
 // 定义一个函数,用于将关键词变为红色
 function highlightKeywords(text, keywords) {
@@ -277,19 +289,6 @@ function highlightKeywords(text, keywords) {
   return text;
 }
 
-function byKeyword() {
-  getUniversityByKeyword(form.value).then(resp => {
-    resp.list.map(item => {
-      item.selected = false;
-      let keyWord = form.value.name
-      item.name = highlightKeywords(item.name, [keyWord]);
-      console.log(" item.name", item.name)
-      // 遍历数据数组,并处理每个字符串
-    })
-
-    universityList.value = resp.list
-  })
-}
 
 
 function toDetail(row) {
@@ -364,10 +363,6 @@ function search() {
 onMounted(() => {
   setHeadinfo()
   getData()
-  const contrastData = JSON.parse(sessionStorage.getItem('contrastList'));
-  if (contrastData) {
-    contrastList.value = contrastData
-  }
 })
 </script>
 

+ 40 - 25
src/views/xjc-integratedmachine/environment/contrast_university.vue

@@ -22,7 +22,7 @@
             <thead>
             <tr class="one-tr">
               <td class="first-title">大学名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
+              <td v-for="(item,index) in contrastData" :key="index">{{ item.university.name }}</td>
             </tr>
             </thead>
             <tbody>
@@ -30,43 +30,43 @@
             <tr class="two-tr">
               <td>基本信息</td>
               <td class="text-td" v-for="(item,index) in contrastData" :key="index">
-                <p>创建时间:<span>{{ item.ctime }}</span></p>
-                <p>所在地区:<span>{{ item.areaname }}</span></p>
-                <p>院校隶属:<span>{{ item.subjection }}</span></p>
+                <p>创建时间:<span>{{ item.university.ctime }}</span></p>
+                <p>所在地区:<span>{{ item.university.areaname }}</span></p>
+                <p>院校隶属:<span>{{ item.university.subjection }}</span></p>
                 <p class="text-td-p">院校类型:<span>  <dict-tag :options="school_category"
-                                                                :value="item.categoryid"/></span></p>
+                                                                :value="item.university.categoryid"/></span></p>
               </td>
             </tr>
             <tr>
               <td>院校特色</td>
               <td v-for="(item,index) in contrastData" :key="index">
                 <div class="school-level-box">
-                  <p class="school-level" style="background-color: #B3FC7C" v-show="item.nef==='1'">
+                  <p class="school-level" style="background-color: #B3FC7C" v-show="item.university.nef==='1'">
                     985</p>
-                  <p class="school-level" style="background-color: #BBF88D" v-show="item.too==='1'">
+                  <p class="school-level" style="background-color: #BBF88D" v-show="item.university.too==='1'">
                     211</p>
                   <p class="school-level" style="background-color: #8CE349"
-                     v-show="item.istopschool==='1'">
+                     v-show="item.university.istopschool==='1'">
                     一流大学</p>
                   <p class="school-level" style="background-color: #9DFF51"
-                     v-show="item.istopsubject==='1'">
+                     v-show="item.university.istopsubject==='1'">
                     一流学科</p>
-                  <p class="school-level" style="background-color: #8ADFC4" v-show="item.self==='1'">
+                  <p class="school-level" style="background-color: #8ADFC4" v-show="item.university.self==='1'">
                     强</p>
                   <p class="school-level" style="background-color: #1EC590"
-                     v-show="item.graduate==='1'">研</p>
+                     v-show="item.university.graduate==='1'">研</p>
                 </div>
               </td>
             </tr>
             <tr>
               <td>学校性质</td>
               <td v-for="(item,index) in contrastData" class="text-td ">
-                <dict-tag :options="property" :value="item.property"/>
+                <dict-tag :options="property" :value="item.university.property"/>
               </td>
             </tr>
             <tr>
               <td>学校地址</td>
-              <td v-for="(item,index) in contrastData" :key="index" class="text-td">{{ item.address }}
+              <td v-for="(item,index) in contrastData" :key="index" class="text-td">{{ item.university.address }}
               </td>
             </tr>
             </tbody>
@@ -77,7 +77,7 @@
             <thead>
             <tr class="one-tr">
               <td class="first-title">大学名称</td>
-              <td v-for="(item,index) in contrastData" :key="index">{{ item.name }}</td>
+              <td v-for="(item,index) in contrastData" :key="index">{{ item.university.name }}</td>
             </tr>
             </thead>
             <tbody>
@@ -211,7 +211,13 @@
 import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
 import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
 import {ref} from "vue";
-import {getUniversityByKeyword, getScoreInfo} from "@/api/xjc-integratedmachine/environment/university.js";
+import {
+  getUniversityByKeyword,
+  getScoreInfo,
+  universityDetail
+} from "@/api/xjc-integratedmachine/environment/university.js";
+import {getCompareList} from "@/api/xjc-integratedmachine/environment/common.js";
+import {occupationDetail} from "@/api/xjc-integratedmachine/environment/occupation.js";
 
 
 const router = useRouter()
@@ -241,7 +247,9 @@ function setHeadinfo() {
       nickName: '张三'
     },
     backUrl: '/xjc-integratedmachine/environment/index',
-    homeUrl: '/xjc-integratedmachine/environment/index'
+    homeUrl: '/xjc-integratedmachine/environment/index',
+    contrastPage:true,
+    contrastType:'university'
   }
 }
 
@@ -281,12 +289,19 @@ onMounted(() => {
 
 const contrastData = ref({})
 
+// function getData() {
+//   // const contrastList = sessionStorage.getItem('contrastList') && JSON.parse(sessionStorage.getItem('contrastList'));
+//   // contrastData.value = contrastList;
+//   // console.log("{{contrastA.name}}", contrastData.value)
+//
+// }
 function getData() {
-  const contrastList = sessionStorage.getItem('contrastList') && JSON.parse(sessionStorage.getItem('contrastList'));
-  contrastData.value = contrastList;
-  console.log("{{contrastA.name}}", contrastData.value)
+  getCompareList({
+    type:'1'
+  }).then(resp => {
+    contrastData.value = resp.rows
+  })
 }
-
 const universityList = ref([])
 
 // 定义一个函数,用于将关键词变为红色
@@ -393,7 +408,7 @@ const dbForm = ref({})
 const dbData = ref({})
 
 function dbResult(e) {
-  let univercity = JSON.parse(sessionStorage.getItem("contrastList"))
+  let univercity = contrastData.value
   if (univercity.length != 2) {
     alert("选择2个学校啊,现在是" + univercity.length)
   } else {
@@ -409,10 +424,10 @@ function dbResult(e) {
 onMounted(() => {
   setHeadinfo()
   getData()
-  const contrastData = JSON.parse(sessionStorage.getItem('contrastList'));
-  if (contrastData) {
-    contrastList.value = contrastData
-  }
+  // const contrastData = JSON.parse(sessionStorage.getItem('contrastList'));
+  // if (contrastData) {
+  //   contrastList.value = contrastData
+  // }
   // dbResult();
 })
 </script>

+ 29 - 29
src/views/xjc-integratedmachine/environment/mycos_info.vue

@@ -13,10 +13,12 @@
             </div>
           </div>
         </div>
-        <div class="fenye">
-          <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
-                    v-model:limit="queryParams.pageSize" @pagination="query"/>
-        </div>
+<!--        <div class="fenye">-->
+<!--          <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+                    v-model:limit="queryParams.pageSize" @pagination="query"/>-->
+          <xjc-pagination v-if="!loading" :total="total" :pageNum="queryParams.pageNum" :pageSize="queryParams.pageSize"
+                          @changePage="changePage"></xjc-pagination>
+<!--        </div>-->
       </div>
       <drag_component></drag_component>
     </div>
@@ -28,7 +30,7 @@
 <script setup>
 import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
 /*import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";*/
-
+import xjcPagination from "@/views/xjc-integratedmachine/components/xjc_pagination.vue"
 import {careerinformation} from '@/api/xjc-integratedmachine/environment/tscareer.js'
 import {ref} from "vue";
 const router = useRouter()
@@ -53,30 +55,39 @@ function setHeadinfo(){
 
 onMounted(() => {
   setHeadinfo()
+  query()
 })
 
+function toDetail(item) {
+  router.push({
+    path : '/xjc-integratedmachine/environment/info_detail',
+    query :{
+      id : item.id
+    }
+  })
+}
+
+//分页部分
 const queryParams = ref({
   pageNum: 1,
   pageSize: 5,
   type : '1'
 })
+function changePage(params) {
+  queryParams.value.pageSize = params.value.pageSize
+  queryParams.value.pageNum = params.value.pageNum
+  query()
+}
+
+const loading = ref(false)
 function query() {
-  careerinformation(queryParams.value).then(resp =>{
-    console.log(resp.data_list.rows)
+  loading.value = true
+  careerinformation(queryParams.value).then(resp => {
     list.value = resp.data_list.rows
     total.value = resp.data_list.total
+    loading.value = false
   })
 }
-function toDetail(item) {
-  router.push({
-    path : '/xjc-integratedmachine/environment/info_detail',
-    query :{
-      id : item.id
-    }
-  })
-}
-query()
-
 </script>
 
 <style scoped>
@@ -109,7 +120,7 @@ p, div {
     border-radius: 35px 35px 35px 35px;
     display: flex;
     flex-direction: column;
-    overflow: auto;
+/*    overflow: auto;*/
     .item-box{
       width: 1750px;
       height: 120px;
@@ -153,16 +164,5 @@ p, div {
     }
   }
 
-  .fenye{
-    width: 72px;
-    height: -48px;
-    align-self: center;
-    margin-top: 20px;
-    margin-left: 600px;
-    background: #F4F4F4;
-    border-radius: 0px 0px 0px 0px;
-    border: 1px solid #E2E8F0;
-  }
-
 }
 </style>

+ 25 - 14
src/views/xjc-integratedmachine/environment/occ_details_video.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="pro_details_video">
-    <head-component :headinfo=headinfo></head-component>
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="page-img-box">
         <div class="top-content">
@@ -18,7 +18,7 @@
             </div>
             <div class="info-box">
               <p class="title"> 职业兴趣类代码</p>
-              <p class="answer" >{{entity.industryname}}</p>
+              <p class="answer" >{{entity.interestcode}}</p>
             </div>
           </div>
         </div>
@@ -105,14 +105,10 @@
 import videojs from 'video.js';
 import 'video.js/dist/video-js.css';
 import collectionComponent from '@/views/xjc-integratedmachine/components/collection_component.vue'
-import {specialtyDetail} from '@/api/xjc-integratedmachine/environment/specialty.js'
-import {ref} from "vue";
+import { provide, ref } from 'vue';
 import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
 import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
-import {handleThemeStyle} from "@/utils/theme.js";
-import useSettingsStore from "@/store/modules/settings.js";
 import {occupationDetail} from "@/api/xjc-integratedmachine/environment/occupation.js";
-
 const {proxy} = getCurrentInstance()
 const {educationlevel} = proxy.useDict('educationlevel')
 
@@ -121,6 +117,7 @@ const router = useRouter()
 const route = useRoute()
 const tabIndex = ref("zyjd")
 const headinfo = ref({})
+const headinfoRef = ref(null);
 const onePage = ref(true)
 const twoPage = ref(false)
 const threePage = ref(false)
@@ -138,7 +135,7 @@ function setHeadinfo(){
     backUrl : '/xjc-integratedmachine/environment/query_universitydb_conditions',
     homeUrl:'/xjc-integratedmachine/environment/index',
     contrast:true,
-    contrastType:'occ'
+    contrastType:3
   }
 }
 
@@ -151,11 +148,9 @@ const param = route.query
 
 
 const entity = ref({})
-const kaishe_list = ref([])
-const pinggu_list = ref([])
-const similar_list = ref([])
 const collectionRef = ref(null)
 const collection_data = ref({})
+
 function setCollection_data(){
   collection_data.value = {
     contentType: 3,
@@ -163,20 +158,34 @@ function setCollection_data(){
     contentVal: entity.value,
     source:'occ_details_video'
   }
-  console.log("entity.value",entity.value)
 }
-
 const bk_list = ref([])
 const zk_list = ref([])
 function detail() {
   occupationDetail({
     id: param.id
   }).then(resp => {
+    resp.entity.bk_list = resp.bk_list
+    resp.entity.compare = resp.compare
     entity.value = resp.entity
-    bk_list.value = resp.bk_list
+    bk_list.value = entity.value.bk_list
     zk_list.value = resp.zk_list
+    setCollection_data()
+    collectionRef.value.getIsContrast(entity.value)
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(3); // 调用子组件的 sayHello 函数
+    }
+    setTimeout(() => {
+      setCollection_data();
+    }, 1000);
+
   })
 }
+const parentMethod = () => {
+  console.log('父组件方法被调用');
+  detail()
+};
+provide('parentMethod', parentMethod);
 
 const showPage = (val) => {
   if (val === 1) {
@@ -499,6 +508,8 @@ p, div {
       border: 1px solid #A2F57F;
       font-weight: 400;
       font-size: 30px;
+      padding-left: 10px;
+      padding-right: 10px;
       color: #000000;
       line-height:  80px;
       text-align: center;

+ 246 - 7
src/views/xjc-integratedmachine/environment/occdb_interestcode.vue

@@ -1,25 +1,264 @@
 <template>
-  霍兰德码查询
-  <div v-for="(item,index) in interestcode" @click="jumpToList(item)">
-    {{item.label}}
+  <div class="occdb_interestcode">
+    <head-component :headinfo=headinfo @childEvent="backTo" ref="headinfoRef"></head-component>
+    <div class="page-content">
+      <div class="content">
+        <div class="result-box">
+          <div class="two-page-result">
+            <div  v-for="(item,index) in interestcode"
+                  :class="{
+                itemResultBoxActive: item.isSelected,
+                itemResultBox: !item.isSelected
+            }"
+                 @click="addSelected(item,index)">
+              <div>{{item.label}} {{item.value}}</div>
+            </div>
+          </div>
+        </div>
+        <div class="search-btn">
+          <p v-show="conditions">
+            <span style="margin-right: 3px;margin-left: 3px">已选择条件:</span>
+            <span style="margin-left: 3px" v-for="item in conditions">{{item}}</span>
+          </p>
+          <img @click="jumpToList()" style="z-index:10" src="@/assets/images/environment/search-btn.png">
+        </div>
+      </div>
+    </div>
+<!--    <drag_component></drag_component>-->
   </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 {handleThemeStyle} from "@/utils/theme.js";
+import useSettingsStore from "@/store/modules/settings.js";
+import {getCurrentInstance, ref} from 'vue';
+const instance = getCurrentInstance();
 const {proxy} = getCurrentInstance()
 const {interestcode} = proxy.useDict('interestcode')
 const router = useRouter()
+const route = useRoute()
+const headinfo = ref({})
+const headinfoRef = ref(null);
 
-function jumpToList(item) {
+const interestData = ref([])
+const conditions = ref([])
+function setHeadinfo() {
+  headinfo.value = {
+    title: '行业分类列表',
+    user: {
+      avatar: '头像路径',
+      nickName: '张三'
+    },
+    backUrl: '/xjc-integratedmachine/environment/index',
+    homeUrl: '/xjc-integratedmachine/environment/index',
+    interestcodePage:true,
+    contrast:true,
+    contrastType:3
+  }
+}
+onMounted(() => {
+  setHeadinfo()
+  nextTick(() => {
+    getData()
+  })
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(3); // 调用子组件的 sayHello 函数
+    }
+  }, 500)
+})
+function getData (){
+  let lettersToFindArray = JSON.parse(sessionStorage.getItem('conditionsList'))
+  if(!lettersToFindArray){
+    interestcode.value = interestcode.value.map((item,index)=>{
+      item.isSelected = false;
+    })
+  }
+  // interestcode.push({});
+  // interestcode.pop();
+  let obj = {};
+  if(lettersToFindArray){
+    // 遍历对象数组
+    interestcode.value.forEach(obj => {
+      // 重置selected属性(如果需要的话,可以根据实际情况决定是否需要这一步)
+      obj.selected = false; // 这里我们先重置为false,稍后再根据查找结果设置
+      // 遍历要查找的字符数组
+      lettersToFindArray.forEach(letter => {
+        // 检查对象的value属性是否包含当前要查找的字母
+        if (obj.value.includes(letter)) {
+          obj.selected = true; // 只要有一个字母匹配,就将selected设置为true
+        }
+      });
+    });
+    console.log("interestcode",interestcode.value,lettersToFindArray)
+    conditions.value = lettersToFindArray;
+  }
+
+}
+function jumpToList(item){
+  interestcode.value.map(item =>{
+    item.isSelected = false;
+  })
   router.push({
     path : '/xjc-integratedmachine/environment/occdb_interestcode_list',
     query:{
-      code : item.value
+      code : conditions.value.join('')
     }
   })
 }
+let list = [];
+function addSelected(item,index){
+    const button = interestcode.value[index];
+    // 如果按钮已经被选中,则取消选中
+    if (button.isSelected) {
+      // button.isSelected = false;
+
+    } else {
+      // 计算当前选中的按钮数量
+      const selectedCount = interestcode.value.filter(b => b.isSelected).length;
+
+      // 如果选中按钮数量已经达到3个,则取消第一个选中的按钮
+      if (selectedCount === 3) {
+        const firstSelectedIndex = interestcode.value.findIndex(b => b.isSelected);
+        if (firstSelectedIndex !== -1) {
+          interestcode.value[firstSelectedIndex].isSelected = false
+          list.shift();
+        }
+      }
+      // 选中当前按钮
+      button.isSelected = true;
+      list.push(item.value);
+    }
+  conditions.value = list;
+  // sessionStorage.setItem('conditionsList',JSON.stringify(conditions.value));
+}
+
+function backTo(){
+  // sessionStorage.removeItem('conditionsList');
+  interestcode.value.map(item =>{
+    item.isSelected = false;
+  })
+}
+
 </script>
 
-<style scoped>
+<style scoped lang="scss">
+div,p{
+  margin: 0;
+  padding: 0;
+}
+.occdb_interestcode {
+  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: 100px;
+    bottom: 0;
+    display: flex;
+    justify-content: center;
+
+    .content{
+      width: 1832px;
+      height: 922px;
+      background: #FFFFFF;
+      border-radius: 35px 35px 35px 35px;
+      margin-top:13px;
+    }
+    .result-box {
+      width: 100%;
+      height: 750px;
+      overflow: auto;
+      display: flex;
+      justify-content: center;
+      flex-direction: column;
+      align-items: center;
+
+      .two-page-result {
+        width: 1280px;
+        height: 400px;
+        display: flex;
+        flex-wrap: wrap;
+        margin-top: 100px;
+
+        .itemResultBoxActive {
+          min-width: 320px;
+          height: 92px;
+          background: linear-gradient(180deg, #B6FFEF 0%, #C5EEFF 100%);
+          box-shadow: inset 0px -2px 7px 0px #1E410E;
+          border-radius: 5px 5px 5px 5px;
+          border: 1px solid #A2F57F;
+          font-weight: 400;
+          font-size: 30px;
+          color: #0DE6A1;
+          line-height: 90px;
+          text-align: center;
+          margin-left: 50px;
+          margin-right: 50px;
+          margin-top: 32px;
+          padding-left: 20px;
+          padding-right: 20px;
+        }
 
-</style>
+        .itemResultBox {
+          width: 320px;
+          height: 92px;
+          background: #E0EEF4;
+          border-radius: 5px 5px 5px 5px;
+          font-weight: 400;
+          font-size: 30px;
+          color: #000000;
+          line-height: 90px;
+          text-align: center;
+          margin-left: 50px;
+          margin-right: 50px;
+          margin-top: 32px;
+          padding-left: 20px;
+          padding-right: 20px;
+        }
+
+        .itemResultBox:hover {
+          min-width: 320px;
+          height: 92px;
+          background: linear-gradient(180deg, #B6FFEF 0%, #C5EEFF 100%);
+          box-shadow: inset 0px -2px 7px 0px #1E410E;
+          border-radius: 5px 5px 5px 5px;
+          border: 1px solid #A2F57F;
+          font-weight: 400;
+          font-size: 30px;
+          color: #000000;
+          line-height: 90px;
+          text-align: center;
+          margin-left: 50px;
+          margin-top: 32px;
+          padding-left: 20px;
+          padding-right: 20px;
+        }
+      }
+    }
+    .search-btn {
+      display: flex;
+      align-items: center;
+      flex-direction: column;
+      justify-content: space-around;
+      margin-top: 54px;
+      img {
+        width: 244px;
+        height: 100px;
+      }
+      p{
+
+      }
+      span{
+        margin-left: 3px;
+      }
+    }
+  }
+
+}
+</style>

+ 189 - 16
src/views/xjc-integratedmachine/environment/occdb_interestcode_list.vue

@@ -1,51 +1,224 @@
 <template>
-  <div v-for="(item,index) in code_list">
-    {{item.code}}---{{item.name}}
-    <div v-for="(it,ind) in code_map">
-      <div v-for="(i,d) in it">
-        <div v-if="i.code==item.code">
-          {{i.name}}
+  <div class="prodb_specialtylist1" v-loading='loading'>
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
+    <div class="page-content">
+      <div class="content">
+        <div class="result-box">
+          <div class="two-page-result">
+            <div v-for="(item,index) in code_list">
+              <p class="title">{{item.code}}--{{item.name}}</p>
+            <div  v-for="(it,ind) in code_map" class="two-page-result">
+              <div v-for="(i,d) in it" >
+                <div :class="[item.selected?'item-result-box-active':'item-result-box']"
+                     v-if="i.code==item.code"  @click="toDetail(i)">
+                  {{i.name}}
+                </div>
+              </div>
+            </div>
+          </div>
+          </div>
         </div>
       </div>
     </div>
+    <!--    <drag_component></drag_component>-->
   </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 {codeList} from '@/api/xjc-integratedmachine/environment/occupation.js'
+import {ref} from "vue";
+const {proxy} = getCurrentInstance()
+const {interestcode} = proxy.useDict('interestcode')
 
+const headinfo = ref({})
+const headinfoRef = ref(null);
+
+const interestData = ref([])
+const conditions = ref('')
 const router = useRouter()
 const route = useRoute()
 
 const param = route.query
-//
 const code_list = ref([])
 const code_map = ref([])
-
+const loading = ref(false)
 function list() {
+  headinfo.value.backQuery = param.code;
+  loading.value = true
   codeList({
     code: param.code
   }).then(resp => {
     code_list.value = resp.code_list
-    console.log("ssssss", code_list.value)
     code_map.value = resp.code_map
+    loading.value = false
   })
 }
 
-function toDetail(item) {
+list()
+
+function setHeadinfo() {
+  headinfo.value = {
+    title: '行业分类列表',
+    user: {
+      avatar: '头像路径',
+      nickName: '张三'
+    },
+    homeUrl: '/xjc-integratedmachine/environment/index',
+    backUrl:'/xjc-integratedmachine/environment/occdb_search_industry',
+    // backUrlUse:true,
+    contrast:true,
+    contrastType:3
+  }
+}
+onMounted(() => {
+  setHeadinfo()
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(2); // 调用子组件的 sayHello 函数
+    }
+  }, 500)
+})
+
+function toDetail(item){
   router.push({
-    path: '/xjc-integratedmachine/environment/occ_details_video',
-    query: {
-      id: item.id
+    path : '/xjc-integratedmachine/environment/occ_details_video',
+    query :{
+      id :  item.id
     }
   })
 }
+</script>
 
-list()
+<style scoped lang="scss">
+div,p{
+  margin: 0;
+  padding: 0;
+}
+.prodb_specialtylist1 {
+  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: 100px;
+    bottom: 0;
+    display: flex;
+    justify-content: center;
+    .content{
+      width: 1832px;
+      height: 922px;
+      background: #FFFFFF;
+      border-radius: 35px 35px 35px 35px;
+      margin-top:13px;
+      overflow: auto;
+      padding-bottom: 20px;
+    }
+    .result-box {
+      width: 100%;
+      //height: 750px;
+      overflow: auto;
+      //display: flex;
+      //margin-left: 33px;
+      //justify-content: center;
+      //flex-direction: column;
+      //align-items: center;
+      .title {
+        height: 40px;
+        border-left: 8px #8CE349 solid;
+        font-weight: bold;
+        font-size: 32px;
+        color: #333333;
+        line-height: 40px;
+        margin-left: 50px;
+        padding-left: 11px;
+        margin-top: 30px;
+      }
+      .two-page-result {
+        //width: 1280px;
+        //height: 400px;
+        display: flex;
+        flex-wrap: wrap;
 
 
-</script>
+        .item-result-box-active {
+          min-width: 320px;
+          height: 92px;
+          background: linear-gradient(180deg, #B6FFEF 0%, #C5EEFF 100%);
+          box-shadow: inset 0px -2px 7px 0px #1E410E;
+          border-radius: 5px 5px 5px 5px;
+          border: 1px solid #A2F57F;
+          font-weight: 400;
+          font-size: 30px;
+          color: #0DE6A1;
+          line-height: 90px;
+          text-align: center;
+          margin-left: 50px;
+          margin-right: 50px;
+          margin-top: 32px;
+          padding-left: 20px;
+          padding-right: 20px;
+        }
 
-<style scoped>
+        .item-result-box {
+          min-width: 320px;
+          height: 92px;
+          background: #E0EEF4;
+          border-radius: 5px 5px 5px 5px;
+          font-weight: 400;
+          font-size: 30px;
+          color: #000000;
+          line-height: 90px;
+          text-align: center;
+          margin-left: 50px;
+          margin-right: 50px;
+          margin-top: 32px;
+          padding-left: 20px;
+          padding-right: 20px;
+        }
+
+        .item-result-box:hover {
+          min-width: 320px;
+          height: 92px;
+          background: linear-gradient(180deg, #B6FFEF 0%, #C5EEFF 100%);
+          box-shadow: inset 0px -2px 7px 0px #1E410E;
+          border-radius: 5px 5px 5px 5px;
+          border: 1px solid #A2F57F;
+          font-weight: 400;
+          font-size: 30px;
+          color: #000000;
+          line-height: 90px;
+          text-align: center;
+          margin-left: 50px;
+          margin-top: 32px;
+          padding-left: 20px;
+          padding-right: 20px;
+        }
+      }
+    }
+    .search-btn {
+      display: flex;
+      align-items: center;
+      flex-direction: column;
+      justify-content: space-around;
+      margin-top: 54px;
+      img {
+        width: 244px;
+        height: 100px;
+      }
+      p{
 
+      }
+      span{
+        margin-left: 3px;
+      }
+    }
+  }
+
+
+}
 </style>

+ 0 - 51
src/views/xjc-integratedmachine/environment/occdb_interestcode_list1.vue

@@ -1,51 +0,0 @@
-<template>
-  <div v-for="(item,index) in code_list">
-    {{item.code}}---{{item.name}}
-    <div v-for="(it,ind) in code_map">
-      <div v-for="(i,d) in it">
-        <div v-if="i.code==item.code">
-          {{i.name}}
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import {codeList} from '@/api/xjc-integratedmachine/environment/occupation.js'
-
-const router = useRouter()
-const route = useRoute()
-
-const param = route.query
-//
-const code_list = ref([])
-const code_map = ref([])
-
-function list() {
-  codeList({
-    code: param.code
-  }).then(resp => {
-    code_list.value = resp.code_list
-    console.log("ssssss", code_list.value)
-    code_map.value = resp.code_map
-  })
-}
-
-function toDetail(item) {
-  router.push({
-    path: '/xjc-integratedmachine/environment/occ_details_video',
-    query: {
-      id: item.id
-    }
-  })
-}
-
-list()
-
-
-</script>
-
-<style scoped>
-
-</style>

+ 10 - 1
src/views/xjc-integratedmachine/environment/occdb_list.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="prodb_specialtylist1">
-    <head-component :headinfo=headinfo></head-component>
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="content">
         <div class="result-box">
@@ -25,6 +25,7 @@
 import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
 import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
 import {occupationList} from '@/api/xjc-integratedmachine/environment/occupation.js'
+import {ref} from "vue";
 
 const router = useRouter()
 const route = useRoute()
@@ -32,6 +33,8 @@ const total = ref(0)
 const param = route.query
 const data_rows = ref([])
 const headinfo = ref({})
+const headinfoRef = ref(null);
+
 function setHeadinfo() {
   headinfo.value = {
     title: '职业分类列表',
@@ -42,10 +45,16 @@ function setHeadinfo() {
     backUrl: '/xjc-integratedmachine/environment/index',
     homeUrl: '/xjc-integratedmachine/environment/index',
     contrast:true,
+    contrastType:3
   }
 }
 onMounted(() => {
   setHeadinfo()
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(3); // 调用子组件的 sayHello 函数
+    }
+  }, 800)
 })
 
 

+ 15 - 2
src/views/xjc-integratedmachine/environment/occdb_search_industry.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="occdb_search_industry">
-    <head-component :headinfo=headinfo></head-component>
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="content-left">
         <div class="tab-box">
@@ -140,6 +140,7 @@ const form = ref({
 })
 const keyInput = ref(false);
 const headinfo = ref({})
+const headinfoRef = ref(null);
 
 function setHeadinfo() {
   headinfo.value = {
@@ -149,7 +150,10 @@ function setHeadinfo() {
       nickName: '张三'
     },
     backUrl: '/xjc-integratedmachine/environment/index',
-    homeUrl: '/xjc-integratedmachine/environment/index'
+    backUrlUse:true,
+    homeUrl: '/xjc-integratedmachine/environment/index',
+    contrast:true,
+    contrastType:3
   }
 }
 
@@ -175,10 +179,19 @@ function jumpTo(path) {
     path: path,
     query: {name: 123}
   })
+  let flag = sessionStorage.getItem('conditionsStr') || false;
+  if(flag){
+    sessionStorage.removeItem('conditionsStr');
+  }
 }
 
 onMounted(() => {
   setHeadinfo()
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(3); // 调用子组件的 sayHello 函数
+    }
+  }, 800)
 })
 const universityList = ref([])
 

+ 0 - 84
src/views/xjc-integratedmachine/environment/occdb_search_industry1.vue

@@ -1,84 +0,0 @@
-<template>
-  职业信息查询
-  <el-card style="width:200px">
-    <div @click="changeTab('hyfl')">
-      <el-button @click="jumpTo('/xjc-integratedmachine/environment/occdb_search_industry_list')">点击查询</el-button>
-    </div>
-    <div @click="changeTab('hldm')">
-      霍兰德码查询
-      <el-button @click="jumpTo('/xjc-integratedmachine/environment/occdb_interestcode')">点击查询s</el-button>
-    </div>
-    <div @click="changeTab('gjz')">
-      关键字查询
-      <el-input v-model="form.name"></el-input>
-      <el-button @click="byKeyWord">关键字查询</el-button>
-
-      <el-table :data="data_list">
-        <el-table-column label="名称" align="center" key="name" prop="name"/>
-        <el-table-column label="详情">
-          <template #default="scope">
-            <el-tooltip content="详情>>" placement="top">
-              <el-button link type="primary" icon="Edit" @click="toDetail(scope.row)"></el-button>
-            </el-tooltip>
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-  </el-card>
-  <div v-show="tab == 'hyfl'">
-    行业分类是把.............................
-  </div>
-  <div v-show="tab == 'hldm'">
-  </div>
-  <div v-show="tab == 'gjz'">
-  </div>
-
-</template>
-
-<script setup>
-import {getOccupationByKeyword} from '@/api/xjc-integratedmachine/environment/occupation.js'
-
-const router = useRouter()
-const route = useRoute()
-const total = ref(0)
-const param = route.query
-
-
-const tab = ref("hyfl")
-
-function changeTab(path) {
-  tab.value = path
-}
-
-function jumpTo(path) {
-  router.push({
-    path: path
-  })
-}
-
-const form = ref({
-  name: ''
-})
-
-const data_list = ref([])
-function byKeyWord() {
-  getOccupationByKeyword(form.value).then(resp =>{
-    console.log("sss",resp)
-    data_list.value = resp.list
-  })
-}
-
-function toDetail(item){
-  router.push({
-    path : '/xjc-integratedmachine/environment/occ_details_video',
-    query :{
-      id :  item.id
-    }
-  })
-}
-
-</script>
-
-<style scoped>
-
-</style>

+ 10 - 1
src/views/xjc-integratedmachine/environment/occdb_search_industry_list.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="prodb_specialtylist1">
-    <head-component :headinfo=headinfo></head-component>
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="content">
         <div class="result-box">
@@ -25,6 +25,7 @@
 import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
 import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
 import {categoryList1} from '@/api/xjc-integratedmachine/environment/occupation.js'
+import {ref} from "vue";
 const router = useRouter()
 const data_list = ref([])
 const route = useRoute()
@@ -32,6 +33,8 @@ const total = ref(0)
 const param = route.query
 const data_rows = ref([])
 const headinfo = ref({})
+const headinfoRef = ref(null);
+
 function setHeadinfo() {
   headinfo.value = {
     title: '行业分类列表',
@@ -42,10 +45,16 @@ function setHeadinfo() {
     backUrl: '/xjc-integratedmachine/environment/index',
     homeUrl: '/xjc-integratedmachine/environment/index',
     contrast:true,
+    contrastType:3
   }
 }
 onMounted(() => {
   setHeadinfo()
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(3); // 调用子组件的 sayHello 函数
+    }
+  }, 800)
 })
 
 

+ 25 - 22
src/views/xjc-integratedmachine/environment/pro_details_video.vue

@@ -1,6 +1,6 @@
 <template>
-  <div class="pro_details_video">
-    <head-component :headinfo=headinfo></head-component>
+  <div class="pro_details_video" v-loading="loading">
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="page-img-box">
         <div class="top-content">
@@ -112,7 +112,7 @@ import videojs from 'video.js';
 import 'video.js/dist/video-js.css';
 import collectionComponent from '@/views/xjc-integratedmachine/components/collection_component.vue'
 import {specialtyDetail} from '@/api/xjc-integratedmachine/environment/specialty.js'
-import {ref} from "vue";
+import {provide, ref} from "vue";
 import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
 import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
 import {handleThemeStyle} from "@/utils/theme.js";
@@ -126,11 +126,14 @@ const router = useRouter()
 const route = useRoute()
 const tabIndex = ref("zyjd")
 const headinfo = ref({})
+const headinfoRef = ref(null);
+
 const onePage = ref(true)
 const twoPage = ref(false)
 const threePage = ref(false)
 const fourPage = ref(false)
 const fivePage = ref(false)
+const loading = ref(false)
 function setHeadinfo(){
   headinfo.value = {
     title: '专业详情',
@@ -141,13 +144,12 @@ function setHeadinfo(){
     backUrl : '/xjc-integratedmachine/environment/query_universitydb_conditions',
     homeUrl:'/xjc-integratedmachine/environment/index',
     contrast:true,
-    contrastType:'major'
+    contrastType:2
   }
 }
 
 onMounted(() => {
   setHeadinfo()
-
 })
 
 const param = route.query
@@ -170,23 +172,26 @@ function setCollection_data(){
   console.log("entity.value",entity.value)
 }
 function detail(id) {
+  loading.value = true;
   specialtyDetail({
     id: id || param.id
   }).then(resp => {
+    resp.entity.smoSpecialty = resp.smoSpecialty
+    resp.entity.compare = resp.compare
     entity.value = resp.entity
     kaishe_list.value = resp.kaishe_list
     pinggu_list.value = resp.pinggu_list
     similar_list.value = resp.similar_list
     entity.value.kaishe_list = kaishe_list
+    loading.value = false
+    setCollection_data()
+    collectionRef.value.getIsContrast(entity.value)
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(2); // 调用子组件的 sayHello 函数
+    }
   })
-setTimeout(() => {
-    setCollection_data();
-    collectionRef.value.isContrast(entity.value);
-    collectionRef.value.getSource('pro_details_video');
-  }, 500);
 }
 
-
 const showPage = (val) => {
   if (val === 1) {
     onePage.value = true;
@@ -201,21 +206,18 @@ const showPage = (val) => {
     threePage.value = false;
     fourPage.value = false;
     fivePage.value = false;
-
   } else if (val === 3) {
     onePage.value = false;
     twoPage.value = false;
     threePage.value = true;
     fourPage.value = false;
     fivePage.value = false;
-
   } else if (val === 4) {
     onePage.value = false;
     twoPage.value = false;
     threePage.value = false;
     fourPage.value = true;
     fivePage.value = false;
-
   } else if (val === 5) {
     onePage.value = false;
     twoPage.value = false;
@@ -254,14 +256,13 @@ function dialogBeforeClose() {
   eightPage.value = false;
 }
 function toDetail(item){
-  // router.push({
-  //   path:'/xjc-integratedmachine/environment/pro_details_video',
-  //   query : {
-  //     id : item.id
-  //   }
-  // })
   detail(item.id)
 }
+const parentMethod = () => {
+  console.log('父组件方法被调用');
+  detail()
+};
+provide('parentMethod', parentMethod);
 
 </script>
 
@@ -403,7 +404,7 @@ p, div {
            flex-wrap: wrap;
 
           .info-item{
-            width: 244px;
+            min-width: 244px;
             height: 80px;
             margin-left: 10px;
             background: #FFFFFF;
@@ -415,6 +416,8 @@ p, div {
             line-height:  80px;
             text-align: center;
             margin-top: 14px;
+            padding-left: 10px;
+            padding-right: 10px;
           }
         }
         .info-text{
@@ -500,7 +503,7 @@ p, div {
 
 .one-page {
   width: 1832px;
-  height: 341px;
+  height: 426px;
   background: #FFFFFF;
   border-radius: 0px 0px 35px 35px;
   border: 1px solid #FFFFFF;

+ 13 - 2
src/views/xjc-integratedmachine/environment/prodb_search_undergraduate.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="prodb_search_undergraduate">
-    <head-component :headinfo=headinfo></head-component>
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="content-left">
         <div class="tab-box">
@@ -138,6 +138,7 @@ const threePage = ref(false)
 
 const keyInput = ref(false);
 const headinfo = ref({})
+const headinfoRef = ref(null);
 
 function setHeadinfo() {
   headinfo.value = {
@@ -147,7 +148,9 @@ function setHeadinfo() {
       nickName: '张三'
     },
     backUrl: '/xjc-integratedmachine/environment/index',
-    homeUrl: '/xjc-integratedmachine/environment/index'
+    homeUrl: '/xjc-integratedmachine/environment/index',
+    contrast:true,
+    contrastType:2
   }
 }
 
@@ -177,6 +180,11 @@ function jumpTo(path) {
 
 onMounted(() => {
   setHeadinfo()
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(2); // 调用子组件的 sayHello 函数
+    }
+  }, 500)
 })
 const universityList = ref([])
 
@@ -254,6 +262,9 @@ function specialty() {
   specialtyQuery().then(resp => {
     specialtyEntity.value = resp
   })
+  if (headinfoRef.value) {
+    headinfoRef.value.getCompareSizeData(2); // 调用子组件的 sayHello 函数
+  }
 }
 
 function toSpecialty1(item) {

+ 40 - 5
src/views/xjc-integratedmachine/environment/prodb_specialtylist1.vue

@@ -1,6 +1,6 @@
 <template>
-  <div class="prodb_specialtylist1">
-    <head-component :headinfo=headinfo></head-component>
+  <div class="prodb_specialtylist1" v-loading="loading">
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="content">
         <div class="result-box">
@@ -12,19 +12,33 @@
             </div>
           </div>
         </div>
+        <div class="pagination">
+<!--          <pagination v-show="total > 0" size="large" :total="total" v-model:page="queryParams.pageNum"-->
+<!--                      v-model:limit="queryParams.pageSize" @pagination="list1"/>-->
+<!--          <el-pagination-->
+<!--              size="small"-->
+<!--              background-->
+<!--              layout="prev, pager, next"-->
+<!--              :total="total"-->
+<!--              v-model:page="queryParams.pageNum"-->
+<!--              v-model:limit="queryParams.pageSize"-->
+<!--              @pagination="list1"-->
+<!--              class="mt-4"-->
+<!--          />-->
+        </div>
       </div>
     </div>
     <drag_component></drag_component>
   </div>
 
-<!--  <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"-->
-<!--              v-model:limit="queryParams.pageSize" @pagination="list1"/>-->
+
 </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 {specialtyList1} from '@/api/xjc-integratedmachine/environment/specialty.js'
+import {ref} from "vue";
 
 const router = useRouter()
 const route = useRoute()
@@ -32,6 +46,9 @@ const total = ref(0)
 const param = route.query
 const data_rows = ref([])
 const headinfo = ref({})
+const headinfoRef = ref(null);
+
+const loading= ref(false)
 function setHeadinfo() {
   headinfo.value = {
     title: '专业类',
@@ -42,10 +59,16 @@ function setHeadinfo() {
     backUrl: '/xjc-integratedmachine/environment/index',
     homeUrl: '/xjc-integratedmachine/environment/index',
     contrast:true,
+    contrastType:2
   }
 }
 onMounted(() => {
   setHeadinfo()
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(2); // 调用子组件的 sayHello 函数
+    }
+  }, 500)
 })
 const queryParams = ref({
   pageNum: 1,
@@ -54,10 +77,15 @@ const queryParams = ref({
 })
 
 function list1() {
+  loading.value = true;
   specialtyList1(queryParams.value).then(resp => {
     data_rows.value = resp.data.rows
     total.value = resp.data.total
+    loading.value = false;
   })
+  if (headinfoRef.value) {
+    headinfoRef.value.getCompareSizeData(2); // 调用子组件的 sayHello 函数
+  }
 }
 
 function toSpecialty2(item) {
@@ -97,10 +125,17 @@ div,p{
       background: #FFFFFF;
       border-radius: 35px 35px 35px 35px;
       margin-top:13px;
+      .pagination{
+          //border: 1px solid;
+          display: flex;
+          justify-content: center;
+          margin-top: 30px;
+          font-size: 32px;
+      }
     }
     .result-box {
       width: 100%;
-      height: 750px;
+      height: 830px;
       overflow: auto;
 
       .two-page-result {

+ 10 - 1
src/views/xjc-integratedmachine/environment/prodb_specialtylist2.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="prodb_specialtylist2">
-    <head-component :headinfo=headinfo></head-component>
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="content">
         <div class="result-box">
@@ -23,6 +23,7 @@
 import headComponent from '@/views/xjc-integratedmachine/components/head_component.vue'
 import Drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
 import {specialtyList2} from '@/api/xjc-integratedmachine/environment/specialty.js'
+import {ref} from "vue";
 
 const router = useRouter()
 const route = useRoute()
@@ -36,6 +37,8 @@ const queryParams = ref({
   oldid: param.oldid
 })
 const headinfo = ref({})
+const headinfoRef = ref(null);
+
 function setHeadinfo() {
   headinfo.value = {
     title: '专业类',
@@ -46,10 +49,16 @@ function setHeadinfo() {
     backUrl: '/xjc-integratedmachine/environment/index',
     homeUrl: '/xjc-integratedmachine/environment/index',
     contrast:true,
+    contrastType:2
   }
 }
 onMounted(() => {
   setHeadinfo()
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(2); // 调用子组件的 sayHello 函数
+    }
+  }, 500)
 })
 function list2() {
   specialtyList2(queryParams.value).then(resp => {

+ 102 - 85
src/views/xjc-integratedmachine/environment/query_universitydb_conditions.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="query_universitydb_conditions">
-    <head-component :headinfo=headinfo></head-component>
-    <div class="page-content">
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
+      <div class="page-content">
       <div class="content-left">
         <div class="tab-box">
           <div :class="[onePage?'item-box-active':'item-box']" @click="showPage(1)">
@@ -84,13 +84,12 @@
         </div>
       </div>
       <drag_component></drag_component>
-
     </div>
     <div>
       <!--院校属地-->
-      <el-dialog v-model="showAreaChoose" width="1000px" append-to-body>
+      <el-dialog v-model="showAreaChoose" append-to-body width="1500">
         <div class="dialog-box">
-          <div v-for="dict in gk_province" :key="dict.value" @click="chooseArea(dict)">
+          <div v-for="(dict,index) in gk_province" :class="[dict.selected?'item-result-box-active':'item-result-box']"  :key="dict.value" @click="chooseArea(dict,index)">
             <p>
               {{ dict.label }}
             </p>
@@ -101,9 +100,10 @@
     </div>
     <div>
       <!--学历层次-->
-      <el-dialog v-model="showEducationlevel" width="1000px" append-to-body>
+      <el-dialog v-model="showEducationlevel" width="1500" append-to-body>
         <div class="dialog-box dialog-box2">
-          <div v-for="dict in educationlevel" :key="dict.value" @click="chooseEducationlevel(dict)">
+          <div v-for="(dict,index) in educationlevel" :key="dict.value" @click="chooseEducationlevel(dict,index)"
+               :class="[dict.selected?'item-result-box-active':'item-result-box']" >
             <p>
               {{ dict.label }}
             </p>
@@ -114,8 +114,9 @@
     <div>
       <!--特色-->
       <el-dialog v-model="showCharacteristic" width="1000px" append-to-body>
-        <div class="dialog-box">
-          <div v-for="dict in characteristic" :key="dict.value" @click="chooseCharacteristic(dict)">
+        <div class="dialog-box dialog-box2">
+          <div v-for="(dict,index) in characteristic" :key="dict.value" @click="chooseCharacteristic(dict,index)"
+               :class="[dict.selected?'item-result-box-active':'item-result-box']">
             <p>
               {{ dict.label }}
             </p>
@@ -151,6 +152,7 @@ const form = ref({
 })
 const keyInput = ref(false);
 const headinfo = ref({})
+const headinfoRef = ref(null);
 
 function setHeadinfo() {
   headinfo.value = {
@@ -160,7 +162,9 @@ function setHeadinfo() {
       nickName: '张三'
     },
     backUrl: '/xjc-integratedmachine/environment/index',
-    homeUrl: '/xjc-integratedmachine/environment/index'
+    homeUrl: '/xjc-integratedmachine/environment/index',
+    contrast:true,
+    contrastType:1
   }
 }
 
@@ -190,6 +194,11 @@ function jumpTo(path) {
 
 onMounted(() => {
   setHeadinfo()
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(3); // 调用子组件的 sayHello 函数
+    }
+  }, 500)
 })
 const universityList = ref([])
 
@@ -252,9 +261,13 @@ function showAreaChooseHandler() {
   showAreaChoose.value = true
 }
 
-function chooseArea(item) {
+function chooseArea(item,index) {
   form.value.areaid = item.value
   form.value.areaname = item.label
+  gk_province.value.map(ite =>{
+    ite.selected = false;
+  })
+  gk_province.value[index].selected = true;
   showAreaChoose.value = false
 }
 
@@ -262,9 +275,13 @@ function showEducationlevelHandler() {
   showEducationlevel.value = true
 }
 
-function chooseEducationlevel(item) {
+function chooseEducationlevel(item,index) {
   form.value.educationlevel = item.value
   form.value.educationlevelName = item.label
+  educationlevel.value.map(ite =>{
+    ite.selected = false;
+  })
+  educationlevel.value[index].selected = true;
   showEducationlevel.value = false
 }
 
@@ -272,10 +289,14 @@ function showCharacteristicHandler() {
   showCharacteristic.value = true
 }
 
-function chooseCharacteristic(item) {
+function chooseCharacteristic(item,index) {
   form.value.characteristic = item.value
   form.value.characteristicName = item.label
   showCharacteristic.value = false
+  characteristic.value.map(ite =>{
+    ite.selected = false;
+  })
+  characteristic.value[index].selected = true;
 }
 
 function search() {
@@ -293,6 +314,10 @@ function clearResult(item) {
 
 
 <style scoped lang="scss">
+p , div{
+  margin: 0;
+  padding: 0;
+}
 .query_universitydb_conditions {
   background: url('@/assets/images/login/login-home-background.png') no-repeat;
   background-size: 1920px 1080px;
@@ -435,59 +460,6 @@ function clearResult(item) {
             justify-content: space-between;
             align-items: center;
 
-            .item-result-box-active {
-              min-width: 320px;
-              height: 92px;
-              background: linear-gradient(180deg, #B6FFEF 0%, #C5EEFF 100%);
-              box-shadow: inset 0px -2px 7px 0px #1E410E;
-              border-radius: 5px 5px 5px 5px;
-              border: 1px solid #A2F57F;
-              font-weight: 400;
-              font-size: 30px;
-              color: #0DE6A1;
-              line-height: 90px;
-              text-align: center;
-              margin-left: 50px;
-              margin-right: 50px;
-              margin-top: 32px;
-              padding-left: 20px;
-              padding-right: 20px;
-            }
-
-            .item-result-box {
-              min-width: 320px;
-              height: 92px;
-              background: #E0EEF4;
-              border-radius: 5px 5px 5px 5px;
-              font-weight: 400;
-              font-size: 30px;
-              color: #000000;
-              line-height: 90px;
-              text-align: center;
-              margin-left: 50px;
-              margin-right: 50px;
-              margin-top: 32px;
-              padding-left: 20px;
-              padding-right: 20px;
-            }
-
-            .item-result-box:hover {
-              min-width: 320px;
-              height: 92px;
-              background: linear-gradient(180deg, #B6FFEF 0%, #C5EEFF 100%);
-              box-shadow: inset 0px -2px 7px 0px #1E410E;
-              border-radius: 5px 5px 5px 5px;
-              border: 1px solid #A2F57F;
-              font-weight: 400;
-              font-size: 30px;
-              color: #000000;
-              line-height: 90px;
-              text-align: center;
-              margin-left: 50px;
-              margin-top: 32px;
-              padding-left: 20px;
-              padding-right: 20px;
-            }
           }
         }
         .input-component {
@@ -546,35 +518,80 @@ function clearResult(item) {
   flex-wrap: wrap;
   justify-content: space-between;
 
-  div {
-    //border: 1px solid;
-    //width: 244px;
-    //height: 92px;
-    //background: linear-gradient( 180deg, #B6FFEF 0%, #C5EEFF 100%);
-    //box-shadow: inset 0px -2px 7px 0px #1E410E;
-    //border-radius: 5px 5px 5px 5px;
-    //border: 1px solid #A2F57F;
+
+  .item-result-box-active {
+    min-width: 220px;
+    height: 92px;
+    background: linear-gradient(180deg, #B6FFEF 0%, #C5EEFF 100%);
+    box-shadow: inset 0px -2px 7px 0px #1E410E;
+    border-radius: 5px 5px 5px 5px;
+    border: 1px solid #A2F57F;
+    font-weight: 400;
+    font-size: 30px;
+    color: #0DE6A1;
+    line-height: 90px;
+    text-align: center;
+    margin-left: 50px;
+    margin-right: 50px;
+    margin-top: 32px;
+    padding-left: 20px;
+    padding-right: 20px;
+  }
+
+  .item-result-box {
+    min-width: 220px;
+    height: 92px;
+    background: #E0EEF4;
+    border-radius: 5px 5px 5px 5px;
+    font-weight: 400;
+    font-size: 30px;
+    color: #000000;
+    line-height: 92px;
+    text-align: center;
+    margin-left: 50px;
+    margin-right: 50px;
+    margin-top: 32px;
+    padding-left: 20px;
+    padding-right: 20px;
   }
 
-  p {
-    min-width: 120px;
-    padding-left: 10px;
-    padding-right:10px;
-    height: 60px;
-    margin-left: 10px;
-    margin-right: 10px;
-    border: 1px solid;
+  .item-result-box:hover {
+    min-width: 220px;
+    height: 92px;
+    background: linear-gradient(180deg, #B6FFEF 0%, #C5EEFF 100%);
+    box-shadow: inset 0px -2px 7px 0px #1E410E;
+    border-radius: 5px 5px 5px 5px;
+    border: 1px solid #A2F57F;
     font-weight: 400;
     font-size: 30px;
-    color: #333333;
+    color: #000000;
+    //line-height: 90px;
     text-align: center;
-    line-height: 60px;
-    //border-radius: 10px;
+    margin-left: 50px;
+    margin-top: 32px;
+    padding-left: 20px;
+    padding-right: 20px;
   }
+  //p {
+  //  min-width: 120px;
+  //  padding-left: 10px;
+  //  padding-right:10px;
+  //  height: 60px;
+  //  margin-left: 10px;
+  //  margin-right: 10px;
+  //  border: 1px solid;
+  //  font-weight: 400;
+  //  font-size: 30px;
+  //  color: #333333;
+  //  text-align: center;
+  //  line-height: 60px;
+  //  //border-radius: 10px;
+  //}
 }
 .dialog-box2{
      display: flex;
      justify-content: space-around;
+     padding-bottom: 20px;
 }
 .el-dialog{
   border-radius: 35px 35px 35px 35px !important;

+ 21 - 12
src/views/xjc-integratedmachine/environment/university_details_video.vue

@@ -1,6 +1,6 @@
 <template>
-  <div class="university_details_video">
-    <head-component :headinfo="headinfo"></head-component>
+  <div class="university_details_video" v-loading="loading">
+    <head-component :headinfo="headinfo" ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="page-img-box">
         <div class="top-content">
@@ -503,7 +503,7 @@ import videojs from "video.js";
 import "video.js/dist/video-js.css";
 
 import collectionComponent from "@/views/xjc-integratedmachine/components/collection_component.vue";
-import { ref } from "vue";
+import { provide, ref } from "vue";
 import { getConfigKey } from "@/api/system/config.js";
 
 const showAreaChoose = ref(false);
@@ -547,10 +547,7 @@ const fivePage = ref(false);
 const fivePageDialog = ref(false);
 const sixPageDialog = ref(false);
 const eightPageDialog = ref(false);
-
-const sixPage = ref(false);
-const senvenPage = ref(false);
-const eightPage = ref(false);
+const loading = ref(false);
 
 function setHeadinfo() {
   headinfo.value = {
@@ -562,7 +559,7 @@ function setHeadinfo() {
     backUrl: "/xjc-integratedmachine/environment/query_universitydb_conditions",
     homeUrl: "/xjc-integratedmachine/environment/index",
     contrast: true,
-    contrastType: "university",
+    contrastType: 1,
   };
 }
 
@@ -575,18 +572,24 @@ function setCollection_data() {
     source: "university_details_video",
   };
 }
-
+const collectionRef = ref(null);
 function detail() {
+  loading.value = true;
   universityDetail({
     id: param.id,
   }).then((resp) => {
+    resp.entity.compare = resp.compare;
     entity.value.oldid = resp.entity.oldid;
     //学校信息在这里
     entity.value = resp.entity;
     //看看收藏
     queryConnection();
     setCollection_data();
-    collectionRef.value.isContrast(entity);
+    collectionRef.value.getIsContrast(entity.value);
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(1); // 调用子组件的 sayHello 函数
+    }
+    loading.value = false;
   });
 }
 
@@ -704,6 +707,12 @@ function cancle_collection() {
     queryConnection();
   });
 }
+const headinfoRef = ref(null);
+const parentMethod = () => {
+  console.log("父组件方法被调用");
+  detail();
+};
+provide("parentMethod", parentMethod);
 
 detail();
 const showPage = (val) => {
@@ -789,7 +798,7 @@ const showPage = (val) => {
   form.university = "";
   form.categoryName = "";
 };
-const collectionRef = ref(null);
+
 onMounted(() => {
   proxy.getConfigKey("sys_resource_root2").then((res) => {
     baseUrl.value = res.msg;
@@ -891,7 +900,7 @@ div {
           align-items: center;
 
           .right-top-icon {
-            width: 130px;
+            width: 200px;
             height: 68px;
             display: flex;
             margin-right: 30px;

+ 9 - 2
src/views/xjc-integratedmachine/environment/university_list.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="university_details_video">
-    <head-component :headinfo=headinfo></head-component>
+    <head-component :headinfo=headinfo ref="headinfoRef"></head-component>
     <div class="page-content">
       <div class="page-img-box">
         <div class="box-content">
@@ -40,6 +40,7 @@ import {ref} from "vue";
 const router = useRouter()
 const route = useRoute()
 const headinfo = ref({})
+const headinfoRef = ref(null);
 const params = route.query
 
 const total = ref(0)
@@ -66,6 +67,11 @@ function getList() {
     tableData.value = resp.data.rows
     total.value = resp.data.total
   })
+  setTimeout(() => {
+    if (headinfoRef.value) {
+      headinfoRef.value.getCompareSizeData(2); // 调用子组件的 sayHello 函数
+    }
+  }, 500)
 }
 
 function handleDetail(row) {
@@ -94,8 +100,9 @@ function setHeadinfo() {
     backUrl: '/xjc-integratedmachine/environment/query_universitydb_conditions',
     homeUrl: '/xjc-integratedmachine/environment/index',
     contrast:true,
-    contrastType:'university',
+    contrastType:1,
   }
+
 }
 
 </script>

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>

+ 228 - 53
src/views/xjc-integratedmachine/plan/develop_career_plan1.vue

@@ -153,34 +153,37 @@
             </div>
             <div v-show="tabs[10]">
                 综合多方面因素,我科目选择:
-                <el-input v-model="form.selectstrategy" placeholder="例如:物理+化学+政治"
-                ></el-input>
-            </div>
-
-            <div v-show="tabs[11]">
-                高一目标:
-                <el-input v-model="form.goalgrade1"
-                          type="textarea"
-                          placeholder="例如:快速适应高中学习和生活,踏踏实实打好基础。根据自己的实际情况,从职业理想出发,我的选科组合定为物理+化学+政治。">
-                </el-input>
-                高二目标:
+                <el-input v-model="form.selectstrategy" placeholder="例如:物理+化学+政治"></el-input>
 
-                <el-input v-model="form.goalgrade2"
-                          type="textarea"
-                          placeholder="例如:寻求更好的学习方法,力争进入班级前5,年级前100,顺利通过会考,尽全力取得更好的成绩;参加心理、生涯等社团活动,开展研究性学习,学习心理健康知识和技能,提高自己的心理素质和抗压能力。">
-                </el-input>
-
-                高三目标:
-                <el-input v-model="form.goalgrade3"
-                          type="textarea"
-                          placeholder="例如:全力冲刺高考,争取考入目标院校和专业;利用在社团活动中积累的经验和技能,协助心理老师在班级开展心理减压、情绪调节等活动,在此过程中总结经验、反思不足,锻炼自己的专业素养和实践能力,为未来的专业选择和职业发展做好准备。">
-                </el-input>
             </div>
 
+
             <div v-show="tabs[11]">
                 <el-input v-model="form.goalshortterm" type="textarea"
                           placeholder="例如:本科阶段认真学习专业知识,为以后读研和工作打下扎实的基础;积极参加社会实践;顺利毕业并获得学士学位。计划读研,方向为应用心理学,研究生阶段完成专业课程和选修课程学习;积极参加课题研究,争取发表高质量论文;顺利毕业并获得硕士学位。">
                 </el-input>
+
+                <div>
+                    高一目标:
+                    <el-input v-model="form.goalgrade1"
+                              type="textarea"
+                              placeholder="例如:快速适应高中学习和生活,踏踏实实打好基础。根据自己的实际情况,从职业理想出发,我的选科组合定为物理+化学+政治。">
+                    </el-input>
+                    高二目标:
+
+                    <el-input v-model="form.goalgrade2"
+                              type="textarea"
+                              placeholder="例如:寻求更好的学习方法,力争进入班级前5,年级前100,顺利通过会考,尽全力取得更好的成绩;参加心理、生涯等社团活动,开展研究性学习,学习心理健康知识和技能,提高自己的心理素质和抗压能力。">
+                    </el-input>
+
+                    高三目标:
+                    <el-input v-model="form.goalgrade3"
+                              type="textarea"
+                              placeholder="例如:全力冲刺高考,争取考入目标院校和专业;利用在社团活动中积累的经验和技能,协助心理老师在班级开展心理减压、情绪调节等活动,在此过程中总结经验、反思不足,锻炼自己的专业素养和实践能力,为未来的专业选择和职业发展做好准备。">
+                    </el-input>
+                </div>
+
+
             </div>
 
             <div v-show="tabs[12]">
@@ -213,10 +216,132 @@
 
                           placeholder="例如:请老师一起分析自己目前的科目学习情况及提升方法,尽快制定详细的学习计划,包括每天的学习时间、内容、方法和目标,以及每周的总结和反思等,坚持执行和检查。">
                 </el-input>
+                <el-button @click="finish" v-show="form.status == 0 || form.status == 1 || form.status == undefined">制定完成</el-button>
             </div>
         </div>
 
-        <el-button @click="save">保存</el-button>
+
+        <el-button @click="save" v-show="(form.status == 0 || form.status == undefined) && !tabs[16]">保存</el-button>
+
+
+        <el-dialog v-model="openNotice" width="500px" append-to-body>
+            建议:....
+            <el-button @click="closeNotice">关闭</el-button>
+        </el-dialog>
+
+        <el-dialog v-model="openEstimate" width="900px" append-to-body>
+            <table border="1" style="width:800px">
+                <tr>
+                    <td>评估时间</td>
+                    <td>评估内容</td>
+                    <td>达成度</td>
+                    <td>保持/改进</td>
+                </tr>
+                <tr>
+                    <td rowspan="6">
+                        2025/07/02
+                    </td>
+                    <td>品格发展目标</td>
+                    <td>
+                        <el-select v-model="pgForm.v11">
+                            <el-option v-for="(item,index) in achievement_rate" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                    <td>
+                        <el-select v-model="pgForm.v12">
+                            <el-option v-for="(item,index) in maintain_improvement" :label="item.label"
+                                       :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                </tr>
+                <tr>
+                    <td>学业发展目标</td>
+                    <td>
+                        <el-select v-model="pgForm.v21">
+                            <el-option v-for="(item,index) in achievement_rate" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                    <td>
+                        <el-select v-model="pgForm.v22">
+                            <el-option v-for="(item,index) in maintain_improvement" :label="item.label"
+                                       :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                </tr>
+                <tr>
+                    <td>身心健康目标</td>
+                    <td>
+                        <el-select v-model="pgForm.v31">
+                            <el-option v-for="(item,index) in achievement_rate" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                    <td>
+                        <el-select v-model="pgForm.v32">
+                            <el-option v-for="(item,index) in maintain_improvement" :label="item.label"
+                                       :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                </tr>
+                <tr>
+                    <td>艺术素养目标</td>
+                    <td>
+                        <el-select v-model="pgForm.v41">
+                            <el-option v-for="(item,index) in achievement_rate" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                    <td>
+                        <el-select v-model="pgForm.v42">
+                            <el-option v-for="(item,index) in maintain_improvement" :label="item.label"
+                                       :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                </tr>
+                <tr>
+                    <td>生涯发展目标</td>
+                    <td>
+                        <el-select v-model="pgForm.v51">
+                            <el-option v-for="(item,index) in achievement_rate" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                    <td>
+                        <el-select v-model="pgForm.v52">
+                            <el-option v-for="(item,index) in maintain_improvement" :label="item.label"
+                                       :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                </tr>
+                <tr>
+                    <td>事件创新目标</td>
+                    <td>
+                        <el-select v-model="pgForm.v61">
+                            <el-option v-for="(item,index) in achievement_rate" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                    <td>
+                        <el-select v-model="pgForm.v62">
+                            <el-option v-for="(item,index) in maintain_improvement" :label="item.label"
+                                       :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </td>
+                </tr>
+            </table>
+
+
+            <el-button @click="saveEstimate">保存评估</el-button>
+            <el-button @click="editEstimate">修改规划书</el-button>
+        </el-dialog>
 
 
     </div>
@@ -225,12 +350,18 @@
 </template>
 
 <script setup>
-    import {careerplan, doSaveCareerplan} from '@/api/xjc-integratedmachine/plan/careeplan.js'
+    import {careerplan, doSaveCareerplan, finishCareerplan} from '@/api/xjc-integratedmachine/plan/careeplan.js'
+    import { ElMessage} from 'element-plus'
+    import {doEstimateSave} from '@/api/xjc-integratedmachine/plan/estimate.js'
 
+    const {proxy} = getCurrentInstance()
+    const {achievement_rate, maintain_improvement} = proxy.useDict('achievement_rate', 'maintain_improvement')
     const form = ref({})
 
     const tabs = ref([
-        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
+        false, false, false, false, false, false,
+        false, false, false, false, false, false,
+        false, false, false, false, false
     ])
 
     function showTab(index) {
@@ -245,48 +376,92 @@
 
     const content = ref({})
 
-    function init() {
+    function list() {
         careerplan({id: null}).then(resp => {
             form.value = resp
             if (form.value.careerplan != null) {
-                form.careergoals = form.value.careerplan.careergoals
-                form.careeranalysis = form.value.careerplan.careeranalysis
-                form.majoranalysis = form.value.careerplan.majoranalysis
-                form.unianalysis = form.value.careerplan.unianalysis
-                form.careergoal1 = form.value.careerplan.careergoal1
-                form.careergoal2 = form.value.careerplan.careergoal2
-                form.careergoal3 = form.value.careerplan.careergoal3
-                form.majorgoal1 = form.value.careerplan.majorgoal1
-                form.majorgoal2 = form.value.careerplan.majorgoal2
-                form.majorgoal3 = form.value.careerplan.majorgoal3
-                form.unigoal1 = form.value.careerplan.unigoal1
-                form.unigoal2 = form.value.careerplan.unigoal2
-                form.unigoal3 = form.value.careerplan.unigoal3
-                form.mustselect1 = form.value.careerplan.mustselect1
-                form.mustselect2 = form.value.careerplan.mustselect2
-                form.mustselect3 = form.value.careerplan.mustselect3
-                form.selectstrategy = form.value.careerplan.selectstrategy
-                form.goalgrade1 = form.value.careerplan.goalgrade1
-                form.goalgrade2 = form.value.careerplan.goalgrade2
-                form.goalgrade3 = form.value.careerplan.goalgrade3
-                form.goalmidterm = form.value.careerplan.goalmidterm
-                form.goallongterm = form.value.careerplan.goallongterm
-                form.abstale = form.value.careerplan.abstale
-                form.strategy = form.value.careerplan.strategy
-                form.immediatestrategy = form.value.careerplan.immediatestrategy
+                form.value.id = form.value.careerplan.id
+                form.value.selfinterest = form.value.careerplan.selfinterest
+                form.value.selfability = form.value.careerplan.selfability
+                form.value.selfvalue = form.value.careerplan.selfvalue
+                form.value.careergoals = form.value.careerplan.careergoals
+                form.value.careeranalysis = form.value.careerplan.careeranalysis
+                form.value.majoranalysis = form.value.careerplan.majoranalysis
+                form.value.unianalysis = form.value.careerplan.unianalysis
+                form.value.careergoal1 = form.value.careerplan.careergoal1
+                form.value.careergoal2 = form.value.careerplan.careergoal2
+                form.value.careergoal3 = form.value.careerplan.careergoal3
+                form.value.majorgoal1 = form.value.careerplan.majorgoal1
+                form.value.majorgoal2 = form.value.careerplan.majorgoal2
+                form.value.majorgoal3 = form.value.careerplan.majorgoal3
+                form.value.unigoal1 = form.value.careerplan.unigoal1
+                form.value.unigoal2 = form.value.careerplan.unigoal2
+                form.value.unigoal3 = form.value.careerplan.unigoal3
+                form.value.mustselect1 = form.value.careerplan.mustselect1
+                form.value.mustselect2 = form.value.careerplan.mustselect2
+                form.value.mustselect3 = form.value.careerplan.mustselect3
+                form.value.selectstrategy = form.value.careerplan.selectstrategy
+                form.value.goalgrade1 = form.value.careerplan.goalgrade1
+                form.value.goalgrade2 = form.value.careerplan.goalgrade2
+                form.value.goalgrade3 = form.value.careerplan.goalgrade3
+                form.value.goalmidterm = form.value.careerplan.goalmidterm
+                form.value.goallongterm = form.value.careerplan.goallongterm
+                form.value.abstale = form.value.careerplan.abstale
+                form.value.strategy = form.value.careerplan.strategy
+                form.value.immediatestrategy = form.value.careerplan.immediatestrategy
+                form.value.status = form.value.careerplan.status
+                pgForm.value.careerplanId = form.value.careerplan.id
             }
-            console.log("$$$$", resp)
         })
     }
 
     function save() {
+        form.value.status = 0
+        doSaveCareerplan(form.value).then(resp => {
+            list()
+            ElMessage.success("保存完成")
+        })
+    }
+
+    let openNotice = ref(false)
+    let openEstimate = ref(false)
+
+    function finish() {
+        form.value.status = 1
         doSaveCareerplan(form.value).then(resp => {
-            console.log("%%%%", resp)
+            list()
+            ElMessage.success("制定完成")
         })
+        openNotice.value = true
     }
 
+    function closeNotice() {
+        openNotice.value = false
+        openEstimate.value = true
+
+    }
+
+    //---------------------------------
+    const pgForm = ref({})
+
+    function saveEstimate() {
+        doEstimateSave(pgForm.value).then(resp => {
+            ElMessage.success("保存完成")
+        })
+    }
+
+    function editEstimate() {
+        finishCareerplan(form.value).then(resp => {
+            list()
+            showTab(0)
+            openEstimate.value = false
+            ElMessage.success("修改完成")
+        })
+    }
+
+
     onMounted(() => {
-        init()
+        list()
         showTab(0)
     })
 </script>

+ 10 - 8
src/views/xjc-integratedmachine/plan/index.vue

@@ -4,13 +4,13 @@
         <div class="page-content">
             <div class="page-img-box">
                 <div class="img-box">
-                    <img src="@/assets/images/plan/index/card1.png" @click="jumpTo('/xjc-integratedmachine/plan/develop_career_plan1')">
-                    <img src="@/assets/images/plan/index/card2.png" @click="jumpTo('/xjc-integratedmachine/plan/aim/aim_management_index')">
-                    <img src="@/assets/images/plan/index/card3.png" @click="jumpTo('/xjc-integratedmachine/plan/time/time_management_menu')">
+                    <img class="common-img-button" src="@/assets/images/plan/index/card1.png" @click="jumpTo('/xjc-integratedmachine/plan/develop_career_plan1')">
+                    <img class="common-img-button" src="@/assets/images/plan/index/card2.png" @click="jumpTo('/xjc-integratedmachine/plan/aim/aim_management_index')">
+                    <img class="common-img-button" src="@/assets/images/plan/index/card3.png" @click="jumpTo('/xjc-integratedmachine/plan/time/time_management_menu')">
                 </div>
-                <div class="bottom-img common-img-button">
-                    <img src="@/assets/images/plan/index/card4.png" @click="jumpTo('/xjc-integratedmachine/plan/self_control/self_control_index')">
-                    <img src="@/assets/images/plan/index/card5.png" @click="jumpTo('/xjc-integratedmachine/plan/ai_career_interview')">
+                <div class="bottom-img">
+                    <img class="common-img-button" src="@/assets/images/plan/index/card4.png" @click="jumpTo('/xjc-integratedmachine/plan/self_control/self_control/self_control_index')">
+                    <img class="common-img-button" src="@/assets/images/plan/index/card5.png" @click="jumpTo('/xjc-integratedmachine/plan/career_maturity/career_maturity_retest_index')">
                 </div>
             </div>
             <drag_component></drag_component>
@@ -93,7 +93,7 @@
             align-items: center;
             margin-top: 40px;
             .img-box{
-                width: 1520px;
+                width: 1300px;
                 display: flex;
                 justify-content: space-around;
                 img{
@@ -102,9 +102,11 @@
                 }
             }
             .bottom-img{
-                width: 1520px;
+                width: 900px;
                 height: 316px;
                 margin-top: 63px;
+                display: flex;
+                justify-content: space-around;
                 img{
                     width: 324px;
                     height: 400px;

+ 5 - 1
src/views/xjc-integratedmachine/wakeup/index.vue

@@ -25,16 +25,20 @@
         </div>
       </div>
      <drag_component></drag_component>
+<!--     <ai_rabit_component></ai_rabit_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 ai_rabit_component from "@/views/xjc-integratedmachine/components/ai_rabit_component.vue";
+
     const router = useRouter()
     const headinfo = ref({})
     import { ref, onMounted, onUnmounted } from 'vue';
-    import drag_component from "@/views/xjc-integratedmachine/components/drag_component.vue";
+
 
     function setHeadinfo(){
         headinfo.value = {

+ 1 - 1
src/views/xjc-platform/collection/index.vue

@@ -155,7 +155,7 @@
 </template>
 
 <script setup name="Collection">
-import { listCollection, getCollection, delCollection, addCollection, updateCollection } from "@/api/platform/collection"
+import { listCollection, getCollection, delCollection, addCollection, updateCollection } from "@/api/xjc-platform/collection"
 
 const { proxy } = getCurrentInstance()
 const { content_type } = proxy.useDict('content_type')

+ 1 - 3
vite.config.js

@@ -47,9 +47,7 @@ export default defineConfig(({ mode, command }) => {
         // https://cn.vitejs.dev/config/#server-proxy
         '/dev-api': {
           target: 'http://localhost:8080',
-          // target: 'http://test.chuiinxgk.com',//服务器
-          // target: 'http://192.168.3.100:8080',//服务器
-
+          // target: 'http://192.168.1.13:8080',//临时11
           changeOrigin: true,
           rewrite: (p) => p.replace(/^\/dev-api/, '')
         }