custom.vue 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168
  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: false,
  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/course-video-img1.png`),
  232. courseVideoImg2: require(`~/static/images/client/course/course-video-img1.png`),
  233. courseVideoImg3: require(`~/static/images/client/course/course-video-img1.png`),
  234. courseVideoImg4: require(`~/static/images/client/course/course-video-img1.png`),
  235. courseVideoImg5: require(`~/static/images/client/course/course-video-img1.png`),
  236. courseVideoImg6: require(`~/static/images/client/course/course-video-img1.png`),
  237. // 视频类
  238. courseVideoImg7: require(`~/static/images/client/course/course-video-img1.png`),
  239. courseVideoImg8: require(`~/static/images/client/course/course-video-img1.png`),
  240. courseVideoImg9: require(`~/static/images/client/course/course-video-img1.png`),
  241. courseVideoImg10: require(`~/static/images/client/course/course-video-img1.png`),
  242. courseVideoImg11: require(`~/static/images/client/course/course-video-img1.png`),
  243. courseVideoImg12: require(`~/static/images/client/course/course-video-img1.png`),
  244. // H5类
  245. courseVideoImg13: require(`~/static/images/client/course/course-video-img1.png`),
  246. courseVideoImg14: require(`~/static/images/client/course/course-video-img1.png`),
  247. courseVideoImg15: require(`~/static/images/client/course/course-video-img1.png`),
  248. // PPT类
  249. courseVideoImg16: require(`~/static/images/client/course/course-video-img1.png`),
  250. courseVideoImg17: require(`~/static/images/client/course/course-video-img1.png`),
  251. courseVideoImg18: require(`~/static/images/client/course/course-video-img1.png`),
  252. videoArray:[
  253. {
  254. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  255. title:'教育培训业',
  256. },
  257. {
  258. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  259. title:'金融保险业',
  260. },
  261. {
  262. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  263. title:'食品餐饮业',
  264. },
  265. {
  266. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  267. title:'生产制造业',
  268. },
  269. {
  270. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  271. title:'信息通讯业',
  272. },
  273. {
  274. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  275. title:'汽车销售业',
  276. },
  277. {
  278. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  279. title:'汽车销售业',
  280. },
  281. {
  282. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  283. title:'汽车销售业',
  284. },
  285. {
  286. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  287. title:'汽车销售业',
  288. },
  289. {
  290. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  291. title:'汽车销售业',
  292. },
  293. {
  294. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  295. title:'汽车销售业',
  296. },
  297. {
  298. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  299. title:'汽车销售业',
  300. },
  301. {
  302. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  303. title:'汽车销售业',
  304. },
  305. {
  306. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  307. title:'汽车销售业',
  308. },
  309. {
  310. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  311. title:'汽车销售业',
  312. },
  313. {
  314. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  315. title:'汽车销售业',
  316. },
  317. {
  318. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  319. title:'汽车销售业',
  320. },
  321. {
  322. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.mp4',
  323. title:'汽车销售业',
  324. },
  325. {
  326. url:'https://spdb.mtavip.com/customerTrans/87321d8a03805711940e85451d6bcb0a/3d714c3c-174708975d8-0006-732a-c93-687b7.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: 10px 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>