custom.vue 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172
  1. <template>
  2. <div class="client-course-page course-custom">
  3. <!-- 课程开发页 banner栏 -->
  4. <div :style="{backgroundImage: `url(${defaultImg})`}" class="client-course-banner"></div>
  5. <div class="top-btns-content client-container">
  6. <h4>课程定制类型</h4>
  7. <div class="btn-group">
  8. <div class="dingzhi-card" :class="{active: active==='dhl'}" @click="changeCardActive('dhl')">
  9. <i></i>
  10. <p>动画类课程</p>
  11. <span class="jiao"></span>
  12. </div>
  13. <div class="dingzhi-card" :class="{active: active==='spl'}" @click="changeCardActive('spl')">
  14. <i></i>
  15. <p>视频类课程</p>
  16. <span class="jiao"></span>
  17. </div>
  18. <div class="dingzhi-card" :class="{active: active==='h5l'}" @click="changeCardActive('h5l')">
  19. <i></i>
  20. <p>H5类课程</p>
  21. <span class="jiao"></span>
  22. </div>
  23. <div class="dingzhi-card" :class="{active: active==='ppt'}" @click="changeCardActive('ppt')">
  24. <i></i>
  25. <p>PPT定制及美化</p>
  26. <span class="jiao"></span>
  27. </div>
  28. </div>
  29. </div>
  30. <div class="course-content client-container" v-if="active === 'dhl'">
  31. <h4>动画类课程</h4>
  32. <p>动画类课程不受限于人员和场地,比较方便、生动形象地呈现知识内容。主要包含有:图文课程、情景动画课程、交互式课程、三分屏课程、SCORM框架式课程。适用各种行业:</p>
  33. <div class="video-container">
  34. <div class="video-box">
  35. <span><img :src="courseVideoImg1" alt="教育培训业"><i @click="playVideo(0)"></i></span>
  36. <p>教育培训业</p>
  37. </div>
  38. <div class="video-box">
  39. <span><img :src="courseVideoImg2" alt="金融保险业"><i @click="playVideo(1)"></i></span>
  40. <p>金融保险业</p>
  41. </div>
  42. <div class="video-box">
  43. <span><img :src="courseVideoImg3" alt="食品餐饮业"><i @click="playVideo(2)"></i></span>
  44. <p>食品餐饮业</p>
  45. </div>
  46. <div class="video-box">
  47. <span><img :src="courseVideoImg4" alt="生产制造业"><i @click="playVideo(3)"></i></span>
  48. <p>生产制造业</p>
  49. </div>
  50. <div class="video-box">
  51. <span><img :src="courseVideoImg5" alt="信息通讯业"><i @click="playVideo(4)"></i></span>
  52. <p>信息通讯业</p>
  53. </div>
  54. <div class="video-box">
  55. <span><img :src="courseVideoImg6" alt="汽车销售业"><i @click="playVideo(5)"></i></span>
  56. <p>汽车销售业</p>
  57. </div>
  58. </div>
  59. <a class="zixun-online" href="https://p.qiao.baidu.com/cps/chat?siteId=17930048&userId=40179606&siteToken=e767a987c8404575246ab0084fb2c9bd">在线咨询</a>
  60. </div>
  61. <div class="course-content client-container" v-if="active === 'spl'">
  62. <h4>视频类课程</h4>
  63. <p>视频类课程可以直观形象地呈现知识内容。主要包含有:企业宣传片、实验操作课程、课堂实录课程、会议访谈等等。动画类课程也可以导出成MP4视频格式文件呈现。适用各种行业:</p>
  64. <div class="video-container">
  65. <div class="video-box">
  66. <span><img :src="courseVideoImg7" alt="能源化工业"><i @click="playVideo(6)"></i></span>
  67. <p>能源化工业</p>
  68. </div>
  69. <div class="video-box">
  70. <span><img :src="courseVideoImg8" alt="金融保险业"><i @click="playVideo(7)"></i></span>
  71. <p>金融保险业</p>
  72. </div>
  73. <div class="video-box">
  74. <span><img :src="courseVideoImg9" alt="教育培训业"><i @click="playVideo(8)"></i></span>
  75. <p>教育培训业</p>
  76. </div>
  77. <div class="video-box">
  78. <span><img :src="courseVideoImg10" alt="管理培训业"><i @click="playVideo(9)"></i></span>
  79. <p>管理培训业</p>
  80. </div>
  81. <div class="video-box">
  82. <span><img :src="courseVideoImg11" alt="食品餐饮业"><i @click="playVideo(10)"></i></span>
  83. <p>食品餐饮业</p>
  84. </div>
  85. <div class="video-box">
  86. <span><img :src="courseVideoImg12" alt="服务零售业"><i @click="playVideo(11)"></i></span>
  87. <p>服务零售业</p>
  88. </div>
  89. </div>
  90. <a class="zixun-online" href="https://p.qiao.baidu.com/cps/chat?siteId=17930048&userId=40179606&siteToken=e767a987c8404575246ab0084fb2c9bd">在线咨询</a>
  91. </div>
  92. <div class="course-content client-container" v-if="active === 'h5l'">
  93. <h4>H5类课程</h4>
  94. <p>通用HTML5技术、将图文、互动测试、动画视频、游戏等多种形式结合在一起,课程交互性强、学员参与程度高。主要包含有:图文H5、游戏H5等。</p>
  95. <div class="video-container">
  96. <div class="video-box">
  97. <span><img :src="courseVideoImg13" alt="现代制造业"><i @click="playVideo(12)"></i></span>
  98. <p>现代制造业</p>
  99. </div>
  100. <div class="video-box">
  101. <span><img :src="courseVideoImg14" alt="教育培训业"><i @click="playVideo(13)"></i></span>
  102. <p>教育培训业</p>
  103. </div>
  104. <div class="video-box">
  105. <span><img :src="courseVideoImg15" alt="物流业"><i @click="playVideo(14)"></i></span>
  106. <p>物流业</p>
  107. </div>
  108. </div>
  109. <a class="zixun-online" href="https://p.qiao.baidu.com/cps/chat?siteId=17930048&userId=40179606&siteToken=e767a987c8404575246ab0084fb2c9bd">在线咨询</a>
  110. </div>
  111. <div class="course-content client-container" v-if="active === 'ppt'">
  112. <h4>PPT定制及美化</h4>
  113. <p>现在PPT正成为人们工作生活的重要组成部分,在工作汇报、企业宣传、产品推介、婚礼庆典、项目竞标、管理咨询等领域发挥重大的作用。麦塔曾多次为客户在各种大赛中取得前三甲的优异成绩。</p>
  114. <div class="video-container">
  115. <div class="video-box">
  116. <span><img :src="courseVideoImg16" alt="金融保险业"><i @click="playVideo(15)"></i></span>
  117. <p>金融保险业</p>
  118. </div>
  119. <div class="video-box">
  120. <span><img :src="courseVideoImg17" alt="教育培训业"><i @click="playVideo(16)"></i></span>
  121. <p>教育培训业</p>
  122. </div>
  123. <div class="video-box">
  124. <span><img :src="courseVideoImg18" alt="生产制造业"><i @click="playVideo(17)"></i></span>
  125. <p>生产制造业</p>
  126. </div>
  127. </div>
  128. <a class="zixun-online" href="https://p.qiao.baidu.com/cps/chat?siteId=17930048&userId=40179606&siteToken=e767a987c8404575246ab0084fb2c9bd">在线咨询</a>
  129. </div>
  130. <div class="course-content-wrap">
  131. <div class="course-form-bg"></div>
  132. <div class="form-wrap">
  133. <h4>课程定制在线报价</h4>
  134. <p>栋科客服人员会在30分钟内与你取得联系</p>
  135. <div class="baojia-form">
  136. <p class="form-f1"><i></i>已有 {{ custom_sum }} 位客户成功报价</p>
  137. <div class="form-f2">
  138. <el-input v-model="custom_phone" placeholder="请输入手机号" class="dialog-input-tel height-63 form-input"></el-input>
  139. </div>
  140. <div class="form-f3">
  141. <div id="your-dom-id" class="nc-container"></div>
  142. </div>
  143. <div class="form-row-col form-f4">
  144. <el-input v-model="custom_code" placeholder="请输入验证码" class="dialog-input-code height-63 form-input"></el-input>
  145. <el-button @click="checkVerification" :disabled="btnTextDisabled" class="custom-code-btn" >{{btnText}}</el-button>
  146. </div>
  147. <div class="form-f5">
  148. <el-input v-model="custom_name" placeholder="请输入您的称呼(必填)" class="dialog-input-tel height-63 form-input"></el-input>
  149. </div>
  150. <el-button class="form-f6" type="primary" @click="handleYuyue">预约咨询顾客</el-button>
  151. </div>
  152. <div class="form-f7" v-if="userList.length">
  153. <div v-swiper:mySwiper="swiperOption" class="swiper-container">
  154. <div class="swiper-wrapper">
  155. <div class="swiper-slide div-row" v-for=" (d,index) in userData" :key="index">
  156. <span class="icon-w1"><i></i><span>{{d.chenghu}}</span></span><span>{{d.phone}}</span><span>{{d.timer}}</span>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. </div>
  162. </div>
  163. <!-- 视频播放弹窗 -->
  164. <el-dialog
  165. :title="title"
  166. :visible.sync="videoDialogFlag"
  167. @close="closeVideoDialog"
  168. class="course-video-dialog"
  169. center>
  170. <video controls :src="source" class="course-video-box"></video>
  171. </el-dialog>
  172. </div>
  173. </template>
  174. <script>
  175. import Swiper, {Autoplay} from 'swiper';
  176. Swiper.use([Autoplay]);
  177. export default {
  178. name: 'custom',
  179. layout: 'templateB',
  180. async asyncData({ $axios, store }) {
  181. // 设置选中菜单
  182. store.commit('setActiveNav', '/courseware');
  183. let [res1, res2, res3] = await Promise.all([
  184. await $axios.$post(`/home/news/carousel`,{'newsClassifyId':0,'keyword':'课程'}).then(res=>{
  185. return res
  186. }),
  187. await $axios.$post(`/develop/sum`,{}).then(res=>{
  188. return res
  189. }),
  190. await $axios.$post(`/develop/userlist`,{}).then(res=>{
  191. return res
  192. }),
  193. ])
  194. return {
  195. topCarousels : res1.data.data ||[],
  196. custom_sum: res2.data || 0,
  197. userList: res3.data.data || []
  198. }
  199. },
  200. components: {
  201. mySwiper: Swiper
  202. },
  203. data() {
  204. return {
  205. swiperOption: {
  206. autoplay: {
  207. delay: 2000,
  208. },
  209. height: 25,
  210. direction: 'vertical',
  211. paginationClickable: true,
  212. speed: 800,
  213. loop: true,
  214. observer: true,
  215. observeParents: true,
  216. autoplayDisableOnInteraction: false,
  217. allowTouchMove: false,
  218. },
  219. userData: [],
  220. videoDialogFlag:false,
  221. source:'',
  222. footerText:'',
  223. title:'',
  224. custom_phone: '',
  225. custom_code: '',
  226. custom_name: '',
  227. bannerList: [],
  228. defaultImg: require(`~/static/images/client/course/course-banner-background-dingzhi.jpg`),
  229. active: 'dhl',
  230. // 动画类
  231. courseVideoImg1: require(`~/static/images/client/course/videoImgs/dh06.jpg`),
  232. courseVideoImg2: require(`~/static/images/client/course/videoImgs/dh05.jpg`),
  233. courseVideoImg3: require(`~/static/images/client/course/videoImgs/dh02.jpg`),
  234. courseVideoImg4: require(`~/static/images/client/course/videoImgs/dh03.jpg`),
  235. courseVideoImg5: require(`~/static/images/client/course/videoImgs/dh01.jpg`),
  236. courseVideoImg6: require(`~/static/images/client/course/videoImgs/dh04.jpg`),
  237. // 视频类
  238. courseVideoImg7: require(`~/static/images/client/course/videoImgs/sp02.jpg`),
  239. courseVideoImg8: require(`~/static/images/client/course/videoImgs/sp05.jpg`),
  240. courseVideoImg9: require(`~/static/images/client/course/videoImgs/sp06.jpg`),
  241. courseVideoImg10: require(`~/static/images/client/course/videoImgs/sp04.jpg`),
  242. courseVideoImg11: require(`~/static/images/client/course/videoImgs/sp01.jpg`),
  243. courseVideoImg12: require(`~/static/images/client/course/videoImgs/sp07.jpg`),
  244. // H5类
  245. courseVideoImg13: require(`~/static/images/client/course/videoImgs/h501.jpg`),
  246. courseVideoImg14: require(`~/static/images/client/course/videoImgs/h503.jpg`),
  247. courseVideoImg15: require(`~/static/images/client/course/videoImgs/h502.jpg`),
  248. // PPT类
  249. courseVideoImg16: require(`~/static/images/client/course/videoImgs/ppt02.jpg`),
  250. courseVideoImg17: require(`~/static/images/client/course/videoImgs/ppt03.jpg`),
  251. courseVideoImg18: require(`~/static/images/client/course/videoImgs/ppt01.jpg`),
  252. videoArray:[
  253. // 动画类
  254. {
  255. url:'https://spdb.mtavip.com/sv/27efd842-18561fc1359/27efd842-18561fc1359.mp4',
  256. title:'教育培训业',
  257. },
  258. {
  259. url:'https://spdb.mtavip.com/sv/42dd80cd-18561fc4473/42dd80cd-18561fc4473.mp4',
  260. title:'金融保险业',
  261. },
  262. {
  263. url:'https://spdb.mtavip.com/sv/523e5af9-18561fd1e6e/523e5af9-18561fd1e6e.mp4',
  264. title:'食品餐饮业',
  265. },
  266. {
  267. url:'https://spdb.mtavip.com/sv/4d636497-18561fcd419/4d636497-18561fcd419.mp4',
  268. title:'生产制造业',
  269. },
  270. {
  271. url:'https://spdb.mtavip.com/sv/18668c2a-18561fd26d5/18668c2a-18561fd26d5.mp4',
  272. title:'信息通讯业',
  273. },
  274. {
  275. url:'https://spdb.mtavip.com/sv/e229e54-18561fca834/e229e54-18561fca834.mp4',
  276. title:'汽车销售业',
  277. },
  278. // 视频类
  279. {
  280. url:'https://spdb.mtavip.com/sv/41cf4d2a-18561fe04f9/41cf4d2a-18561fe04f9.mp4',
  281. title:'能源化工业',
  282. },
  283. {
  284. url:'https://spdb.mtavip.com/sv/5c0f0385-18561fdeb92/5c0f0385-18561fdeb92.mp4',
  285. title:'金融保险业',
  286. },
  287. {
  288. url:'https://spdb.mtavip.com/sv/197050f3-18561fda180/197050f3-18561fda180.mp4',
  289. title:'教育培训业',
  290. },
  291. {
  292. url:'https://spdb.mtavip.com/sv/ab98bc0-18561fd9278/ab98bc0-18561fd9278.mp4',
  293. title:'管理培训业',
  294. },
  295. {
  296. url:'https://spdb.mtavip.com/sv/cf564e1-18561fea3c8/cf564e1-18561fea3c8.mp4',
  297. title:'食品餐饮业',
  298. },
  299. {
  300. url:'https://spdb.mtavip.com/sv/c0acb47-18561fd277e/c0acb47-18561fd277e.mp4',
  301. title:'服装零售业',
  302. },
  303. // h5 类
  304. {
  305. url:'https://spdb.mtavip.com/sv/443e4168-18561fbbaa4/443e4168-18561fbbaa4.mp4',
  306. title:'现代制造业',
  307. },
  308. {
  309. url:'https://spdb.mtavip.com/sv/70cd938-18561fbba23/70cd938-18561fbba23.mp4',
  310. title:'教育培训业',
  311. },
  312. {
  313. url:'https://spdb.mtavip.com/sv/3e031aef-18561fbba3e/3e031aef-18561fbba3e.mp4',
  314. title:'物流业',
  315. },
  316. // PPT
  317. {
  318. url:'https://spdb.mtavip.com/sv/3c6f248b-18561fbba53/3c6f248b-18561fbba53.mp4',
  319. title:'金融保险业',
  320. },
  321. {
  322. url:'https://spdb.mtavip.com/sv/1afd4571-18561fbba37/1afd4571-18561fbba37.mp4',
  323. title:'教育培训业',
  324. },
  325. {
  326. url:'https://spdb.mtavip.com/sv/5fe3406b-18561fc1222/5fe3406b-18561fc1222.mp4',
  327. title:'生产制造业',
  328. },
  329. ],
  330. btnTextDisabled: false,
  331. btnText: '获取验证码',
  332. countdown: 60, // 60秒倒计时
  333. sliderData: {},
  334. appKey: 'FFFF0N00000000007EC0',
  335. };
  336. },
  337. head(){
  338. return {
  339. SystemWidthFlag:false,// 判断是否是手机端,默认为false,默认为PC端
  340. title: '多媒体课件制作_视频课件制作_flash课件制作_【栋科课程开发团队】',
  341. meta: [
  342. {
  343. name: 'keywords',
  344. content: '课件制作,课件制作公司,课件设计,ppt课件制作'
  345. },
  346. {
  347. name:'description',
  348. content:'栋科软件拥有国内专业、成熟的设计团队,丰富的电子课程制作经验,业务方向包括教学设计体验、图文内容演示、情景动漫、AR/VR演示等,在院校教育、零售连锁行业、汽车行业、金融等12大行业课程开发经验超过10年,规范可靠的研发流程、完善的质量评估和卓越的项目管理体系,能高效稳定地保障支付。'
  349. }
  350. ],
  351. }
  352. },
  353. methods: {
  354. getName() {},
  355. getTel() {},
  356. getTime() {},
  357. gozixun() {
  358. window.href = "https://p.qiao.baidu.com/cps/chat?siteId=17930048&userId=40179606&siteToken=e767a987c8404575246ab0084fb2c9bd";
  359. },
  360. closeVideoDialog() {
  361. this.videoDialogFlag = false;
  362. this.source = '';
  363. this.footerText = '';
  364. this.title = '';
  365. },
  366. /**
  367. * 串联加载指定的脚本
  368. * 串联加载[异步]逐个加载,每个加载完成后加载下一个
  369. * 全部加载完成后执行回调
  370. * @param array|string 指定的脚本们
  371. * @param function 成功后回调的函数
  372. * @return array 所有生成的脚本元素对象数组
  373. * 异步加载js后运行回调函数callback / scripts 为数组或字符串
  374. */
  375. seriesLoadScripts(scripts, callback) {
  376. if (typeof (scripts) != 'object') {
  377. var scripts = [scripts];
  378. }
  379. var HEAD = document.getElementsByTagName('head').item(0) || document.documentElement;
  380. var s = new Array(), last = scripts.length - 1, recursiveLoad = function (i) { //递归
  381. s[i] = document.createElement('script');
  382. s[i].setAttribute('type', 'text/javascript');
  383. s[i].onload = s[i].onreadystatechange = function () { //Attach handlers for all browsers
  384. if (!/*@cc_on!@*/0 || this.readyState == 'loaded' || this.readyState == 'complete') {
  385. this.onload = this.onreadystatechange = null;
  386. this.parentNode.removeChild(this);
  387. if (i != last) {
  388. recursiveLoad(i + 1);
  389. } else if (typeof (callback) == 'function') {
  390. callback();
  391. }
  392. }
  393. };
  394. s[i].setAttribute('src', scripts[i]);
  395. HEAD.appendChild(s[i]);
  396. };
  397. recursiveLoad(0);
  398. },
  399. // 滑块
  400. sliderFun() {
  401. const nc_token = [this.appKey, (new Date()).getTime(), Math.random()].join(':');
  402. console.log(nc_token);
  403. const NC_Opt = {
  404. //声明滑动验证需要渲染的目标元素ID。
  405. renderTo: '#your-dom-id',
  406. //应用类型标识。它和使用场景标识(scene字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的appkey字段值,请务必正确填写。
  407. appkey: this.appKey,
  408. //使用场景标识。它和应用类型标识(appkey字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的scene值,请务必正确填写。
  409. scene: 'nc_message',
  410. //滑动验证码的主键,请勿将该字段定义为固定值。确保每个用户每次打开页面时,其token值都是不同的。系统默认的格式为:”您的appkey”+”时间戳”+”随机数”。
  411. token: nc_token,
  412. //滑动条的宽度。
  413. customWidth: 300,
  414. //业务键字段,可为空。为便于线上问题的排查,建议您按照线上问题定位文档中推荐的方法配置该字段值。
  415. trans: { 'key1': 'code0' },
  416. //通过Dom的ID属性自动填写trans业务键,可为空。建议您按照线上问题定位文档中推荐的方法配置该字段值。
  417. elementID: ['usernameID'],
  418. //是否自定义配置底层采集组件。如无特殊场景,请使用默认值(0),即不自定义配置底层采集组件。
  419. is_Opt: 0,
  420. //语言。PC端Web页面场景默认支持18国语言,详细配置方法请参见自定义文案与多语言文档。
  421. language: 'cn',
  422. //是否启用。一般情况,保持默认值(true)即可。
  423. isEnabled: true,
  424. //内部网络请求的超时时间。一般情况建议保持默认值(3000ms)。
  425. timeout: 3000,
  426. //允许服务器超时重复次数,默认5次。超过重复次数后将触发报错。
  427. times: 5,
  428. //用于自定义滑动验证各项请求的接口地址。一般情况,请勿配置该参数。
  429. apimap: {
  430. // 'analyze': '//a.com/nocaptcha/analyze.jsonp',
  431. // 'get_captcha': '//b.com/get_captcha/ver3',
  432. // 'get_captcha': '//pin3.aliyun.com/get_captcha/ver3'
  433. // 'get_img': '//c.com/get_img',
  434. // 'checkcode': '//d.com/captcha/checkcode.jsonp',
  435. // 'umid_Url': '//e.com/security/umscript/3.2.1/um.js',
  436. // 'uab_Url': '//aeu.alicdn.com/js/uac/909.js',
  437. // 'umid_serUrl': 'https://g.com/service/um.json'
  438. },
  439. //前端滑动验证通过时会触发该回调参数。您可以在该回调参数中将请求标识(token)、会话ID(sessionid)、签名串(sig)字段记录下来,随业务请求一同发送至您的服务端调用验签。
  440. callback: (data) => {
  441. this.sliderData = Object.assign({}, data, {
  442. appkey: NC_Opt.appkey,
  443. scene: NC_Opt.scene,
  444. });
  445. console.log( this.sliderData);
  446. },
  447. };
  448. let date11 = () => {
  449. let _date = new Date();
  450. let year = _date.getFullYear().toString();
  451. let month = _date.getMonth().toString();
  452. let day = _date.getDate().toString();
  453. let a = _date.getHours().toString();
  454. let b = _date.getMinutes().toString();
  455. let c = _date.getSeconds().toString();
  456. return year + month + day + a + b + c;
  457. };
  458. let c = date11();
  459. const scripts = [
  460. `https://g.alicdn.com/sd/ncpc/nc.js?t=${c}`,
  461. ];
  462. this.seriesLoadScripts(scripts, function () {
  463. var nc = new noCaptcha(NC_Opt);
  464. nc.upLang('cn', {
  465. _startTEXT: '请按住滑块,拖动到最右边',
  466. _yesTEXT: '验证通过',
  467. _error300: '哎呀,出错了,点击<a href="javascript:__nc.reset()">刷新</a>再来一次',
  468. _errorNetwork: '网络不给力,请<a href="javascript:__nc.reset()">点击刷新</a>',
  469. });
  470. });
  471. },
  472. // 验证码
  473. checkVerification() {
  474. if (this.sliderData.appkey === undefined) {
  475. this.$message.error('请先通过滑块校验');
  476. return;
  477. }
  478. this.$axios.$post(`/develop/exists`,{ phone: this.custom_phone}).then(res=>{
  479. if (res.code === 0 && res.data) {
  480. let req = {
  481. 'appkey': this.sliderData.appkey,
  482. 'phone': this.custom_phone,
  483. 'scene': this.sliderData.scene,
  484. 'sessionid': this.sliderData.csessionid,
  485. 'sig': this.sliderData.sig,
  486. 'token': this.sliderData.token,
  487. 'type': 0,
  488. }
  489. this.$axios.$post('/sendCode',req).then(res=>{
  490. if (res.code === 0 && res.data) {
  491. this.setTime();
  492. }else {
  493. this.$message.error(res.msg||'手机号已存在');
  494. }
  495. })
  496. } else {
  497. this.$message.error(res.msg||'手机号已存在');
  498. return false;
  499. }
  500. })
  501. },
  502. // 倒计时60秒
  503. setTime() {
  504. if (this.countdown === 0) {
  505. this.btnTextDisabled = false;
  506. this.btnText = '获取验证码';
  507. this.countdown = 60;
  508. }else if(this.countdown === -1){
  509. this.btnTextDisabled = false;
  510. this.btnText = '获取验证码';
  511. this.countdown = 60;
  512. } else {
  513. this.btnTextDisabled = true;
  514. this.btnText = '重新发送(' + this.countdown + 's)';
  515. this.countdown--;
  516. setTimeout(() => {
  517. this.setTime();
  518. }, 1000);
  519. }
  520. },
  521. handleYuyue() {
  522. const tag = {
  523. 'dhl':1,
  524. 'spl':2,
  525. 'h5l':3,
  526. 'ppt':4,
  527. }
  528. const opt = {
  529. type: tag[this.active],
  530. phone: this.custom_phone,
  531. code: this.custom_code,
  532. chenghu: this.custom_name
  533. }
  534. if (!this.custom_phone) {
  535. this.$message.error("请填写手机号");
  536. return;
  537. }
  538. if (!this.custom_code) {
  539. this.$message.error("验证码不能为空");
  540. return;
  541. }
  542. if (!this.custom_name) {
  543. this.$message.error("请输入您的称呼");
  544. return;
  545. }
  546. this.confirmTl(opt)
  547. },
  548. playVideo(index) {
  549. this.videoDialogFlag = true
  550. this.source = this.videoArray[index].url
  551. this.title = this.videoArray[index].title
  552. },
  553. changeCardActive(code) {
  554. this.active = code;
  555. },
  556. // 判断是否为移动端
  557. getSystemWidth(){
  558. var browserWidth=document.documentElement.clientWidth;
  559. if(browserWidth <= 768){
  560. this.SystemWidthFlag = true;
  561. }else{
  562. this.SystemWidthFlag = false;
  563. }
  564. },
  565. confirmTl(options){
  566. // 请求后台
  567. this.$axios.$post('/develop/add',options).then(res=>{
  568. if (res.code === 0 && res.data) {
  569. this.$message.success('申请成功');
  570. } else {
  571. this.$message.error('申请失败');
  572. }
  573. });
  574. },
  575. clickBanner() {},
  576. formatUserData() {
  577. const userList = this.userList.filter(user => user.chenghu)
  578. const newUserList = userList.map(user => {
  579. const chenghu = user.chenghu.length > 2 ? `${user.chenghu[0]}**`: `${user.chenghu[0]}*`;
  580. const ps = user.phone.split('');
  581. const phone = `${ps[0]}${ps[1]}${ps[2]}****${ps[7]}${ps[8]}${ps[9]}${ps[10]}`;
  582. return {
  583. chenghu: chenghu,
  584. phone,
  585. timer: this.getTimeString(user.endSecond)
  586. }
  587. })
  588. this.userData = newUserList;
  589. },
  590. getTimeString(timer) {
  591. let m10 = 10 * 60 * 1000;
  592. let m30 = 30 * 60 * 1000;
  593. let h1 = 60 * 60 * 1000 ;
  594. let h6 = 6 * 60 * 60 * 1000;
  595. let d1 = 24 * 60 * 60 * 1000;
  596. let z1 = 7 * 24 * 60 * 60 * 1000;
  597. let M1 = 30 * 24 * 60 * 60 * 1000;
  598. if (timer > M1) {
  599. return `1个月前`
  600. }
  601. if(timer > z1) {
  602. return `1周前`
  603. }
  604. if(timer > d1) {
  605. return `1天前`
  606. }
  607. if (timer > h6) {
  608. return `6小时前`
  609. }
  610. if (timer > h1) {
  611. return `1小时前`
  612. }
  613. if(timer > m30) {
  614. return `30分钟前`
  615. }
  616. if(timer > m10) {
  617. return `10分中前`
  618. }
  619. return `刚刚`;
  620. }
  621. },
  622. mounted() {
  623. this.getSystemWidth();
  624. this.sliderFun();
  625. this.formatUserData();
  626. },
  627. beforeDestroy() {
  628. },
  629. };
  630. </script>
  631. <style lang="scss" scoped>
  632. .course-custom {
  633. .top-btns-content {
  634. margin: 175px auto 104px;
  635. @media (max-width: 768px){
  636. margin: 37px auto 0px;
  637. }
  638. h4 {
  639. height: 34px;
  640. font-size: 36px;
  641. font-weight: 400;
  642. text-align: center;
  643. @media (max-width: 768px){
  644. font-size: 24px;
  645. }
  646. }
  647. .btn-group {
  648. margin-top: 104px;
  649. display: flex;
  650. flex-direction: row;
  651. justify-content: space-between;
  652. @media (max-width: 768px) {
  653. flex-wrap: wrap;
  654. margin: 50px;
  655. }
  656. .dingzhi-card {
  657. width: 231px;
  658. height: 270px;
  659. border: 1px solid #126bff;
  660. border-radius: 10px;
  661. background: #fff;
  662. text-align: center;
  663. position: relative;
  664. @media (max-width: 768px) {
  665. width: 116px;
  666. margin-bottom: 40px;
  667. height: 135px;
  668. >p {
  669. font-size: 12px;
  670. font-weight: 400;
  671. text-align: center;
  672. color: #333333;
  673. }
  674. }
  675. &.active {
  676. background: linear-gradient(0deg,#c5deff 0%, #ffffff 99%);
  677. }
  678. > i {
  679. margin: 69px auto 0;
  680. display: block;
  681. height: 118px;
  682. width: 87px;
  683. background-repeat: no-repeat;
  684. @media (max-width: 768px) {
  685. margin: 30px auto 0;
  686. height: 80px;
  687. width: 60px;
  688. }
  689. }
  690. &:nth-child(1) {
  691. i {
  692. background-image: url("~static/images/client/course/btns/dingzhi-bt1.png");
  693. background-size: contain;
  694. }
  695. }
  696. &:nth-child(2) {
  697. i {
  698. background-image: url("~static/images/client/course/btns/dingzhi-bt2.png");
  699. background-size: contain;
  700. }
  701. }
  702. &:nth-child(3) {
  703. i {
  704. background-image: url("~static/images/client/course/btns/dingzhi-bt3.png");
  705. background-size: contain;
  706. }
  707. }
  708. &:nth-child(4) {
  709. i {
  710. background-image: url("~static/images/client/course/btns/dingzhi-bt4.png");
  711. background-size: contain;
  712. }
  713. }
  714. &.active .jiao {
  715. position: absolute;
  716. bottom: -10px;
  717. left: 50%;
  718. transform: translateX(-50%);
  719. width: 0;
  720. height: 0;
  721. border-top: 10px solid #126bff;
  722. border-right: 10px solid transparent;
  723. border-left: 10px solid transparent;
  724. }
  725. }
  726. }
  727. }
  728. .course-content{
  729. margin: 0 auto;
  730. text-align: center;
  731. >h4 {
  732. text-align: center;
  733. height: 34px;
  734. font-size: 36px;
  735. font-weight: 400;
  736. margin-top: 146px;
  737. margin-bottom: 57px;
  738. @media (max-width: 768px){
  739. height: 19px;
  740. font-size: 24px;
  741. margin-top: 5px;
  742. margin-bottom: 60px;
  743. }
  744. }
  745. >p {
  746. margin: 0 20px 100px;
  747. height: 50px;
  748. font-size: 18px;
  749. font-weight: 400;
  750. text-align: center;
  751. color: #333333;
  752. }
  753. .video-container {
  754. display: flex;
  755. flex-wrap: wrap;
  756. justify-content: space-between;
  757. margin-bottom: 70px;
  758. @media (max-width: 768px){
  759. margin-bottom: 20px;
  760. }
  761. .video-box {
  762. width: 30%;
  763. margin-bottom: 79px;
  764. text-align: center;
  765. @media (max-width: 768px){
  766. width: 100%;
  767. margin-bottom: 39px;
  768. }
  769. >span {
  770. position: relative;
  771. display: inline-block;
  772. }
  773. p {
  774. margin-top: 28px;
  775. height: 23px;
  776. font-size: 24px;
  777. font-weight: 400;
  778. color: #333333;
  779. @media (max-width: 768px){
  780. font-size: 16px;
  781. }
  782. }
  783. i:hover{background-image: url("~static/images/client/course/course-video-icon-a.svg");background-size: cover;background-position: bottom;}
  784. i{width: 48px;height: 48px;cursor: pointer;background-image: url("~static/images/client/course/course-video-icon.svg");display: inline-block;position: absolute;
  785. left: 50%;margin-left: -24px;z-index: 5;top: 50%;margin-top: -24px;background-size: cover;background-position: bottom;transition: all 0.5s;}
  786. img{transition: all 0.5s;}
  787. span:hover{img{transform: scale(1.1);}}
  788. }
  789. }
  790. .zixun-online {
  791. display: inline-block;
  792. width: 138px;
  793. height: 50px;
  794. background: #0065cd;
  795. border-radius: 6px;
  796. text-align: center;
  797. color: #ffffff;
  798. line-height: 48px;
  799. font-weight: 400;
  800. font-size: 16px;
  801. margin-bottom: 128px;
  802. @media (max-width: 768px) {
  803. margin: 0 auto 60px;
  804. line-height: 52px;
  805. font-size: 16px;
  806. }
  807. }
  808. }
  809. .course-content-wrap {
  810. position: relative;
  811. height: 800px;
  812. width: 100%;
  813. margin-bottom: 256px;
  814. @media (max-width: 768px) {
  815. margin-bottom: -100px;
  816. }
  817. .course-form-bg {
  818. height: 655px;
  819. background-image: url("~static/images/client/course/btns/course-bg-b1.png");
  820. @media (max-width: 768px) {
  821. height: 455px;
  822. }
  823. }
  824. .form-wrap {
  825. width: 540px;
  826. height: 800px;
  827. position: absolute;
  828. top: 0;
  829. left: 50%;
  830. transform: translateX(-50%);
  831. @media (max-width: 768px) {
  832. width: 80%;
  833. height: 600px;
  834. }
  835. >h4 {
  836. height: 59px;
  837. font-size: 61px;
  838. font-weight: 700;
  839. color: #fefefe;
  840. letter-spacing: 1.53px;
  841. text-align: center;
  842. margin-top: 73px;
  843. margin-bottom: 23px;
  844. @media (max-width: 768px) {
  845. font-size: 20px;
  846. margin-bottom: 10px;
  847. margin-top: 30px;
  848. }
  849. }
  850. >p {
  851. height: 26px;
  852. font-size: 27px;
  853. font-weight: 400;
  854. text-align: center;
  855. color: #ffffff;
  856. margin-bottom: 41px;
  857. @media (max-width: 768px) {
  858. font-size: 16px;
  859. }
  860. }
  861. .baojia-form {
  862. background: #fff;
  863. border-radius: 8px;
  864. padding: 50px 42px 80px;
  865. box-shadow: 0 3px 5px 2px #ccc;
  866. position: relative;
  867. @media (max-width: 768px) {
  868. padding: 25px 22px 40px;
  869. }
  870. }
  871. }
  872. .form-row-col {
  873. display: flex;
  874. justify-content: space-between;
  875. .dialog-input-code {
  876. flex:1;
  877. }
  878. .custom-code-btn {
  879. width: 164px;
  880. height:63px;
  881. margin-left: 17px;
  882. @media (max-width: 768px) {
  883. height: 32px;
  884. width: auto;
  885. }
  886. }
  887. }
  888. .height-63 {
  889. ::v-deep.el-input__inner {
  890. height: 63px;
  891. @media (max-width: 768px) {
  892. height: 40px;
  893. }
  894. }
  895. }
  896. .form-f1 {
  897. background-color: #ffebeb;
  898. margin-bottom: 20px;
  899. height: 17px;
  900. font-size: 16px;
  901. font-weight: 400;
  902. color: #FF0000;
  903. padding: 11px;
  904. @media (max-width: 768px) {
  905. font-size: 12px;
  906. margin-bottom: 10px;
  907. }
  908. > i {
  909. width: 15px;
  910. height: 15px;
  911. display: inline-block;
  912. background-image: url("~static/images/client/course/btns/course-icon-fire.png");
  913. background-size: contain;
  914. background-repeat: no-repeat;
  915. margin: 0 11px 0 11px;
  916. }
  917. }
  918. .form-f2 {
  919. margin-bottom: 20px;
  920. font-size: 18px;
  921. font-weight: 400;
  922. @media (max-width: 768px) {
  923. margin-bottom: 16px;
  924. font-size: 12px;
  925. }
  926. }
  927. .form-f3 {
  928. margin-bottom: 20px;
  929. font-size: 18px;
  930. font-weight: 400;
  931. @media (max-width: 768px) {
  932. margin-bottom: 16px;
  933. font-size: 12px;
  934. }
  935. div.nc-container ::v-deep #nc_1_wrapper {
  936. width: 100%;
  937. }
  938. }
  939. .form-f4 {
  940. margin-bottom: 20px;
  941. font-size: 18px;
  942. font-weight: 400;
  943. @media (max-width: 768px) {
  944. margin-bottom: 16px;
  945. font-size: 12px;
  946. }
  947. .custom-code-btn {
  948. font-size: 18px;
  949. font-weight: 400;
  950. @media (max-width: 768px) {
  951. font-size: 12px;
  952. height: 40px;
  953. }
  954. }
  955. }
  956. .form-f5 {
  957. margin-bottom: 40px;
  958. font-size: 18px;
  959. font-weight: 400;
  960. @media (max-width: 768px) {
  961. font-size: 12px;
  962. }
  963. }
  964. .form-f6 {
  965. width: 100%;
  966. margin-bottom: 40px;
  967. height: 63px;
  968. font-size: 24px;
  969. font-weight: 400;
  970. @media (max-width: 768px) {
  971. margin-bottom: 20px;
  972. font-size: 12px;
  973. height: 40px;
  974. }
  975. }
  976. .form-wrap .form-f7 {
  977. position: absolute;
  978. bottom: -40px;
  979. left: 0;
  980. width: 446px;
  981. padding: 20px 47px;
  982. background-color: #ffebeb;
  983. height: 15px;
  984. font-size: 16px;
  985. font-weight: 400;
  986. text-align: left;
  987. color: #ff0000;
  988. border-bottom-left-radius: 8px;
  989. border-bottom-right-radius: 8px;
  990. @media (max-width: 768px) {
  991. width: 100%;
  992. padding: 12px 0;
  993. bottom: 18px;
  994. }
  995. .hidden {
  996. display: none;
  997. }
  998. .swiper-wrapper {
  999. height: 25px;
  1000. }
  1001. .div-row {
  1002. display: flex;
  1003. justify-content: space-between;
  1004. align-items: center;
  1005. .icon-w1 {
  1006. display: flex;
  1007. align-items: center;
  1008. i {
  1009. width: 15px;
  1010. height: 15px;
  1011. display: inline-block;
  1012. background-image: url("~static/images/client/course/btns/course-icon-laba.png");
  1013. background-size: contain;
  1014. background-repeat: no-repeat;
  1015. margin-right: 5px;
  1016. }
  1017. }
  1018. @media (max-width: 768px) {
  1019. bottom: 15px;
  1020. line-height: 25px;
  1021. padding: 13px 23px;
  1022. width: 85%;
  1023. font-size: 12px;
  1024. }
  1025. }
  1026. }
  1027. .form-input {
  1028. ::v-deep.el-input__inner {
  1029. font-size: 18px;
  1030. font-weight: 400;
  1031. color: #999999;
  1032. line-height: 53px;
  1033. @media (max-width: 768px) {
  1034. font-size: 12px;
  1035. line-height: 30px;
  1036. }
  1037. }
  1038. }
  1039. }
  1040. }
  1041. </style>