Browse Source

版本回退

y595705120 3 năm trước cách đây
mục cha
commit
a4dbfd9e4d

+ 2 - 2
config/index.js

@@ -3,8 +3,8 @@
 // see http://vuejs-templates.github.io/webpack for documentation.
 //
 // const TARGET = "http://study.ndjsxh.cn:8888/"
-// const TARGET = "http://localhost:8000/"
-const TARGET = "http://sm.hqedust.com/"
+const TARGET = "http://localhost:8000/"
+// const TARGET = "http://sm.hqedust.com/"
 const path = require('path')
 
 module.exports = {

+ 1 - 1
index.html

@@ -8,7 +8,7 @@
     <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
     <!-- <meta name="referrer" content="origin"> -->
 
-    <title>三明市建设人才服务中心</title>
+    <title>福建省哲睿网络科技有限公司 </title>
   </head>
   <body style="margin:0px;">
 <!--    <div id="img_float" style="z-index: 101; left: 134px; width: 242px; height: 141px; position: absolute; top: 577px; visibility: visible; cursor: pointer;">

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 306 - 221
package-lock.json


+ 2 - 0
package.json

@@ -6,6 +6,7 @@
   "private": true,
   "scripts": {
     "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
+    "wind": "npx tailwindcss -o ./src/tailwind.css  --watch",
     "start": "npm run dev",
     "build": "node build/build.js"
   },
@@ -21,6 +22,7 @@
     "sass-loader": "^10.1.0",
     "save": "^2.4.0",
     "spark-md5": "^3.0.1",
+    "tailwindcss": "^3.0.23",
     "vue": "^2.5.2",
     "vue-router": "^3.0.1",
     "vue-socket.io-extended": "^4.2.0",

+ 3 - 6
src/App.vue

@@ -7,14 +7,11 @@
     <div class="ng-scope">
       <div class="footer ng-scope" style="z-index: 10">
         <div class="footer-bd">
-          <p>技术支持:三明市建设人才服务中心【0598-5157296】</p>
+          <p>技术支持:福建省哲睿网络科技有限公司 ©2022</p>
           <p>
-              <span> ©2021 </span>
-              <!-- <a href="http://beian.miit.gov.cn/" target="_blank">闽ICP备19021760号-1</a> -->
-              <img class="beian" src="./assets/images/beian_hashc9b229c96d.png" alt="">
-              <!-- <a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=35010202001216" target="_blank"> -->
+              <img class="beian inline-block" src="./assets/images/beian_hashc9b229c96d.png" alt="">
               <a href="http://beian.miit.gov.cn/" target="_blank">
-                网站备案:闽ICP备19021760号-2
+                网站备案:闽ICP备0000000号
               </a>
            </p>
         </div>

+ 0 - 2
src/assets/css/base.css

@@ -2,11 +2,9 @@
 .f-r {
   float: right;
 }
-
 .fr {
   float: right;
 }
-
 .f-l {
   float: left;
 }

+ 9 - 7
src/assets/css/main.css

@@ -24,8 +24,8 @@ form {
 }
 .m-content {
   position: relative;
-  padding-top: 95px;
-  border: 1px solid #e8e8e8;
+  /* padding-top: 95px; */
+  /* border: 1px solid #e8e8e8; */
 }
 .ng-scope {
   border: 0px dashed red;
@@ -222,9 +222,13 @@ a, span {
 
 .m-right-block {
   width: 1009px;
+  margin: 0 auto;
   min-height: 700px;
   background: #fff;
-  border-left: 1px solid #e8e8e8;
+  border-radius: 1rem;
+  margin-bottom: 2rem;
+  margin-top: 2rem;
+  /* border-left: 1px solid #e8e8e8; */
 }
 
 .m-right-block .right-block-bd {
@@ -254,8 +258,6 @@ a, span {
     font-size: 14px;
     text-align: center;
     color: #fff;
-    /* background-color: rgba(129, 184, 246, 0.9);
-     */
      background-color: #ff914b;
     border: 0;
     cursor: pointer;
@@ -266,13 +268,13 @@ a, span {
 .banner-box {
   width: 100%;
   height: 415px;
-  background: url("/static/images/nav_bg.png")  no-repeat center top;
+  /* background: url("/static/images/nav_bg.png")  no-repeat center top; */
   position: relative;
   z-index: 1;
 }
 .opacity-bg {
   border-radius: 10px;
-  background:rgba(129, 184, 246, 0.9) ;
+  background:#3876da;
   /* background: rgba(0,0,0,0.2); */
   /* background: url("../../assets/images/opacity-bg_hash548c17198c.png"); */
   color: #fff;

+ 1 - 1
src/components/footer/index.vue

@@ -2,7 +2,7 @@
   <div class="footerView" class="ng-scope">
     <div class="footer ng-scope" style="z-index: 10">
       <div class="footer-bd">
-        <p>技术支持:三明市建设人才服务中心</p>
+        <p>技术支持:福建省哲睿网络科技有限公司</p>
         <p><a href="http://beian.miit.gov.cn/" target="_blank">闽ICP备08103886号-2</a>
         <img class="beian" src="./assets/images/beian_hashc9b229c96d.png" alt="">
          <a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=35010202001216" target="_blank">

+ 2 - 1
src/components/nav/navbar.less

@@ -1,7 +1,8 @@
 .m-header {
   min-width: 1200px;
   height: 150px;
-  background: #fff url("/static/images/header-bg.jpg") no-repeat center bottom;
+  background: #fff url("/static/images/header-bg-1.jpg") no-repeat center center;
+  background-size: cover;
   position: relative;
   z-index: 3;
 }

+ 1 - 2
src/components/nav/navbar.vue

@@ -3,8 +3,7 @@
     <div class="m-header ng-scope">
       <div class="p-wrap-full tc" @click="goto('/')">
         <span class="logo " style="color: white;font-size: 56px;">
-
-          三明市建设人才服务中心  </span>
+          福建省哲睿网络科技有限公司  </span>
       </div>
     </div>
 

+ 6 - 5
src/containers/center/center.vue

@@ -1,8 +1,8 @@
 <template lang="html">
   <div clss="">
-    <center-navbar :user="userInfo"></center-navbar>
+    <navbar :user="userInfo"></navbar>
+    <IHeader :user="userInfo"></IHeader>
     <div class="p-wrap-full m-content clear body-bg">
-      <center-menu :user="userInfo"></center-menu>
       <router-view></router-view>
     </div>
   </div>
@@ -10,12 +10,13 @@
 <script>
 import { mapGetters,mapActions } from "vuex";
 import CenterNavbar from "./components/navbar/index.vue";
-import CenterMenu from "./components/menu/index.vue";
-
+import IHeader from "./components/menu/iheader.vue";
+import navbar from "@/components/nav/navbar.vue";
 export default {
   components: {
     CenterNavbar,
-    CenterMenu
+    IHeader,
+    navbar
   },
   data() {
     return {

+ 36 - 9
src/containers/center/class/train/index.vue

@@ -1,14 +1,41 @@
 <template>
-  <div class="m-right-block fr mh576">
-    <!-- uiView: myStudyContent -->
-
-
+  <div class="m-right-block mh576">
     <div class="right-block-bd ng-scope" ui-view="myStudyContent" style="position: relative;">
-      <div class="panel-tit clear">
-        <p class="fl">课程</p>
+      <div class="text-xl leading-10 pb-4 text-blue">
+        <p>我的课程</p>
+      </div>
+
+      <el-row class="mt-4" :gutter="48" v-if="list && list.length > 0">
+        <el-col :span="8" v-for="(item) in list" :key="item.course_id">
+          <el-card class="mb-6">
+            <div class="h-48 overflow-hidden relative">
+              <img :src="item.tb" class="image object-cover">
+              <el-tag class="absolute right-2 top-2" type="success">
+                <i class="el-icon-check text-xl"></i>
+              </el-tag>
+            </div>
+            <div class="flex py-2 px-4  items-center justify-between">
+              <span>{{item.name}}</span>
+              <el-button type="text" @click="gotoPlay(item.courseId)">进入学习</el-button>
+            </div>
+            <div class="py-2 px-6 text-sm flex">
+              <div class="w-1/2 text-left">{{item.type}}</div>
+              <div class="w-1/2  text-right">年度: {{item.nd||'2022'}}</div>
+            </div>
+            <div class="py-2 px-6 text-sm">
+              获得: {{item.getXs/10}}学时
+            </div>
+            <div class="py-2 px-6 text-sm">
+              总共: {{item.totalXs/10}}学时
+            </div>
+          </el-card>
+        </el-col>
+      </el-row>
+      <div v-else class="flex w-auto h-72 justify-center items-center text-gray-300 text-lg">
+        暂无信息
       </div>
 
-      <ul class="m-course-list clear mt10 classlist" v-if="total>0">
+      <!-- <ul class="m-course-list clear mt10 classlist" v-if="total>0">
         <li v-for="(item,index) in list" :key="item.course_id" class="pt-sola mt20 pb10">
           <div>
             <span v-if="item.isFinish==1" class="p-ico2 ico-passed"></span>
@@ -34,9 +61,9 @@
             </div>
           </div>
         </li>
-      </ul>
+      </ul> -->
 
-      <el-pagination  class="m-pages"
+      <el-pagination v-if="total" class="m-pages"
       @current-change="handleCurrentChange" :current-page="page" :page-size="size" layout="total, prev, pager, next"
         :total="total">
       </el-pagination>

+ 1 - 16
src/containers/center/components/navbar/index.vue

@@ -4,7 +4,7 @@
       <div class="logo fl" style="padding-top: 24px;">
         <a href="javascript:void(0)" style="text-decoration: none"
             class="rel ng-binding" @click="$router.push('/')">
-           三明市建设人才服务中心
+           福建省哲睿网络科技有限公司
           <div class="hover-block" style="padding-top: 24px;">
 
             <div class="hover-bd ng-scope" style="width:137px;margin-top: -20px" @click="$router.push('/')">
@@ -20,21 +20,6 @@
           <span class="p-ico2 ico-index"></span>
           <span class="nav-txt">回到主页</span>
         </a>
-        <a href="javascript:void(0)" class="ng-scope current">
-          <span class="p-ico2 ico-center"></span>
-          <span class="nav-txt">学习中心</span>
-        </a>
-
-        <a href="javascript:void(0)" @click="gotoPage('/center/sign')">
-          <span class="p-ico2 ico-bmpx"></span>
-          <span class="nav-txt">学时证明</span>
-        </a>
-
-        <span class="p-ico2 ico-line"></span>
-        <a href="javascript:void(0)" @click="logout()">
-          <span class="p-ico2 ico-exit"></span>
-          <span class="nav-txt">退出</span>
-        </a>
       </div>
     </div>
   </div>

+ 24 - 42
src/containers/center/home/index.vue

@@ -1,50 +1,32 @@
 <template>
   <div class="app">
-    <div class="m-right-block fr">
+    <div class="m-right-block">
       <div class="right-block-bd">
-        <div class="panel-tit clear">
-          <p class="fl">学习向导</p>
-        </div>
-        <div class="train_step_box clear mt10">
-          <div class="train_step fl">
-            <p><span class="fs3 t-b b v-m">第1步</span>
-              <a @click="gotoPage('/center/setting')" class="train_btn" title="实名认证">实名认证</a>
-            </p>
-
-            <p class="fs15 mt10">编辑用户信息,完成实名认证</p>
-          </div><span class="p-ico2 step-ico fl"></span>
-          <div class="train_step fl">
-            <p><span class="fs3 t-b b v-m">第2步</span>
-              <a @click="gotoPage('/center/class/train')" class="train_btn w150" title="进班学习">进班学习</a></p>
-            <p class="fs15 mt10">完成班级内培训内容,通过班级考核</p>
-          </div><span class="p-ico2 step-ico fl"></span>
-          <div class="train_step fl">
-            <p>
-              <span class="fs3 t-b b v-m">第3步</span>
-              <a @click="gotoPage('/center/sign')" class="train_btn w150" title="下载证明">下载证明</a>
-            </p>
-            <p class="fs15 mt10">班级培训合格,即可以下载学时证明</p>
-          </div>
-        </div>
-        <div class="panel-tit mt30 clear">
-          <p class="fl">最近学习课程</p>
+        <!-- <div class="panel-tit mt30 clear"> -->
+        <div class="text-xl leading-10 pb-4 text-blue">
+          <p>最近学习课程</p>
         </div>
         <div class="clear mt10">
-          <div class="m-history-course fl ng-scope" v-for="item in list" :key="item.courseId" style="width:464px; margin-left:8px;cursor:pointer">
-            <a  class="course-img" @click="gotoPlay(item.courseId)">
-              <img :src="item.tb">
-              <span class="p-ico2"></span>
-            </a>
-            <div class="history-course-bd" style="width:276px">
-              <p class="tit ng-binding">{{item.name}}</p>
-              <div class="info">课程进度
-                <span class="num ml10 ng-binding">{{getPercent(item)}}</span>
-                <span class="t-b">%</span>
-              </div>
-              <div class="info">最近一次学习
-                <span>{{item.endDate}}</span>
-              </div>
-            </div>
+          <el-row :gutter="12" v-if="list && list.length > 0">
+            <el-col  v-for="item in list" :key="item.courseId"  :span="8">
+              <el-card>
+                <div slot="header" class="clearfix">
+                  <span>{{item.name}}</span>
+                  <el-button style="float: right; padding: 3px 0" @click="gotoPlay(item.courseId)" type="text">前往</el-button>
+                </div>
+                <div class="text item flex">
+                  <div class="info pr-4">课程进度</div>
+                  <div class="info">{{getPercent(item)}}%</div>
+                </div>
+                <div class="text item flex">
+                  <div class="info pr-4">最近一次学习</div>
+                  <div class="info">{{item.endDate}}</div>
+                </div>
+              </el-card>
+            </el-col>
+          </el-row>
+          <div v-else class="flex w-auto h-72 justify-center items-center text-gray-300 text-lg">
+            暂无信息
           </div>
         </div>
       </div>

+ 61 - 19
src/containers/center/market/index.vue

@@ -1,23 +1,55 @@
 <template>
-  <div class="m-right-block fr mh576">
-    <div class="right-block-bd ng-scope" ui-view="myStudyContent" style="position: relative;">
-      <div class="panel-tit clear">
-        <p class="fl">推荐课程</p>
+  <div class="m-right-block">
+    <div class="right-block-bd" ui-view="myStudyContent" style="position: relative;">
+      <div class="text-xl leading-10 pb-4 text-blue">
+        <p>推荐课程</p>
       </div>
 
-      <ul class="pt-line mt20">
+      <el-tabs @tab-click="handleClick">
+        <template  v-for="item in typeList" >
+          <el-tab-pane v-if="item.isOpen" :key="item.id" :label="item.name"></el-tab-pane>
+        </template>
+      </el-tabs>
+
+      <!-- <ul class="pt-line mt20">
         <li :span="6" v-for="item in typeList" style="width: 25%;float: left;" :key="item.id" v-if="item.isOpen">
           <span :class="{active:item.name==type }" class="nav-btn w220" @click="type=item.name">{{item.name}} </span>
         </li>
-      </ul>
-
-      <div class="mt10" v-if="type=='施工现场专业人员'">
-        <p class="tc" style="color: red;font-size: 18px;">
-          报名对象为:2020年度及以后由培训单位核发的和2021年度换发的“电子培训合格证”且每年度需参加继续教育人员
-        </p>
+      </ul> -->
+
+      <el-row class="mt-4" :gutter="48" v-if="list && list.length > 0">
+        <el-col :span="8" v-for="(item, index) in list" :key="item.course_id">
+          <el-card class="mb-6">
+            <div class="h-48 overflow-hidden relative">
+              <img :src="item.tb" class="image object-cover">
+              <el-tag class="absolute right-2 top-2" type="info" v-if="item.is_pay==0 && item.buyImg =='' && item.payNo == ''">还未购买</el-tag>
+              <el-tag class="absolute right-2 top-2" type="warning" v-else-if="item.is_pay==0">等待审核</el-tag>
+              <el-tag class="absolute right-2 top-2" type="danger" v-else-if="item.is_pay==2">申请驳回</el-tag>
+              <el-tag class="absolute right-2 top-2" v-else-if="!item.is_pass">在学习中</el-tag>
+              <el-tag class="absolute right-2 top-2" type="success" v-else>已经完成</el-tag>
+            </div>
+            <div class="flex py-2 px-4  items-center justify-between">
+              <span>{{item.name}}</span>
+              <el-button type="text" @click="gotoPlay(item.course_id)" v-if="item.is_pay==1">进入学习</el-button>
+              <el-button type="text" @click="goPay(index)" v-else-if="item.is_pay==2 || !!item.buyImg">补充材料</el-button>
+              <el-button type="text" @click="goPay(index)" v-else>购买课程</el-button>
+            </div>
+            <div class="py-2 px-6 text-sm flex">
+              <div class="w-1/2 text-left">{{item.type}}</div>
+              <div class="w-1/2  text-right">年度: {{item.nd||'2022'}}</div>
+            </div>
+            <div class="py-2 px-6 text-sm flex">
+              <div class="w-1/2">费用: ¥{{item.fee/100}}元</div>
+              <div class="w-1/2 text-right">学时: {{item.xs/10}}</div>
+            </div>
+          </el-card>
+        </el-col>
+      </el-row>
+      <div v-else class="flex w-auto h-72 justify-center items-center text-gray-300 text-lg">
+        暂无信息
       </div>
 
-      <ul class="m-course-list clear mt10 classlist" v-if="total>0">
+      <!-- <ul class="m-course-list clear mt10 classlist" v-if="total>0">
         <li v-for="(item,index) in list" :key="item.course_id" class="pt-sola mt20 pb10">
           <div>
             <span v-if="item.isFinish==1" class="p-ico2 ico-passed"></span>
@@ -57,9 +89,9 @@
             </div>
           </div>
         </li>
-      </ul>
+      </ul> -->
 
-      <el-pagination class="m-pages" @current-change="handleCurrentChange" :current-page="page" :page-size="size"
+      <el-pagination  v-if="total" class="m-pages" @current-change="handleCurrentChange" :current-page="page" :page-size="size"
         layout="total, prev, pager, next" :total="total">
       </el-pagination>
 
@@ -150,8 +182,8 @@
         <div>
           <div v-if="type=='施工现场专业人员'">
             <div class="commitment-header"> 致:三明市城市建设项目服务中心 </div>
-            <div class="tl commitment">
-                {{promise.promise_edu}}
+            <div class="tl commitment" >
+                {{ buyForm.promise || promise.promise_edu}}
             </div>
             <div class="commitment-footer">
               特此诺书!
@@ -160,7 +192,7 @@
 
           <div v-else-if="type=='建筑施工企业特种作业人员'">
             <div class="tl commitment">
-              {{promise.promise_special}}
+              {{buyForm.promise || promise.promise_special}}
             </div>
 
           </div>
@@ -168,13 +200,13 @@
 
           <div v-else-if="type=='园林绿化技术工人'">
             <div class="tl commitment">
-              {{promise.promise_plant}}
+              {{buyForm.promise||promise.promise_plant}}
             </div>
           </div>
 
           <div v-else>
             <div class="tl commitment">
-              {{promise.promise_other}}
+              {{buyForm.promise||promise.promise_other}}
             </div>
           </div>
 
@@ -341,6 +373,9 @@
       if (this.timer) window.clearInterval(this.timer);
     },
     methods: {
+      handleClick(tab){
+        this.type = tab.label;
+      },
       showImg(url) {
         if (!url) return;
         this.imgUrl = url;
@@ -490,3 +525,10 @@
     font-size: 16px;
   }
 </style>
+<style lang="less" scoped>
+.el-card{
+  & /deep/ .el-card__body{
+    padding: 0;
+  }
+}
+</style>

+ 6 - 1
src/containers/center/market/promise.js

@@ -15,9 +15,14 @@ export default {
               每年不得少于24学时。本人自愿选择参加三明市城市建设项目服务中心组织的特种操作人员继续教育,
               对报名相关条件、提交的材料及收费情况均已知晓!且所提交的材料真实有效,
               如有存在虚假,所导致的一切后果本人自愿承担。`,
-  'promise_edu':`根据福建省住房和城乡建设厅《关于做好施工现场专业人员换发电子培训合格证相关工作的通知》(
+  'promise_edu32':`根据福建省住房和城乡建设厅《关于做好施工现场专业人员换发电子培训合格证相关工作的通知》(
               闽建人函〔2021〕6号)的文件精神,施工现场专业人员符合换证条件的按要求参加不少于32学时的继续教育。
               按照明建人才〔2021〕8号关于施工现场专业人员岗位证书继续教育的通知,
               本人现自愿委托参加贵中心所组织的继续教育培训学习,委托培训费用_3_元/学时。`,
+  'promise_edu':`按住建部相关通知,施工现场专业人员继续教育区分新取证和换发证,以发证日期作为计算周期,确定参加不同周期的继续教育学习。凡是提前或过期学习的数据无效,系统不接收。持证人员可关注微信公众号“住建行业培训管理信息系统”,并绑定个人信息,准确掌握个人证书有效期及继续教育周期信息。
+说明一:新取证(通过考试取得)施工现场专业人员,取得证书后满一年,方可开始参加继续教育学习。
+举例如下:发证日期为2020年6月10日的,从2021年6月10日始,至2022年6月9日止,参加用人单位继续教育不少于24学时,参加继续教育单位继续教育不多于8学时,计入2021年度;从2022年6月10日始,至2023年6月9日止,按以上规则参加第二次继续教育,计入2022年度。以此类推。
+说明二:换发证(通过继续教育换证取得)施工现场专业人员,取得证书后,即可开始参加继续教育学习。
+举例如下:发证日期为2021年6月10日的,从2021年6月10日始,至2022年6月9日止,参加用人单位继续教育不少于24学时,参加继续教育单位继续教育不多于8学时,计入2022年度。以此类推。`,
 
 }

+ 12 - 9
src/containers/center/myOrder/index.vue

@@ -1,34 +1,32 @@
 <template>
-  <div class="m-right-block fr mh576" style="position: relative;">
+  <div class="m-right-block" style="position: relative;">
     <div class="right-block-bd">
-      <div class="mb10 tc mt20">
-        <span class="p-ico2 worm-ico-o"></span>
-        注:未付款的订单设置3小时时限,3小时过后未付的订单就不再显示。
+      <div class="text-xl leading-10 pb-4 text-blue">
+        <p>我的订单</p>
       </div>
-
       <div  class="ng-scope">
 
         <el-table v-loading="listLoading" :data="list" border fit highlight-current-row>
 
           <el-table-column label="交易订单" >
-            <template slot-scope="{row, $index}">
+            <template slot-scope="{row}">
               <span>{{row.id}}</span>
             </template>
           </el-table-column>
           <el-table-column label="培训内容" >
-            <template slot-scope="{row, $index}">
+            <template slot-scope="{row}">
               <span>{{row.name}}</span>
             </template>
           </el-table-column>
 
           <el-table-column label="证书类型" >
-            <template slot-scope="{row, $index}">
+            <template slot-scope="{row}">
               <span>{{row.type}}-{{row.nd}}</span>
             </template>
           </el-table-column>
 
           <el-table-column label="学时">
-            <template slot-scope="{row, $index}">
+            <template slot-scope="{row}">
               <span>{{row.totalXs/10}}</span>
             </template>
           </el-table-column>
@@ -49,8 +47,13 @@
             </template>
           </el-table-column>
         </el-table>
+        <div class="mb10 mt20 text-xs text-right text-red-400">
+          <span class="p-ico2 worm-ico-o"></span>
+          注:未付款的订单设置3小时时限,3小时过后未付的订单就不再显示。
+        </div>
 
         <el-pagination
+          class="m-pages"
             @current-change="handleCurrentChange"
             :current-page="page"
            :page-size="size"

+ 255 - 202
src/containers/center/setting/index.vue

@@ -1,208 +1,257 @@
 <template>
-  <div class="m-right-block fr">
+  <div class="m-right-block">
     <div class="right-block-bd">
-      <div class="m-account">
-        <div class="account-tit" style="height:30px">
-          <a :class="{'current':show===1}" style="text-decoration: none;padding-bottom: 5px" @click="show=1" class="">基础资料</a>
-          <a :class="{'current':show===2}" style="text-decoration: none;padding-bottom: 5px" @click="show=2" class="">实名认证</a>
-          <a :class="{'current':show===3}" style="text-decoration: none;padding-bottom: 5px" @click="show=3" class="">额外信息</a>
-          <a :class="{'current':show===4}" style="text-decoration: none;padding-bottom: 5px" @click="show=4" class="">密码修改</a>
-          <a :class="{'current':show===5}" style="text-decoration: none;padding-bottom: 5px" @click="show=5" class="">手机修改</a>
-        </div>
-
-        <div v-if="show===1" class="lwh-ul-form">
-          <form name="user">
-            <div class="m-img tc"></div>
-
-            <el-row :gutter="40" class="mt20">
-              <el-col :span="6" class="col-normal tc">
-                <img :src="userInfo.headImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.headImg)">
-                <do-upload @onFinish="setHeadImg" placeholder="上传头像"> </do-upload>
-              </el-col>
-
-              <el-col :span="6" class="col-normal tc">
-                <img :src="userInfo.graduateImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.graduateImg)">
-                <do-upload @onFinish="setGraduateImg" placeholder="上传毕业照"> </do-upload>
-              </el-col>
-            </el-row>
-
-            <ul class="ul-form">
-              <li class="txt-r">
-                <span class="l-t"></span>注:<i></i>只有头像、性别、毕业照可以修改
-              </li>
-
-              <li>
-                <span class="l-t">姓名:</span>
-                <input type="text" v-model="userInfo.nickname" class="ipt ng-pristine ng-valid ng-valid-required"
-                  required="" placeholder="请输入用户名" disabled="disabled">
-              </li>
-              <li class="ng-binding">
-                <span class="l-t">证件号:</span>{{userInfo.cardId||'未知'}}</li>
-              <li>
-                <span class="l-t"><i></i>性别:</span>
-
-                <span class="sex">
-                  <a href="javascript:void(0)" @click="userInfo.gender='男'" :class="{'selected':userInfo.gender=='男'}">
-                    <span class="p-ico2 ico-man"></span>男
-                  </a>
-                  <a href="javascript:void(0)" @click="userInfo.gender='女'" :class="{'selected':userInfo.gender=='女'}">
-                    <span  class="p-ico2 ico-woman"></span>女
-                  </a>
-                </span>
-              </li>
-              <li>
-                <span class="l-t"><i></i>手机号码:</span>
-                <input type="text" v-model="userInfo.phone"  class="ipt" disabled placeholder="请输入手机号码">
-
-                <span class="tips ng-scope" v-if="!isPhone()">
-                  <span class="p-ico2"></span>手机格式不对
-                </span>
-              </li>
-              <li class="mt20">
-                <span class="l-t"></span>
-                <el-button type="primary" class="confirm" @click="doSaveBaseInfo()">保 存</el-button>
-              </li>
-            </ul>
-
-          </form>
-        </div>
-
-
-        <div v-if="show===2" class="lwh-ul-form ng-scope">
-          <form name="user" class="ng-pristine ng-valid">
-            <div class="m-img tc"></div>
-
-            <el-row :gutter="40" class="mt20">
-              <el-col :span="6" class="col-normal tc">
-                 <img :src="userInfo.cardImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.cardImg)">
-                <do-upload @onFinish="setCardImg" placeholder="身份证正面"> </do-upload>
-              </el-col>
-
-              <el-col :span="6" class="col-normal tc">
-                <img :src="userInfo.cardBackImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.cardBackImg)">
-                <do-upload @onFinish="setCardBackImg" placeholder="身份证背面"> </do-upload>
-              </el-col>
-            </el-row>
-
-            <ul class="ul-form mt50 ng-scope">
-              <li>
-                <span class="l-t">身份证:</span>
-                 <input v-model="userInfo.cardId" class="ipt1" disabled></input>
-              </li>
-              <li>
-                <span class="l-t">姓名:</span>
-                <input v-model="userInfo.nickname" class="ipt1" disabled></input>
-              </li>
-              <li>
-                <span class="l-t">手机号:</span>
-                <input v-model="userInfo.phone" class="ipt1" disabled></input>
-              </li>
-
-              <li class="mt30">
-                <span class="l-t"></span>
-                <el-button type="primary" class="confirm" @click="identify()" v-if="!userInfo.identify">实名认证</el-button>
-                <el-button type="text" v-else >已经完成实名认证</el-button>
-              </li>
-            </ul>
-          </form>
-        </div>
-
-
-        <div v-if="show===3" >
-          <el-form ref="elForm" :inline="false"  class="mt50">
-            <el-form-item label="详细地址" label-width='150px' class="mt30" prop="address" >
-               <el-input placeholder="详细地址" v-model="userInfo.address " class="pass-input">
-               </el-input>
-            </el-form-item>
-
-            <el-form-item label="邮政编码" label-width='150px' class="mt30" prop="postalCode" >
-               <el-input placeholder="邮政编码" v-model="userInfo.postalCode " class="pass-input">
-               </el-input>
-            </el-form-item>
-
-
-            <el-form-item label="工作年限" label-width='150px' class="mt30" prop="years" >
-               <el-input placeholder="工作年限" v-model="userInfo.years " class="pass-input">
-               </el-input>
-            </el-form-item>
-
-            <el-form-item label="工作单位" label-width='150px' class="mt30" prop="company" >
-               <el-input placeholder="工作单位" v-model="userInfo.company " class="pass-input">
-               </el-input>
-            </el-form-item>
-
-            <el-form-item label="最高学历" label-width='150px' class="mt30" prop="oldPass" >
-               <el-input placeholder="最高学历" v-model="userInfo.education " class="pass-input">
-               </el-input>
-            </el-form-item>
-
-            <el-form-item   label="" label-width='150px' class="mt30" prop="rePass">
-               <el-button type="primary"  class="confirm" @click="saveMoreInfo()">
-                 确认修改
-                </el-button>
-            </el-form-item>
-          </el-form>
-
-        </div>
-
-
-        <div v-if="show===4" class="ng-scope">
-          <el-form ref="elForm" :inline="false" :model="passForm" :rules="passRules" class="mt50">
-            <el-form-item label="输入旧密码" label-width='150px' class="mt30" prop="oldPass" >
-               <el-input placeholder="输入旧密码" v-model="passForm.oldPass " class="pass-input" type="password"
-               show-password auto-complete="new-password">
-
-               </el-input>
-            </el-form-item>
-
-            <el-form-item label="输入新密码" label-width='150px' class="mt30" prop="newPass" >
-               <el-input placeholder="输入新密码" v-model="passForm.newPass" class="pass-input" type="password"
-               show-password auto-complete="new-password">
-               </el-input>
-            </el-form-item>
-
-            <el-form-item   label="确认新密码" label-width='150px' class="mt30" prop="rePass">
-               <el-input placeholder="确认新密码" v-model="passForm.rePass" class="pass-input" type="password"
-               show-password auto-complete="new-password">
-               </el-input>
-            </el-form-item>
-
-            <el-form-item   label="" label-width='150px' class="mt30" prop="rePass">
-               <el-button type="primary"  class="confirm" @click="doSavePassword()">
-                 确认修改
-                </el-button>
-            </el-form-item>
-
-          </el-form>
-        </div>
-
-        <div v-if="show===5" class="ng-scope">
-          <el-form ref="elFormPhone" :inline="false" :model="phoneForm" :rules="phoneRules" class="mt50">
-            <el-form-item label="输入新手机" label-width='150px' class="mt30" prop="phone" >
-               <el-input placeholder="输入新手机" v-model="phoneForm.phone " style="width: 300px;" :maxlength="11" show-word-limit>
-               </el-input>
-            </el-form-item>
-
-            <el-form-item label="短信检验码" label-width='150px' class="mt30" prop="code" >
-               <el-input placeholder="输入短信检验码" v-model="phoneForm.code" style="width: 180px;" :maxlength="6" show-word-limit>
-               </el-input>
-               <el-button style="width: 120px;" type="info" v-if="phoneForm.phone.length!=11" disabled>获取检验码</el-button>
-               <el-button style="width: 120px;" type="primary" v-else-if="!count" @click="getCode()">获取检验码</el-button>
-               <el-button style="width: 120px;" type="info" disabled v-else>剩余时间{{count}} s</el-button>
-            </el-form-item>
-            <el-form-item label="" label-width='150px' class="mt30" prop="code" >
-              <span style="color: red;">注意:手机必须本人实名认证手机</span>
-            </el-form-item>
-            <el-form-item   label="" label-width='150px' class="mt30" prop="rePass">
-               <el-button type="primary"  class="confirm" @click="doSavePhone()">
-                 确认修改
-                </el-button>
-            </el-form-item>
-
-          </el-form>
-        </div>
-
+      <div class="text-xl leading-10 pb-4 text-blue">
+        <p>账号设置</p>
+      </div>
 
+      <div class="m-account">
+        <el-tabs tabPosition="left" @tab-click="handleClick">
+          <el-tab-pane label="基础资料">
+            <div v-if="show===1" class="lwh-ul-form">
+              <el-form label-width="150px" name="user">
+                <!-- <div class="m-img tc"></div>
+
+                <el-row :gutter="40" class="mt20">
+                  <el-col :span="6" class="col-normal tc">
+                    <img :src="userInfo.headImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.headImg)">
+                    <do-upload @onFinish="setHeadImg" placeholder="上传头像"> </do-upload>
+                  </el-col>
+
+                  <el-col :span="6" class="col-normal tc">
+                    <img :src="userInfo.graduateImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.graduateImg)">
+                    <do-upload @onFinish="setGraduateImg" placeholder="上传毕业照"> </do-upload>
+                  </el-col>
+                </el-row> -->
+
+                <ul class="ul-form">
+                  <li>
+                    <el-form-item label="姓名">
+                      <span>{{userInfo.nickname}}</span>
+                      <!-- <el-input v-model="userInfo.nickname" placeholder="请输入用户名" disabled="disabled"></el-input> -->
+                    </el-form-item>
+                    <!-- <span class="l-t">姓名:</span>
+                    <input type="text" v-model="userInfo.nickname" class="ipt ng-pristine ng-valid ng-valid-required"
+                      required="" placeholder="请输入用户名" disabled="disabled"> -->
+                  </li>
+                  <li class="ng-binding">
+                    <el-form-item label="证件号">
+                      <span>{{userInfo.cardId||'未知'}}</span>
+                    </el-form-item>
+                    <!-- <span class="l-t">证件号:</span>{{userInfo.cardId||'未知'}}</li> -->
+                  <li>
+                    <!-- <span class="l-t"><i></i>手机号码:</span>
+                    <input type="text" v-model="userInfo.phone"  class="ipt" disabled placeholder="请输入手机号码">
+
+                    <span class="tips ng-scope" v-if="!isPhone()">
+                      <span class="p-ico2"></span>手机格式不对
+                    </span> -->
+                    <el-form-item label="手机号码">
+                      <span>{{userInfo.phone}}</span>
+                    </el-form-item>
+                  </li>
+                  <li>
+                    <!-- <span class="l-t"><i></i>性别:</span> -->
+                    <!-- <span class="sex">
+                      <el-radio-group v-model="userInfo.gender">
+                        <el-radio-button label="男"></el-radio-button>
+                        <el-radio-button label="女"></el-radio-button>
+                      </el-radio-group>
+                    </span> -->
+                    <el-form-item label="证件号">
+                      <el-radio-group v-model="userInfo.gender">
+                        <el-radio-button label="男"></el-radio-button>
+                        <el-radio-button label="女"></el-radio-button>
+                      </el-radio-group>
+                    </el-form-item>
+                  </li>
+                  <li>
+                    <el-form-item label="头像">
+                      <img :src="userInfo.headImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.headImg)">
+                      <do-upload @onFinish="setHeadImg" placeholder="上传头像"> </do-upload>
+                    </el-form-item>
+                  </li>
+                  <li>
+                    <el-form-item label="毕业照">
+                      <img :src="userInfo.graduateImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.graduateImg)">
+                      <do-upload @onFinish="setGraduateImg" placeholder="上传毕业照"> </do-upload>
+                    </el-form-item>
+                  </li>
+                  <li class="txt-r">
+                    <span class="l-t"></span>注:<i></i>只有头像、性别、毕业照可以修改
+                  </li>
+                  <li class="mt20">
+                    <span class="l-t"></span>
+                    <el-form-item>
+                      <el-button type="primary" class="confirm" @click="doSaveBaseInfo()">保 存</el-button>
+                    </el-form-item>
+                  </li>
+                </ul>
+              </el-form>
+            </div>
+          </el-tab-pane>
+          <el-tab-pane label="实名认证">
+            <div v-if="show===2" class="lwh-ul-form ng-scope">
+              <el-form name="user" label-width="150px" class="ng-pristine ng-valid">
+                <div class="m-img tc"></div>
+
+                <!-- <el-row :gutter="40" class="mt20">
+                  <el-col :span="6" class="col-normal tc">
+                    <img :src="userInfo.cardImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.cardImg)">
+                    <do-upload @onFinish="setCardImg" placeholder="身份证正面"> </do-upload>
+                  </el-col>
+
+                  <el-col :span="6" class="col-normal tc">
+                    <img :src="userInfo.cardBackImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.cardBackImg)">
+                    <do-upload @onFinish="setCardBackImg" placeholder="身份证背面"> </do-upload>
+                  </el-col>
+                </el-row> -->
+
+                <ul class="ul-form ng-scope">
+                  <!-- <li>
+                    <span class="l-t">身份证:</span>
+                    <input v-model="userInfo.cardId" class="ipt1" disabled />
+                  </li>
+                  <li>
+                    <span class="l-t">姓名:</span>
+                    <input v-model="userInfo.nickname" class="ipt1" disabled />
+                  </li>
+                  <li>
+                    <span class="l-t">手机号:</span>
+                    <input v-model="userInfo.phone" class="ipt1" disabled />
+                  </li> -->
+                  <el-form-item label="身份证">
+                    <span>{{userInfo.cardId}}</span>
+                  </el-form-item>
+                  <el-form-item label="姓名">
+                    <span>{{userInfo.nickname}}</span>
+                  </el-form-item>
+                  <el-form-item label="手机号">
+                    <span>{{userInfo.phone}}</span>
+                  </el-form-item>
+
+                  <el-form-item label="身份证正面">
+                    <img :src="userInfo.cardImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.cardImg)">
+                    <do-upload @onFinish="setCardImg" placeholder="身份证正面"> </do-upload>
+                  </el-form-item>
+
+                  <el-form-item label="身份证背面">
+                    <img :src="userInfo.cardBackImg" :onerror="errorImg" class="setting-img" @click="showImg(userInfo.cardBackImg)">
+                    <do-upload @onFinish="setCardBackImg" placeholder="身份证背面"> </do-upload>
+                  </el-form-item>
+
+                  <el-form-item>
+                    <el-button type="primary" class="confirm" @click="identify()" v-if="!userInfo.identify">实名认证</el-button>
+                    <el-button type="text" v-else >已经完成实名认证</el-button>
+                  </el-form-item>
+
+                  <!-- <li>
+                    <span class="l-t"></span>
+                    <el-button type="primary" class="confirm" @click="identify()" v-if="!userInfo.identify">实名认证</el-button>
+                    <el-button type="text" v-else >已经完成实名认证</el-button>
+                  </li> -->
+                </ul>
+              </el-form>
+            </div>
+          </el-tab-pane >
+          <el-tab-pane label="额外信息">
+            <div v-if="show===3" >
+              <el-form ref="elForm" label-width="150px" :inline="false"  class="">
+                <el-form-item label="详细地址" prop="address" >
+                  <el-input placeholder="详细地址" v-model="userInfo.address " class="pass-input">
+                  </el-input>
+                </el-form-item>
+
+                <el-form-item label="邮政编码" prop="postalCode" >
+                  <el-input placeholder="邮政编码" v-model="userInfo.postalCode " class="pass-input">
+                  </el-input>
+                </el-form-item>
+
+
+                <el-form-item label="工作年限" prop="years" >
+                  <el-input placeholder="工作年限" v-model="userInfo.years " class="pass-input">
+                  </el-input>
+                </el-form-item>
+
+                <el-form-item label="工作单位" prop="company" >
+                  <el-input placeholder="工作单位" v-model="userInfo.company " class="pass-input">
+                  </el-input>
+                </el-form-item>
+
+                <el-form-item label="最高学历" prop="oldPass" >
+                  <el-input placeholder="最高学历" v-model="userInfo.education " class="pass-input">
+                  </el-input>
+                </el-form-item>
+
+                <el-form-item   label="" prop="rePass">
+                  <el-button type="primary"  class="confirm" @click="saveMoreInfo()">
+                    确认修改
+                    </el-button>
+                </el-form-item>
+              </el-form>
+
+            </div>
+          </el-tab-pane>
+
+          <el-tab-pane label="密码修改">
+            <div v-if="show===4" class="ng-scope">
+              <el-form ref="elForm" label-width="150px" :inline="false" :model="passForm" :rules="passRules">
+                <el-form-item label="输入旧密码" prop="oldPass" >
+                  <el-input placeholder="输入旧密码" v-model="passForm.oldPass " class="pass-input" type="password"
+                  show-password auto-complete="new-password">
+
+                  </el-input>
+                </el-form-item>
+
+                <el-form-item label="输入新密码" prop="newPass" >
+                  <el-input placeholder="输入新密码" v-model="passForm.newPass" class="pass-input" type="password"
+                  show-password auto-complete="new-password">
+                  </el-input>
+                </el-form-item>
+
+                <el-form-item   label="确认新密码" prop="rePass">
+                  <el-input placeholder="确认新密码" v-model="passForm.rePass" class="pass-input" type="password"
+                  show-password auto-complete="new-password">
+                  </el-input>
+                </el-form-item>
+
+                <el-form-item   label="" prop="rePass">
+                  <el-button type="primary"  class="confirm" @click="doSavePassword()">
+                    确认修改
+                    </el-button>
+                </el-form-item>
+
+              </el-form>
+            </div>
+          </el-tab-pane>
+          <el-tab-pane label="手机修改">
+            <div v-if="show===5" class="ng-scope">
+              <el-form ref="elFormPhone" label-width="150px" :inline="false" :model="phoneForm" :rules="phoneRules">
+                <el-form-item label="输入新手机" prop="phone" >
+                  <el-input placeholder="输入新手机" v-model="phoneForm.phone " style="width: 300px;" :maxlength="11" show-word-limit>
+                  </el-input>
+                </el-form-item>
+
+                <el-form-item label="短信检验码" prop="code" >
+                  <el-input placeholder="输入短信检验码" v-model="phoneForm.code" style="width: 180px;" :maxlength="6" show-word-limit>
+                  </el-input>
+                  <el-button style="width: 120px;" type="info" v-if="phoneForm.phone.length!=11" disabled>获取检验码</el-button>
+                  <el-button style="width: 120px;" type="primary" v-else-if="!count" @click="getCode()">获取检验码</el-button>
+                  <el-button style="width: 120px;" type="info" disabled v-else>剩余时间{{count}} s</el-button>
+                </el-form-item>
+                <el-form-item label="" prop="code" >
+                  <span style="color: red;">注意:手机必须本人实名认证手机</span>
+                </el-form-item>
+                <el-form-item   label="" prop="rePass">
+                  <el-button type="primary"  class="confirm" @click="doSavePhone()">
+                    确认修改
+                    </el-button>
+                </el-form-item>
+
+              </el-form>
+            </div>
+          </el-tab-pane>
+        </el-tabs>
       </div>
     </div>
 
@@ -271,6 +320,10 @@
     components:{DoUpload,UploadImage,ImgView},
     methods: {
        ...mapActions("user", ["saveBaseInfo"]),
+      handleClick(tag){
+        const mapper = { '基础资料': 1, '实名认证': 2, '额外信息':3 , '密码修改': 4, '手机修改': 5 };
+        this.show = mapper[tag.label];
+      },
       isPhone( ){
         let phone = this.userInfo.phone;
         return !phone||/^1[0-9]{10}$/.test(phone)

+ 12 - 8
src/containers/center/sign/index.vue

@@ -1,22 +1,20 @@
 <template>
-  <div class="m-right-block fr mh576" style="position: relative;">
+  <div class="m-right-block" style="position: relative;">
     <div class="right-block-bd">
-      <div class="mb10 tc mt20">
-        <span class="p-ico2 worm-ico-o"></span>
-        注:<span class="txt-o"></span>拥有证书编号才能打印证书
+      <div class="text-xl leading-10 pb-4 text-blue">
+        <p>学时证明</p>
       </div>
-
       <div  class="ng-scope">
 
         <el-table v-loading="listLoading" :data="list" border fit highlight-current-row>
           <el-table-column label="培训内容" align="center" width="100" >
-            <template slot-scope="{row, $index}">
+            <template slot-scope="{row}">
               <span>{{row.name}}</span>
             </template>
           </el-table-column>
 
           <el-table-column label="证书类型" align="center" width="150">
-            <template slot-scope="{row, $index}">
+            <template slot-scope="{row}">
               <span>{{row.type}}【{{row.nd}}】</span>
             </template>
           </el-table-column>
@@ -28,7 +26,7 @@
           </el-table-column>
 
           <el-table-column label="学时" width="80" align="center">
-            <template slot-scope="{row, $index}">
+            <template slot-scope="{row}">
               <span>{{row.totalXs/10}}</span>
             </template>
           </el-table-column>
@@ -55,7 +53,13 @@
           </el-table-column>
         </el-table>
 
+        <div class="mb10 mt20 text-xs text-right text-red-400">
+          <span class="p-ico2 worm-ico-o"></span>
+          注:<span class="txt-o"></span>拥有证书编号才能打印证书
+        </div>
+
         <el-pagination
+          class="m-pages"
             @current-change="handleCurrentChange"
             :current-page="page"
            :page-size="size"

+ 41 - 15
src/containers/login/components/isLogin.vue

@@ -1,26 +1,46 @@
 <template>
   <div class="course-my ng-scope">
-    <div class="course-my-info clear">
-      <a class="my-headimg">
-        <img v-if="user.gender=='男'" src="../../../assets/images/user-man.jpg" >
-        <img v-else-if="user.gender=='女'" src="../../../assets/images/user-woman.jpg" >
-        <img v-else  src="../../../assets/images/user-img_hash24aa2f2347.jpg">
-      </a>
-      <div class="info-detail">
-        <div class="pt20 fs18">欢迎您,
-          <span class="aw ng-binding" :title="user.nickname" style="display:inline" >
+      <div class="tc my-2">
+        <div class="pt20 fs18 text-yellow-300">
+          <div class="text-xs">当前用户</div>
+          <div class="text-2xl" :title="user.nickname" >
             {{user.nickname}}
-          </span>
+          </div>
         </div>
-      </div>
     </div>
 
+    <el-row class="" style="width: 100%;">
+      <el-col :span="12" class="p10">
+        <button class="btn-b-b fs15" @click="gotoPage('/center/home')">个人中心</button>
+      </el-col>
 
-    <div class="login-entry " style="width: 100%;">
-      <button class="btn-b-b w196 fs15" @click="gotoPage('/center/home')">进入学习中心</button>
-     </div>
+      <el-col :span="12" class="p10">
+        <button class="btn-b-b fs15" @click="gotoPage('/center/setting')">账号设置</button>
+      </el-col>
 
+      <el-col :span="12" class="p10">
+        <button class="btn-b-b fs15" @click="gotoPage('/center/class/train')">我的课程</button>
+      </el-col>
 
+      <el-col :span="12" class="p10">
+        <button class="btn-b-b fs15" @click="gotoPage('/center/market')">推荐课程</button>
+      </el-col>
+
+      <el-col :span="12" class="p10">
+        <button class="btn-b-b fs15" @click="gotoPage('/center/myOrder')">我的订单</button>
+      </el-col>
+
+      <el-col :span="12" class="p10">
+        <button class="btn-b-b fs15" @click="gotoPage('/center/sign')">学时证明</button>
+      </el-col>
+
+      <el-col :span="24" class="p10">
+        <button class="btn-b-b " style="width: 100%;" @click="logout()">退出登录</button>
+      </el-col>
+
+     </el-row>
+
+<!--
     <ul class="entry-box clear">
       <li>
         <a href="javascript:void(0)" @click="gotoPage('/center/market')">
@@ -40,7 +60,7 @@
       </li>
       <li><a href="javascript:void(0)" @click="logout()">
       <i class="p-ico i10"></i><span>退出登录</span></a></li>
-    </ul>
+    </ul> -->
   </div>
 </template>
 
@@ -72,3 +92,9 @@
 <style>
 @import url("./loginBase.css");
 </style>
+<style lang="less" scoped>
+.btn-b-b{
+  box-sizing: border-box;
+  border: 2px solid #fde047;
+}
+</style>

+ 50 - 47
src/containers/login/components/unLogin.vue

@@ -1,54 +1,40 @@
 <template>
-  <div class="m-login opacity-bg fr">
+  <div class="m-login opacity-bg">
     <div ng-if="!sureUseLogin" class="ng-scope">
-      <div class="tit">学员/单位管理员登录</div>
+      <div class="tit">学员登录</div>
 
       <div  autocomplete="off" class="ng-pristine ng-invalid ng-invalid-required">
-        <ul class="login-form login-form-1">
-          <li><span class="p-ico user-ico"></span>
-            <input type="text"  v-model="username" class="ui-ipt ng-pristine ng-valid" placeholder="手机号码">
-            <div class="wrong-tips ng-hide" v-show="err.loginError === 'two'">输入的用户名或者密码不正确,请确认</div>
-            <div class="wrong-tips ng-hide" v-show="err.loginErrorEnter">请输入正确的用户名密码以及验证码!</div>
-            <div class="wrong-tips ng-hide" v-show="err.loginError === 'one'">输入的用户名或者密码不正确,请确认</div>
-          </li>
-
-          <li>
-            <span class="p-ico code-ico"></span>
-            <span href="javascript:void(0)" style="cursor:pointer" class="p-ico ng-scope"></span>
-            <input type="password"  v-model="password" class="ui-ipt ng-scope ng-pristine ng-valid"
-              placeholder="密码">
-          </li>
-
-         <li>
-            <span class="p-ico picode-ico" @click="changeCode()"></span>
-            <input type="text"  v-model="code" class="ui-ipt ipt-s" placeholder="图形验证码" @click="!codeShow&&changeCode()" required="required">
-
-            <div class="wrong-tips ng-hide" v-show="codeShow && code ==''">请输入正确的验证码,看不清?点击验证码刷新</div>
-
-            <span class="qr-code ng-scope" @click="changeCode()">
-              <img alt="验证码"  :src="codeShow" v-show="codeShow">
-            </span>
-          </li>
-
-          <li class="clear mt10">
-            <div class="fl">
-              <label class="ui-label " :class="rememberUse?'checked':''">
-                <input type="checkbox" class="checkbox  ng-valid" v-model="rememberUse">
-                <a class="checkbox-a"> </a>
-                <span class="ipt-txt">记住帐号和密码</span>
-              </label>
-            </div><a class="ag fr" @click="goReset">忘记密码?</a>
-          </li>
-
-          <li class="last">
-            <button class="btn-normal btn-login lwh-disabled" @click="dologin">登 录</button>
-          </li>
-        </ul>
+        <div class="p-4">
+          <el-form class="form">
+            <el-form-item>
+              <el-input placeholder="手机号码" v-model="username">
+                <template slot="prepend"><i class="el-icon-user"></i></template>
+              </el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-input placeholder="密码" v-model="password">
+                <template slot="prepend"><i class="el-icon-lock"></i></template>
+              </el-input>
+            </el-form-item>
+            <el-form-item>
+              <div  class="flex">
+                <el-input class="flex-auto mr-2" placeholder="图形验证码" v-model="code">
+                  <template slot="prepend"><i @click="changeCode" class="el-icon-refresh-right  cursor-pointer"></i></template>
+                </el-input>
+                <span class="verify-code bg-white rounded ng-scope cursor-pointer flex-none" @click="changeCode()">
+                  <img alt="验证码"  :src="codeShow" v-show="codeShow">
+                </span>
+              </div>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="warning" @click="dologin">登 录</el-button>
+              <div class="" style="font-size: 10px; text-align: center;">没有学员/单位管理员帐号?
+                <a @click="goRegist()" class="text-yellow-300">立即注册</a>
+              </div>
+            </el-form-item>
+          </el-form>
+        </div>
       </div>
-
-
-      <div class="mt10 ng-scope" style="font-size: 10px; text-align: center;">没有学员/单位管理员帐号?
-        <a @click="goRegist()" class="ao b">立即注册</a></div>
     </div>
   </div>
 </template>
@@ -79,7 +65,9 @@
         codeShow:''
       }
     },
-
+    created(){
+      this.changeCode();
+    },
     methods: {
       dologin() {
         let mpass = this.password.replace(/(^\s*)|(\s*$)/g, "");
@@ -119,3 +107,18 @@
 <style>
   @import url("./loginBase.css");
 </style>
+<style lang="less" scoped>
+.form{
+  & /deep/ .el-input{
+    .el-input-group__prepend {
+      padding: 0 12px;
+    }
+  }
+  .verify-code{
+    img{
+      width: 90px;
+      height: 40px;
+    }
+  }
+}
+</style>

+ 48 - 57
src/containers/login/login.vue

@@ -1,65 +1,45 @@
 <template>
-  <div class="ng-scope">
+  <div class="ng-scope pb-8">
     <navbar :user="userInfo" @openLoginDialog="openLoginDialog"></navbar>
-    <div class="banner-box">
-      <div class="p-wrap-full clear pt30">
-        <el-card class="training-category opacity-bg fl" style="border-radius: 20px;padding-top: -5px;" >
-          <h2 align="center" style="background-color: white; color: #000000;padding-top:5px;">文件通知</h2>
-          <el-table :data="postList"  highlight-current-row
-          :show-header="false" max-height="290px" >
-            <el-table-column min-width="600px">
-              <template slot-scope="{row, $index}">
-                <span @click="gotoDetail(row.postId)">{{$index+1}}、{{ row.title }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column  width="160px">
-              <template slot-scope="{row}">
-                <span>{{ row.publishTime  }}</span>
-              </template>
-            </el-table-column>
-          </el-table>
-        </el-card>
-
-        <div class="m-login opacity-bg fr">
+    <div class="p-wrap-full clear pt30">
+      <div class="w-full">
+        <img class="rounded-xl" src="/static/images/login-banner-1.jpg"/>
+      </div>
+    </div>
+    <div class="p-wrap-full pt-6 flex">
+      <div class="mr-6">
+        <div class="m-login opacity-bg mb-4">
           <is-login v-if="loginOk" :user="userInfo" @logout="logout"></is-login>
           <un-login v-else @login="login" :err="err"></un-login>
         </div>
+        <div class="bg-white flex-auto rounded-xl px-6 py-2">
+          <div class="text-xl text-center leading-10 pb-2 border-gray-200 border-b text-blue">
+            证书查询
+          </div>
+          <div class="text-center p-2">
+            <el-button @click="gotoOutlink()" type="primary"> 前往证书查询 </el-button>
+          </div>
+        </div>
       </div>
-    </div>
-
-    <!-- <learn-time></learn-time> -->
-    <div class="p-wrap-full mb20 ng-scope">
-      <div class="title-box mt5 clear">
-        <h2 class="title">课程分类</h2>
-      </div>
-      <el-row :gutter="20" class="shadow p10 mt20" >
-        <el-col :span="+item.span" class="nopad"  v-for="(item, index) in typeList" :key="index">
-          <el-card shadow="hover" class="grid-content nopad "  >
-            <div class="mt10 typelist" @click="gotoCourse(item)">
-              <i class="p-ico"  :class="item.icon" style="color:#69c0ff"></i>
-              <p style="font-size: 13px;">{{ item.name }}</p>
-              <p class="mt10" style="font-size: 16px;" v-if="!item.isOpen">(暂未开放)</p>
-              <p class="mt10" style="font-size: 16px;" v-else>{{ item.content }}</p>
-            </div>
-          </el-card>
-        </el-col>
-      </el-row>
-    </div>
-
-    <div class="right-nav">
-      <img class="right-img" src="../../assets/wxapp.jpg" alt="">
-      <p>使用小程序</p>
-      <p>学习更轻松</p>
-    </div>
-
-
-    <div class="p-wrap-full ng-scope">
-      <div class="title-box mt5 clear">
-        <h2 class="title">友情链接</h2>
+      <div class="bg-white flex-auto rounded-xl px-6 py-2" >
+        <div class="text-xl text-center leading-10 pb-2 border-gray-200 border-b text-blue">
+            新闻通知
+        </div>
+        <el-table :data="postList"  highlight-current-row
+        :show-header="false" min-height="310px" style="overflow: hidden;" >
+          <el-table-column class-name="t-column" min-width="600px">
+            <template slot-scope="{row, $index}">
+              <span class="px-4 py-6 cursor-pointer hover:text-blue-light" @click="gotoDetail(row.postId)">{{$index+1}}、{{ row.title }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column width="160px">
+            <template slot-scope="{row}">
+              <span>{{ row.publishTime  }}</span>
+            </template>
+          </el-table-column>
+        </el-table>
       </div>
-      <friendlink></friendlink>
     </div>
-
     <el-dialog
       class="fc tc login-dialog"
       :visible.sync="loginDialog"
@@ -83,6 +63,7 @@ import navbar from "@/components/nav/navbar.vue";
 import Friendlink from "./components/friendlink/friendlink.vue";
 import { httpServer } from "@/components/httpServer/httpServer.js";
 import { mapGetters,mapActions } from "vuex";
+import settings from '@/settings.js';
 
 export default {
   components: {
@@ -137,8 +118,8 @@ export default {
       })
     },
     getPostList(){
-      httpServer("course.getPostList", {page:1,type:'操作指南'}).then( res=>{
-        this.postList = res.data.list
+      httpServer("course.getPostList", {page:1,type:'操作指南', size:6}).then( res=>{
+        this.postList = res.data.list.slice(0,6)
       })
     },
     gotoDetail(postId){
@@ -161,6 +142,9 @@ export default {
     openLoginDialog() {
       this.loginDialog = true
     },
+    gotoOutlink(){
+      window.open( settings.outLink, '_brank');
+    },
   },
 };
 </script>
@@ -199,5 +183,12 @@ export default {
     height: 64%;
     margin: 11px auto 0;
 }
-
+</style>
+<style lang="less" scoped>
+.ng-scope{
+  color: red;
+  & /deep/ .t-column{
+      padding: 0;
+    }
+}
 </style>

+ 98 - 105
src/containers/register/register.vue

@@ -2,120 +2,112 @@
   @import "./register.less";
 
 </style>
+<style lang="less" scoped>
+.form{
+  .formver {
+    position: absolute;
+    left: 0;
+    bottom: -24px;
+    color: red;
+    height: 28px;
+    line-height: 28px;
+    font-size: 0.8rem;
+  }
+  .code-case {
+    background: #e6e6e6;
+    height: 14px;
+    line-height: 14px;
+    width: 311px;
+    color: #666;
+    overflow: hidden;
+
+    em {
+      display: inline-block;
+      width: 103px;
+      height: 14px;
+      text-align: center;
+      font-size: 12px;
+      line-height: 14px;
+      font-style: normal;
+      float: left;
+      color: #666;
+      border-right: 1px solid #fff;
+    }
+  }
+  .code-case .last {
+    border-right: 0;
+  }
+  .code-case .c1 {
+    background: #ff6633;
+    color: #fff;
+  }
+  .code-case .c2 {
+    background: #ffcc33;
+    color: #fff;
+  }
+  .code-case .c3 {
+    background: #3290d4;
+    color: #fff;
+  }
+}
+</style>
 
 <template>
   <div class="main">
     <navbar :user="user"></navbar>
     <div class="main-reg">
-      <form ref="regForm" style="margin: 50px auto;">
-        <!-- active0 -->
-        <ul class="fhlist" style="width: 600px;margin:0 auto">
-          <li class="mt10">
-            <span class="title">
-              <em class="fvx">*</em>手机号</span>
-
-            <input type="text" name="phone" v-model="phone" class="ui-ipt iptform" :disabled="!!count" placeholder="输入手机">
-
-            <span class="formver ng-scope" v-if="phone && phone.length!=11">
-              <span class="p-ico ico-formver"></span>
-              <span class="p-ico ico-worm"></span>请输入合法手机
-            </span>
-          </li>
-
-          <li class="mt10">
-            <span class="title"><em class="fvx">*</em>校验码</span>
-            <input type="text" name="code" v-model="code" class="ui-ipt iptform2" placeholder="输入校验码">
-
-            <el-button class="auth-code" type="primary" v-if="phone.length!=11" disabled>校验码</el-button>
-            <el-button class="auth-code" type="primary" v-else-if="!count" @click="getCode()">校验码</el-button>
-            <el-button class="auth-code" type="primary" disabled v-else>{{count}} s</el-button>
-
-            <!-- <span class="formver ng-scope" v-if="phone.length==11 && code.length<4">
-                    <span class="p-ico ico-formver"></span>
-                    <span class="p-ico ico-worm"></span>请输入校验码
-                  </span> -->
-          </li>
-
-          <li class="mt10">
-            <span class="title"><em class="fvx">*</em>姓名</span>
-            <input type="text" name="name" v-model="name" class="ui-ipt iptform" placeholder="输入真实姓名" clearable>
-          </li>
-
-          <li class="mt10">
-            <span class="title"><em class="fvx">*</em>身份证</span>
-            <input type="text" name="cardId" v-model="cardId" class="ui-ipt iptform" placeholder="输入证件号" clearable>
-
-            <span class="formver ng-scope" v-if="!is_ok_card(cardId)">
-              <span class="p-ico ico-formver"></span>
-              <span class="p-ico ico-worm"></span>请输入18位身份证号
-            </span>
-          </li>
-
-          <li class="mt10">
-            <span class="title"><em class="fvx">*</em>学历</span>
-            <input type="text" name="education" v-model="education" class="ui-ipt iptform" placeholder="输入学历" clearable>
-          </li>
-
-
-          <li class="mt10">
-            <span class="title"><em class="fvx">*</em>工作单位</span>
-            <input type="text" name="company" v-model="company" class="ui-ipt iptform" placeholder="输入工作单位" clearable>
-          </li>
-
-
-          <!--          <li class="mt10">
-                  <span class="title"><em class="fvx">*</em>证书编号</span>
-                  <input type="text" name="rzCode" v-model="rzCode" class="ui-ipt iptform" placeholder="输入证书编号" clearable>
-                </li> -->
-
-
-
-
-          <li class="mb5">
-            <span class="title">
-              <em class="fvx">*</em>账户密码</span>
-            <input type="password" v-model="password" autocomplete="new-password" class="ui-ipt iptform ng-pristine ng-valid-pattern ng-invalid ng-invalid-required"
-              placeholder="请填写登录密码" required="required">
-
-            <span class="formver ng-scope" style="width:300px;font-size: 13px;" v-if="password&&password.length<6">
-              <span class="p-ico ico-formver"></span>
-              <span class="p-ico ico-worm"></span>请输入6~18位由字母、数字组合的登录密码!
-            </span>
-          </li>
-
-          <li class="mb5">
-            <span class="title">&nbsp;</span>
-            <span class="code-case" style="float: left; margin-left: 120px;">
+      <el-form class="w-2/4 m-auto my-12 form" label-width="100px">
+        <div class="text-center text-2xl mb-4 text-blue">账号注册</div>
+        <el-form-item label="手机号" required>
+          <el-input  v-model="phone" ></el-input>
+          <span class="formver ng-scope" v-if="phone && phone.length!=11">
+            请输入合法手机
+          </span>
+        </el-form-item>
+        <el-form-item label="校验码" required>
+          <div class="flex">
+            <el-input class="flex-auto mr-2" v-model="code" ></el-input>
+            <el-button class="auth-code flex-none" type="primary" @click="getCode()"  :disabled="phone.length!=11 || count">{{ !count ?  '校验码' : `${count}s`}}</el-button>
+          </div>
+        </el-form-item>
+        <el-form-item label="姓名" required>
+          <el-input  v-model="name" placeholder="请输入真实姓名" ></el-input>
+        </el-form-item>
+        <el-form-item label="身份证" required>
+          <el-input  v-model="cardId" placeholder="请输入证件号" ></el-input>
+          <span class="formver ng-scope" v-if="cardId && !is_ok_card(cardId)">
+            请输入18位身份证号
+          </span>
+        </el-form-item>
+        <el-form-item label="学历" required>
+          <el-input  v-model="education" placeholder="请输入学历" ></el-input>
+        </el-form-item>
+        <el-form-item label="工作单位" required>
+          <el-input  v-model="company" placeholder="请输入工作单位" ></el-input>
+        </el-form-item>
+        <el-form-item label="账户密码" required>
+          <div style="line-height:0;">
+            <el-input  type="password" v-model="password" placeholder="请输入账户密码" ></el-input>
+            <span class="code-case">
               <em :class="{'c1':passwordLevel==='sick' && password,'c2':passwordLevel==='middle','c3':passwordLevel==='strong'}">低</em>
               <em :class="{'c2':passwordLevel==='middle','c3':passwordLevel==='strong'}">中</em>
               <em class="last" :class="{'c3':passwordLevel==='strong'}">高</em>
             </span>
-          </li>
-
-          <li class="mb5">
-            <span class="title"><em class="fvx">*</em>确认密码</span>
-            <input type="password" name="confirmPassword" validate-password="" v-model="confirmPassword" ng-required="true"
-              class="ui-ipt iptform ng-isolate-scope ng-pristine ng-invalid ng-invalid-required" placeholder="请填写登录密码"
-              required="required">
-
-            <span class="formver ng-scope" v-if="confirmPassword && confirmPassword!= password">
-              <span class="p-ico ico-formver"></span>
-              <span class="p-ico ico-worm"></span>前后密码不一致!
+            <span class="formver ng-scope" style="width:300px;font-size: 13px;" v-if="password&&password.length<6">
+              请输入6~18位由字母、数字组合的登录密码!
             </span>
-          </li>
-
-          <li class="mb5">
-            <span class="title">&nbsp;</span>
-            <span style="font-size: 10px;color: red; text-align: center;">{{err}}</span>
-          </li>
-
-          <li class="m-t-20">
-            <span class="title">&nbsp;</span>
-            <input class="ui-btn btn-r" type="button" value="提 交" :disabled="!cansubmit()" @click="submitData()">
-          </li>
-        </ul>
-      </form>
-
+          </div>
+        </el-form-item>
+        <el-form-item label="确认密码" required>
+          <el-input  type="password" v-model="confirmPassword" placeholder="确认登录密码"></el-input>
+          <span class="formver ng-scope" v-if="confirmPassword && confirmPassword!= password">
+              前后密码不一致!
+            </span>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" :disabled="!cansubmit()" @click="submitData()">提 交</el-button>
+        </el-form-item>
+      </el-form>
     </div>
   </div>
 </template>
@@ -139,7 +131,8 @@
         name: '',
         passwordLevel: 'sick',
         password: '',
-
+        education: '',
+        company: '',
         confirmPassword: '',
         phone: '',
         code: "",

+ 1 - 0
src/main.js

@@ -1,5 +1,6 @@
 // The Vue build version to load with the `import` command
 // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
+import './tailwind.css';
 import Vue from 'vue'
 import App from './App'
 import router from './router'

+ 0 - 0
src/setting.js


BIN
static/images/header-bg.jpg


BIN
static/images/header-bg.jpg.bak


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 504 - 37
yarn.lock


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác