index.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637
  1. <template>
  2. <div class="client-index-page">
  3. <div style="display: none">
  4. <a :href="`${baseUrl}/pcdituye.html`"></a>
  5. <a :href="`${baseUrl}/pcsitemap.xml`"></a>
  6. </div>
  7. <h1 style='display:none;'>在线考试系统在线培训系统在线答题系统在线学习系统</h1>
  8. <div style='display:none;'>
  9. 大连栋科软件工程有限公司是专业的在线考试系统教育软件与在线培训系统数字化资源服务供应商,创立于2007年,总部位于大连软件园。在线考试系统公司凭借成熟的项目研发和管理经验,致力于为客户提供全方位的在线教育解决方案,实现移动化、平台化、知识化、智能化学习管理模式,让学习变得更轻松。“共同成长、相伴一生”是栋科软件始终不渝的核心价值观。栋科软件在线培训系统将一如既往,持续创新、创造价值,与客户、合作伙伴共享共赢。
  10. 在线培训系统MTA是Master of Training Administration的缩写,含义是培训管理专家,麦塔在线答题系统致力于为客户提供专业的在线教育方案,打造企业核心竞争力。麦塔在线培训系统品牌诞生于2009年,在线考试系统公司创始团队多年来一直深耕在线教育领域,积累了丰富的行业经验。研发团队集结了来自互联网、科技、教育等多个领域专家级研发工程师,在线考试系统率先实现了移动化、平台化、知识化、智能化的学习管理模式。麦塔在线学习系统肩负着“改变互联网教育未来”的使命,持续创新、创造价值,在线答题系统与客户和合作伙伴共享共赢。
  11. </div>
  12. <!-- 首页banner栏 -->
  13. <div class="client-banner-box">
  14. <el-carousel trigger="click" v-if="bannerList.length>0">
  15. <el-carousel-item v-for="(item,index) in bannerList" :key="index">
  16. <div @click="clickBanner(item)" :style="{backgroundImage: 'url(' + item.pic + ')'}" class="index-carousel-box"></div>
  17. </el-carousel-item>
  18. </el-carousel>
  19. </div>
  20. <!-- 发展历程-移动端隐藏-->
  21. <div class="client-company-history mta-hidden-xs">
  22. <div class="client-container">
  23. <ul>
  24. <li><a @click="goExamPage"><i></i><div><span>在线考试系统</span><p>让考试变得更轻松</p></div></a></li>
  25. <li><a @click="goPeixunPage"><i></i><div><span>在线培训系统</span><p>为企业解决培训痛点</p></div></a></li>
  26. <li><a @click="goKechengPage"><i></i><div><span>课程定制开发</span><p>打造专业定制化服务</p></div></a></li>
  27. <li><a @click="goKechengZyPage"><i></i><div><span>通用课程资源</span><p>企业构建自主课程体系</p></div></a></li>
  28. </ul>
  29. </div>
  30. </div>
  31. <!-- 行业学习需求 -->
  32. <div class="client-demand-box">
  33. <div class="client-container">
  34. <h4 class="client-title">满足不同行业学习需求</h4>
  35. <ul class="demand-list-box">
  36. <li><div><span><i></i></span><p>企事业单位</p></div></li>
  37. <li><div><span><i></i></span><p>信息产业</p></div></li>
  38. <li><div><span><i></i></span><p>能源化工</p></div></li>
  39. <li><div><span><i></i></span><p>金融保险</p></div></li>
  40. <li><div><span><i></i></span><p>交通运输</p></div></li>
  41. <li><div><span><i></i></span><p>教育培训</p></div></li>
  42. <li><div><span><i></i></span><p>食品餐饮</p></div></li>
  43. <li><div><span><i></i></span><p>医疗卫生</p></div></li>
  44. </ul>
  45. <!--<div rel="nofollow" class="free-trial-default-btn" @click="FreeTrial(1)">免费试用</div>-->
  46. </div>
  47. </div>
  48. <!-- 产品和服务 -->
  49. <div class="client-products-services">
  50. <div class="client-container">
  51. <h4 class="client-title">产品和服务</h4>
  52. <div class="products-services-box products-contrary-box">
  53. <el-carousel arrow="never" indicator-position="none">
  54. <el-carousel-item v-for="(item,index) in cpfwKaoshiList" :key="index">
  55. <div :style="{backgroundImage: 'url(' + item.imgUrl + ')'}" class="cpfw-img-box"></div>
  56. </el-carousel-item>
  57. </el-carousel>
  58. <div class="products-services-content">
  59. <h5>智能稳定的在线考试系统</h5>
  60. <p class="p-before-circle">人员管理:支持手动、批量导入人员及部门多层级管理功能,解决企业人员多且分散的问题</p>
  61. <p class="p-before-circle">智能组卷:六大常用题型,批量导入;固定组卷,随机组卷,固定+随机综合组卷,涵盖错题,按难易程度抽题</p>
  62. <p class="p-before-circle">节约成本:支持客观题自动判分,主观题后台人工阅卷。有效减少人力成本,提升时间效率,降低费用成本</p>
  63. <div class="client-btn-box"><div rel="nofollow" class="client-default-Btn" @click="applyFun('kaoshi')">免费试用</div><span class="client-default-Btn" @click="goExamPage">在线咨询</span></div>
  64. </div>
  65. </div>
  66. <div class="products-services-box">
  67. <el-carousel arrow="never" indicator-position="none">
  68. <el-carousel-item v-for="(item,index) in cpfwPeixunList" :key="index">
  69. <div :style="{backgroundImage: 'url(' + item.imgUrl + ')'}" class="cpfw-img-box"></div>
  70. </el-carousel-item>
  71. </el-carousel>
  72. <div class="products-services-content">
  73. <h5>一站式高效的在线培训系统</h5>
  74. <p class="p-before-circle">多平台学习:支持电脑端、移动端随时随地在线培训学习、考试,从而不再受时间地点的约束</p>
  75. <p class="p-before-circle">标准化学习:支持课程、学时、学分、考试、练习、证书等,让企业培训标准化统一</p>
  76. <p class="p-before-circle">大数据分析:深层分析学情,帮助企业实现人才发掘、测评、培养、考核、任用一体化</p>
  77. <div class="client-btn-box"><div rel="nofollow" class="client-default-Btn" @click="applyFun('peixun')">免费试用</div><span class="client-default-Btn" @click="goPeixunPage">在线咨询</span></div>
  78. </div>
  79. </div>
  80. <div class="products-services-box products-contrary-box">
  81. <el-carousel arrow="never" indicator-position="none">
  82. <el-carousel-item v-for="(item,index) in cpfwSzkfList" :key="index">
  83. <div :style="{backgroundImage: 'url(' + item.imgUrl + ')'}" class="cpfw-img-box"></div>
  84. </el-carousel-item>
  85. </el-carousel>
  86. <div class="products-services-content">
  87. <h5>数字内容定制开发服务</h5>
  88. <p>企业需要定制适合自己的个性化课程,将隐性、零散的企业知识显性化和系统化,使企业多年积累的经验得以有效沉淀和传承。久创锐康,凭借创新的技术、高效的服务响应和强大的战略执行,为客户打造专业优质的课程定制服务</p>
  89. <div class="client-btn-box"><div class="client-default-Btn" @click="applyFun('kaoshi')">申请方案</div><span class="client-default-Btn" @click="goKechengPage">在线咨询</span></div>
  90. </div>
  91. </div>
  92. <div class="products-services-box">
  93. <el-carousel arrow="never" indicator-position="none">
  94. <el-carousel-item v-for="(item,index) in cpfwKczyList" :key="index">
  95. <div :style="{backgroundImage: 'url(' + item.imgUrl + ')'}" class="cpfw-img-box"></div>
  96. </el-carousel-item>
  97. </el-carousel>
  98. <div class="products-services-content">
  99. <h5>企业通用课程资源方案</h5>
  100. <p>基于岗位胜任力模型,久创锐康提供职业素养、领导能力、人力资源、市场营销、行政管理、财务管理、客服服务、产品运营、生产采购,9大模块通用岗位培训方案,满足企业对培训课程资源的应用需求</p>
  101. <div class="client-btn-box"><div rel="nofollow" class="client-default-Btn" @click="applyFun('kaoshi')">申请方案</div><span class="client-default-Btn" @click="goPeixunPage">在线咨询</span></div>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. <!-- 我们的客户 -->
  107. <div class="client-customer-box">
  108. <div class="client-container">
  109. <h4 class="client-title">我们的客户</h4>
  110. <ul class="customer-img-box">
  111. <li><img :src="customerImg1" alt="中国人民银行" /></li>
  112. <li><img :src="customerImg2" alt="汇丰" /></li>
  113. <li><img :src="customerImg3" alt="中国银行" /></li>
  114. <li><img :src="customerImg4" alt="中信银行" /></li>
  115. <li><img :src="customerImg5" alt="中国民生银行" /></li>
  116. <li><img :src="customerImg6" alt="astellas" /></li>
  117. <li><img :src="customerImg7" alt="今日头条" /></li>
  118. <li><img :src="customerImg8" alt="华图教育" /></li>
  119. <li><img :src="customerImg9" alt="步步高" /></li>
  120. <li><img :src="customerImg10" alt="小天才" /></li>
  121. <li><img :src="customerImg11" alt="华发股份" /></li>
  122. <li><img :src="customerImg12" alt="上海航空" /></li>
  123. <li><img :src="customerImg13" alt="中国国际航空公司" /></li>
  124. <li><img :src="customerImg14" alt="中国东方航空" /></li>
  125. <li><img :src="customerImg15" alt="深圳航空" /></li>
  126. <li><img :src="customerImg16" alt="中建八局" /></li>
  127. <li><img :src="customerImg17" alt="SANOFI" /></li>
  128. <li><img :src="customerImg18" alt="大连海事大学" /></li>
  129. <li><img :src="customerImg19" alt="南京银行" /></li>
  130. <li><img :src="customerImg20" alt="中国人民银行" /></li>
  131. </ul>
  132. </div>
  133. </div>
  134. <!-- 新闻资讯 PC-->
  135. <div class="client-news-information mta-hidden-xs">
  136. <h4 class="client-title">新闻资讯</h4>
  137. <div class="client-container">
  138. <div class="industry-information-box" v-if="topCarousels.length>0">
  139. <div class="industry-information-left">
  140. <img :src="topCarousels[0].pic" alt="新闻资讯" />
  141. <h4 @click="checkInfo(topCarousels[0])">{{ topCarousels[0].title }}<i></i></h4>
  142. <div><b>{{ topCarousels[0].yyyy }}</b><span>{{ topCarousels[0].mmdd }}</span></div>
  143. <p>{{ topCarousels[0].intro }}</p>
  144. </div>
  145. <div class="industry-information-right">
  146. <ul>
  147. <li v-for="(item, index) in topCarousels" v-if="index >= 1">
  148. <h4 @click="checkInfo(item)">
  149. <span>{{ item.yyyy }}</span>{{ item.title }}
  150. </h4>
  151. <p><span>{{ item.mmdd}}</span>{{ item.intro }}</p>
  152. </li>
  153. </ul>
  154. </div>
  155. </div>
  156. </div>
  157. </div>
  158. <!-- 新闻资讯 手机-->
  159. <div class="client-newsInfo-phone mta-hidden-sm">
  160. <h4 class="client-title">新闻资讯</h4>
  161. <el-carousel :interval="5000" v-if="topCarousels.length>0" type="card" height="300px" indicator-position="none" arrow="never">
  162. <el-carousel-item v-for="(item,index) in topCarousels" :key="index" class="el-row">
  163. <img :src="item.pic" alt="新闻资讯" @click="checkInfo(item)"/>
  164. <div class="newsInfo-card-content" @click="checkInfo(item)">
  165. <h4>{{ item.title }}<i></i></h4>
  166. <span>{{ item.yyyy }}-{{ item.mmdd }}</span>
  167. <p>{{ item.intro }}</p>
  168. </div>
  169. </el-carousel-item>
  170. </el-carousel>
  171. </div>
  172. <el-dialog
  173. :close-on-click-modal="false"
  174. :visible.sync="telDl"
  175. @close="delDlClose"
  176. class="application-scheme-dialog"
  177. center>
  178. <i></i>
  179. <h4>为帮助您更好的使用产品,请先验证手机信息</h4>
  180. <p v-if="systemType==='kaoshi'">今日已有<span>34789</span>人 体验了考试系统</p>
  181. <p v-if="systemType==='peixun'">今日已有<span>34789</span>人 体验了培训系统</p>
  182. <el-form :model="telChangeDate" status-icon :rules="telRules" ref="ruleTelForm" class="application-scheme-form">
  183. <el-form-item prop="tel">
  184. <el-input v-model="telChangeDate.tel" placeholder="请输入手机号" class="dialog-input-tel"></el-input>
  185. </el-form-item>
  186. <div id="your-dom-id" class="nc-container"></div>
  187. <el-form-item prop="verification">
  188. <div class="verification">
  189. <el-input v-model="telChangeDate.verification" placeholder="请输入验证码" class="dialog-input-code"></el-input>
  190. <el-button @click="checkVerification" :disabled="btnTextDisabled" type="primary" class="jcrk-primary-btn">{{btnText}}</el-button>
  191. </div>
  192. </el-form-item>
  193. <el-form-item prop="company">
  194. <el-input v-model="telChangeDate.company" placeholder="请输入公司名称" class="dialog-input-tel"></el-input>
  195. </el-form-item>
  196. </el-form>
  197. <div class="application-scheme-btn" @click="dialogSave">进入使用</div>
  198. </el-dialog>
  199. </div>
  200. </template>
  201. <script>
  202. import { mapGetters } from 'vuex';
  203. export default {
  204. name: 'index',
  205. layout: 'templateA',
  206. watchQuery: true,
  207. async fetch({ $axios, store, query }) {
  208. try {
  209. const { data } = await $axios.post('/home/links/list');
  210. store.commit('SetFooterYouQingLianJie', data.data.data);
  211. } catch (e) {
  212. }
  213. },
  214. async asyncData({ $axios, store }) {
  215. // 设置选中菜单
  216. store.commit('setActiveNav', '/');
  217. let [res1, res2] = await Promise.all([
  218. await $axios.$post(`/home/news/carousel`, { 'newsClassifyId': 0 }).then(res => {
  219. return res;
  220. }),
  221. await $axios.$post(`/home/banner/list`, { 'code': 1 }).then(res => {
  222. return res;
  223. }),
  224. ]);
  225. return {
  226. topCarousels: res1.data.data||[],
  227. bannerList: res2.data.data||[],
  228. };
  229. },
  230. data() {
  231. return {
  232. SystemWidthFlag:false,// 判断是否是手机端,默认为false,默认为PC端
  233. topCarousels2: [],
  234. // 产品和服务
  235. cpfwKaoshiList: [
  236. { imgUrl: require(`~/static/images/client/index/kpfw-ks-img1.png`)},
  237. { imgUrl: require(`~/static/images/client/index/kpfw-ks-img2.png`) },
  238. { imgUrl: require(`~/static/images/client/index/kpfw-ks-img3.png`) },
  239. ],
  240. cpfwPeixunList: [
  241. { imgUrl: require(`~/static/images/client/index/kpfw-px-img1.png`)},
  242. { imgUrl: require(`~/static/images/client/index/kpfw-px-img2.png`) },
  243. { imgUrl: require(`~/static/images/client/index/kpfw-px-img3.png`) },
  244. ],
  245. cpfwSzkfList: [
  246. { imgUrl: require(`~/static/images/client/index/kpfw-szkf-img1.png`)},
  247. { imgUrl: require(`~/static/images/client/index/kpfw-szkf-img2.png`) },
  248. { imgUrl: require(`~/static/images/client/index/kpfw-szkf-img3.png`) },
  249. ],
  250. cpfwKczyList: [
  251. { imgUrl: require(`~/static/images/client/index/kpfw-ks-img1.png`)},
  252. { imgUrl: require(`~/static/images/client/index/kpfw-ks-img2.png`) },
  253. { imgUrl: require(`~/static/images/client/index/kpfw-ks-img3.png`) },
  254. ],
  255. // 客户logo
  256. customerImg1: require(`~/static/images/client/index/index-customer-img1.png`),
  257. customerImg2: require(`~/static/images/client/index/index-customer-img2.png`),
  258. customerImg3: require(`~/static/images/client/index/index-customer-img3.png`),
  259. customerImg4: require(`~/static/images/client/index/index-customer-img4.png`),
  260. customerImg5: require(`~/static/images/client/index/index-customer-img5.png`),
  261. customerImg6: require(`~/static/images/client/index/index-customer-img6.png`),
  262. customerImg7: require(`~/static/images/client/index/index-customer-img7.png`),
  263. customerImg8: require(`~/static/images/client/index/index-customer-img8.png`),
  264. customerImg9: require(`~/static/images/client/index/index-customer-img9.png`),
  265. customerImg10: require(`~/static/images/client/index/index-customer-img10.png`),
  266. customerImg11: require(`~/static/images/client/index/index-customer-img11.png`),
  267. customerImg12: require(`~/static/images/client/index/index-customer-img12.png`),
  268. customerImg13: require(`~/static/images/client/index/index-customer-img13.png`),
  269. customerImg14: require(`~/static/images/client/index/index-customer-img14.png`),
  270. customerImg15: require(`~/static/images/client/index/index-customer-img15.png`),
  271. customerImg16: require(`~/static/images/client/index/index-customer-img16.png`),
  272. customerImg17: require(`~/static/images/client/index/index-customer-img17.png`),
  273. customerImg18: require(`~/static/images/client/index/index-customer-img18.png`),
  274. customerImg19: require(`~/static/images/client/index/index-customer-img19.png`),
  275. customerImg20: require(`~/static/images/client/index/index-customer-img20.png`),
  276. activeIndex: '首页',
  277. activeName: 'first',// tab页签
  278. btnTextDisabled: false,
  279. telDl: false,
  280. btnText: '获取验证码',
  281. countdown: 60, // 60秒倒计时
  282. sliderData: {},
  283. appKey: 'FFFF0N00000000007EC0',
  284. telChangeDate: {},
  285. telRules: {
  286. tel: [
  287. { trigger: 'blur', required: true, message: '请输入手机号' },
  288. ],
  289. verification: [
  290. { trigger: 'blur', required: true, message: '请输入验证码' },
  291. ],
  292. },
  293. systemType:'kaoshi',
  294. };
  295. },
  296. head(){
  297. return {
  298. title: '在线考试系统_在线培训系统_在线答题系统_大连栋科软件工程有限公司',
  299. meta: [
  300. {
  301. name: 'description',
  302. content: '麦塔在线考试系统和在线培训系统是由大连栋科软件工程有限公司历经多年独立研发,有完全自主知识产权的在线考试系统、在线培训系统。麦塔在线答题系统、在线学习系统全面支持移动端,栋科10年教育软件开发经验,10大功能模块,365天实时跟踪服务。麦塔无纸化考试系统节省30%的考试成本,跨平台支持手机端考试、练习!'
  303. },
  304. {
  305. name: 'keywords',
  306. content: '在线考试系统,考试系统,在线培训系统,培训系统,在线答题系统,答题系统,在线学习系统,学习系统,答题软件'
  307. },
  308. /* {
  309. name: 'mobile-agent',
  310. content: 'format=html5;url=https://m.mtavip.com'
  311. },*/
  312. {
  313. name: 'bytedance-verification-code',
  314. content: 'EoTQ4NuK4pxkCu7efFJH'
  315. },
  316. {
  317. 'http-equiv': 'Cache-Control',
  318. content: 'no-transform'
  319. },
  320. ],
  321. link:[
  322. /* {
  323. rel:'alternate',
  324. media:'only screen and(max-width: 640px)',
  325. href:'https://m.mtavip.com'
  326. },*/
  327. {
  328. rel:'canonical',
  329. href:'https://www.mtavip.com/'
  330. }
  331. ]
  332. }
  333. },
  334. methods: {
  335. // 移动端跳转详情页
  336. goDetailsPage(data){
  337. this.$router.push({ name: data});
  338. },
  339. // 判断是否为移动端
  340. getSystemWidth(){
  341. var browserWidth=document.documentElement.clientWidth;
  342. if(browserWidth <= 768){
  343. this.SystemWidthFlag = true;
  344. }else{
  345. this.SystemWidthFlag = false;
  346. }
  347. },
  348. clickBanner(data){
  349. /* console.log(data);
  350. */ if(data.url){
  351. window.open(data.url)
  352. }
  353. // this.$router.push({ name: 'indexEducation' });
  354. },
  355. // 免费试用
  356. FreeTrial(type){
  357. var registerType = type;
  358. this.getSystemWidth();
  359. if(this.SystemWidthFlag){
  360. if(registerType===1) {
  361. window.open('https://cdnks.mtavip.com/mdist/#/webRegister?flug=1')
  362. }else {
  363. window.open('https://cdnks.mtavip.com/mdist/#/webRegister?flug=2')
  364. }
  365. }else{
  366. if(registerType===1){
  367. window.open('https://cdnks.mtavip.com/a/register?flug=1')
  368. }else{
  369. window.open('https://cdnks.mtavip.com/a/register?flug=2')
  370. }
  371. }
  372. },
  373. // 申请方案
  374. applyFun(type) {
  375. this.systemType = type;
  376. this.sliderFun();
  377. this.telDl = true;
  378. },
  379. dialogSave(){
  380. this.$refs.ruleTelForm.validate((valid) => {
  381. if (valid) {
  382. // 请求后台
  383. const options = {
  384. phone: this.telChangeDate.tel,
  385. code: this.telChangeDate.verification,
  386. company: this.telChangeDate.company,
  387. };
  388. this.$axios.$post('/develop/add',options).then(res=>{
  389. if (res.code === 0 && res.data) {
  390. this.telDl = false;
  391. this.$message.success('申请成功');
  392. } else {
  393. this.$message.error('申请失败');
  394. }
  395. });
  396. }
  397. });
  398. },
  399. delDlClose(){
  400. this.telDl =false
  401. this.$refs.ruleTelForm.resetFields();
  402. __nc.reset();
  403. },
  404. /**
  405. * 串联加载指定的脚本
  406. * 串联加载[异步]逐个加载,每个加载完成后加载下一个
  407. * 全部加载完成后执行回调
  408. * @param array|string 指定的脚本们
  409. * @param function 成功后回调的函数
  410. * @return array 所有生成的脚本元素对象数组
  411. * 异步加载js后运行回调函数callback / scripts 为数组或字符串
  412. */
  413. seriesLoadScripts(scripts, callback) {
  414. if (typeof (scripts) != 'object') {
  415. var scripts = [scripts];
  416. }
  417. var HEAD = document.getElementsByTagName('head').item(0) || document.documentElement;
  418. var s = new Array(), last = scripts.length - 1, recursiveLoad = function (i) { //递归
  419. s[i] = document.createElement('script');
  420. s[i].setAttribute('type', 'text/javascript');
  421. s[i].onload = s[i].onreadystatechange = function () { //Attach handlers for all browsers
  422. if (!/*@cc_on!@*/0 || this.readyState == 'loaded' || this.readyState == 'complete') {
  423. this.onload = this.onreadystatechange = null;
  424. this.parentNode.removeChild(this);
  425. if (i != last) {
  426. recursiveLoad(i + 1);
  427. } else if (typeof (callback) == 'function') {
  428. callback();
  429. }
  430. }
  431. };
  432. s[i].setAttribute('src', scripts[i]);
  433. HEAD.appendChild(s[i]);
  434. };
  435. recursiveLoad(0);
  436. },
  437. // 滑块
  438. sliderFun() {
  439. const nc_token = [this.appKey, (new Date()).getTime(), Math.random()].join(':');
  440. console.log(nc_token);
  441. const NC_Opt = {
  442. //声明滑动验证需要渲染的目标元素ID。
  443. renderTo: '#your-dom-id',
  444. //应用类型标识。它和使用场景标识(scene字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的appkey字段值,请务必正确填写。
  445. appkey: this.appKey,
  446. //使用场景标识。它和应用类型标识(appkey字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的scene值,请务必正确填写。
  447. scene: 'nc_message',
  448. //滑动验证码的主键,请勿将该字段定义为固定值。确保每个用户每次打开页面时,其token值都是不同的。系统默认的格式为:”您的appkey”+”时间戳”+”随机数”。
  449. token: nc_token,
  450. //滑动条的宽度。
  451. customWidth: 300,
  452. //业务键字段,可为空。为便于线上问题的排查,建议您按照线上问题定位文档中推荐的方法配置该字段值。
  453. trans: { 'key1': 'code0' },
  454. //通过Dom的ID属性自动填写trans业务键,可为空。建议您按照线上问题定位文档中推荐的方法配置该字段值。
  455. elementID: ['usernameID'],
  456. //是否自定义配置底层采集组件。如无特殊场景,请使用默认值(0),即不自定义配置底层采集组件。
  457. is_Opt: 0,
  458. //语言。PC端Web页面场景默认支持18国语言,详细配置方法请参见自定义文案与多语言文档。
  459. language: 'cn',
  460. //是否启用。一般情况,保持默认值(true)即可。
  461. isEnabled: true,
  462. //内部网络请求的超时时间。一般情况建议保持默认值(3000ms)。
  463. timeout: 3000,
  464. //允许服务器超时重复次数,默认5次。超过重复次数后将触发报错。
  465. times: 5,
  466. //用于自定义滑动验证各项请求的接口地址。一般情况,请勿配置该参数。
  467. apimap: {
  468. // 'analyze': '//a.com/nocaptcha/analyze.jsonp',
  469. // 'get_captcha': '//b.com/get_captcha/ver3',
  470. // 'get_captcha': '//pin3.aliyun.com/get_captcha/ver3'
  471. // 'get_img': '//c.com/get_img',
  472. // 'checkcode': '//d.com/captcha/checkcode.jsonp',
  473. // 'umid_Url': '//e.com/security/umscript/3.2.1/um.js',
  474. // 'uab_Url': '//aeu.alicdn.com/js/uac/909.js',
  475. // 'umid_serUrl': 'https://g.com/service/um.json'
  476. },
  477. //前端滑动验证通过时会触发该回调参数。您可以在该回调参数中将请求标识(token)、会话ID(sessionid)、签名串(sig)字段记录下来,随业务请求一同发送至您的服务端调用验签。
  478. callback: (data) => {
  479. this.sliderData = Object.assign({}, data, {
  480. appkey: NC_Opt.appkey,
  481. scene: NC_Opt.scene,
  482. });
  483. console.log( this.sliderData);
  484. },
  485. };
  486. let date11 = () => {
  487. let _date = new Date();
  488. let year = _date.getFullYear().toString();
  489. let month = _date.getMonth().toString();
  490. let day = _date.getDate().toString();
  491. let a = _date.getHours().toString();
  492. let b = _date.getMinutes().toString();
  493. let c = _date.getSeconds().toString();
  494. return year + month + day + a + b + c;
  495. };
  496. let c = date11();
  497. const scripts = [
  498. `https://g.alicdn.com/sd/ncpc/nc.js?t=${c}`,
  499. ];
  500. this.seriesLoadScripts(scripts, function () {
  501. var nc = new noCaptcha(NC_Opt);
  502. nc.upLang('cn', {
  503. _startTEXT: '请按住滑块,拖动到最右边',
  504. _yesTEXT: '验证通过',
  505. _error300: '哎呀,出错了,点击<a href="javascript:__nc.reset()">刷新</a>再来一次',
  506. _errorNetwork: '网络不给力,请<a href="javascript:__nc.reset()">点击刷新</a>',
  507. });
  508. });
  509. },
  510. // 倒计时60秒
  511. setTime() {
  512. if (this.countdown === 0) {
  513. this.btnTextDisabled = false;
  514. this.btnText = '免费获取验证码';
  515. this.countdown = 60;
  516. } else {
  517. this.btnTextDisabled = true;
  518. this.btnText = '重新发送(' + this.countdown + 's)';
  519. this.countdown--;
  520. setTimeout(() => {
  521. this.setTime();
  522. }, 1000);
  523. }
  524. },
  525. // 验证码
  526. checkVerification() {
  527. if (this.telChangeDate.tel === undefined) {
  528. this.$message.error('请输入手机号');
  529. return;
  530. }
  531. if (this.sliderData.appkey === undefined) {
  532. this.$message.error('请先进行滑块校验');
  533. return;
  534. }
  535. this.$axios.$post(`/develop/exists`,{ phone: this.telChangeDate.tel}).then(res=>{
  536. if (res.code === 0 && res.data) {
  537. let req = {
  538. 'appkey': this.sliderData.appkey,
  539. 'phone': this.telChangeDate.tel,
  540. 'scene': this.sliderData.scene,
  541. 'sessionid': this.sliderData.csessionid,
  542. 'sig': this.sliderData.sig,
  543. 'token': this.sliderData.token,
  544. 'type': 0,
  545. }
  546. this.$axios.$post('/sendCode',req).then(res=>{
  547. if (res.code === 0 && res.data) {
  548. this.setTime();
  549. }
  550. })
  551. } else {
  552. this.$message.error('手机号已存在');
  553. return false;
  554. }
  555. })
  556. },
  557. goExamPage(){
  558. this.$router.push({ name: 'examsystem' });
  559. },
  560. goPeixunPage(){
  561. this.$router.push({ name: 'trainsystem' });
  562. },
  563. goKechengPage(){
  564. this.$router.push({ name: 'courseware' });
  565. },
  566. goKechengZyPage(){
  567. this.$router.push({ name: 'courseResources' });
  568. },
  569. checkInfo(data) {
  570. const opt = {
  571. id: data.code,
  572. };
  573. this.$router.push({ name: 'news-id', params: opt });
  574. },
  575. },
  576. computed: {
  577. baseUrl() {
  578. return this.getBaseUrl;
  579. },
  580. ...mapGetters(['getBaseUrl']),
  581. },
  582. mounted() {
  583. this.getSystemWidth();
  584. }
  585. };
  586. </script>
  587. <style></style>