Prechádzať zdrojové kódy

企业详情/个人中心

yangzj 2 rokov pred
rodič
commit
f574b94878

+ 1 - 3
package.json

@@ -3,11 +3,9 @@
   "version": "0.1.0",
   "private": true,
   "scripts": {
-    "serve": "vue-cli-service serve",
+    "serve": "vue-cli-service serve --mode dev",
     "build": "vue-cli-service build",
     "lint": "vue-cli-service lint",
-    "serve:dev": "vue-cli-service serve --mode dev",
-    "serve:prod": "vue-cli-service serve --mode prod",
     "build:dev": "vue-cli-service build --mode dev",
     "build:prod": "vue-cli-service build --mode prod"
   },

+ 30 - 1
src/api/AdaptiveTraining/index.js

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-12 17:34:57
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-12 17:36:01
+ * @LastEditTime: 2022-08-15 09:39:06
  * @FilePath: \veterans_client_web\src\api\AdaptiveTraining\index.js
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
  */
@@ -23,3 +23,32 @@ export function getTrainingList(params) {
     params
   })
 }
+
+/**
+ * 获取适应性培训统计
+ * @param {*} params
+ * @returns
+ */
+export function getTrainingTotal(params) {
+  return request({
+    url: '/app/adaptTrainOnline/queryStatus',
+    method: 'get',
+    params
+  })
+}
+
+/**
+ * 获取适应性培训线下列表
+ * @param {*} params
+ * @returns
+ */
+export function getOfflineTrainingList(params) {
+  return request({
+    url: '/app/adaptTrainOffline/queryList',
+    method: 'get',
+    headers: {
+      noLoginFlag: true
+    },
+    params
+  })
+}

+ 33 - 1
src/api/CooperativeEnterprise/index.js

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-11 16:31:06
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-11 16:31:06
+ * @LastEditTime: 2022-08-15 17:43:35
  * @FilePath: \veterans_client_web\src\api\CooperativeEnterprise\index.js
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
  */
@@ -23,3 +23,35 @@ export function getCompanyList(params) {
     params
   })
 }
+
+/**
+ * 获取企业详情
+ * @param {*} params
+ * @returns
+ */
+export function getCompanyDetails(params) {
+  return request({
+    url: '/app/company/getDetail/' + params.companyId,
+    method: 'get',
+    headers: {
+      noLoginFlag: true
+    },
+    params
+  })
+}
+
+/**
+ * 获取企业招聘职位
+ * @param {*} params
+ * @returns
+ */
+export function getCompanyPositon(params) {
+  return request({
+    url: '/app/companypost/list/' + params.companyId,
+    method: 'get',
+    headers: {
+      noLoginFlag: true
+    },
+    params
+  })
+}

+ 2 - 1
src/api/Home/index.js

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-10 14:10:36
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-10 17:36:05
+ * @LastEditTime: 2022-08-15 11:02:11
  * @FilePath: \veterans_client_web\src\api\Home\index.js
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
  */
@@ -45,3 +45,4 @@ export function getNoticeList(params) {
   })
 }
 
+

+ 49 - 0
src/api/PersonalCenter/index.js

@@ -0,0 +1,49 @@
+/**
+ * @Description: 个人中心
+ * @Author: 空白格
+ * @Date: 2022-08-15 14:26:14
+ * @LastEditors: 空白格
+ * @LastEditTime: 2022-08-15 14:34:16
+ * @FilePath: \veterans_client_web\src\api\PersonalCenter\index.js
+ * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
+ */
+import request from '@/utils/request'
+
+/**
+ * 获取个人信息
+ * @param {*} params
+ * @returns
+ */
+export function getPersonInfoData(params) {
+  return request({
+    url: '/app/memberinfo',
+    method: 'get',
+    params
+  })
+}
+
+/**
+ * 获取个人积分
+ * @param {*} params
+ * @returns
+ */
+export function getPersonIntegralData(params) {
+  return request({
+    url: '/app/integral/total',
+    method: 'get',
+    params
+  })
+}
+
+/**
+ * 获取个人统计
+ * @param {*} params
+ * @returns
+ */
+export function getPersonStaticisData(params) {
+  return request({
+    url: '/app/memberinfo/getCountResult',
+    method: 'get',
+    params
+  })
+}

+ 13 - 0
src/assets/images/dingwei.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 13 17" class="design-iconfont">
+  <defs>
+    <filter id="0f2nn8qs1__p6flb32cba">
+      <feColorMatrix in="SourceGraphic" values="0 0 0 0 1.000000 0 0 0 0 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0"/>
+    </filter>
+  </defs>
+  <g filter="url(#0f2nn8qs1__p6flb32cba)" fill="none" fill-rule="evenodd">
+    <g fill="#999" fill-rule="nonzero">
+      <path d="M6.5,0 C2.9137931,0 0,2.88260869 0,6.43043478 C0,9.90434781 4.93103448,15.8913043 5.08045976,16.1869565 L5.15517241,16.2608696 C5.52873563,16.6304348 5.97701149,17 6.57471265,17 L6.64942528,17 C7.24712643,17 7.62068966,16.5565217 7.91954024,16.1869565 C8.14367817,15.9652174 13,9.90434781 13,6.43043478 C13,2.88260869 10.0862069,0 6.5,0 Z M6.72413793,15.226087 C6.64942528,15.373913 6.57471265,15.373913 6.5,15.4478261 C6.42528735,15.373913 6.35057472,15.3 6.20114942,15.226087 C4.85632183,13.6 1.41954024,8.86956523 1.41954024,6.43043478 C1.41970374,3.69553903 3.66080518,1.47855376 6.42528736,1.47855376 C9.18976954,1.47855376 11.430871,3.69553903 11.4310345,6.43043478 C11.5057471,8.86956521 8.06896552,13.673913 6.72413793,15.226087 Z"/>
+      <path d="M6.5,4 C5.14285713,4 4,5.14285715 4,6.5 C4,7.85714285 5.14285715,9 6.5,9 C7.85714285,9 9,7.85714285 9,6.5 C9,5.14285715 7.85714285,4 6.5,4 Z M6.5,7.57142857 C5.92857143,7.57142857 5.42857143,7.07142857 5.42857143,6.5 C5.42857143,5.92857143 5.92857143,5.42857143 6.5,5.42857143 C7.07142857,5.42857143 7.57142857,5.92857143 7.57142857,6.5 C7.57142857,7.07142857 7.07142857,7.57142857 6.5,7.57142857 Z"/>
+    </g>
+  </g>
+</svg>

