custom.vue 33 KB

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