Ver Fonte

调整部分细节

yangzj há 2 anos atrás
pai
commit
afb28b1826

+ 1 - 2
.env.dev

@@ -2,5 +2,4 @@
 ENV = 'dev'
 # 请求基础api
 VUE_APP_BASE_API = '/api'
-# 上传地址
-VUE_APP_FILE_UPLOAD_URL = 'https://wx.hw.hongweisoft.com/veterans/file/upload/single/minio'
+# 上传地址

+ 1 - 3
.env.prod

@@ -1,6 +1,4 @@
 # 开发环境配置
 ENV = 'prod'
 # 请求基础api
-VUE_APP_BASE_API = '/prod-api'
-# 上传地址
-VUE_APP_FILE_UPLOAD_URL = 'https://wx.hw.hongweisoft.com/veterans/file/upload/single/minio'
+VUE_APP_BASE_API = '/prod-api'

+ 1 - 1
package.json

@@ -13,7 +13,7 @@
     "axios": "^0.27.2",
     "core-js": "^3.8.3",
     "element-china-area-data": "^5.0.2",
-    "element-ui": "^2.15.9",
+    "element-ui": "2.15.3",
     "js-cookie": "^3.0.1",
     "quill-image-extend-module": "^1.1.2",
     "register-service-worker": "^1.7.2",

+ 57 - 44
src/api/PersonalCenter/index.js

@@ -3,11 +3,11 @@
  * @Author: 空白格
  * @Date: 2022-08-15 14:26:14
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-26 17:38:27
+ * @LastEditTime: 2022-08-30 09:28:37
  * @FilePath: \veterans_client_web\src\api\PersonalCenter\index.js
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
  */
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 /**
  * 获取个人信息
@@ -16,10 +16,10 @@ import request from '@/utils/request'
  */
 export function getPersonInfoData(params) {
   return request({
-    url: '/app/memberinfo',
-    method: 'get',
-    params
-  })
+    url: "/app/memberinfo",
+    method: "get",
+    params,
+  });
 }
 
 /**
@@ -29,10 +29,10 @@ export function getPersonInfoData(params) {
  */
 export function getPersonIntegralData(params) {
   return request({
-    url: '/app/integral/total',
-    method: 'get',
-    params
-  })
+    url: "/app/integral/total",
+    method: "get",
+    params,
+  });
 }
 
 /**
@@ -42,10 +42,10 @@ export function getPersonIntegralData(params) {
  */
 export function getPersonStaticisData(params) {
   return request({
-    url: '/app/memberinfo/getCountResult',
-    method: 'get',
-    params
-  })
+    url: "/app/memberinfo/getCountResult",
+    method: "get",
+    params,
+  });
 }
 
 /**
@@ -56,8 +56,8 @@ export function getPersonStaticisData(params) {
 export function getIdInfo(params) {
   return request({
     url: `/app/veteEduc/idcard/${params.id}`,
-    method: 'get'
-  })
+    method: "get",
+  });
 }
 
 /**
@@ -67,10 +67,10 @@ export function getIdInfo(params) {
  */
 export function myDeliveredList(params) {
   return request({
-    url: '/app/delivery/myDeliveredList',
-    method: 'get',
-    params
-  })
+    url: "/app/delivery/myDeliveredList",
+    method: "get",
+    params,
+  });
 }
 
 /**
@@ -80,10 +80,10 @@ export function myDeliveredList(params) {
  */
 export function myInterviewList(params) {
   return request({
-    url: '/app/delivery/myInterviewList',
-    method: 'get',
-    params
-  })
+    url: "/app/delivery/myInterviewList",
+    method: "get",
+    params,
+  });
 }
 /**
  * 保存求职意向
@@ -92,10 +92,10 @@ export function myInterviewList(params) {
  */
 export function saveJobIntention(data) {
   return request({
-    url: '/app/memberinfo/saveJobIntention',
-    method: 'put',
-    data
-  })
+    url: "/app/memberinfo/saveJobIntention",
+    method: "put",
+    data,
+  });
 }
 
 /**
@@ -105,10 +105,10 @@ export function saveJobIntention(data) {
  */
 export function saveSelfAssessment(data) {
   return request({
-    url: '/app/memberinfo/saveSelfAssessment',
-    method: 'put',
-    data
-  })
+    url: "/app/memberinfo/saveSelfAssessment",
+    method: "put",
+    data,
+  });
 }
 
 /**
@@ -118,10 +118,10 @@ export function saveSelfAssessment(data) {
  */
 export function myTrainList(params) {
   return request({
-    url: '/app/learnmember/myTrainList/' + params.type,
-    method: 'get',
-    params
-  })
+    url: "/app/learnmember/myTrainList/" + params.type,
+    method: "get",
+    params,
+  });
 }
 
 /**
@@ -131,10 +131,23 @@ export function myTrainList(params) {
  */
 export function updateJobStatus(data) {
   return request({
-    url: '/app/memberinfo/updateJobStatus',
-    method: 'put',
-    data
-  })
+    url: "/app/memberinfo/updateJobStatus",
+    method: "put",
+    data,
+  });
+}
+
+/**
+ * 修改个人头像
+ * @param {*} params
+ * @returns
+ */
+export function updateUserInfo(data) {
+  return request({
+    url: "/app/memberinfo",
+    method: "put",
+    data,
+  });
 }
 
 /**
@@ -144,8 +157,8 @@ export function updateJobStatus(data) {
  */
 export function getMyTrainVideoDetails(params) {
   return request({
-    url: '/app/learncourse/getDetail/' + params.id,
-    method: 'get',
-    params
-  })
+    url: "/app/learncourse/getDetail/" + params.id,
+    method: "get",
+    params,
+  });
 }

+ 2 - 2
src/api/PolicyAdvice/index.js

@@ -1,5 +1,5 @@
 /**
- * @Description: 政策咨询
+ * @Description: 政策资讯
  * @Author: 空白格
  * @Date: 2022-08-11 11:53:02
  * @LastEditors: 空白格
@@ -9,7 +9,7 @@
  */
 import request from '@/utils/request'
 /**
- * 获取政策咨询数据
+ * 获取政策资讯数据
  * @param {*} params
  * @returns
  */

+ 8 - 3
src/assets/styles/common.scss

