index.vue 31 KB

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