+ 14 - 0
src/assets/images/personal-center-icon/jianlitongguo.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 34" class="design-iconfont">
+  <defs>
+    <filter id="lnqvvvxkz__2m0koxt0wa">
+      <feColorMatrix in="SourceGraphic" values="0 0 0 0 0.528872 0 0 0 0 0.528872 0 0 0 0 0.528872 0 0 0 1.000000 0"/>
+    </filter>
+  </defs>
+  <g transform="translate(0 .294554)" filter="url(#lnqvvvxkz__2m0koxt0wa)" fill="none" fill-rule="evenodd">
+    <g fill="#0081FF" fill-rule="nonzero">
+      <path d="M25.5,17.5498375 C28.7808586,17.5498375 31.4497562,20.2191414 31.4497562,23.4995937 C31.4497562,26.7800459 28.7804522,29.4493498 25.5,29.4493498 C22.2195478,29.4493498 19.5502438,26.7800459 19.5502438,23.4995937 C19.5502438,20.2191414 22.2191414,17.5498375 25.5,17.5498375 M25.5,15 C20.8054546,15 17,18.8054546 17,23.5 C17,28.1945454 20.8054546,32 25.5,32 C30.1945454,32 34,28.194139 34,23.4995937 C34,18.8050483 30.194139,15 25.5,15 Z"/>
+      <path d="M25.2805894,26.743101 C24.9556066,27.085633 24.4289514,27.085633 24.1039686,26.743101 L21.1039438,23.5810736 C20.6162707,23.067066 20.6162707,22.2348432 21.1039438,21.7208355 C21.5916169,21.2068279 22.3812018,21.2068279 22.8688749,21.7208355 L24.692279,23.6427042 L27.8693141,20.294108 C28.3569872,19.7801003 29.1465721,19.7801003 29.6342452,20.294108 C30.1219183,20.8081156 30.1219183,21.6403384 29.6342452,22.154346 L25.2805894,26.743101 Z M20.5613776,8.63124953 L7.24822037,8.63124953 C6.55927273,8.63124953 6,8.0421951 6,7.31562477 C6,6.58905443 6.55887496,6 7.24822037,6 L20.5609799,6 C21.2499275,6 21.8092002,6.58905443 21.8092002,7.31562477 C21.8092002,8.0421951 21.2503253,8.63124953 20.5613776,8.63124953 Z M15.5688939,17.2712735 L7.24822037,17.2712735 C6.55927273,17.2712735 6,16.6822191 6,15.9556487 C6,15.2290784 6.55887496,14.640024 7.24822037,14.640024 L15.5688939,14.640024 C16.2578416,14.640024 16.8171143,15.2290784 16.8171143,15.9556487 C16.8171143,16.6822191 16.2578416,17.2712735 15.5688939,17.2712735 Z M13.9049979,25.9117167 L7.24822037,25.9117167 C6.55927273,25.9117167 6,25.3226623 6,24.5960919 C6,23.8699409 6.55887496,23.2804672 7.24822037,23.2804672 L13.9046001,23.2804672 C14.5935477,23.2804672 15.1528205,23.8695216 15.1528205,24.5960919 C15.1528205,25.322243 14.5939455,25.9117167 13.9049979,25.9117167 Z"/>
+      <path d="M18.0851048,33 L4.33019634,33 C1.94306804,33 0,31.0647961 0,28.6850292 L0,4.31658883 C0,1.93682198 1.94266214,0 4.32979043,0 L22.6702096,0 C25.0573379,0 27,1.93682198 27,4.31658883 L27,13.2855147 C27,13.9861361 26.4297032,14.5548854 25.7262696,14.5548854 C25.0228359,14.5548854 24.4525392,13.9865407 24.4525392,13.2855147 L24.4525392,4.31658883 C24.4525392,3.33644688 23.6533119,2.53833707 22.6698037,2.53833707 L4.33019634,2.53833707 C3.34668811,2.53833707 2.54746084,3.33644688 2.54746084,4.31658883 L2.54746084,28.6850292 C2.54746084,29.6651712 3.34668811,30.4616629 4.33019634,30.4616629 L18.0851048,30.4616629 C18.7881325,30.4616629 19.3588352,31.0300077 19.3588352,31.7310337 C19.3588352,32.4312507 18.7881325,33 18.0851048,33 Z"/>
+    </g>
+  </g>
+</svg>

+ 13 - 0
src/assets/images/personal-center-icon/mianshi-houxuanren.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 39" class="design-iconfont">
+  <defs>
+    <filter id="zmvk9m9wc__lhb82gsf9a">
+      <feColorMatrix in="SourceGraphic" values="0 0 0 0 0.529412 0 0 0 0 0.529412 0 0 0 0 0.529412 0 0 0 1.000000 0"/>
+    </filter>
+  </defs>
+  <g transform="translate(0 .294554)" filter="url(#zmvk9m9wc__lhb82gsf9a)" fill="none" fill-rule="evenodd">
+    <g fill="#000" fill-rule="nonzero">
+      <path d="M23.7708637,28.2869565 C25.2776334,28.2869565 25.8074771,26.4126246 24.4875605,25.7370396 C23.9464026,25.45794 23.3883212,25.2082458 22.8161212,24.9892121 C27.282678,22.7624011 30.3294925,18.3841969 30.3567953,13.3446972 C30.4111731,6.02556009 24.078482,0.0511865304 16.2122723,0.00050239978 C8.27400216,-0.0630073373 1.81605218,5.90294092 1.81605218,13.2764243 C1.81605218,13.5653937 1.82543751,13.8503937 1.84335493,14.1353938 C1.92611633,15.3381099 3.4968768,15.8906448 4.40981197,15.0364386 C4.71611454,14.7514385 4.87566488,14.3521209 4.84836217,13.9488339 C4.83378453,13.7252129 4.82610248,13.5012489 4.82532549,13.2772181 C4.82532549,7.49306656 9.86779931,2.8020768 16.0834375,2.8020768 C22.2854243,2.8020768 27.3415495,7.5065624 27.3415495,13.2772181 C27.3415495,19.0613697 22.2999289,23.7531534 16.0834375,23.7531534 C12.4341796,23.7567526 9.0106649,22.1100104 6.90374617,19.3376372 C6.64763357,19.0022645 6.24508744,18.7896001 5.80432742,18.7568161 C5.3635674,18.7240321 4.92982323,18.8744927 4.61970174,19.1677485 C4.10109083,19.6532715 4.03338001,20.4156595 4.4592982,20.9738074 C5.73820807,22.643749 7.41382552,24.0167416 9.35587303,24.9860366 C4.33216983,26.9095885 0.687254747,30.9892969 0.0123652595,36.2248828 C-0.0462958526,36.6755188 0.105568079,37.1279242 0.429450721,37.4673878 C0.753333363,37.8068515 1.21813013,38.0007725 1.70598804,38 C2.56749912,38.0039098 3.29575904,37.4071614 3.40046401,36.6114985 C4.14531674,30.814645 9.53846006,26.9508699 16.0834375,26.9508699 C17.9425831,26.9508699 19.7053159,27.2620677 21.294847,27.8400066 C22.0830445,28.1312404 22.9228035,28.2828267 23.7708637,28.2869565 L23.7708637,28.2869565 Z"/>
+      <path d="M29.5271111,29.0588235 L21.4675555,29.0588235 C20.5253333,29.0588235 19.7546667,29.7239539 19.7546667,30.537914 C19.7546667,31.3511069 20.5253333,32.0162373 21.4675555,32.0162373 L29.5235555,32.0162373 C30.4657778,32.0162373 31.2364465,31.3511069 31.2364465,30.537914 C31.2371521,30.1461123 31.0574314,29.7701264 30.7368436,29.4927209 C30.4162558,29.2153155 29.9810803,29.0592301 29.5271111,29.0588235 L29.5271111,29.0588235 Z M32.2835555,33.9249392 L18.7128889,33.9249392 C17.7706667,33.9249392 17,34.5893024 17,35.4032625 C17,36.2164553 17.7715555,36.8823529 18.7128889,36.8823529 L32.2871111,36.8823529 C33.2322437,36.8798237 33.9975598,36.2189684 34,35.4032625 C33.9946413,34.587534 33.2287247,33.9278725 32.2835555,33.9249392 L32.2835555,33.9249392 Z"/>
+    </g>
+  </g>
+</svg>

+ 15 - 0
src/assets/images/personal-center-icon/pingjia.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 30" class="design-iconfont">
+  <defs>
+    <filter id="79v7hkx9w__n5lss0u72a">
+      <feColorMatrix in="SourceGraphic" values="0 0 0 0 0.529412 0 0 0 0 0.529412 0 0 0 0 0.529412 0 0 0 1.000000 0"/>
+    </filter>
+  </defs>
+  <g transform="translate(0 -2.705446)" filter="url(#79v7hkx9w__n5lss0u72a)" fill="none" fill-rule="evenodd">
+    <g fill="#000" fill-rule="nonzero">
+      <path d="M16.9311862,29 C16.6001495,29 16.2690306,28.8709305 16.0137649,28.6123655 L13.1453817,25.7070664 L1.79802423,25.6134804 C0.805858002,25.6090077 0,24.7699281 0,23.7392464 L0,1.87427658 C0,0.840783436 0.810167842,0 1.80602822,0 L32.1939718,0 C33.1898322,0 34,0.840783436 34,1.87427658 L34,23.7392464 C34,24.7700559 33.1938957,25.6091781 32.2015653,25.613523 L20.673564,25.707109 L17.8557906,28.6050814 C17.5999092,28.8682469 17.2655477,29 16.9311862,29 Z M2.62699119,22.8940329 L13.6949068,22.9853187 C14.0341156,22.9880988 14.3591285,23.1269948 14.6018613,23.3729105 L16.9241673,25.725085 L19.2041138,23.3801947 C19.4475748,23.1298293 19.7756811,22.9881241 20.1184156,22.9853187 L31.3730499,22.8939051 L31.3730499,2.72622048 L2.62699119,2.72622048 L2.62699119,22.8940329 Z" transform="translate(0 3)"/>
+      <path d="M7.55555556,12.5 C7.55555556,13.8807119 8.61266101,15 9.91666667,15 C11.2206723,15 12.2777778,13.8807119 12.2777778,12.5 C12.2777778,11.1192881 11.2206723,10 9.91666667,10 C8.61266101,10 7.55555556,11.1192881 7.55555556,12.5 L7.55555556,12.5 Z" transform="translate(0 3)"/>
+      <path d="M14.1666667,12.5 C14.1666667,13.8807119 15.2237721,15 16.5277778,15 C17.8317834,15 18.8888889,13.8807119 18.8888889,12.5 C18.8888889,11.1192881 17.8317834,10 16.5277778,10 C15.2237721,10 14.1666667,11.1192881 14.1666667,12.5 Z" transform="translate(0 3)"/>
+      <path d="M22.6666667,12.5 C22.6666667,13.8807119 23.7237721,15 25.0277778,15 C26.3317834,15 27.3888889,13.8807119 27.3888889,12.5 C27.3888889,11.1192881 26.3317834,10 25.0277778,10 C23.7237721,10 22.6666667,11.1192881 22.6666667,12.5 L22.6666667,12.5 Z" transform="translate(0 3)"/>
+    </g>
+  </g>
+</svg>