@@ -1,6 +1,6 @@
 .app-main {
   &-box {
-    width:70%;
+    width: 70%;
     min-width: 600px;
     margin: 23px auto 0;
     &-content {
@@ -210,8 +210,13 @@ input[type='number'] {
 }
 
 // 单行省略点点点
-.u-line-1{
+.u-line-1 {
   overflow: hidden;
-  text-overflow:ellipsis;
+  text-overflow: ellipsis;
   white-space: nowrap;
 }
+.el-dialog__wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}

+ 11 - 7
src/components/ViewPdf/index.vue

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-25 16:39:06
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-25 17:10:46
+ * @LastEditTime: 2022-08-30 10:54:17
  * @FilePath: \veterans_client_web\src\components\ViewPdf\index.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
@@ -13,8 +13,7 @@
       title="PDF 预览"
       :visible.sync="dialogVisible"
       :close-on-click-modal="false"
-      width="500"
-      top="10vh"
+      width="600px"
     >
       <div class="tools">
         <el-button type="text" @click="FirstPage()">
@@ -53,7 +52,6 @@
             ><i class="el-icon-d-arrow-right"></i>
           </el-tooltip>
         </el-button>
-
         <el-button
           type="text"
           @click="setIsExit()"
@@ -68,7 +66,6 @@
             ><i class="el-icon-setting"></i>
           </el-tooltip>
         </el-button>
-
         <el-tooltip
           class="item"
           effect="light"
@@ -194,8 +191,15 @@ export default {
      * @returns {any}
      */
     openDialog(url) {
-      this.src = url;
       this.dialogVisible = true;
+      const loadingTask = pdf.createLoadingTask(url);
+      loadingTask.promise
+        .then((pdf) => {
+          this.src = loadingTask;
+        })
+        .catch((err) => {
+          this.$message.error("pdf文件加载失败!");
+        });
     },
     // pdf加载时
     loadPdfHandler() {
@@ -325,7 +329,7 @@ export default {
 :deep(.el-dialog__body) {
   padding: 20px;
 }
-:deep(.el-select ){
+:deep(.el-select) {
   width: 95px;
   height: 28px;
   margin: 5px 20px 0px 20px;

+ 1 - 1
src/router/index.js

@@ -23,7 +23,7 @@ const routes = [
         name: 'PolicyAdvice',
         component: () => import('@/views/PolicyAdvice/PolicyAdviceIndex.vue'),
         meta: {
-          title: '政策咨询'
+          title: '政策资讯'
         }
       },
       {

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

@@ -128,7 +128,7 @@ export default {
       bannerList: [],
       menuList: [
         {
-          name: "政策咨询",
+          name: "政策资讯",
           icon: require("@/assets/images/home-menu-icon/home-menu-icon-1.svg"),
           path: "/policyadvice",
         },

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

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-10 11:26:40
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-29 18:09:18
+ * @LastEditTime: 2022-08-30 10:57:11
  * @FilePath: \veterans_client_web\src\views\Home\HomeIndex.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
@@ -126,7 +126,7 @@
           </el-row>
         </div>
         <div class="home-main-policy-box">
-          <!-- 政策咨询部分 -->
+          <!-- 政策资讯部分 -->
           <el-row :gutter="0" class="home-main-policy">
             <el-col :span="24" class="home-main-policy-carousel">
               <el-carousel :interval="5000" arrow="never" height="140px">
@@ -421,7 +421,7 @@ export default {
       }
     },
     /**
-     * 获取政策咨询轮播
+     * 获取政策资讯轮播
      * @date 2022-08-17
      * @returns {any}
      */
@@ -447,7 +447,7 @@ export default {
       });
     },
     /**
-     * 政策咨询tab切换触发
+     * 政策资讯tab切换触发
      * @date 2022-08-17
      * @param {any} tab
      * @returns {any}
@@ -774,7 +774,7 @@ export default {
                 background-image: url("./../../assets/images/zhengcezixun.svg");
               }
               &::after {
-                content: "政策咨询";
+                content: "政策资讯";
               }
             }
             &-btn-2 {

+ 1 - 1
src/views/Home/components/MenuNavigation.vue

@@ -33,7 +33,7 @@ export default {
           icon: require("@/assets/images/home-menu-icon/home-menu-icon-1.svg"),
         },
         {
-          name: "政策咨询",
+          name: "政策资讯",
           icon: require("@/assets/images/home-menu-icon/home-menu-icon-1.svg"),
           path: "/policyadvice",
         },

+ 108 - 79
src/views/NewsCenter/NewsCenterIndex.vue

@@ -2,8 +2,8 @@
  * @Description: 新闻中心
  * @Author: 空白格
  * @Date: 2022-08-22 10:20:21
- * @LastEditors: gcz
- * @LastEditTime: 2022-08-23 09:25:17
+ * @LastEditors: 空白格
+ * @LastEditTime: 2022-08-30 10:59:27
  * @FilePath: \veterans_client_web\src\views\NewsCenter\NewsCenterIndex.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
@@ -12,18 +12,23 @@
     <div class="BannerBreadcrumb-wrap">
       <BannerBreadcrumb title="新闻中心" :breadcrumb="true" />
       <div class="tabs">
-        <span v-for="(item,index) in tabList" 
-          @click="changeTab(index)" 
-          :class="{active:tabsActive==index}" :key="index">
-          {{item}}
+        <span
+          v-for="(item, index) in tabList"
+          @click="changeTab(index)"
+          :class="{ active: tabsActive == index }"
+          :key="index"
+        >
+          {{ item }}
         </span>
       </div>
     </div>
-    
+
     <section class="app-main-box">
       <div class="app-main-box-content">
-        <div class="title" v-if="tabsActive==0">{{tabList[tabsActive]}}</div>
-        <div v-if="tabsActive==0" class="news-list" v-loading="loading">
+        <div class="title" v-if="tabsActive == 0">
+          {{ tabList[tabsActive] }}
+        </div>
+        <div v-if="tabsActive == 0" class="news-list" v-loading="loading">
           <el-row :gutter="16">
             <el-col
               class="data-item"
@@ -35,41 +40,58 @@
               v-for="(item, index) in dataList"
               :key="index"
             >
-              <div @click="goNewsDetails(item.artId)" class="u-flex u-row-between" v-if="tabsActive==0">
-                <div class="artTitle u-line-1" >{{item.artTitle}}</div>
-                <div class="time">{{parseTime(item.updateTime, "{y}-{m}-{d}")}}</div>
+              <div
+                @click="goNewsDetails(item.artId)"
+                class="u-flex u-row-between"
+                v-if="tabsActive == 0"
+              >
+                <div class="artTitle u-line-1">{{ item.artTitle }}</div>
+                <div class="time">
+                  {{ parseTime(item.updateTime, "{y}-{m}-{d}") }}
+                </div>
               </div>
             </el-col>
           </el-row>
         </div>
 
-        <el-tabs v-if="tabsActive==1" v-model="noticeActiveName" @tab-click="noticeClick">
-          <el-tab-pane 
-            v-for="(item,index) in noticeTypeList" :key="index" 
-            :label="item.label" 
-            :name="item.name">
+        <el-tabs
+          v-if="tabsActive == 1"
+          v-model="noticeActiveName"
+          @tab-click="noticeClick"
+        >
+          <el-tab-pane
+            v-for="(item, index) in noticeTypeList"
+            :key="index"
+            :label="item.label"
+            :name="item.name"
+          >
             <el-row :gutter="16">
-            <el-col
-              class="data-item"
-              :xs="24"
-              :sm="24"
-              :md="24"
-              :lg="24"
-              :xl="24"
-              v-for="(item, index) in dataList"
-              :key="index"
-            >
-              <div @click="goNoticeDetails(item.id)" class="u-flex u-row-between" v-if="tabsActive==1">
-                <div class="artTitle u-line-1" >{{item.name}}</div>
-                <div class="time">{{parseTime(item.releasTime, "{y}-{m}-{d}")}}</div>
-              </div>
-            </el-col>
-          </el-row>
-            
+              <el-col
+                class="data-item"
+                :xs="24"
+                :sm="24"
+                :md="24"
+                :lg="24"
+                :xl="24"
+                v-for="(item, index) in dataList"
+                :key="index"
+              >
+                <div
+                  @click="goNoticeDetails(item.id)"
+                  class="u-flex u-row-between"
+                  v-if="tabsActive == 1"
+                >
+                  <div class="artTitle u-line-1">{{ item.name }}</div>
+                  <div class="time">
+                    {{ parseTime(item.releasTime, "{y}-{m}-{d}") }}
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
           </el-tab-pane>
         </el-tabs>
-        <el-empty v-if="dataList<1" description="暂无数据"></el-empty>
-        <div class="pagination" v-if="total>queryParams.pageSize">
+        <el-empty v-if="dataList < 1" description="暂无数据"></el-empty>
+        <div class="pagination" v-if="total > queryParams.pageSize">
           <el-pagination
             background
             layout="prev, pager, next"
@@ -86,8 +108,8 @@
 
 <script>
 import BannerBreadcrumb from "@/components/BannerBreadcrumb";
-import {getNewsList} from "@/api/Home";
-import {getNoticeList} from "@/api/NewsCenter";
+import { getNewsList } from "@/api/Home";
+import { getNoticeList } from "@/api/NewsCenter";
 import { parseTime } from "@/utils/utils";
 export default {
   name: "NewsCenterIndex",
@@ -97,31 +119,31 @@ export default {
   data() {
     return {
       parseTime: parseTime,
-      tabsActive:0,
-      tabList:['新闻动态','通知公告'],
+      tabsActive: 0,
+      tabList: ["新闻动态", "通知公告"],
       loading: false,
       queryParams: {
         pageNum: 1,
         pageSize: 10,
       },
-      dataList:[],
+      dataList: [],
       total: 0,
-      noticeTypeList:[
-        {label:'系统通知',name:'0'},
-        {label:'培训通知',name:'2'},
-        {label:'就业通知',name:'3'},
+      noticeTypeList: [
+        { label: "系统通知", name: "0" },
+        { label: "培训通知", name: "2" },
+        { label: "就业通知", name: "3" },
       ],
-      noticeActiveName:'0'
-    }
+      noticeActiveName: "0",
+    };
   },
   created() {
-    this.handleClick()
+    this.handleClick();
   },
-  methods:{
-    changeTab(index){
-      this.queryParams.pageNum=1;
+  methods: {
+    changeTab(index) {
+      this.queryParams.pageNum = 1;
       this.tabsActive = index;
-      this.handleClick()
+      this.handleClick();
     },
     /**
      * 获取新闻
@@ -129,10 +151,12 @@ export default {
      * @returns {any}
      */
     getNews() {
-      getNewsList(Object.assign({artCategoryId: 2},this.queryParams)).then((res) => {
-        this.dataList = res?.rows ?? [];
-        this.total = Number(res.total);
-      });
+      getNewsList(Object.assign({ artCategoryId: 2 }, this.queryParams)).then(
+        (res) => {
+          this.dataList = res?.rows ?? [];
+          this.total = Number(res.total);
+        }
+      );
     },
     /**
      * 获取公告
@@ -140,7 +164,10 @@ export default {
      * @returns {any}
      */
     getNotice() {
-      let param = Object.assign({name: this.noticeActiveName},this.queryParams);
+      let param = Object.assign(
+        { name: this.noticeActiveName },
+        this.queryParams
+      );
       getNoticeList(param).then((res) => {
         this.dataList = res?.rows ?? [];
         this.total = Number(res.total);
@@ -173,58 +200,61 @@ export default {
       this.handleClick();
     },
     noticeClick(tab, event) {
-      this.getNotice()
+      this.getNotice();
     },
-    goNewsDetails(id){
-      this.$router.push({ path: 'newsdetails', query:{ id: id,type:'news' }});
+    goNewsDetails(id) {
+      this.$router.push({
+        path: "newsdetails",
+        query: { id: id, type: "news" },
+      });
     },
-    goNoticeDetails(id){
-      this.$router.push({ path: 'noticedetails', query:{ id: id }});
-    }
-  }
+    goNoticeDetails(id) {
+      this.$router.push({ path: "noticedetails", query: { id: id } });
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>
-.app-main-box-content{
-  min-height: calc( 100vh - 73px - 104px - 64px - 23px - 100px - 40px );
+.app-main-box-content {
+  min-height: calc(100vh - 73px - 104px - 64px - 23px - 100px - 40px);
 }
-.BannerBreadcrumb-wrap{
+.BannerBreadcrumb-wrap {
   position: relative;
-  .tabs{
+  .tabs {
     position: absolute;
     right: 15%;
     bottom: 18px;
-    span{
+    span {
       cursor: pointer;
       font-size: 20px;
       margin-left: 20px;
-      color: #7E7E7E;
-      &.active{
+      color: #7e7e7e;
+      &.active {
         color: #f00;
       }
     }
   }
 }
-.title{
+.title {
   padding-bottom: 15px;
   margin-bottom: 15px;
   font-weight: 400;
   font-size: 20px;
   color: #000;
   letter-spacing: 1.34px;
-  border-bottom: 1px solid #D5D5D5;
+  border-bottom: 1px solid #d5d5d5;
 }
-.app-main-box-content{
+.app-main-box-content {
   // margin-bottom: 24px;
-  .data-item{
+  .data-item {
     margin-bottom: 12px;
     cursor: pointer;
-    &:hover{
-      .artTitle{
+    &:hover {
+      .artTitle {
         color: #ff3939;
       }
     }
-    .artTitle{
+    .artTitle {
       font-weight: 400;
       font-size: 16px;
       color: #373737;
@@ -233,7 +263,6 @@ export default {
       line-height: 22px;
     }
   }
-  
 }
 .pagination {
   text-align: center;

+ 147 - 3
src/views/PersonalCenter/PersonalCenterIndex.vue

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-15 10:09:03
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-26 17:46:19
+ * @LastEditTime: 2022-08-30 09:35:57
  * @FilePath: \veterans_client_web\src\views\PersonalCenter\PersonalCenterIndex.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
@@ -14,7 +14,7 @@
         <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 hexagon" @click="avatarClick">
                 <div
                   class="pchb-left-avatar-box hexagon-box"
                   :style="{
@@ -184,6 +184,48 @@
         </el-col> -->
       </el-row>
     </div>
+    <!-- 上传头像弹框 -->
+    <el-dialog
+      :title="dialogObj.title"
+      :visible.sync="dialogObj.open"
+      width="400px"
+      :before-close="handleClose"
+    >
+      <div class="dialog">
+        <el-upload
+          :action="uploadObj.action"
+          :headers="uploadObj.headers"
+          :on-success="uploadSuccess"
+          :on-error="uploadError"
+          :on-remove="fileRemove"
+          :limit="1"
+        >
+          <div class="dialog-avatar hexagon">
+            <div
+              class="dialog-avatar-box hexagon-box"
+              :style="{
+                backgroundImage: `url('${
+                  dialogObj.avatarUrl ||
+                  'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'
+                }')`,
+              }"
+            ></div>
+          </div>
+        </el-upload>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="handleClose">取 消</el-button>
+        <el-button
+          type="primary"
+          :disabled="
+            dialogObj.avatarUrl === userInfo.avatar || !dialogObj.avatarUrl
+          "
+          :loading="dialogObj.loading"
+          @click="submitUpdate"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -192,6 +234,7 @@ import {
   getPersonInfoData,
   getPersonIntegralData,
   getPersonStaticisData,
+  updateUserInfo,
 } from "@/api/PersonalCenter";
 export default {
   name: "PersonalCenterIndex",
@@ -243,6 +286,18 @@ export default {
         // },
       ],
       skillTrainList: [],
+      dialogObj: {
+        open: false,
+        title: "个人资料修改",
+        loading: false,
+        avatarUrl: "",
+      },
+      uploadObj: {
+        action: process.env.VUE_APP_BASE_API + "/file/upload/single/minio",
+        headers: {
+          Authorization: `Bearer ${this.$store.state.user.token}`,
+        },
+      },
     };
   },
   created() {
@@ -333,6 +388,81 @@ export default {
           });
         });
     },
+    /**
+     * 头像点击
+     * @date 2022-08-30
+     * @returns {any}
+     */
+    avatarClick() {
+      this.dialogObj.avatarUrl = this.userInfo.avatar;
+      this.dialogObj.open = true;
+    },
+    /**
+     * 关闭修改资料弹框
+     * @date 2022-08-30
+     * @returns {any}
+     */
+    handleClose() {
+      this.dialogObj.avatarUrl = "";
+      this.dialogObj.open = false;
+    },
+    /**
+     * 上传成功
+     * @date 2022-08-30
+     * @param {any} res
+     * @returns {any}
+     */
+    uploadSuccess(res) {
+      if (res.code === 200) {
+        this.dialogObj.avatarUrl = res.data.url;
+      }
+    },
+    /**
+     * 上传失败
+     * @date 2022-08-30
+     * @param {any} err
+     * @returns {any}
+     */
+    uploadError(err) {
+      this.$message.error(err.msg || "上传失败!");
+    },
+    /**
+     * 文件移除触发
+     * @date 2022-08-30
+     * @param {any} file
+     * @returns {any}
+     */
+    fileRemove(file) {
+      this.dialogObj.avatarUrl = "";
+    },
+    /**
+     * 提交头像修改
+     * @date 2022-08-30
+     * @returns {any}
+     */
+    submitUpdate() {
+      if (
+        this.dialogObj.avatarUrl &&
+        this.dialogObj.avatarUrl !== this.userInfo.avatar
+      ) {
+        this.dialogObj.loading = true;
+        updateUserInfo({ avatar: this.dialogObj.avatarUrl })
+          .then((res) => {
+            if (res.code === 200) {
+              this.dialogObj.avatarUrl = "";
+              this.$message.success("修改个人信息成功!");
+              this.getPersonInfo();
+              this.dialogObj.open = false;
+            } else {
+              this.$message.error("修改个人信息失败!");
+            }
+            this.dialogObj.loading = false;
+          })
+          .catch(() => {
+            this.dialogObj.loading = false;
+          });
+      }
+    },
   },
 };
 </script>
@@ -355,6 +485,7 @@ export default {
           background-color: rgba($color: #fff, $alpha: 0.7);
           padding: 7px;
           margin-right: 20px;
+          cursor: pointer;
         }
         &-user {
           &-item {
@@ -477,7 +608,7 @@ export default {
         }
         &-label {
           flex: 1;
-          font-size: 20px;
+          font-size: 18px;
           color: #333333;
         }
       }
@@ -570,4 +701,17 @@ export default {
     }
   }
 }
+.dialog {
+  display: flex;
+  justify-content: center;
+  &-avatar {
+    padding-top: 30px;
+    width: 138px;
+    height: 138px;
+    background-color: rgba($color: #000, $alpha: 0.5);
+    padding: 7px;
+    margin-right: 20px;
+    cursor: pointer;
+  }
+}
 </style>

+ 239 - 227
src/views/PersonalCenter/SkillTraining/SkillsTrainingDetails/AchievementCertificate/AchievementCertificateIndex.vue

@@ -2,36 +2,46 @@
  * @Description: 我的技能培训 => 技能培训详情 => 成绩和证书
  * @Author: 空白格
  * @Date: 2022-08-26 16:50:09
- * @LastEditors: gcz
- * @LastEditTime: 2022-08-29 16:24:54
+ * @LastEditors: 空白格
+ * @LastEditTime: 2022-08-30 10:07:36
  * @FilePath: \veterans_client_web\src\views\PersonalCenter\SkillTraining\SkillsTrainingDetails\AchievementCertificate\AchievementCertificateIndex.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
 <template>
-  <div class='certificate'>
-    <BannerBreadcrumb title="成绩与证书" :breadcrumb="true" :isRouter="true"/>
+  <div class="certificate">
+    <BannerBreadcrumb title="成绩与证书" :breadcrumb="true" :isRouter="true" />
     <section class="wrap-r u-flex u-col-top certificate-wrap">
       <section class="certificate-list">
         <div class="title">成绩与证书</div>
-        <div class="list u-flex u-flex-wrap u-row-between" v-if="total>=1">
-          <div class="list-item" :class="{even:(index+1)%2 == 0}" v-for="(item,index) in dataList" :key="item.id">
+        <div class="list u-flex u-flex-wrap u-row-between" v-if="total >= 1">
+          <div
+            class="list-item"
+            :class="{ even: (index + 1) % 2 == 0 }"
+            v-for="(item, index) in dataList"
+            :key="item.id"
+          >
             <div class="up">
-              <div class="examName">{{item.examName}}</div>
-              <div class="score">{{item.score}}</div>
-              <div class="fullScore">(满分{{item.fullScore}})</div>
+              <div class="examName">{{ item.examName }}</div>
+              <div class="score">{{ item.score }}</div>
+              <div class="fullScore">(满分{{ item.fullScore }})</div>
               <div class="certificateName" v-if="item.certificateName">
-              获得<br />
-              {{item.certificateName}}
-              ({{getCertificateGradeName(item.grade)}})</div>
+                获得<br />
+                {{ item.certificateName }}
+                ({{ getCertificateGradeName(item.grade) }})
+              </div>
               <el-image
-                v-if="item.imgUrl.length>0"
-                class="images" :src="item.imgUrl.split(',')[0]" 
-                :preview-src-list="item.imgUrl.split(',')">
+                v-if="item.imgUrl.length > 0"
+                class="images"
+                :src="item.imgUrl.split(',')[0]"
+                :preview-src-list="item.imgUrl.split(',')"
+              >
               </el-image>
             </div>
             <div class="down u-flex">
-              <div class="passDate u-flex-1">{{item.passDate}}</div>
-              <div class="btns u-flex-1"><span class="del" @click="delCertificate(item.id)">删除</span></div>
+              <div class="passDate u-flex-1">{{ item.passDate }}</div>
+              <div class="btns u-flex-1">
+                <span class="del" @click="delCertificate(item.id)">删除</span>
+              </div>
             </div>
           </div>
         </div>
@@ -50,30 +60,27 @@
         <div class="title">+ 录入</div>
         <el-form ref="form" :model="form" :rules="rules" label-width="120px">
           <el-form-item label="考试名称:" prop="examName">
-            <el-input v-model="form.examName "></el-input>
+            <el-input v-model="form.examName"></el-input>
           </el-form-item>
           <el-form-item label="证书名称:" prop="certificateName">
-            <el-input v-model="form.certificateName "></el-input>
+            <el-input v-model="form.certificateName"></el-input>
           </el-form-item>
           <el-form-item label="成绩" prop="score">
-            <el-input v-model="form.score "></el-input>
+            <el-input v-model="form.score"></el-input>
           </el-form-item>
           <el-form-item label="满分" prop="fullScore">
-            <el-input v-model="form.fullScore "></el-input>
+            <el-input v-model="form.fullScore"></el-input>
           </el-form-item>
           <el-form-item label="证书等级" prop="grade">
-              <el-select
-                v-model="form.grade"
-                placeholder="请选择证书等级"
-              >
-                <el-option
-                  v-for="item in gradeList"
-                  :key="item.index"
-                  :label="item.label"
-                  :value="item.value"
-                ></el-option>
-              </el-select>
-            </el-form-item>
+            <el-select v-model="form.grade" placeholder="请选择证书等级">
+              <el-option
+                v-for="item in gradeList"
+                :key="item.index"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label="通过日期:" prop="passDate">
             <div style="display: inline-block">
               <el-date-picker
@@ -88,25 +95,25 @@
           <el-form-item label="上传照片" prop="imgUrl">
             <div class="inner-wrap">
               <el-upload
-                      class="uploader logo-uploader"
-                      :action="upAction"
-                      accept="image/*"
-                      multiple
-                      :show-file-list="true"
-                      :on-success="fileUploadSuccess"
-                      :on-remove="fileRemove"
-                      :limit="2"
-                      list-type="picture"
-                      :file-list="fileList"
-                    >
-                    <img
-                        v-if="logoTempImg"
-                        :src="logoTempImg"
-                        class="uploader-img"
-                      />
-                      <i v-else class="el-icon-plus uploader-icon"></i>
-                      <div class="text">上传照片</div>
-                    </el-upload>
+                class="uploader logo-uploader"
+                :action="upAction"
+                accept="image/*"
+                multiple
+                :show-file-list="true"
+                :on-success="fileUploadSuccess"
+                :on-remove="fileRemove"
+                :limit="2"
+                list-type="picture"
+                :file-list="fileList"
+              >
+                <img
+                  v-if="logoTempImg"
+                  :src="logoTempImg"
+                  class="uploader-img"
+                />
+                <i v-else class="el-icon-plus uploader-icon"></i>
+                <div class="text">上传照片</div>
+              </el-upload>
             </div>
           </el-form-item>
           <div class="btn" @click="submitForm">提交</div>
@@ -118,131 +125,133 @@
 
 <script>
 import BannerBreadcrumb from "@/components/BannerBreadcrumb";
-import { getCertificateList,deleteCertificate,addCertificate,getCertificate } from "@/api/Certificate";
+import {
+  getCertificateList,
+  deleteCertificate,
+  addCertificate,
+  getCertificate,
+} from "@/api/Certificate";
 import { getDictData } from "@/api/Dict";
-  export default {
-    name: '',
-    components: {BannerBreadcrumb},
-    data () {
-      return {
-        upAction:process.env.VUE_APP_FILE_UPLOAD_URL,
-        skillTrainId:'',
-        fileList:[],
-        logoTempImg:'',
-        gradeList:[],
-        queryParams: {
-            pageNum: 1,
-            pageSize: 10,
-        },
-        imgUrlArr:[],
-        form:{
-          skillTrainId:'',
-          examName:'',
-          score:'',
-          fullScore:'',
-          passDate:'',
-          certificateName:'',
-          imgUrl:'',
-        },
-        rules:{
-          examName: [
-            { required: true, message: "请输入考试名称", trigger: "blur" },
-          ],
-          certificateName: [
-            { required: true, message: "请输入证书名称", trigger: "blur" },
-          ],
-          score: [
-            { required: true, message: "请输入成绩", trigger: "blur" },
-          ],
-          fullScore: [
-            { required: true, message: "请输入满分", trigger: "blur" },
-          ],
-          passDate: [
-            { required: true, message: "请选择通过日期", trigger: "blur" },
-          ],
-          grade: [
-            { required: true, message: "请选择证书等级", trigger: "blur" },
-          ],
-          imgUrl: [
-            { required: true, message: "请上传证书图片", trigger: "blur" },
-          ],
-        },
-        total:0,
-        loading:false,
-        dataList:[],
-
-      };
+export default {
+  name: "",
+  components: { BannerBreadcrumb },
+  data() {
+    return {
+      upAction: process.env.VUE_APP_BASE_API + "/file/upload/single/minio",
+      skillTrainId: "",
+      fileList: [],
+      logoTempImg: "",
+      gradeList: [],
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      imgUrlArr: [],
+      form: {
+        skillTrainId: "",
+        examName: "",
+        score: "",
+        fullScore: "",
+        passDate: "",
+        certificateName: "",
+        imgUrl: "",
+      },
+      rules: {
+        examName: [
+          { required: true, message: "请输入考试名称", trigger: "blur" },
+        ],
+        certificateName: [
+          { required: true, message: "请输入证书名称", trigger: "blur" },
+        ],
+        score: [{ required: true, message: "请输入成绩", trigger: "blur" }],
+        fullScore: [{ required: true, message: "请输入满分", trigger: "blur" }],
+        passDate: [
+          { required: true, message: "请选择通过日期", trigger: "blur" },
+        ],
+        grade: [{ required: true, message: "请选择证书等级", trigger: "blur" }],
+        imgUrl: [
+          { required: true, message: "请上传证书图片", trigger: "blur" },
+        ],
+      },
+      total: 0,
+      loading: false,
+      dataList: [],
+    };
+  },
+  created() {
+    this.form.skillTrainId = this.$route.query.id;
+    this.getDataList();
+    this.getCertificateGrade();
+  },
+  methods: {
+    /**
+     * 获取证书等级
+     */
+    getCertificateGrade() {
+      getDictData({ key: "certificate_grade" }).then((res) => {
+        if (res.code == 200) {
+          this.gradeList = res.data.map((item) => {
+            return {
+              ...item,
+              value: item.text,
+            };
+          });
+        }
+      });
     },
-    created(){
-      this.form.skillTrainId = this.$route.query.id;
-      this.getDataList();
-      this.getCertificateGrade();
+    /**
+     * 获取证书等级名称
+     * @param {Object} value
+     */
+    getCertificateGradeName(value) {
+      let name;
+      this.gradeList.forEach((item) => {
+        if (item.value == value) {
+          name = item.label;
+        }
+      });
+      return name;
     },
-    methods: {  
-      /**
-			 * 获取证书等级
-			 */
-			getCertificateGrade() {
-				getDictData({ key:'certificate_grade' }).then(res=>{
-					if(res.code == 200){						
-						this.gradeList = res.data.map(item => {
-							return {
-								...item,
-								value: item.text
-							}
-						});
-					}
-				});
-			},
-			/**
-			 * 获取证书等级名称
-			 * @param {Object} value
-			 */
-			getCertificateGradeName(value) {
-				let name;
-				this.gradeList.forEach(item => {
-					if (item.value == value) {
-						name = item.label
-					}
-				})
-				return name;
-			},
-      // fileUploadSuccess(res, file) {
-      //   // console.log("file", file);
-      //   this.form.imgUrl = '';
-      //   this.imgUrlArr = [];
-      //   this.imgUrlArr.push(res.data.url,);
-      //   this.form.imgUrl  =  this.imgUrlArr.toString();
-      // },
-      fileUploadSuccess(response, file, fileList) {
+    // fileUploadSuccess(res, file) {
+    //   // console.log("file", file);
+    //   this.form.imgUrl = '';
+    //   this.imgUrlArr = [];
+    //   this.imgUrlArr.push(res.data.url,);
+    //   this.form.imgUrl  =  this.imgUrlArr.toString();
+    // },
+    fileUploadSuccess(response, file, fileList) {
       let that = this;
-      this.form.imgUrl = '';
+      this.form.imgUrl = "";
       this.imgUrlArr = [];
       for (let index = 0; index < fileList.length; index++) {
         const element = fileList[index].response.data;
         that.imgUrlArr.push(element.url);
       }
-       this.form.imgUrl  =  this.imgUrlArr.toString();
+      this.form.imgUrl = this.imgUrlArr.toString();
     },
     fileRemove(file, fileList) {
       let that = this;
-      this.form.imgUrl = '';
+      this.form.imgUrl = "";
       this.imgUrlArr = [];
       for (let index = 0; index < fileList.length; index++) {
         const element = fileList[index].response.data;
         that.imgUrlArr.push(element.url);
       }
-      this.form.imgUrl  =  this.imgUrlArr.toString();
+      this.form.imgUrl = this.imgUrlArr.toString();
     },
-      getDataList() {
-        this.loading = true;
-        getCertificateList(Object.assign(this.queryParams,{skillTrainId:this.form.skillTrainId})).then((res) => {
-          this.dataList = res.data;
-          this.total = res.data.length;
-          this.loading = false;
-        });
-      },
-      /**
+    getDataList() {
+      this.loading = true;
+      getCertificateList(
+        Object.assign(this.queryParams, {
+          skillTrainId: this.form.skillTrainId,
+        })
+      ).then((res) => {
+        this.dataList = res.data;
+        this.total = res.data.length;
+        this.loading = false;
+      });
+    },
+    /**
      * 分页切换
      * @date 2022-08-12
      * @param {any} page
@@ -252,89 +261,92 @@ import { getDictData } from "@/api/Dict";
     //   this.queryParams.pageNum = page;
     //   this.getDataList();
     // },
-    resetFields(){
-      this.$refs['form'].resetFields();
-      this.fileList=[];
-      this.form.imgUrl = '';
+    resetFields() {
+      this.$refs["form"].resetFields();
+      this.fileList = [];
+      this.form.imgUrl = "";
       this.imgUrlArr = [];
     },
-     submitForm() {
-        this.$refs['form'].validate((valid) => {
-          if (valid) {
-            addCertificate(this.form).then(res=>{
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          addCertificate(this.form)
+            .then((res) => {
               this.$message.success(res.msg);
               this.resetFields();
               this.getDataList();
-            }).catch(err=>{
-              console.log('addCertificate err',err);
-              this.$message.error(err.msg)
             })
-          } else {
-            console.log('error submit!!');
-            return false;
-          }
-        });
-      },
-      delCertificate(id){
-        this.$confirm("您确认删除该证书吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }).then(()=>{
-          deleteCertificate({skillTrainId:id}).then(res=>{
-            console.log('res',res);
+            .catch((err) => {
+              console.log("addCertificate err", err);
+              this.$message.error(err.msg);
+            });
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    delCertificate(id) {
+      this.$confirm("您确认删除该证书吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+        deleteCertificate({ skillTrainId: id })
+          .then((res) => {
+            console.log("res", res);
             this.$message.success(res.msg);
             this.getDataList();
-          }).catch(err=>{
-            console.log('deleteCertificate err',err);
-            this.$message.error(err.msg)
           })
-        })
-        
-      }
+          .catch((err) => {
+            console.log("deleteCertificate err", err);
+            this.$message.error(err.msg);
+          });
+      });
     },
-  }
+  },
+};
 </script>
 
-<style lang='scss' scoped>
-.certificate{
- overflow: hidden;
+<style lang="scss" scoped>
+.certificate {
+  overflow: hidden;
 }
-.wrap-r{
+.wrap-r {
   box-sizing: border-box;
   background: #fff;
   padding: 20px;
-  width:70%;
+  width: 70%;
   margin: 23px auto;
 }
-.title{
-    font-size: 20px;
-    color: #1A1A1A;
-    font-weight: 600;
-    margin-bottom: 24px;
-  }
-.certificate-wrap{
+.title {
+  font-size: 20px;
+  color: #1a1a1a;
+  font-weight: 600;
+  margin-bottom: 24px;
+}
+.certificate-wrap {
   padding: 0;
   width: 1200px;
   background-color: #f4f4f4;
-  .certificate-list{
+  .certificate-list {
     background-color: #fff;
     flex: 1;
     padding: 20px;
     margin-right: 20px;
     box-sizing: border-box;
-    .list{
-      &-item{
+    .list {
+      &-item {
         width: 240px;
         margin-bottom: 24px;
         box-sizing: border-box;
         text-align: center;
         color: #fff;
-        background: #FE5862;
-        &.even{
-          background: #FE9C37;
+        background: #fe5862;
+        &.even {
+          background: #fe9c37;
         }
-        .up{
+        .up {
           position: relative;
           padding: 30px 20px 0;
           box-sizing: border-box;
@@ -342,8 +354,8 @@ import { getDictData } from "@/api/Dict";
           background: url(@/assets/images/certificate-bg.png) no-repeat;
           background-size: 200px 246px;
           background-position: 52px 100px;
-         
-          .images{
+
+          .images {
             position: absolute;
             left: 0;
             right: 0;
@@ -351,38 +363,38 @@ import { getDictData } from "@/api/Dict";
             top: 0;
             opacity: 0;
           }
-          .examName{
+          .examName {
             font-size: 20px;
             height: 80px;
             overflow: hidden;
           }
-          .score{
+          .score {
             font-size: 60px;
             line-height: 1;
             margin-bottom: 5px;
           }
-          .fullScore{
+          .fullScore {
             font-size: 14px;
-            color: rgba(255,255,255,.4);
+            color: rgba(255, 255, 255, 0.4);
             margin-bottom: 45px;
           }
-          .certificateName{
+          .certificateName {
             font-size: 14px;
           }
         }
-        .down{
+        .down {
           height: 44px;
-          background: rgba(255,255,255,.4);
-          .btns{
-            .del{
+          background: rgba(255, 255, 255, 0.4);
+          .btns {
+            .del {
               display: inline-block;
               padding: 0 15px;
               border-radius: 24px;
               height: 24px;
               line-height: 24px;
               text-align: center;
-              background: rgba(255,255,255,0.70);
-              color: #FE5862;
+              background: rgba(255, 255, 255, 0.7);
+              color: #fe5862;
               font-size: 14px;
               cursor: pointer;
             }
@@ -391,7 +403,7 @@ import { getDictData } from "@/api/Dict";
       }
     }
   }
-  .certificate-form{
+  .certificate-form {
     background-color: #fff;
     width: 380px;
     padding: 20px;
@@ -399,11 +411,11 @@ import { getDictData } from "@/api/Dict";
   }
 }
 
-.el-form{
+.el-form {
   // .el-form-item{
   //   margin-bottom: 10px;
   // }
-  .btn{
+  .btn {
     background: #709078;
     color: #fff;
     text-align: center;
@@ -414,7 +426,7 @@ import { getDictData } from "@/api/Dict";
   }
 }
 
-.logo-uploader :deep(.el-upload){
+.logo-uploader :deep(.el-upload) {
   border: 1px dashed #d9d9d9;
   border-radius: 6px;
   cursor: pointer;

+ 60 - 16
src/views/PolicyAdvice/PolicyAdviceIndex.vue

@@ -1,15 +1,15 @@
 <!--
- * @Description: 政策咨询
+ * @Description: 政策资讯
  * @Author: 空白格
  * @Date: 2022-08-11 09:15:53
- * @LastEditors: gcz
- * @LastEditTime: 2022-08-23 10:10:16
+ * @LastEditors: 空白格
+ * @LastEditTime: 2022-08-30 11:02:33
  * @FilePath: \veterans_client_web\src\views\PolicyAdvice\PolicyAdviceIndex.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 -->
 <template>
   <div class="app-main policy-advice">
-    <BannerBreadcrumb title="政策咨询"/>
+    <BannerBreadcrumb title="政策资讯" />
     <!-- 内容 -->
     <div class="app-main-box policy-advice-box">
       <div class="policy-advice-box-logo">
@@ -27,14 +27,36 @@
             :label="item.label"
             :name="item.text"
           >
-            <ul class="policy-list" v-loading="loading">
-              <li class="policy-list-item" @click="jumpPage('newsdetails',{ id: item.artId,type:'policy' })" v-for="(item, index) in policyList" :key="index">
+            <ul
+              class="policy-list"
+              v-loading="loading"
+              v-if="policyList.length"
+            >
+              <li
+                class="policy-list-item"
+                @click="
+                  jumpPage('newsdetails', { id: item.artId, type: 'policy' })
+                "
+                v-for="(item, index) in policyList"
+                :key="index"
+              >
                 <div class="policy-list-title">{{ item.artTitle }}</div>
                 <div class="policy-list-icon">
                   <i class="el-icon-arrow-right"></i>
                 </div>
               </li>
             </ul>
+            <div class="pagination" v-if="total">
+              <el-pagination
+                background
+                layout="prev, pager, next"
+                :page-size="queryParams.pageSize"
+                :total="total"
+                @current-change="currentChange"
+              >
+              </el-pagination>
+            </div>
+            <el-empty v-else description="暂无数据"></el-empty>
           </el-tab-pane>
         </el-tabs>
       </div>
@@ -43,13 +65,13 @@
 </template>
 
 <script>
-import BannerBreadcrumb from '@/components/BannerBreadcrumb'
+import BannerBreadcrumb from "@/components/BannerBreadcrumb";
 import { getDictData } from "@/api/Dict";
 import { getPolicyData } from "@/api/PolicyAdvice";
 export default {
   name: "PolicyAdviceIndex",
   components: {
-    BannerBreadcrumb
+    BannerBreadcrumb,
   },
   data() {
     return {
@@ -58,9 +80,10 @@ export default {
         pageSize: 10,
         artCategoryId: "",
       },
+      total: 0,
       policyTypeList: [],
       policyList: [],
-      loading: false
+      loading: false,
     };
   },
   created() {
@@ -82,13 +105,14 @@ export default {
       });
     },
     /**
-     * 获取政策咨询列表数据
+     * 获取政策资讯列表数据
      */
     getPolicyList() {
-      this.loading = true
+      this.loading = true;
       getPolicyData(this.queryParams).then((res) => {
-        this.policyList = res.rows;
-        this.loading = false
+        this.policyList = res?.rows;
+        this.total = Number(res?.total);
+        this.loading = false;
       });
     },
     /**
@@ -102,15 +126,25 @@ export default {
       this.queryParams.artCategoryId = tab.name;
       this.getPolicyList();
     },
+    /**
+     * 分页触发
+     * @date 2022-08-30
+     * @param {any} page
+     * @returns {any}
+     */
+    currentChange(page) {
+      this.queryParams.pageNum = page;
+      this.getPolicyList();
+    },
     /**
      * 跳转到指定页面
      * @date 2022-08-11
      * @param {any} path
      * @returns {any}
      */
-    jumpPage(path,param) {
+    jumpPage(path, param) {
       if (path) {
-        this.$router.push({path:path,query:param});
+        this.$router.push({ path: path, query: param });
       }
     },
   },
@@ -149,7 +183,7 @@ export default {
           display: flex;
           justify-content: space-between;
           border-bottom: dashed 1px #d7d7d7;
-          color: #2B2B2B;
+          color: #2b2b2b;
           font-size: 16px;
           height: 50px;
           line-height: 50px;
@@ -159,5 +193,15 @@ export default {
       }
     }
   }
+  .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
vue.config.js

@@ -17,7 +17,7 @@ module.exports = defineConfig({
         pathRewrite: {
           ["^" + process.env.VUE_APP_BASE_API]: "",
         },
-      },
+      }
     },
   },
   configureWebpack: {

+ 4 - 4
yarn.lock

@@ -2975,10 +2975,10 @@ element-china-area-data@^5.0.2:
     china-area-data "^5.0.1"
     lodash-es "^4.17.15"
 
-element-ui@^2.15.9:
-  version "2.15.9"
-  resolved "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.9.tgz#b03548e007b7ab7496c49a282db92a0fffd7efc7"
-  integrity sha512-dx45nQLt4Hn87/Z9eRr3ex6KFZbxlFAwEU3QoW3wA5EsYftvHTyL9Pq7VnXXD7hu1Eiaup2jcs6kp+/VSFmXuA==
+element-ui@2.15.3:
+  version "2.15.3"
+  resolved "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.3.tgz#55108ab82a3bcc646e7b0570871c48ba96300652"
+  integrity sha512-yGcK0AspuC827Nq7GUHct83cywAKIDo+kpp/rtov5ptmK1hZ8FMlt2SKbcozmSabmpdBNroMgqxqXl6IT1zy1A==
   dependencies:
     async-validator "~1.8.1"
     babel-helper-vue-jsx-merge-props "^2.0.0"