12 Commits 0d7380922d ... 81a144e274

Author SHA1 Message Date
  y595705120 0d7380922d 5 2 weeks ago
  y595705120 7843f7a884 sm 2 weeks ago
  y595705120 8e6c5ef05f 卡顿问题 2 weeks ago
  y595705120 ef6381938d media 2 weeks ago
  y595705120 0d0c538959 Merge branch 'master-sm' of https://git.ndjsxh.cn:18442/ndjsxh/study_sm into master-sm 2 weeks ago
  y595705120 d621e8de97 默认 2 weeks ago
  y595705120 26ad8fe52b 页面调整 1 month ago
  y595705120 ed4ec9a4db 购买界面 1 month ago
  y595705120 f8ed2258a9 支付 1 month ago
  y595705120 3b44156ea3 无需证书 1 month ago
  y595705120 a306b63266 简单调整 1 month ago
  y595705120 a39334b8d7 nd 2 months ago

+ 1 - 1
config/index.js

@@ -4,7 +4,7 @@
 //
 // const TARGET = "http://study.ndjsxh.cn:8888/"
 // const TARGET = "http://localhost:8000/"
-const TARGET = "https://ndapi.hqedust.com:18443/"
+const TARGET = "https://sm.hqedust.com/"
 const path = require('path')
 
 module.exports = {

+ 1 - 1
index.html

@@ -9,7 +9,7 @@
     <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
     <!-- <meta name="referrer" content="origin"> -->
     <script type="text/javascript" src="./static/config.js?id=2"></script>
-    <title>宁德市建筑业协会建设行业从业人员继续教育网络培训平台</title>
+    <title>三明市城市建设项目服务中心</title>
   </head>
   <body style="margin:0px;">
     <div id="app"></div>

+ 2 - 2
src/App.vue

@@ -7,14 +7,14 @@
     <div class="p-wrap-full">
       <div class="footer ng-scope" style="z-index: 10">
         <div class="footer-bd">
-          <p>技术支持:{{config.title}}</p>
+          <p>技术支持:{{config.title}}【{{config.contact}}】</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"> -->
               <a href="http://beian.miit.gov.cn/" target="_blank">
-                网站备案:{{config.beian}}
+                网站备案:{{config.beiang}}
               </a>
            </p>
         </div>

+ 3 - 4
src/components/footer/index.vue

@@ -2,12 +2,11 @@
   <div class="footerView" class="ng-scope">
     <div class="footer ng-scope" style="z-index: 10;padding-top: 20px;">
       <div class="footer-bd">
-        <p>技术支持:{{config.it}}</p>
+        <p>技术支持:{{config.title}}</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">
-              备案编号:{{config.beian}}</a></p>
+         <a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=35010202001216" target="_blank">
+              备案编号:{{config.beiang}}</a></p>
       </div>
     </div>
   </div>

+ 2 - 2
src/components/httpServer/httpServer.js

@@ -18,7 +18,7 @@ export function httpServer(method, data) {
   let sigureStr = "hall_" + version + token + body + method + mtime + secret
 
   let sign = md5( sigureStr )
-  let url = `https://ndapi.hqedust.com:18443/rental/${method}?t=${mtime}&u=${uid}&v=${version}&s=${sign}`
+  let url = `https://smapi.hqedust.com:18443/rental/${method}?t=${mtime}&u=${uid}&v=${version}&s=${sign}`
   return request({
     url: url,
     method: 'post',
@@ -34,7 +34,7 @@ export function uploadImg( rand, formData ) {
   if( !token || !uid ) return;
   let sign = "hall_" + version + token + rand  + mtime + secret;
   return request({
-    url:`https://ndapi.hqedust.com:18443/upload?t=${mtime}&u=${uid}&v=${version}&s=${sign}&r=${rand}`,
+    url:`https://smapi.hqedust.com:18443/upload?t=${mtime}&u=${uid}&v=${version}&s=${sign}&r=${rand}`,
     method: 'post',
     data:formData,
     dataType:"multipart/form-data"

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

@@ -2,7 +2,7 @@
   <div>
     <div class="m-header ng-scope">
       <div class="p-wrap-full tc" @click="goto('/')">
-        <span class="logo " style="color: white;font-size: 36px;">
+        <span class="logo " style="color: white;font-size: 56px;">
           {{config.title}}  </span>
       </div>
     </div>

+ 2 - 8
src/containers/center/class/train/index.vue

@@ -17,7 +17,7 @@
 
               <div class="hover-block">
                 <div class="mask-bg tc"></div>
-                <el-button @click="gotoPlay(item)" class="ui-btn">进入学习</el-button>
+                <el-button @click="gotoPlay(item.courseId)" class="ui-btn">进入学习</el-button>
               </div>
             </div>
 
@@ -49,7 +49,6 @@
 <script>
   import { httpServer} from "@/components/httpServer/httpServer.js";
   import { getMediaOptions} from "@/utils/index.js";
-  import {curDatetime} from '@/utils/date.js'
   import setting from '@/setting';
   export default {
     name: "Index",
@@ -76,12 +75,7 @@
         this.page = currentPage;
         this.getData()
       },
-      gotoPlay( item ){
-        let courseId = item.courseId
-        if( curDatetime() < item.startDate){
-          this.$message.warning("还未到学习时间");
-          return
-        }
+      gotoPlay( courseId ){
         this.$router.push({name:'play', params:{courseId}})
       },
       getData() {

+ 4 - 0
src/containers/center/components/menu/menu.js

@@ -29,6 +29,10 @@ const menu = [
          path: '/center/market',
          active: true,
          name: '继续教育'
+       },
+       {
+         path: '/center/trainMarket',
+         name: '教育培训'
        }
      ]
    },

+ 2 - 2
src/containers/center/exam/components/headline.vue

@@ -58,7 +58,7 @@ export default {
 <style>
 .htitle {
   margin-top: 16px;
-  font-size: 26px;
+  font-size: 36px;
   font-weight: 900;
   padding: 8px;
   text-align: center;
@@ -84,7 +84,7 @@ export default {
 }
 .ltime{
   font-size: 20px;
-  font-weight:560;
+  font-weight:560;  
 }
 
 .head-item {

+ 4 - 8
src/containers/center/home/index.vue

@@ -37,7 +37,7 @@
         <div class="clear mt10">
           <div class="m-history-course fl ng-scope" v-for="item in list" :key="item.courseId"
             style="width:460px; margin-left:8px;cursor:pointer">
-            <a  class="course-img" @click="gotoPlay(item)">
+            <a  class="course-img" @click="gotoPlay(item.courseId)">
               <img :src="item.tb">
               <span class="p-ico2"></span>
             </a>
@@ -86,18 +86,14 @@
       this.getData()
     },
     methods: {
-      gotoPlay(item) {
-        this.curDate = curDatetime();
-        if( this.curDate < item.startDate){
-          this.$message.warning("还未到学习时间");
-          return
-        }
-        this.$router.push({name:'play', params:{courseId:item.courseId}})
+      gotoPlay(courseId) {
+        this.$router.push({name:'play', params:{courseId}})
       },
       gotoPage(route) {
         this.$router.push(route);
       },
       getPercent(item) {
+
         if (item.getXs > item.totalXs) {
           return 100
         } else {

+ 135 - 111
src/containers/center/market/index.vue

@@ -4,22 +4,26 @@
       <div class="panel-tit clear">
         <p class="fl">推荐课程</p>
         <ul class="fr tips-intro" style="color:royalblue" @mouseover="showTip=true" @mouseleave="showTip=false">
-          <li class="fs15 tit" style="margin-right: 20px;">
-            <i class="p-ico questiong-ico" style="margin-right: 0px;" />  温馨提醒
+          <li class="fs15 tit">
+            <i class="p-ico questiong-ico" style="margin-right: 0px;" /> 已将近退休年龄,是否还需要参加继续教育?
           </li>
         </ul>
 
         <div class="fr tip-card" v-show="showTip">
           <div class="p20">
-            <h3>温馨提醒:</h3>
-            <h2 style="margin: 8px; 0 16px 0px;">一、福建省内可报</h2>
-            <h4 style="margin: 8px;">1.施工现场专业人员</h4>
-            <h4 style="margin: 8px;">2.20周岁以上,且男性小于60周岁,女性小于55周岁。</h4>
-
-            <h2 style="margin:8px 0 16px 0px;">二、宁德内可报:</h2>
-            <h4 style="margin: 8px;">1.安全生产管理人员</h4>
-            <h4 style="margin: 8px;">2.建筑施工特种作业人员</h4>
-            <h4 style="margin: 8px;">3.企业安全生产培训</h4>
+            <h3>一、建设从业人员:</h3>
+            <h5 style="margin: 8px;">1、安管人员:</h5>
+            <h5 style="margin-left: 16px;">①企业主要负责人(A证):年龄18周岁以上。</h5>
+            <h5 style="margin-left: 16px;">②项目负责人(B证):年龄18周岁以上,65周岁以下。</h5>
+            <h5 style="margin-left: 16px;">③“安管人员”C证,男性持证人员从60周岁逐步延长至63周岁(退休年龄从2025年1月1日起,每四个月延迟一个月)</h5>
+            <h4 style="margin: 8px;">2、特种作业人员:男性持证人员从60周岁逐步延长至63周岁(退休年龄从2025年1月1日起,每四个月延迟一个月);女性持证人员年龄上限55周岁。</h4>
+            <h4 style="margin: 8px;">3、八大员:年龄20周岁以上,且男性不超过60周岁,女性不超过55周岁。</h4>
+            <h4 style="margin: 8px;">4、C证: 年龄18周岁以上,男性从60周岁逐步延长至63周岁(退休年龄从2025年1月1日起,每四个月延迟一个月),女性60周岁以下;</h4>
+            <h4 style="margin: 8px;">5、特种:年满18周岁以上,男性从60周岁逐步延长至63周岁(退休年龄从2025年1月1日起,每四个月延迟一个月),女性55周岁以下;</h4>
+
+            <h2 style="margin:8px 0 16px 0px;">二、执业注册人员:</h2>
+            <h4 style="margin: 8px;">1、注册建造师(一级、二级)、注册监理工程师:年龄65周岁以下;</h4>
+            <h4 style="margin: 8px;">2、其他执业资格注册证件无年龄要求。</h4>
           </div>
         </div>
       </div>
@@ -101,7 +105,7 @@
 
               <div class="hover-block">
                 <div class="mask-bg"></div>
-                <el-button @click="gotoPlay(item)" v-if="item.is_pay==1"
+                <el-button @click="gotoPlay(item.course_id)" v-if="item.is_pay==1"
                   class="ui-btn btn-blue">进入学习</el-button>
                 <el-button @click="goPay(item)" v-else-if="item.is_pay==2 || !!item.buyImg"
                   class="ui-btn btn-w">补充材料</el-button>
@@ -137,37 +141,77 @@
 
     </div>
 
-    <el-dialog title="申请开通课程" :visible.sync="buyCourseDialog" width="550px" top="100px" align="center">
-      <el-form label-width="100px"  :inline="false" :model="buyForm" :rules="rules"
+    <el-dialog title="申请开通课程" :visible.sync="buyCourseDialog" width="850px" top="20px" align="center">
+      <el-form label-width="80px" label-position="right" :inline="true" :model="buyForm" status-icon :rules="rules"
         ref="elForm">
-
-        <el-form-item label="报考岗位" prop="courseName">
-          <el-input type="text" placeholder="报考岗位" v-model="buyForm.courseName+'-'+buyForm.nd"
-          style="width: 360px;" />
-        </el-form-item>
-
-        <el-form-item label="证书编号" prop="rzCode">
-          <el-input v-model="buyForm.rzCode" type="text" style="width: 360px;">
-            <template #suffix>
-              <el-button @click="openShowAllRzcodeDialog" type="text" style="margin-right: 10px;">修改</el-button>
-            </template>
-          </el-input>
-        </el-form-item>
-
-        <el-form-item label="支付类型" prop="payType">
-          <div style="text-align: left;margin-left: 20px;">
-            <el-button :type="buyForm.payType === 'wx' ? 'primary' : 'default'" style="margin-right: 30px;" @click="buyForm.payType='wx';onPayTypeChange()">微信</el-button>
-            <el-button :type="buyForm.payType === 'ali' ? 'primary' : 'default'" @click="buyForm.payType='ali';onPayTypeChange()">支付宝</el-button>
+        <el-row align="left">
+          <el-col :lg="12" class="pl20 pr20">
+            <el-form-item lable="报考岗位" prop="courseName">
+              <label slot="label">报考岗位</label>
+              <el-input v-model="buyForm.courseName" type="text" placeholder="报考岗位" style="width: 260px;"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="12" class="pl20 pr20">
+            <el-form-item lable="证书编号" prop="rzCode">
+              <label slot="label">证书编号</label>
+              <el-input v-model="buyForm.rzCode" type="text" style="width: 260px;">
+                <template #suffix>
+                  <el-button @click="openShowAllRzcodeDialog" type="text">修改</el-button>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+
+          <!--          <el-row>
+            <span style="color: red;padding:10px"> 请认真核实报考岗位与证书编号,本课程不支持退款</span>
+          </el-row> -->
+
+          <el-col :lg="12" class="pl20 pr20">
+            <el-form-item lable="邮箱地址" prop="email">
+              <label slot="label">邮箱地址</label>
+              <el-input v-model="buyForm.email" type="textarea" placeholder="邮箱地址" style="width: 260px;"></el-input>
+            </el-form-item>
+          </el-col>
+
+
+          <el-col :span="12" class="pl20 pr20">
+            <el-form-item lable="订单号" prop="payNo">
+              <label slot="label">订单编号</label>
+              <el-input v-model="buyForm.payNo" placeholder="输入订单编号后6位" style="width: 260px;" :minlength="6"
+                :maxlength="6" show-word-limit></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12" class="pl20 pr20">
+            <el-form-item lable="工作单位" prop="company">
+              <label slot="label">工作单位</label>
+              <el-input v-model="buyForm.company" type="textarea" placeholder="工作单位" style="width: 260px;"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" class="pl20 pr20">
+            <el-form-item lable="备注信息" prop="marks">
+              <label slot="label">备注信息</label>
+              <el-input v-model="buyForm.marks" type="textarea" placeholder="姓名+工种名称,例:张三+土建施工员"
+                style="width: 260px;"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row v-if="typeInfo.needPromise==1">
+          <div style="width: 700px;margin: 0 auto;text-align: left;color: red;">
+            提示:继续教育承诺函企业名称应与个人报名系统企业名称一致,如已变更单位的,
+            请先在个人系统帐号设置进入额外信息栏进行修改工作单位与报名承诺函工作单位相符后方可上传承诺函确认
           </div>
-        </el-form-item>
+          <img :src="buyForm.buyImg" :onerror="errorImg" style="width: 160px;text-align: center;">
+          <do-upload @onFinish="(url)=>{buyForm.buyImg=url}" placeholder="上传承诺书" width="160px"> </do-upload>
+        </el-row>
+
 
         <el-row>
           <h2 class="tc"> 本课程费用: <strong style="color: red;"> {{buyForm.fee/100}} 元 </strong> </h2>
-          <div style="width: 300px; margin: 0px auto;" v-if="buyForm.payType">
-            <img :src="wxPayUrl" width="300px" @click="showImg(wxPayUrl)">
-          </div>
-          <div style="width: 300px; margin: 0px auto;" v-else>
-            <img :src="aliPayUrl" width="300px" @click="showImg(aliPayUrl)">
+          <div style="width: 300px; margin: 0px auto;">
+            <img src="/static/images/wxpay.jpg" width="300px" @click="showImg(buyForm.buyImg)">
           </div>
         </el-row>
 
@@ -177,11 +221,47 @@
             <el-button @click="buyCourse" type="primary">确 定</el-button>
           </el-form-item>
         </el-row>
+
       </el-form>
 
     </el-dialog>
 
 
+    <el-dialog :title="promiseType[promise.showType]" class="fc tc" :visible.sync="commitmentDialog">
+      <div>
+        <div>
+          <div class="commitment-header"> {{promise.title}} </div>
+          <div class="tl commitment">
+            {{promise.content}}
+          </div>
+          <div class="commitment-footer">
+            {{promise.footer}}
+          </div>
+        </div>
+
+        <div class="tl commitment-content mt20" v-if="promise.showType==2">
+          <el-radio-group v-model="isCommitment">
+            <el-row class="mt10">
+              <el-radio :label="true">本人作出上述承诺</el-radio>
+            </el-row>
+            <el-row class="mt10">
+              <el-radio :label="false">本人不作出上述承诺</el-radio>
+            </el-row>
+          </el-radio-group>
+        </div>
+
+        <span slot="footer" class="dialog-footer" v-if="promise.showType==2">
+          <el-button @click="commitmentDialog = false">取 消</el-button>
+          <el-button type="primary" :disabled="isCommitment?false:true" @click="buyCourseDialog=true">确 定</el-button>
+        </span>
+
+        <div slot="footer" class="dialog-footer mt20" v-else>
+          <el-button @click="commitmentDialog = false">取 消</el-button>
+          <el-button type="primary" @click="buyCourseDialog=true">继续购买</el-button>
+        </div>
+      </div>
+    </el-dialog>
+
     <el-dialog append-to-body close-on-click-modal :visible.sync="showImgDialog" style="margin-top: 0px;"
       :width="width">
       <img :src="imgUrl" @load="onLoad" alt="" />
@@ -217,7 +297,7 @@
   } from "@/utils";
   import DoUpload from '@/components/upload/index.vue'
   import exampleImg from '@/assets/template.png'
-  import {curDatetime} from '@/utils/date.js'
+
 
   import {
     mapGetters,
@@ -252,7 +332,6 @@
           3: '委 托 书'
         },
         buyForm: {
-          payType:'wx',
           marks: '',
           rzCode: '',
           payNo: '',
@@ -261,9 +340,7 @@
           buyImg: '',
           name: '',
           courseName: '',
-          list: [],
-          fee: 0,
-          course_id: ''
+          list: []
         },
         promise: {
           status: 0,
@@ -274,8 +351,6 @@
         },
         imgUrl: '',
         qrcodeUrl: "",
-        wxPayUrl:"",
-        aliPayUrl:"",
         outTradeNo: "",
         courseFee: 0,
         title: '',
@@ -368,11 +443,6 @@
         this.imgUrl = url;
         this.showImgDialog = true;
       },
-      onPayTypeChange() {
-        if (this.buyCourseDialog && this.buyForm.course_id) {
-          this.generatePayQrcode();
-        }
-      },
       closeDialog() {
         if (this.timer) window.clearInterval(this.timer);
       },
@@ -407,51 +477,6 @@
           }
         }
       },
-      initTimer() {
-        if (this.timer) window.clearInterval(this.timer);
-        this.tickCount = 0;
-        this.timer = window.setInterval(() => {
-          this.tickCount++;
-          this.tickTimer();
-        }, 2000);
-      },
-      tickTimer() {
-        if (this.tickCount > 150) {
-          if (this.timer) window.clearInterval(this.timer);
-          this.$message.warning("支付超时,请重新支付");
-          this.buyCourseDialog = false;
-          return;
-        }
-        let outTradeNo = this.outTradeNo;
-        httpServer("weixin.isPayOk", { outTradeNo }).then((res) => {
-          if (res.code == 200 && !!res.data) {
-            if (this.timer) window.clearInterval(this.timer);
-            this.$message.success("支付成功");
-            this.buyCourseDialog = false;
-            this.getData();
-          }
-        });
-      },
-      generatePayQrcode() {
-        let payType = this.buyForm.payType;
-        let apiName = payType === 'wx' ? "weixin.DoWxpay" : "weixin.DoaliPay";
-        let param = {
-          courseId: this.buyForm.course_id,
-          rzCode: this.buyForm.rzCode
-        };
-        httpServer(apiName, param).then((res) => {
-          if (res.code == 200) {
-            let { outTradeNo, showUrl } = res.data;
-            this.outTradeNo = outTradeNo;
-            if (payType === 'wx') {
-              this.wxPayUrl = showUrl;
-            } else {
-              this.aliPayUrl = showUrl;
-            }
-            this.initTimer();
-          }
-        });
-      },
       getData() {
         let param = {
           size: 1000,
@@ -483,7 +508,6 @@
         }
       },
       cancelBuyCourse() {
-        if (this.timer) window.clearInterval(this.timer);
         this.$refs["elForm"].resetFields();
         this.buyCourseDialog = false
         this.commitmentDialog = false;
@@ -570,10 +594,12 @@
         this.buyForm.company = this.userInfo.company;
         this.buyForm.temp = item;
         this.buyForm.courseName = item.name;
-        this.buyForm.course_id = item.course_id;
-        this.buyForm.fee = item.fee;
+        this.matchPromise(item);
         this.matchType(item.type)
+        // this.testBuyOK(item)
+        // return;
         // 检查
+        item.payErr = true;
         httpServer("weixin.docheckpay", {
           courseId: item.course_id
         }).then((res) => {
@@ -582,23 +608,21 @@
             this.isCompanyPay = 0;
             this.isCommitment = ''
             Object.assign(this.buyForm, res.data);
-            this.buyCourseDialog = true;
-            this.commitmentDialog = false;
-            this.$nextTick(() => {
-              this.generatePayQrcode();
-            });
+            if (this.promise.status == 1) {
+              this.commitmentDialog = true;
+              this.buyCourseDialog = false;
+            } else {
+              this.buyCourseDialog = true;
+              this.commitmentDialog = false;
+            }
           } else {
-            this.$message.error(res.msg || "无法购买该课程");
+            console.log("payErr")
+            item.payErr = true;
           }
         });
       },
-      gotoPlay(item) {
-        let courseId = item.course_id||item.courseId;
-        if( curDatetime() < item.startDate){
-          this.$message.warning("还未到学习时间");
-          return
-        }
-        this.$router.push({name:'play', params:{courseId:item.courseId}})
+      gotoPlay(courseId) {
+        this.$router.push(`/center/class/train`);
       },
       handleCurrentChange(page) {
         this.page = page;

+ 4 - 9
src/containers/center/market/trainIndex.vue

@@ -91,7 +91,7 @@
 
               <div class="hover-block">
                 <div class="mask-bg"></div>
-                <el-button @click="gotoPlay(item)" v-if="item.is_pay==1" class="ui-btn">进入学习</el-button>
+                <el-button @click="gotoPlay(item.course_id)" v-if="item.is_pay==1" class="ui-btn">进入学习</el-button>
 
                 <el-button @click="goPay(item)" v-else-if="item.is_pay==2 || !!item.buyImg" class="ui-btn btn-o">补充材料</el-button>
                 <el-button @click="goPay(item)" v-else class="ui-btn btn-o">购买课程</el-button>
@@ -268,7 +268,7 @@
   } from "@/utils";
   import DoUpload from '@/components/upload/index.vue'
   import exampleImg from '@/assets/template.png'
-  import {curDatetime} from '@/utils/date.js'
+
 
   import {
     mapGetters,
@@ -537,13 +537,8 @@
           }
         });
       },
-      gotoPlay(item) {
-        let courseId = item.course_id
-        if( curDatetime() < item.startDate){
-          this.$message.warning("还未到学习时间");
-          return
-        }
-        this.$router.push({name:'play', params:{courseId}})
+      gotoPlay(courseId) {
+        this.$router.push(`/center/class/train`);
       },
       handleCurrentChange(page) {
         this.page = page;

+ 14 - 93
src/containers/center/play/components/media.vue

@@ -5,12 +5,11 @@
     <div class="v-wrap-marks"></div>
     <video-player id="myVideo" class="video-player-box" ref="videoPlayer" :playsinline="true"
       @pause="onPlayerPause($event)" @timeupdate="onPlayerTimeupdate($event)" @play="onPlayerStart($event)"
-      @ready="playerReadied" @ended="onPlayerEnded($event)" @error="onPlayerError($event)"
-      :globalOptions="{controls:true}" :options="options">
+      @ready="playerReadied" @ended="onPlayerEnded($event)" :globalOptions="{controls:true}" :options="options">
     </video-player>
     <div class="dialog-footer pt30">
       <el-row class="media-footer">
-        <el-col :span="8" class="media-time">
+        <el-col :span="10" class="media-time">
           <span>{{curTimes|useTime}}</span>
           <strong>/</strong>
           <span>{{media.duration|useTime}}</span>
@@ -20,14 +19,7 @@
             circle></el-button>
           <el-button class="bicon" v-else type="warning" @click="doPause" icon="el-icon-video-pause" circle></el-button>
         </el-col>
-        <el-col :span="6" class="media-center">
-          <span class="volume-control">
-            <span class="vol-icon" @click="toggleMute">音量</span>
-            <el-slider class="volume-slider" :value="volume" :min="0" :max="1" :step="0.05"
-              @input="setVolume"></el-slider>
-          </span>
-        </el-col>
-        <el-col :span="6" class="media-select">
+        <el-col :span="10" class="media-select">
           <el-button class="bicon" type="danger" icon="el-icon-close" @click="onClose" style="float: right;">
           </el-button>
           <div style="margin-top:0px;float: right;">
@@ -65,9 +57,7 @@
         prevTime: 0,
         isReady: false,
         curTimes: 0,
-        onPlay: false,
-        volume: 0.5,
-        isMuted: false
+        onPlay: false
       }
     },
     components: {
@@ -109,6 +99,13 @@
         }
       }
     },
+    mounted() {
+      setTimeout(() => {
+        this.$emit("updateOption", {
+          muted: false
+        })
+      }, 3000)
+    },
     filters: {
       useTime(val) {
         let timestr = ""
@@ -128,7 +125,7 @@
     computed: {
       player() {
         return this.$refs.videoPlayer.player
-      },
+      }
     },
     created() {
       this.startTick()
@@ -172,17 +169,10 @@
         let that = this;
 
         if (this.media.position > 5 && this.media.position < this.media.duration) {
-          this.setposition(this.media.position)
+          this.setposition(this.media.position+3)
         }
         this.isReady = true
         setTimeout(() => this.setMarks(), 600);
-
-        setTimeout(() => {
-          if (that.player && that.player.volume) {
-            that.player.volume(that.volume)
-            that.player.muted(that.isMuted)
-          }
-        }, 1000)
       },
       onPlayerTimeupdate(player) {
         let myPlayer = this.$refs.videoPlayer.player;
@@ -208,16 +198,6 @@
         this.stopTick()
         this.onPlay = false
       },
-      onPlayerError(event) {
-        this.reportErr("play", 'error');
-        let player = this.$refs.videoPlayer && this.$refs.videoPlayer.player;
-        if (player) {
-          player.pause();
-          setTimeout(() => {
-            player.play();
-          }, 1000);
-        }
-      },
       onPlayerEnded(event) {
         this.reportErr("play", 'end');
         this.tick(true)
@@ -244,20 +224,6 @@
         myPlayer && myPlayer.play()
         this.tickNum = 0
       },
-      setVolume(val) {
-        this.volume = val
-        this.isMuted = val === 0
-        if (this.player && this.player.volume) {
-          this.player.volume(val)
-          this.player.muted(this.isMuted)
-        }
-      },
-      toggleMute() {
-        this.isMuted = !this.isMuted
-        if (this.player && this.player.volume) {
-          this.player.muted(this.isMuted)
-        }
-      },
       onPlayerStart() {
         // console.log("onPlayerStart")
         this.reportErr("play", 'start');
@@ -394,12 +360,7 @@
               }
               return
             }
-            if (!skip) {
-              let diff = Math.abs(position - curTimes);
-              if (diff > 3) {
-                this.setposition(position);
-              }
-            }
+            if (!skip) this.setposition(position);
             Object.assign(param, res.data)
             this.$emit("update", param)
           }
@@ -442,46 +403,6 @@
   .media-center {
     text-align: center;
     padding: 0px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    gap: 8px;
-  }
-
-  .volume-control {
-    display: inline-flex;
-    align-items: center;
-    gap: 4px;
-  }
-
-  .vol-icon {
-    font-size: 12px;
-    font-weight: bold;
-    cursor: pointer;
-    color: #606266;
-    user-select: none;
-    line-height: 1;
-  }
-
-  .vol-icon:hover {
-    color: #409eff;
-  }
-
-  .volume-slider {
-    width: 80px !important;
-  }
-
-  .volume-slider .el-slider__runway {
-    height: 4px;
-  }
-
-  .volume-slider .el-slider__bar {
-    height: 4px;
-  }
-
-  .volume-slider .el-slider__button {
-    width: 12px;
-    height: 12px;
   }
 
   .media-time {

+ 2 - 4
src/containers/center/studyArchives/index.vue

@@ -7,7 +7,7 @@
       </div>
 
       <ul class="m-course-list clear mt10 ng-scope" v-if="total>0">
-        <li v-for="item in list" :key="item.courseId" class="ng-scope" @click="gotoPlay(item)">
+        <li v-for="item in list" :key="item.courseId" class="ng-scope" @click="gotoPlay(item.courseId)">
 
           <div class="course-bd">
             <div class="course-img"><img :src="item.tb" alt=" ">
@@ -36,7 +36,6 @@
   import {
     httpServer
   } from "@/components/httpServer/httpServer.js";
-  import {curDatetime} from '@/utils/date.js'
   export default {
     name: "Index",
     data() {
@@ -56,8 +55,7 @@
         this.page = currentPage;
         this.getData()
       },
-      gotoPlay( item ){
-        let courseId = item.courseId
+      gotoPlay( courseId ){
         const { href } = this.$router.resolve({
             name: "播放视频",
             path: '/play/'+ courseId

+ 4 - 4
src/containers/certificate/index.vue

@@ -11,7 +11,7 @@
       <div class="content_box_title">
         <img
           src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAOCAYAAABaSYBTAAAABHNCSVQICAgIfAhkiAAAANRJREFUWEftmO0NgyAYhOtOMIxr6By6RoeBnVTqR2rL6wlFOJPyy+QC3j0vIlAZY55a6/ohNHbd2S7tUWJXOcFaOyilXs++xq4zZPBx24CyA0T+GAHvZisKwK6zAf5aCtgBIn9MgL3rLArArrMAvu1PDBWYAbAIl8EcAoj00hkO4ZY2l+L9KcZARZR0CLekuXXvGBvufe/56xgx/U/B/QOeyxQK+DTcmME/Ty2h5lL3z50hCG5uc1ccxXNmCIa7mGunu4hOuIpwn08z6T2rvmS42mM7AlIFLwQXiU8MAAAAAElFTkSuQmCC" />
-        <span style="font-weight: 700;">{{showTable?'证书信息':'学时验证'}}</span>
+        <span style="font-weight: 700;">{{showTable?'证书信息':'培训信息查询'}}</span>
         <img
           src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAOCAYAAABaSYBTAAAABHNCSVQICAgIfAhkiAAAALRJREFUWEft2LENgCAQBVCZwtoZkBHcwtItnMTedSgI29CgmGhiRBS8K0w+7YX75AEFiCpzGGMa59yglBpjU7nrIZM7g6q/yLHVWkvv/dSuIzaPux4yuTMo+7/GpQwt2Zi/wYb1vsIFbNmNecQFbBns48kFbDlsEhew32BvcQH7HTaKC1ga2AsuYOlgT7iApYU9cAFLD7vhApYHdsftpZRz7Elqra3XT5qOqx4yuTO4+6f+ZhZW89Ai/bICGAAAAABJRU5ErkJggg==" />
       </div>
@@ -75,15 +75,15 @@
           <div style="margin-top: 3rem;">
             <div class="mess_title">01、证书依据</div>
             <div class="mess_text">
-              宁德市建筑业协会建设行业从业人员继续教育网络培训平台
+              三明市城市建设项目服务中心
             </div>
             <div class="mess_title">02、查询范围</div>
             <div class="mess_text">
-              施工现场专业人员,企业安全生产培训,安全生产管理人员,建筑施工特种作业人员
+              检测试验人员,三类人员证书
             </div>
             <div class="mess_title">03、联系方式</div>
             <div class="mess_text">
-              电话: 0593-2823165 邮箱:3436014603@qq.com
+              电话: 0598-5157296
             </div>
           </div>
         </div>

+ 6 - 4
src/containers/login/components/friendlink/friendlink.vue

@@ -42,9 +42,11 @@ export default {
     return {
       // 三明市建设从业人员综合服务平台
       links:[
-        {name:'宁德市建筑业协会网', name2:"", type:'warning', link:'http://www.ndsjx.com'},
-        {name:'住房城乡建设行业人员培训管理信息系统', type:'success', link:'http://rcgz.mohurd.gov.cn'},
-        {name:'福建省建设从业人员综合服务平台',   name2:"", type:'danger', link:'http://220.160.52.118:9084/portalWeb/fwZhcx/toFwZhcxPage?code=zscx'},
+        {name:'三明市建设从业人员', name2:"综合服务平台", type:'primary', link:'http://110.83.229.16:8123/gaia/peelLogin.html'},
+        {name:'住房城乡建设行业人员', name2:"培训管理信息系统", type:'success', link:'http://rcgz.mohurd.gov.cn'},
+        {name:'福建省建设从业人员',          name2:"综合服务平台", type:'danger', link:'http://220.160.52.118:9084/portalWeb/webPortal/toIndexPage'},
+        {name:'三明市住房和城乡', name2:"建设局", type:'warning', link:'http://zjj.sm.gov.cn/'},
+        {name:'施工现场专业人员培训测试', name2:"管理信息系统", type:'primary', link:'http://csjs.snjsrc.com/'},
       ]
     }
   },
@@ -66,7 +68,7 @@ export default {
   justify-content: space-between;
 }
 .friendship-a {
-  width: 360px;
+  width: 220px;
   line-height: 20px;
   font-weight: 900;
   font-size: 16px;

+ 2 - 2
src/containers/login/components/isLogin.vue

@@ -32,8 +32,8 @@
       <li><a href="javascript:void(0)" @click="gotoPage('/center/sign')">
         <i class="p-ico i2"></i><span>学时证明</span></a>
       </li>
-      <li><a href="javascript:void(0)" @click="gotoPage('/nd-sign')">
-        <i class="p-ico i3"></i><span>学时验证</span>
+      <li><a href="javascript:void(0)" @click="gotoPage('/center/trainMarket')">
+        <i class="p-ico i3"></i><span>教育培训</span>
         </a></li>
       <li><a href="javascript:void(0)" @click="gotoPage('/center/setting')">
         <i class="p-ico i6"></i><span>帐号设置</span></a>

+ 5 - 5
src/containers/login/login.vue

@@ -60,7 +60,7 @@
       </el-row>
     </div>
 
-<!--    <div class="p-wrap-full mb20 ng-scope waphide">
+    <div class="p-wrap-full mb20 ng-scope waphide">
       <div class="title-box mt5 clear">
         <h2 class="title">教育培训</h2>
       </div>
@@ -76,13 +76,13 @@
           </el-card>
         </el-col>
       </el-row>
-    </div> -->
+    </div>
 
-<!--    <div class="right-nav waphide">
+    <div class="right-nav waphide">
       <img class="right-img" src="../../assets/wxapp.jpg" alt="">
       <p>使用小程序</p>
       <p>学习更轻松</p>
-    </div> -->
+    </div>
 
 
     <div class="p-wrap-full ng-scope waphide">
@@ -186,7 +186,7 @@ export default {
     },
     getPostList(){
       let {page,size} = this;
-      let param = {page,size}
+      let param = {page,size,type:'操作指南'}
       httpServer("course.getPostList", param).then( res=>{
         if( res.code == 200){
           this.postList = res.data.list

+ 2 - 2
src/router/index.js

@@ -63,8 +63,8 @@ export default new Router({
       component: Register,
     },
     {
-      path: '/nd-sign',
-      name: 'nd-sign',
+      path: '/sm-sign',
+      name: 'sm-sign',
       component: PublicCertificate,
     },
     {

+ 2 - 2
src/setting.js

@@ -9,7 +9,7 @@ var examList  = {
 
   module.exports = {
     courseName: "工程检测试验员",
-    noticeMsg:'提示:安全生产管理人员/建筑施工特种作业人员/企业安全生产培训 学习时间90天内完成',
-    noticeMsgTrain:'',
+    noticeMsg:'提示:工程检测试验员新培人员需在5个工作日内完成40学时培训,三类、八大员、特种人员课程学习时间80天内完成',
+    noticeMsgTrain:'提示:工程检测试验员新培人员和建筑技术工人需在课程开通后5个工作日内完成学时培训,三类、八大员、特种人员课程开通学习(证书有效期)80天内完成',
     examList
   }

+ 2 - 3
static/config.js

@@ -1,8 +1,7 @@
 window.baseConfig = {
-    title: '宁德市建筑业协会建设行业从业人员继续教育网络培训平台',
+    title: '三明市城市建设项目服务中心',
     userSeatTitle:'福建省建设行业从业人员岗位考核考试',
-    it:'福建鸿锵教育科技有限公司',
-    beian:'闽ICP备2121760号',
+    beian:'闽ICP备2121760号-1',
     contact:'0598-5157296',
     educationList: ["博士研究生", "硕士研究生", "大学本科", "大学专科", "中专", "高中", "初中及以下", "其他"]
 }