+ 13 - 0
src/assets/images/personal-center-icon/toudimoren.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 34" class="design-iconfont">
+  <defs>
+    <filter id="ukrurzymf__72odgvix2a">
+      <feColorMatrix in="SourceGraphic" values="0 0 0 0 0.529412 0 0 0 0 0.529412 0 0 0 0 0.529412 0 0 0 1.000000 0"/>
+    </filter>
+  </defs>
+  <g transform="translate(0 .294554)" filter="url(#ukrurzymf__72odgvix2a)" fill="none" fill-rule="evenodd">
+    <g fill="#999" fill-rule="nonzero">
+      <path d="M31.5425881,16.8748419 L16.8786392,31.5422448 C14.9234515,33.4859184 11.7661445,33.4859184 9.81095682,31.5422448 L1.46444168,23.1937638 C0.526808423,22.2565226 0,20.9849828 0,19.6590902 C0,18.3331975 0.526808423,17.0616578 1.46444168,16.1244166 L16.1283906,1.45701374 C18.0806605,-0.485671247 21.2352776,-0.485671247 23.1875474,1.45701374 L31.5425881,9.8054948 C33.485804,11.761143 33.485804,14.9191937 31.5425881,16.8748419 Z M3.20365423,17.8555113 C2.21762369,18.8523288 2.21762369,20.4573241 3.20365423,21.4541415 L11.5331182,29.8026226 C12.528683,30.7832737 14.1268107,30.7832737 15.1223755,29.8026226 L29.7863244,15.1437473 C30.772355,14.1469298 30.772355,12.5419345 29.7863244,11.545117 L21.4568604,3.19663594 C20.4602777,2.21037315 18.8556603,2.21037315 17.8590776,3.19663594 L3.20365423,17.8555113 Z"/>
+      <path d="M32.7661291,33 L1.23387097,33 C0.552422851,33 0,32.4471167 0,31.7651007 C0,31.0830846 0.552422851,30.5302013 1.23387097,30.5302013 L32.7661291,30.5302013 C33.4475772,30.5302013 34,31.0830846 34,31.7651007 C34,32.4471167 33.4475772,33 32.7661291,33 L32.7661291,33 Z M16.5372984,16.2259507 C15.1341114,17.5485204 13.2808079,18.2873938 11.3533266,18.292692 C10.6718785,18.292692 10.1194556,17.7398087 10.1194556,17.0577926 C10.1194556,16.3757766 10.6718785,15.8228933 11.3533266,15.8228933 C11.8331653,15.8228933 15.9375,15.6428038 15.9375,11.2348993 C15.9375001,10.5528832 16.4899229,10 17.171371,10 C17.8528191,10 18.405242,10.5528832 18.405242,11.2348993 C18.4920911,13.0844465 17.8168544,14.888645 16.5372984,16.2259507 L16.5372984,16.2259507 Z"/>
+    </g>
+  </g>
+</svg>

+ 186 - 0
src/assets/styles/common.scss

@@ -9,3 +9,189 @@
     }
   }
 }
+.hexagon {
+  background-color: rgba($color: #fff, $alpha: 0.3);
+  -webkit-clip-path: polygon(
+    45% 1.33975%,
+    46.5798% 0.60307%,
+    48.26352% 0.15192%,
+    50% 0%,
+    51.73648% 0.15192%,
+    53.4202% 0.60307%,
+    55% 1.33975%,
+    89.64102% 21.33975%,
+    91.06889% 22.33956%,
+    92.30146% 23.57212%,
+    93.30127% 25%,
+    94.03794% 26.5798%,
+    94.48909% 28.26352%,
+    94.64102% 30%,
+    94.64102% 70%,
+    94.48909% 71.73648%,
+    94.03794% 73.4202%,
+    93.30127% 75%,
+    92.30146% 76.42788%,
+    91.06889% 77.66044%,
+    89.64102% 78.66025%,
+    55% 98.66025%,
+    53.4202% 99.39693%,
+    51.73648% 99.84808%,
+    50% 100%,
+    48.26352% 99.84808%,
+    46.5798% 99.39693%,
+    45% 98.66025%,
+    10.35898% 78.66025%,
+    8.93111% 77.66044%,
+    7.69854% 76.42788%,
+    6.69873% 75%,
+    5.96206% 73.4202%,
+    5.51091% 71.73648%,
+    5.35898% 70%,
+    5.35898% 30%,
+    5.51091% 28.26352%,
+    5.96206% 26.5798%,
+    6.69873% 25%,
+    7.69854% 23.57212%,
+    8.93111% 22.33956%,
+    10.35898% 21.33975%
+  );
+  clip-path: polygon(
+    45% 1.33975%,
+    46.5798% 0.60307%,
+    48.26352% 0.15192%,
+    50% 0%,
+    51.73648% 0.15192%,
+    53.4202% 0.60307%,
+    55% 1.33975%,
+    89.64102% 21.33975%,
+    91.06889% 22.33956%,
+    92.30146% 23.57212%,
+    93.30127% 25%,
+    94.03794% 26.5798%,
+    94.48909% 28.26352%,
+    94.64102% 30%,
+    94.64102% 70%,
+    94.48909% 71.73648%,
+    94.03794% 73.4202%,
+    93.30127% 75%,
+    92.30146% 76.42788%,
+    91.06889% 77.66044%,
+    89.64102% 78.66025%,
+    55% 98.66025%,
+    53.4202% 99.39693%,
+    51.73648% 99.84808%,
+    50% 100%,
+    48.26352% 99.84808%,
+    46.5798% 99.39693%,
+    45% 98.66025%,
+    10.35898% 78.66025%,
+    8.93111% 77.66044%,
+    7.69854% 76.42788%,
+    6.69873% 75%,
+    5.96206% 73.4202%,
+    5.51091% 71.73648%,
+    5.35898% 70%,
+    5.35898% 30%,
+    5.51091% 28.26352%,
+    5.96206% 26.5798%,
+    6.69873% 25%,
+    7.69854% 23.57212%,
+    8.93111% 22.33956%,
+    10.35898% 21.33975%
+  );
+  &-box {
+    width: 100%;
+    height: 100%;
+    background-position: center center;
+    background-repeat: no-repeat;
+    background-size: cover;
+    -webkit-clip-path: polygon(
+      45% 1.33975%,
+      46.5798% 0.60307%,
+      48.26352% 0.15192%,
+      50% 0%,
+      51.73648% 0.15192%,
+      53.4202% 0.60307%,
+      55% 1.33975%,
+      89.64102% 21.33975%,
+      91.06889% 22.33956%,
+      92.30146% 23.57212%,
+      93.30127% 25%,
+      94.03794% 26.5798%,
+      94.48909% 28.26352%,
+      94.64102% 30%,
+      94.64102% 70%,
+      94.48909% 71.73648%,
+      94.03794% 73.4202%,
+      93.30127% 75%,
+      92.30146% 76.42788%,
+      91.06889% 77.66044%,
+      89.64102% 78.66025%,
+      55% 98.66025%,
+      53.4202% 99.39693%,
+      51.73648% 99.84808%,
+      50% 100%,
+      48.26352% 99.84808%,
+      46.5798% 99.39693%,
+      45% 98.66025%,
+      10.35898% 78.66025%,
+      8.93111% 77.66044%,
+      7.69854% 76.42788%,
+      6.69873% 75%,
+      5.96206% 73.4202%,
+      5.51091% 71.73648%,
+      5.35898% 70%,
+      5.35898% 30%,
+      5.51091% 28.26352%,
+      5.96206% 26.5798%,
+      6.69873% 25%,
+      7.69854% 23.57212%,
+      8.93111% 22.33956%,
+      10.35898% 21.33975%
+    );
+    clip-path: polygon(
+      45% 1.33975%,
+      46.5798% 0.60307%,
+      48.26352% 0.15192%,
+      50% 0%,
+      51.73648% 0.15192%,
+      53.4202% 0.60307%,
+      55% 1.33975%,
+      89.64102% 21.33975%,
+      91.06889% 22.33956%,
+      92.30146% 23.57212%,
+      93.30127% 25%,
+      94.03794% 26.5798%,
+      94.48909% 28.26352%,
+      94.64102% 30%,
+      94.64102% 70%,
+      94.48909% 71.73648%,
+      94.03794% 73.4202%,
+      93.30127% 75%,
+      92.30146% 76.42788%,
+      91.06889% 77.66044%,
+      89.64102% 78.66025%,
+      55% 98.66025%,
+      53.4202% 99.39693%,
+      51.73648% 99.84808%,
+      50% 100%,
+      48.26352% 99.84808%,
+      46.5798% 99.39693%,
+      45% 98.66025%,
+      10.35898% 78.66025%,
+      8.93111% 77.66044%,
+      7.69854% 76.42788%,
+      6.69873% 75%,
+      5.96206% 73.4202%,
+      5.51091% 71.73648%,
+      5.35898% 70%,
+      5.35898% 30%,
+      5.51091% 28.26352%,
+      5.96206% 26.5798%,
+      6.69873% 25%,
+      7.69854% 23.57212%,
+      8.93111% 22.33956%,
+      10.35898% 21.33975%
+    );
+  }
+}

+ 6 - 3
src/layout/index.vue

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-10 11:30:36
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-11 17:52:08
+ * @LastEditTime: 2022-08-15 12:44:50
  * @FilePath: \veterans_client_web\src\layout\index.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
@@ -25,7 +25,9 @@
             </el-input>
           </div>
           <div class="header-box-right-user" v-if="isLogin">
-            下午好,{{ userInfo.userName }}
+            下午好,<router-link class="link" to="/personalcenter">{{
+              userInfo.userName
+            }}</router-link>
           </div>
           <div class="header-box-right-user" v-else>
             下午好,请<router-link class="link" to="/login">登录</router-link>
@@ -65,7 +67,7 @@ export default {
   computed: {
     ...mapState({
       userInfo: (state) => state.user.userInfo,
-      isLogin: (state) => state.user.isLogin
+      isLogin: (state) => state.user.isLogin,
     }),
   },
   created() {},
@@ -132,6 +134,7 @@ export default {
 .footer {
   background-color: #659789;
   opacity: 0.7;
+  width: 100%;
   height: 100px;
   text-align: center;
   color: #fff;

+ 20 - 0
src/router/index.js

@@ -47,6 +47,17 @@ const routes = [
           title: '合作企业'
         }
       },
+      {
+        path: 'enterprisedetails',
+        name: 'EnterpriseDetailsIndex',
+        component: () =>
+          import(
+            '@/views/CooperativeEnterprise/EnterpriseDetails/EnterpriseDetailsIndex.vue'
+          ),
+        meta: {
+          title: '企业详情'
+        }
+      },
       {
         path: 'cooperativecolleges',
         name: 'CooperativeCollegesIndex',
@@ -89,6 +100,15 @@ const routes = [
         meta: {
           title: '适应性培训'
         }
+      },
+      {
+        path: 'personalcenter',
+        name: 'PersonalCenterIndex',
+        component: () =>
+          import('@/views/PersonalCenter/PersonalCenterIndex.vue'),
+        meta: {
+          title: '我的'
+        }
       }
     ]
   },

+ 2 - 2
src/store/modules/user.js

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-10 13:40:53
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-10 15:19:32
+ * @LastEditTime: 2022-08-15 10:11:14
  * @FilePath: \veterans_client_web\src\store\modules\user.js
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
  */
@@ -12,7 +12,7 @@ import { loginAuthCode, getAuthCode } from "@/api/Login";
 const user = {
   state: {
     token: getToken(),
-    isLogin: false,
+    isLogin: true,
     userInfo: {
       userName: 'xxx'
     }

+ 208 - 50
src/views/AdaptiveTraining/AdaptiveTrainingIndex.vue

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-12 15:23:44
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-12 18:00:48
+ * @LastEditTime: 2022-08-15 10:04:08
  * @FilePath: \veterans_client_web\src\views\AdaptiveTraining\AdaptiveTrainingIndex.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
@@ -35,29 +35,56 @@
               {{ item.label }}
             </div>
           </div>
-          <div class="atsb-total">
-            <div class="atsb-total-item">
-              <p>已看课程</p>
-              <p><span>8</span>个</p>
+          <template v-if="tabCur === 1">
+            <div class="atsb-total">
+              <div class="atsb-total-item">
+                <p>已看课程</p>
+                <p>
+                  <span>{{ trainingTotal.play || 0 }}</span
+                  >个
+                </p>
+              </div>
+              <div class="atsb-total-item">
+                <p>还需观看</p>
+                <p>
+                  <span>{{ trainingTotal.playNot || 0 }}</span
+                  >个
+                </p>
+              </div>
+            </div>
+          </template>
+          <template v-else>
+            <div class="atsb-total" v-if="trainingTotal.status === 0">
+              <div class="atsb-total-item">
+                <p>未参加线下培训</p>
+                <p>(注:必须参加线下培训才能通过适应性培训)</p>
+              </div>
             </div>
-            <div class="atsb-total-item">
-              <p>还需观看</p>
-              <p><span>8</span>个</p>
+            <div class="atsb-total" v-else>
+              <div class="atsb-total-item">
+                <p>已参加线下培训</p>
+                <p>(注:必须参加线下培训才能通过适应性培训)</p>
+              </div>
             </div>
-          </div>
+          </template>
         </div>
       </div>
       <!-- 列表 -->
-      <div class="app-main-box-content adaptive-training-list" v-loading="loading" v-if="onlineClassList.length">
-        <el-row :gutter="16">
-          <el-col
-            :xs="24"
-            :sm="24"
-            :md="12"
-            :lg="12"
-            :xl="12"
-            v-for="(item, index) in onlineClassList"
-            :key="index"
+      <template v-if="tabCur === 1">
+        <div
+          class="app-main-box-content adaptive-training-list"
+          v-loading="onlineObj.loading"
+          v-if="onlineObj.list.length"
+        >
+          <el-row :gutter="16">
+            <el-col
+              :xs="24"
+              :sm="24"
+              :md="12"
+              :lg="12"
+              :xl="12"
+              v-for="(item, index) in onlineObj.list"
+              :key="index"
             >
               <div class="adaptive-training-list-item">
                 <div class="left">
@@ -69,30 +96,79 @@
                 </div>
                 <div class="right">
                   <div class="name">{{ item.adaptName }}</div>
-                  <div class="total">共{{ item.amount }}节课,已学完{{ item.finishCount }}节课,学习进度{{ item.finishPercent || 0 }}%</div>
+                  <div class="total">
+                    共{{ item.amount || 0 }}节课,已学完{{
+                      item.finishCount || 0
+                    }}节课,学习进度{{ item.finishPercent || 0 }}%
+                  </div>
                 </div>
               </div>
-            </el-col
-          >
-        </el-row>
-        <div class="pagination" v-if="total">
-          <el-pagination
-            background
-            layout="prev, pager, next"
-            :page-size="queryParams.pageSize"
-            :total="total"
-            @current-change="currentChange"
-          />
+            </el-col>
+          </el-row>
+          <div class="pagination" v-if="onlineObj.total">
+            <el-pagination
+              background
+              layout="prev, pager, next"
+              :page-size="onlineObj.queryParams.pageSize"
+              :total="onlineObj.total"
+              @current-change="onlineCurrentChange"
+            />
+          </div>
         </div>
-      </div>
-      <el-empty description="列表数据为空" v-else></el-empty>
+        <el-empty description="列表数据为空" v-else></el-empty>
+      </template>
+      <template v-else>
+        <div
+          class="app-main-box-content adaptive-training-list"
+          v-loading="offlineObj.loading"
+          v-if="offlineObj.list.length"
+        >
+          <el-row :gutter="16">
+            <el-col
+              :xs="24"
+              :sm="24"
+              :md="12"
+              :lg="12"
+              :xl="12"
+              v-for="(item, index) in offlineObj.list"
+              :key="index"
+            >
+              <div class="adaptive-training-list-item">
+                <div class="offline">
+                  <p class="name">{{ item.adaptName || "-" }}</p>
+                  <div class="bottom">
+                    <div>{{ item.adaptAddress || "-" }}</div>
+                    <div>{{ parseTime(item.createTime) || "-" }}</div>
+                  </div>
+                </div>
+              </div>
+            </el-col>
+          </el-row>
+          <div class="pagination" v-if="offlineObj.total">
+            <el-pagination
+              background
+              layout="prev, pager, next"
+              :page-size="offlineObj.queryParams.pageSize"
+              :total="offlineObj.total"
+              @current-change="offlineCurrentChange"
+            />
+          </div>
+        </div>
+        <el-empty description="列表数据为空" v-else></el-empty>
+      </template>
     </div>
   </div>
 </template>
 
 <script>
 import BannerBreadcrumb from "@/components/BannerBreadcrumb";
-import { getTrainingList } from "@/api/AdaptiveTraining";
+import {
+  getTrainingList,
+  getTrainingTotal,
+  getOfflineTrainingList,
+} from "@/api/AdaptiveTraining";
+import { mapState } from "vuex";
+import { parseTime } from "@/utils/utils";
 export default {
   name: "AdaptiveTrainingIndex",
   components: {
@@ -105,17 +181,45 @@ export default {
         { label: "适应性培训", value: 1 },
         { label: "线下培训", value: 2 },
       ],
-      queryParams: {
-        pageNum: 1,
-        pageSize: 8,
+      // 线上课程
+      onlineObj: {
+        queryParams: {
+          pageNum: 1,
+          pageSize: 8,
+        },
+        loading: false,
+        total: 0,
+        list: [],
+      },
+      // 线下课程
+      offlineObj: {
+        queryParams: {
+          pageNum: 1,
+          pageSize: 8,
+        },
+        loading: false,
+        total: 0,
+        list: [],
+      },
+      trainingTotal: {
+        play: 0,
+        playNot: 0,
+        status: 0,
       },
-      total: 0,
-      onlineClassList: [],
-      loading: false
+      parseTime: parseTime,
     };
   },
+  computed: {
+    ...mapState({
+      isLogin: (state) => state.user.isLogin,
+    }),
+  },
   created() {
     this.getOnlineList();
+    this.getOfflineList();
+    if (this.isLogin) {
+      this.getTrainingTotal();
+    }
   },
   methods: {
     tabClick(item) {
@@ -127,22 +231,57 @@ export default {
      * @returns {any}
      */
     getOnlineList() {
-      this.loading = true
-      getTrainingList(this.queryParams).then((res) => {
-        this.onlineClassList = res.rows;
-        this.total = Number(res.total);
-        this.loading = false
+      this.onlineObj.loading = true;
+      getTrainingList(this.onlineObj.queryParams).then((res) => {
+        this.onlineObj.list = res.rows;
+        this.onlineObj.total = Number(res.total);
+        this.onlineObj.loading = false;
       });
     },
     /**
-     * 分页触发
+     * 线上分页触发
      * @date 2022-08-12
      * @param {any} page
      * @returns {any}
      */
-    currentChange(page) {
-      this.queryParams.pageNum = page;
-      this.getOnlineList()
+    onlineCurrentChange(page) {
+      this.onlineObj.queryParams.pageNum = page;
+      this.getOnlineList();
+    },
+    /**
+     * 获取适应性培训统计
+     * @date 2022-08-15
+     * @returns {any}
+     */
+    getTrainingTotal() {
+      getTrainingTotal().then((res) => {
+        if (res.code === 200) {
+          this.trainingTotal = res.data;
+        }
+      });
+    },
+    /**
+     * 获取线下课程列表
+     * @date 2022-08-15
+     * @returns {any}
+     */
+    getOfflineList() {
+      this.offlineObj.loading = true;
+      getOfflineTrainingList(this.offlineObj.queryParams).then((res) => {
+        this.offlineObj.list = res.rows;
+        this.offlineObj.total = Number(res.total);
+        this.offlineObj.loading = false;
+      });
+    },
+    /**
+     * 线下分页触发
+     * @date 2022-08-15
+     * @param {any} page
+     * @returns {any}
+     */
+    offlineCurrentChange(page) {
+      this.offlineObj.queryParams.pageNum = page;
+      this.getOfflineList();
     },
   },
 };
@@ -275,6 +414,7 @@ export default {
       box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
       padding: 18px 15px;
       cursor: pointer;
+      margin-bottom: 20px;
       .left {
         width: 122px;
         height: 89px;
@@ -297,7 +437,25 @@ export default {
         }
         .total {
           font-size: 14px;
-          color: #6F6F6F;
+          color: #6f6f6f;
+          padding-left: 10px;
+        }
+      }
+      .offline {
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+        .name {
+          font-size: 20px;
+          color: #424242;
+          line-height: 30px;
+          flex: 1;
+        }
+        .bottom {
+          display: flex;
+          justify-content: space-between;
+          font-size: 14px;
+          color: #6f6f6f;
           padding-left: 10px;
         }
       }

+ 16 - 2
src/views/CooperativeEnterprise/CooperativeEnterpriseIndex.vue

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-11 16:00:30
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-12 09:12:32
+ * @LastEditTime: 2022-08-15 15:23:01
  * @FilePath: \veterans_client_web\src\views\CooperativeEnterprise\CooperativeEnterpriseIndex.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
@@ -30,7 +30,7 @@
                   v-for="(company, cIndex) in companyList"
                   :key="cIndex"
                 >
-                  <div class="company-list-item">
+                  <div class="company-list-item" @click="jumpPage(company)">
                     <div class="company-list-item-left">
                       <el-image
                         class="image"
@@ -164,6 +164,20 @@ export default {
       this.queryParams.pageNum = page;
       this.getList();
     },
+    /**
+     * 跳转至详情
+     * @date 2022-08-15
+     * @returns {any}
+     */
+    jumpPage(company) {
+      console.log(company);
+      this.$router.push({
+        path: '/enterprisedetails',
+        query: {
+          companyId: company.id
+        }
+      })
+    }
   },
   filters: {
     filtersDict(val, list) {

+ 567 - 0
src/views/CooperativeEnterprise/EnterpriseDetails/EnterpriseDetailsIndex.vue

@@ -0,0 +1,567 @@
+<!--
+ * @Description: 企业详情
+ * @Author: 空白格
+ * @Date: 2022-08-15 14:54:50
+ * @LastEditors: 空白格
+ * @LastEditTime: 2022-08-15 18:04:03
+ * @FilePath: \veterans_client_web\src\views\CooperativeEnterprise\EnterpriseDetails\EnterpriseDetailsIndex.vue
+ * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
+-->
+<template>
+  <div class="app-main enterprise-details">
+    <div class="enterprise-details-header">
+      <div class="enterprise-details-header-box app-main-box">
+        <div class="edhb-left">
+          <div class="edhb-left-logo">
+            <el-avatar
+              shape="square"
+              :size="73"
+              :src="details.logoUrl"
+              @error="errorHandler"
+            >
+              <el-avatar
+                shape="square"
+                :size="73"
+                :src="require('@/assets/images/default-company.png')"
+              ></el-avatar>
+            </el-avatar>
+          </div>
+          <div class="edhb-left-info">
+            <div class="edhb-left-info-name">
+              {{ details.nickName || "-" }}
+            </div>
+          </div>
+        </div>
+        <div class="edhb-right">
+          <div class="edhb-right-item">{{ details.companyName || "-" }}</div>
+          <div class="edhb-right-item">{{ details.scope | filtersDict(companyScopeList) }}</div>
+          <div class="edhb-right-item">{{ details.linkPhone || "-" }}</div>
+          <div class="edhb-right-item position">
+            {{ details.companyAddress || "-" }}
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="app-main-box enterprise-details-main">
+      <!-- 热招职位 -->
+      <div class="enterprise-details-main-hot">
+        <div class="edmh-header">
+          <h4>热招职位</h4>
+          <div class="edmh-header-view">查看全部职位></div>
+        </div>
+        <div class="edmh-list">
+          <el-row :gutter="26" v-if="hotPositionList.length">
+            <el-col
+              :xs="24"
+              :sm="24"
+              :md="8"
+              :lg="8"
+              :xl="8"
+              v-for="(item, index) in hotPositionList"
+              :key="index"
+            >
+              <div class="edmh-list-item">
+                <div class="edmh-list-item-left">
+                  <div class="elil-item">{{ item.postName }}</div>
+                  <div class="elil-item">
+                    {{ item.areaName || "-" }} | 工作{{
+                      item.workYear || "-"
+                    }}年 |
+                    {{ item.educationBg || "-" }}
+                  </div>
+                  <div class="elil-item">{{ item.companyName || "-" }}</div>
+                </div>
+                <div class="edmh-list-item-right">
+                  <div class="elir-item">
+                    {{ item.lowestSalary || "-" }}K-{{
+                      item.highestSalary || "-"
+                    }}K
+                  </div>
+                  <div class="elir-item">
+                    {{ parseTime(item.createTime, "{y}-{m}-{d}") }}
+                  </div>
+                </div>
+              </div>
+            </el-col>
+          </el-row>
+          <el-empty v-else description="无热招职位数据"></el-empty>
+        </div>
+      </div>
+      <!-- 公司信息 -->
+      <div class="app-main-box-content enterprise-details-main-info">
+        <!-- 公司介绍 -->
+        <div class="edmi-introduce">
+          <h4>公司介绍</h4>
+          <div class="edmi-introduce-content">
+            {{ details.detatil || "-" }}
+          </div>
+        </div>
+        <!-- 公司相册 -->
+        <div class="edmi-album">
+          <h4>公司相册</h4>
+          <div
+            class="edmi-album-list"
+            v-if="
+              details.environmentUrlList && details.environmentUrlList.length
+            "
+          >
+            <el-carousel
+              height="178px"
+              :autoplay="false"
+              arrow="never"
+              indicator-position="none"
+            >
+              <el-carousel-item
+                v-for="(item, Cindex) in details.environmentUrlList"
+                :key="Cindex"
+              >
+                <el-row :gutter="18">
+                  <el-col
+                    :xs="24"
+                    :sm="12"
+                    :md="12"
+                    :lg="6"
+                    :xl="6"
+                    v-for="(img, index) in item"
+                    :key="index"
+                  >
+                    <el-image
+                      :src="img"
+                      class="image"
+                      fit="contain"
+                      :preview-src-list="item"
+                    >
+                      <div slot="placeholder" class="image-slot">
+                        加载图片中<span class="dot">...</span>
+                      </div>
+                    </el-image>
+                  </el-col>
+                </el-row>
+              </el-carousel-item>
+            </el-carousel>
+          </div>
+          <el-empty v-else description="无公司相册数据"></el-empty>
+        </div>
+        <!-- 公司职位 -->
+        <div class="edmi-position">
+          <h4>公司职位</h4>
+          <div
+            class="edmi-position-list"
+            v-loading="positionObj.loading"
+            v-if="positionObj.list.length"
+          >
+            <el-row :gutter="12">
+              <el-col
+                :xs="24"
+                :sm="24"
+                :md="24"
+                :lg="12"
+                :xl="12"
+                v-for="(item, index) in positionObj.list"
+                :key="index"
+              >
+                <div class="edmi-position-list-item">
+                  <div class="logo">
+                    <el-image
+                      class="image"
+                      :src="
+                        item.companyLogoUrl ||
+                        require('@/assets/images/default-company.png')
+                      "
+                    >
+                      <div slot="placeholder" class="image-slot">
+                        加载中<span class="dot">...</span>
+                      </div>
+                      <div slot="error" class="image-slot">
+                        <el-image
+                          class="image"
+                          :src="require('@/assets/images/default-company.png')"
+                        ></el-image>
+                      </div>
+                    </el-image>
+                  </div>
+                  <div class="postinfo">
+                    <div class="postname">{{ item.postName || "-" }}</div>
+                    <div class="condition">
+                      {{
+                        `${item.areaName || "-"} | 工作${
+                          item.workYear || "-"
+                        }年 | ${getEducationLevel(item.educationBg)}`
+                      }}
+                    </div>
+                    <div>{{ item.companyName || "-" }}</div>
+                  </div>
+                  <div class="wages">
+                    <div class="wages-range">
+                      {{ `${item.lowestSalary}K - ${item.highestSalary}K` }}
+                    </div>
+                    <div>{{ parseTime(item.createTime, "{y}-{m}-{d}") }}</div>
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
+            <div class="pagination" v-if="positionObj.total">
+              <el-pagination
+                background
+                layout="prev, pager, next"
+                :page-size="positionObj.queryParams.pageSize"
+                :total="positionObj.total"
+                @current-change="currentChange"
+              >
+              </el-pagination>
+            </div>
+          </div>
+          <el-empty v-else description="无在招职业数据"></el-empty>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  getCompanyDetails,
+  getCompanyPositon,
+} from "@/api/CooperativeEnterprise";
+import { parseTime } from "@/utils/utils";
+import { getDictData } from "@/api/Dict";
+export default {
+  name: "EnterpriseDetailsIndex",
+  data() {
+    return {
+      details: {},
+      parseTime: parseTime,
+      hotPositionList: [],
+      educationList: [],
+      companyTradeList: [],
+      companyScopeList: [],
+      positionObj: {
+        queryParams: {
+          pageNum: 1,
+          pageSize: 8,
+          companyId: undefined,
+        },
+        loading: false,
+        list: [],
+        total: 0,
+      },
+    };
+  },
+  created() {
+    this.getDict();
+    const { companyId } = this.$route.query;
+    if (companyId) {
+      this.getCompanyDetails(companyId);
+      this.positionObj.queryParams.companyId = companyId;
+      this.getPositionList();
+    }
+  },
+  methods: {
+    /**
+     * 获取教育字典
+     * @date 2022-08-11
+     * @returns {any}
+     */
+    getDict() {
+      getDictData({ key: "degr_educ" }).then((res) => {
+        this.educationList = res.data;
+      });
+      getDictData({ key: "company_trade" }).then((res) => {
+        this.companyTradeList = res.data;
+      });
+      getDictData({ key: "company_scope" }).then((res) => {
+        this.companyScopeList = res.data;
+      });
+    },
+    /**
+     * 获取企业详情
+     * @date 2022-08-15
+     * @param {any} companyId
+     * @returns {any}
+     */
+    getCompanyDetails(companyId) {
+      getCompanyDetails({ companyId }).then((res) => {
+        this.details = res?.data;
+        let arr = [],
+          data = res?.data?.environmentUrlList;
+        for (let i = 0; i < data.length; i += 4) {
+          arr.push(data.slice(i, i + 4));
+        }
+        this.details.environmentUrlList = arr;
+        console.log(this.details);
+      });
+    },
+    /**
+     * 加载logo错误触发
+     * @date 2022-08-15
+     * @returns {any}
+     */
+    errorHandler() {
+      return true;
+    },
+    /**
+     * 获取企业职位列表
+     * @date 2022-08-15
+     * @returns {any}
+     */
+    getPositionList() {
+      this.positionObj.loading = true;
+      getCompanyPositon(this.positionObj.queryParams).then((res) => {
+        this.positionObj.list = res.rows;
+        this.positionObj.total = Number(res.total);
+        this.positionObj.loading = false;
+      });
+    },
+    /**
+     * 分页切换触发
+     * @date 2022-08-15
+     * @param {any} page
+     * @returns {any}
+     */
+    currentChange(page) {
+      this.positionObj.queryParams.pageNum = page;
+      this.getPositionList();
+    },
+    /**
+     * 获取教育等级名称
+     * @date 2022-08-11
+     * @param {any} val
+     * @returns {any}
+     */
+    getEducationLevel(val) {
+      let label = "-";
+      this.educationList.forEach((item) => {
+        if (Number(item.text) === Number(val)) {
+          label = item.label;
+        }
+      });
+      return label;
+    },
+  },
+  filters: {
+    filtersDict(val, list) {
+      let label = '-'
+      list.forEach(item => {
+        if (Number(val) === Number(item.text)) {
+          label = item.label
+        }
+      })
+      return label
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.enterprise-details {
+  &-header {
+    background-color: #43565f;
+    &-box {
+      margin: 0 auto;
+      padding: 36px 0;
+      display: flex;
+      justify-content: space-between;
+      .edhb-left {
+        display: flex;
+        &-logo {
+          margin-right: 13px;
+        }
+        &-info {
+          &-name {
+            font-size: 28px;
+            color: #fff;
+            font-family: SourceHanSansCN;
+          }
+        }
+      }
+      .edhb-right {
+        &-item {
+          color: rgba($color: #fff, $alpha: 0.7);
+          font-size: 14px;
+          text-align: right;
+          margin-bottom: 8px;
+        }
+        .position {
+          position: relative;
+          &::before {
+            content: "";
+            display: inline-block;
+            width: 13px;
+            height: 17px;
+            background: url("./../../../assets/images/dingwei.svg") no-repeat
+              center center;
+            background-size: cover;
+            vertical-align: bottom;
+            margin-right: 5px;
+          }
+        }
+      }
+    }
+  }
+  &-main {
+    &-hot {
+      margin-bottom: 20px;
+      .edmh-header {
+        display: flex;
+        justify-content: space-between;
+        align-items: flex-end;
+        margin-bottom: 18px;
+
+        &-view {
+          color: #858585;
+          font-size: 14px;
+          cursor: pointer;
+        }
+      }
+      h4 {
+        color: #1a1a1a;
+        font-size: 20px;
+      }
+      .edmh-list {
+        &-item {
+          background-color: #fff;
+          padding: 18px 20px;
+          border-radius: 6px;
+          display: flex;
+          justify-content: space-between;
+          cursor: pointer;
+          &:hover {
+            opacity: 0.8;
+          }
+          &-left {
+            .elil-item {
+              color: #919191;
+              font-size: 14px;
+              margin-bottom: 10px;
+              &:first-child {
+                color: #1a1a1a;
+                font-size: 20px;
+              }
+              &:last-child {
+                font-size: 13px;
+              }
+            }
+          }
+          &-right {
+            text-align: right;
+            display: flex;
+            flex-direction: column;
+            .elir-item {
+              font-size: 13px;
+              color: #919191;
+              &:first-child {
+                flex: 1;
+                color: #ee5a0f;
+                font-size: 18px;
+              }
+            }
+          }
+        }
+      }
+    }
+    &-info {
+      padding-bottom: 100px;
+      .edmi-introduce {
+        margin-top: 10px;
+        margin-bottom: 24px;
+        h4 {
+          font-size: 20px;
+          color: #1a1a1a;
+          font-family: SourceHanSansCN;
+          margin-bottom: 10px;
+        }
+        &-content {
+          line-height: 30px;
+          font-size: 14px;
+          color: #6c6c6c;
+        }
+      }
+      .edmi-album {
+        margin-bottom: 24px;
+        h4 {
+          font-size: 20px;
+          color: #1a1a1a;
+          font-family: SourceHanSansCN;
+          margin-bottom: 24px;
+        }
+        &-list {
+          .image {
+            width: 100%;
+            height: 178px;
+          }
+        }
+      }
+      .edmi-position {
+        h4 {
+          font-size: 20px;
+          color: #1a1a1a;
+          font-family: SourceHanSansCN;
+          margin-bottom: 20px;
+        }
+        &-list {
+          &-item {
+            display: flex;
+            padding: 14px 16px;
+            box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+            margin-bottom: 20px;
+            cursor: pointer;
+            .logo {
+              width: 61px;
+              height: 61px;
+              border: solid 1px #e2e2e2;
+              border-radius: 4px;
+              margin-right: 15px;
+              .image {
+                width: 100%;
+                height: 100%;
+                border-radius: 4px;
+                border: solid 1px #e2e2e2;
+              }
+            }
+            .postinfo {
+              flex: 1;
+              font-size: 13px;
+              color: #919191;
+              .postname {
+                color: #1a1a1a;
+                font-size: 20px;
+                font-family: SourceHanSansCN;
+                margin-bottom: 2px;
+              }
+              .condition {
+                font-size: 14px;
+                margin-bottom: 2px;
+              }
+            }
+            .wages {
+              display: flex;
+              flex-direction: column;
+              font-size: 13px;
+              color: #919191;
+              &-range {
+                flex: 1;
+                text-align: right;
+                font-family: SourceHanSansCN;
+                color: #ee5a0f;
+                font-size: 18px;
+              }
+            }
+          }
+        }
+        .pagination {
+          text-align: center;
+          margin-top: 20px;
+          :deep(.el-pager .active) {
+            background-color: #ff3939;
+          }
+          :deep(.el-pagination.is-background
+              .el-pager
+              li:not(.disabled).active) {
+            background-color: #ff3939;
+          }
+        }
+      }
+    }
+  }
+}
+</style>

+ 1 - 1
src/views/Home/HomeIndex.vue

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-10 11:26:40
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-12 15:25:22
+ * @LastEditTime: 2022-08-15 11:02:25
  * @FilePath: \veterans_client_web\src\views\Home\HomeIndex.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->

+ 478 - 0
src/views/PersonalCenter/PersonalCenterIndex.vue

@@ -0,0 +1,478 @@
+<!--
+ * @Description: 个人中心
+ * @Author: 空白格
+ * @Date: 2022-08-15 10:09:03
+ * @LastEditors: 空白格
+ * @LastEditTime: 2022-08-15 14:49:44
+ * @FilePath: \veterans_client_web\src\views\PersonalCenter\PersonalCenterIndex.vue
+ * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
+-->
+<template>
+  <div class="app-main personal-center">
+    <div class="personal-center-header">
+      <div class="app-main-box personal-center-header-box">
+        <el-row>
+          <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+            <div class="pchb-left">
+              <div class="pchb-left-avatar hexagon">
+                <div
+                  class="pchb-left-avatar-box hexagon-box"
+                  :style="{
+                    backgroundImage: `url('${
+                      userInfo.avatar
+                        ? userInfo.avatar
+                        : 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'
+                    }')`,
+                  }"
+                ></div>
+              </div>
+              <div class="pchb-left-user">
+                <div class="pchb-left-user-item">
+                  <div class="plui-username">{{ userInfo.name || "-" }}</div>
+                  <div class="plui-integral">
+                    <div class="plui-integral-item">进步<br />积分</div>
+                    <div class="plui-integral-item">
+                      {{ integralTotal || 0 }}
+                    </div>
+                    <div class="plui-integral-item">
+                      <span class="el-icon-arrow-right"></span>
+                    </div>
+                  </div>
+                </div>
+                <div class="pchb-left-user-item">
+                  <div class="plui-auth">
+                    <div class="plui-auth-item">退役军人</div>
+                    <div class="plui-auth-item">
+                      <template v-if="userInfo.auditStatus === 0"
+                        >认证中</template
+                      >
+                      <template v-else-if="userInfo.auditStatus === 2"
+                        >已认证</template
+                      >
+                      <template v-else>
+                        <router-link to="">未认证</router-link>
+                      </template>
+                    </div>
+                  </div>
+                  <div class="plui-train">
+                    <div class="plui-train-item">适应性培训</div>
+                    <div class="plui-train-item">
+                      <template v-if="userInfo.adaptTrainIsPass === 1"
+                        >已通过</template
+                      >
+                      <template v-else>未通过</template>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+            <div class="pchb-right">
+              <div
+                class="pchb-right-item"
+                v-for="(item, index) in statisticsList"
+                :key="index"
+              >
+                <p>{{ item.label }}</p>
+                <p>{{ learnObj[item.key] || 0 }}{{ item.unit }}</p>
+              </div>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+    </div>
+    <div class="app-main-box personal-center-main">
+      <el-row :gutter="20">
+        <el-col :xs="24" :sm="24" :md="12" :lg="16" :xl="16">
+          <div class="personal-center-main-left">
+            <div
+              class="pcml-item"
+              v-for="(item, index) in menuList"
+              :key="index"
+            >
+              <div class="pcml-item-icon">
+                <el-image :src="item.icon"></el-image>
+              </div>
+              <div class="pcml-item-label">{{ item.label }}</div>
+              <div class="pcml-item-right">
+                <span class="el-icon-arrow-right"></span>
+              </div>
+            </div>
+          </div>
+        </el-col>
+        <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+          <div class="personal-center-main-right">
+            <!-- 附件管理 -->
+            <div class="pcmr-top">
+              <h4>附件管理</h4>
+              <div class="pcmr-top-btn upload-btn">上传简历</div>
+              <div class="pcmr-top-btn make-btn">制作简历</div>
+            </div>
+            <!-- 我的技能培训 -->
+            <div class="pcmr-bottom">
+              <h4>我的技能培训</h4>
+              <div class="pcmr-bottom-list">
+                <template v-if="skillTrainList.length">
+                  <div
+                    class="pcmr-bottom-list-item"
+                    v-for="(item, index) in skillTrainList"
+                    :key="index"
+                  >
+                    <div class="pbli-left">
+                      <el-image
+                        class="image"
+                        :src="
+                          item.img ||
+                          require('@/assets/images/default-news.jpg')
+                        "
+                        fit="fill"
+                      >
+                        <div slot="placeholder" class="image-slot">
+                          加载图片中<span class="dot">...</span>
+                        </div>
+                        <div slot="error" class="image-slot">
+                          <el-image
+                            class="image"
+                            :src="require('@/assets/images/default-news.jpg')"
+                            fit="fill"
+                          ></el-image>
+                        </div>
+                      </el-image>
+                    </div>
+                    <div class="pbli-right">
+                      <div class="pbli-right-item">{{ item.name }}</div>
+                      <div class="pbli-right-item">
+                        培训学校:{{ item.schoolName }}
+                      </div>
+                      <div class="pbli-right-item">
+                        <div>难度:</div>
+                        <div>
+                          <el-rate
+                            v-model="item.difficult"
+                            disabled
+                            text-color="#ff9900"
+                          />
+                        </div>
+                      </div>
+                      <div class="pbli-right-item">
+                        开始时间:{{ item.applyTime }}
+                      </div>
+                      <div class="pbli-right-item">
+                        培训周期:{{ item.cycle || 0 }}个月
+                      </div>
+                    </div>
+                  </div>
+                </template>
+                <template v-else>
+                  <el-empty description="列表数据为空"></el-empty>
+                </template>
+              </div>
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  getPersonInfoData,
+  getPersonIntegralData,
+  getPersonStaticisData,
+} from "@/api/PersonalCenter";
+export default {
+  name: "PersonalCenterIndex",
+  data() {
+    return {
+      userInfo: {},
+      integralTotal: 0,
+      statisticsList: [
+        { label: "技能培训", key: "learnTime", unit: "个" },
+        { label: "学习时长", key: "classCount", unit: "小时" },
+        { label: "获得面试", key: "interviewTimes", unit: "次" },
+      ],
+      learnObj: {},
+      menuList: [
+        {
+          icon: require("@/assets/images/personal-center-icon/jianlitongguo.svg"),
+          label: "我的简历",
+          path: "",
+        },
+        {
+          icon: require("@/assets/images/personal-center-icon/toudimoren.svg"),
+          label: "我的投递",
+          path: "",
+        },
+        {
+          icon: require("@/assets/images/personal-center-icon/mianshi-houxuanren.svg"),
+          label: "我的面试",
+          path: "",
+        },
+        {
+          icon: require("@/assets/images/personal-center-icon/pingjia.svg"),
+          label: "我的评价",
+          path: "",
+        },
+      ],
+      skillTrainList: [],
+    };
+  },
+  created() {
+    this.getPersonInfo();
+    this.getPersonIntegral();
+    this.getPersonStaticis();
+  },
+  methods: {
+    /**
+     * 获取个人信息
+     * @date 2022-08-15
+     * @returns {any}
+     */
+    getPersonInfo() {
+      getPersonInfoData().then((res) => {
+        this.userInfo = res?.data;
+      });
+    },
+    /**
+     * 获取个人积分
+     * @date 2022-08-15
+     * @returns {any}
+     */
+    getPersonIntegral() {
+      getPersonIntegralData().then((res) => {
+        this.integralTotal = res?.data;
+      });
+    },
+    /**
+     * 获取个人统计
+     * @date 2022-08-15
+     * @returns {any}
+     */
+    getPersonStaticis() {
+      getPersonStaticisData().then((res) => {
+        this.learnObj = res?.data;
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.personal-center {
+  &-header {
+    width: 100%;
+    background-color: #181c1e;
+    &-box {
+      margin: 0 auto;
+      .pchb-left {
+        padding-top: 30px;
+        display: flex;
+        align-items: center;
+        &-avatar {
+          padding-top: 30px;
+          width: 138px;
+          height: 138px;
+          background-color: rgba($color: #fff, $alpha: 0.7);
+          padding: 7px;
+          margin-right: 20px;
+        }
+        &-user {
+          &-item {
+            display: flex;
+            .plui-username {
+              color: #fff;
+              font-size: 40px;
+              margin-right: 20px;
+              line-height: 40px;
+            }
+            .plui-integral {
+              height: 40px;
+              display: flex;
+              justify-content: space-between;
+              align-content: center;
+              border: solid 3px rgba($color: #fff, $alpha: 0.4);
+              padding: 0 14px;
+              background-image: linear-gradient(
+                270deg,
+                #ff6100 16%,
+                #fe7c02 100%
+              );
+              border-radius: 40px;
+              &-item {
+                color: #fff;
+                &:first-child {
+                  font-size: 11px;
+                  padding: 4px 0;
+                }
+                &:nth-child(2) {
+                  font-size: 30px;
+                  padding: 0 20px;
+                }
+                &:last-child {
+                  line-height: 40px;
+                }
+              }
+            }
+            .plui-auth,
+            .plui-train {
+              display: flex;
+              align-items: center;
+              margin-top: 20px;
+              &-item {
+                color: rgba($color: #fff, $alpha: 0.6);
+                font-size: 16px;
+                &:last-child {
+                  margin-left: 15px;
+                  background-color: rgba($color: #fff, $alpha: 0.4);
+                  padding: 5px 20px;
+                  font-size: 14px;
+                  border-radius: 14px;
+                }
+                a {
+                  text-decoration: none;
+                  color: rgba($color: #fff, $alpha: 0.6);
+                }
+              }
+            }
+            .plui-train {
+              margin-left: 30px;
+            }
+          }
+        }
+      }
+      .pchb-right {
+        height: 160px;
+        padding-bottom: 40px;
+        display: flex;
+        justify-content: flex-end;
+        align-items: flex-end;
+        &-item {
+          text-align: center;
+          margin-left: 60px;
+          color: #fff;
+          font-size: 18px;
+          &:first-child {
+            margin-left: 0;
+          }
+          p {
+            font-family: PingFangSC-Regular;
+          }
+          p:first-child {
+            margin-bottom: 10px;
+            font-weight: 500;
+            font-family: PingFangSC-Medium;
+          }
+        }
+      }
+    }
+  }
+  &-main {
+    &-left {
+      background-color: #fff;
+      padding: 20px 20px 200px;
+      .pcml-item {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        margin-bottom: 20px;
+        border-bottom: 1px solid #d5d5d5;
+        padding: 5px 0 15px;
+        cursor: pointer;
+        &:last-child {
+          border-bottom: none;
+        }
+        &-icon {
+          width: 34px;
+          height: 33px;
+          margin-right: 20px;
+          image {
+            width: 100%;
+            height: 100%;
+          }
+        }
+        &-label {
+          flex: 1;
+          font-size: 24px;
+          color: #333333;
+        }
+      }
+    }
+    &-right {
+      .pcmr-top {
+        background-color: #fff;
+        padding: 20px;
+        margin-bottom: 20px;
+        h4 {
+          color: #1a1a1a;
+          font-size: 26px;
+          font-family: SourceHanSansCN;
+          margin-bottom: 20px;
+        }
+        &-btn {
+          width: 100%;
+          height: 52px;
+          line-height: 52px;
+          text-align: center;
+          font-size: 18px;
+          cursor: pointer;
+        }
+        .upload-btn {
+          background-color: #659789;
+          color: #fff;
+          margin-bottom: 10px;
+        }
+        .make-btn {
+          border: solid 1px #659789;
+          color: #659789;
+          margin-bottom: 30px;
+        }
+      }
+      .pcmr-bottom {
+        background: #fff;
+        padding: 20px 20px 100px;
+        h4 {
+          color: #1a1a1a;
+          font-size: 26px;
+          font-family: SourceHanSansCN;
+          margin-bottom: 20px;
+        }
+        &-list {
+          &-item {
+            display: flex;
+            align-items: center;
+            cursor: pointer;
+            padding-bottom: 10px;
+            border-bottom: 1px solid #d5d5d5;
+            margin-bottom: 20px;
+            .pbli-left {
+              width: 110px;
+              height: 104px;
+              border: solid 1px #e0e0e0;
+              border-radius: 5px;
+              margin-right: 15px;
+              .image {
+                width: 98%;
+                height: 100%;
+              }
+            }
+            .pbli-right {
+              &-item {
+                color: #747474;
+                font-size: 14px;
+                display: flex;
+                margin-bottom: 5px;
+                &:first-child {
+                  font-size: 18px;
+                  color: #1a1a1a;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+</style>