trainIndex.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645
  1. <template>
  2. <div class="m-right-block fr mh576">
  3. <div class="right-block-bd ng-scope" ui-view="myStudyContent" style="position: relative;">
  4. <div class="panel-tit clear">
  5. <p class="fl">推荐课程</p>
  6. <ul class="fr tips-intro" style="color:royalblue" @mouseover="showTip=true" @mouseleave="showTip=false" >
  7. <li class="fs15 tit">
  8. <i class="p-ico questiong-ico" style="margin-right: 0px;"/> 已将近退休年龄,是否还需要参加继续教育?
  9. </li>
  10. </ul>
  11. <div class="fr tip-card" v-show="showTip" >
  12. <div class="p20">
  13. <h3 >一、建设从业人员:</h3>
  14. <h5 style="margin: 8px;">1、安管人员:</h5>
  15. <h5 style="margin-left: 16px;">①企业主要负责人(A证):年龄18周岁以上,分管安全的技术负责人、安全总监到60岁,法定代表人没有年龄限制。</h5>
  16. <h5 style="margin-left: 16px;">②项目负责人(B证):年龄18周岁以上,65周岁以下。</h5>
  17. <h5 style="margin-left: 16px;">③安全生产管理人员(C证):年龄18周岁以上,60周岁以下。</h5>
  18. <h4 style="margin: 8px;">2、特种作业人员:年龄18周岁以上,男性55周岁以下,女性50周岁以下。</h4>
  19. <h4 style="margin: 8px;">3、八大员:年龄20周岁以上,60周岁以下。</h4>
  20. <h2 style="margin:8px 0 16px 0px;">二、执业注册人员:</h2>
  21. <h4 style="margin: 8px;">1、注册建造师(一级、二级)、注册监理工程师:年龄65周岁以下;</h4>
  22. <h4 style="margin: 8px;">2、其他执业资格注册证件无年龄要求。</h4>
  23. </div>
  24. </div>
  25. </div>
  26. <el-row class="pt-line mt20">
  27. <el-col :span="4" :xs="12">
  28. <el-button :class="{type_active : type==''}" class="type_item" type="text" @click="type=''">所有</el-button>
  29. </el-col>
  30. <el-col :span="4" :xs="12" v-for="item in typeList" :key="item.id" v-if="item.isOpen && item.isNew==1">
  31. <el-button :class="{type_active:item.name==type }" class="type_item" type="text" @click="type=item.name">{{item.name}} </el-button>
  32. </el-col>
  33. </el-row>
  34. <div class="mt10" v-if="type=='施工现场专业人员'">
  35. <p style="color: red;font-size: 16px;">
  36. 报名对象为:2020年度及以后由培训单位核发的和2021年度换发的“电子培训合格证”且每年度需参加继续教育人员
  37. </p>
  38. <p style="color: red;font-size: 16px;">
  39. 注意:继续教育学员请先下载
  40. <a style="color: blue;cursor: hand;" href="https://sm.hqedust.com/cdn/%E7%BB%A7%E7%BB%AD%E6%95%99%E8%82%B2%E5%A7%94%E6%89%98%E5%9F%B9%E8%AE%AD%E3%80%81%E6%89%BF%E8%AF%BA%E5%87%BD.doc">
  41. 《继续教育委托培训、承诺函》
  42. </a>
  43. ,填写并加盖单位公章后,在申请开通课程界面上传扫描件、并缴费
  44. </p>
  45. </div>
  46. <ul class="pt-line mt20" v-if="ndList.length>1">
  47. <li style="float: left;font-size: 16px;margin: 4px;padding: 4px;" >
  48. <span>课程年度:</span>
  49. </li>
  50. <li style="float: left;">
  51. <span :class="{type_active:nd==''}" class="nav-btn-years" @click="nd=''">所有</span>
  52. </li>
  53. <li v-for="item in ndList" style="float: left;">
  54. <span :class="{type_active:item==nd }" class="nav-btn-years" @click="nd=item">{{item}} </span>
  55. </li>
  56. <li style="float: left;">
  57. <input type="text" style="line-height: 1;padding: 10px"
  58. v-model="filterName"
  59. class="ui-ipt ng-pristine ng-valid filterName"
  60. placeholder="输入名字查找">
  61. </li>
  62. </ul>
  63. <ul class="m-course-list clear mt10 classlist">
  64. <li v-for="(item,index) in list.slice(page*size-size, page*size)" :key="item.course_id" class="pt-sola mt20 pb10">
  65. <div>
  66. <span v-if="item.isFinish==1" class="p-ico2 ico-passed"></span>
  67. <div class="img">
  68. <img :src="item.tb">
  69. <div class="year-label ng-binding">
  70. <span v-if="item.is_pay==0 && item.buyImg =='' && item.payNo == ''">
  71. 还未购买
  72. </span>
  73. <span v-else-if="item.is_pay==0" style="background-color: orange;">
  74. 等待审核
  75. </span>
  76. <span v-else-if="item.is_pay==2" style="background-color: #78335F;">申请驳回</span>
  77. <span v-else-if="!item.is_pass" style="background-color: blue;padding: 2px;border-radius: 2px;">在学习中</span>
  78. <span v-else style="background-color: green;padding: 2px;border-radius: 2px;">已经完成</span>
  79. </div>
  80. <div class="hover-block">
  81. <div class="mask-bg"></div>
  82. <el-button @click="gotoPlay(item.course_id)" v-if="item.is_pay==1" class="ui-btn">进入学习</el-button>
  83. <el-button @click="goPay(item)" v-else-if="item.is_pay==2 || !!item.buyImg" class="ui-btn btn-o">补充材料</el-button>
  84. <el-button @click="goPay(item)" v-else class="ui-btn btn-o">购买课程</el-button>
  85. </div>
  86. </div>
  87. <div class="tit"><a>{{item.name}}</a></div>
  88. <div class="info">
  89. <p class="w1"><span class="p-ico c1"></span> {{item.type}}</p>
  90. <p class="w2"><span class="p-ico c2"></span>{{item.nd||'2020'}}</p>
  91. <p class="w1">
  92. <span class="p-ico c5"></span> ¥{{item.fee/100}}元
  93. </p>
  94. <p class="w2">
  95. <span class="p-ico c3"></span> {{item.xs/10}}学时
  96. </p>
  97. </div>
  98. </div>
  99. </li>
  100. </ul>
  101. <el-pagination class="m-pages"
  102. @current-change="(page)=>{this.page=page}"
  103. :current-page="page"
  104. :page-size="size"
  105. layout="total, prev, pager, next"
  106. :total="list.length">
  107. </el-pagination>
  108. </div>
  109. <el-dialog class="fc tc" :visible.sync="loginDialog" :close-on-click-modal="false" width="500px" @close="loginDialog=false">
  110. <div class="login-dialog m-login">
  111. <un-login @login="login"></un-login>
  112. </div>
  113. </el-dialog>
  114. <el-dialog title="申请开通课程" :visible.sync="buyCourseDialog"
  115. width="900px" top="20px" align="center">
  116. <el-form label-width="80px" label-position="right" :inline="true" :model="buyForm" status-icon :rules="rules" ref="elForm">
  117. <el-row align="left">
  118. <el-col :lg="12" class="pl20 pr20">
  119. <el-form-item lable="报考岗位" prop="courseName">
  120. <label slot="label">报考岗位</label>
  121. <el-input v-model="buyForm.courseName" type="text" placeholder="报考岗位" style="width: 260px;"></el-input>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :lg="12" class="pl20 pr20">
  125. <el-form-item lable="证书编号" prop="rzCode">
  126. <label slot="label">证书编号</label>
  127. <el-input v-model="buyForm.rzCode" type="text" placeholder="证书编号无需填写" style="width: 260px;" />
  128. </el-form-item>
  129. </el-col>
  130. <!-- <el-row>
  131. <span style="color: red;padding:10px"> 请认真核实报考岗位与证书编号,本课程不支持退款</span>
  132. </el-row> -->
  133. <el-col :lg="12" class="pl20 pr20">
  134. <el-form-item lable="邮箱地址" prop="email">
  135. <label slot="label">邮箱地址</label>
  136. <el-input v-model="buyForm.email" type="textarea" placeholder="邮箱地址" style="width: 260px;"></el-input>
  137. </el-form-item>
  138. </el-col>
  139. <el-col :lg="12" class="pl20 pr20">
  140. <el-form-item lable="订单号" prop="payNo">
  141. <label slot="label">订单编号</label>
  142. <el-input v-model="buyForm.payNo" placeholder="输入订单编号后6位" style="width: 260px;" :minlength="6" :maxlength="6" show-word-limit ></el-input>
  143. </el-form-item>
  144. </el-col>
  145. </el-row>
  146. <el-row>
  147. <el-col :lg="12" class="pl20 pr20">
  148. <el-form-item lable="工作单位" prop="company">
  149. <label slot="label">工作单位</label>
  150. <el-input v-model="buyForm.company" type="textarea" placeholder="工作单位" style="width: 260px;"></el-input>
  151. </el-form-item>
  152. </el-col>
  153. <el-col :lg="12" class="pl20 pr20">
  154. <el-form-item lable="备注信息" prop="marks">
  155. <label slot="label">备注信息</label>
  156. <el-input v-model="buyForm.marks" type="textarea" placeholder="姓名+工种名称,例:张三+土建施工员" style="width: 260px;"></el-input>
  157. </el-form-item>
  158. </el-col>
  159. </el-row>
  160. <el-row v-if="type=='施工现场专业人员'">
  161. <div style="width: 700px;margin: 0 auto;text-align: left;color: red;">
  162. 提示:八大员继续教育承诺函企业名称应与个人报名系统企业名称一致,如已变更单位的,
  163. 请先在个人系统帐号设置进入额外信息栏进行修改工作单位与报名承诺函工作单位相符后方可上传承诺函确认
  164. </div>
  165. <img :src="buyForm.buyImg" :onerror="errorImg" style="width: 160px;text-align: center;">
  166. <do-upload @onFinish="(url)=>{buyForm.buyImg=url}" placeholder="上传承诺书" width="160px"> </do-upload>
  167. </el-row>
  168. <el-row>
  169. <h2 class="tc"> 本课程费用: <strong style="color: red;"> {{buyForm.fee/100}} 元 </strong> </h2>
  170. <el-col :span="12" class="p20">
  171. <img src="/static/images/wxpay.jpg" width="300px" @click="showImg('/static/images/wxpay.jpg')">
  172. </el-col>
  173. <el-col :span="12" class="p20">
  174. <img src="/static/images/payNo.jpg" width="400px" @click="showImg('/static/images/payNo.jpg')">
  175. </el-col>
  176. </el-row>
  177. <el-row class="tc fc">
  178. <el-form-item >
  179. <el-button @click="cancelBuyCourse">取 消</el-button>
  180. <el-button @click="buyCourse" type="primary">确 定</el-button>
  181. </el-form-item>
  182. </el-row>
  183. </el-form>
  184. </el-dialog>
  185. <el-dialog :title="promiseType[promise.showType]" class="fc tc" :visible.sync="commitmentDialog">
  186. <div>
  187. <div>
  188. <div class="commitment-header"> {{promise.title}} </div>
  189. <div class="tl commitment">
  190. {{promise.content}}
  191. </div>
  192. <div class="commitment-footer">
  193. {{promise.footer}}
  194. </div>
  195. </div>
  196. <div class="tl commitment-content mt20" v-if="promise.showType==2">
  197. <el-radio-group v-model="isCommitment">
  198. <el-row class="mt10">
  199. <el-radio :label="true">本人作出上述承诺</el-radio>
  200. </el-row>
  201. <el-row class="mt10">
  202. <el-radio :label="false">本人不作出上述承诺</el-radio>
  203. </el-row>
  204. </el-radio-group>
  205. </div>
  206. <span slot="footer" class="dialog-footer" v-if="promise.showType==2">
  207. <el-button @click="commitmentDialog = false">取 消</el-button>
  208. <el-button type="primary" :disabled="isCommitment?false:true" @click="buyCourseDialog=true">确 定</el-button>
  209. </span>
  210. <div slot="footer" class="dialog-footer mt20" v-else>
  211. <el-button @click="commitmentDialog = false">取 消</el-button>
  212. <el-button type="primary" @click="buyCourseDialog=true">继续购买</el-button>
  213. </div>
  214. </div>
  215. </el-dialog>
  216. <el-dialog append-to-body close-on-click-modal :visible.sync="showImgDialog" style="margin-top: 0px;" :width="width">
  217. <img :src="imgUrl" @load="onLoad" alt="" />
  218. </el-dialog>
  219. <!-- <el-dialog append-to-body close-on-click-modal :visible.sync="showAllRzcodeDialog" width="1024px">
  220. <el-table v-if="buyForm.list.length>0" :data="buyForm.list" border>
  221. <el-table-column label="证书编号" prop="certificateNum" align="center" />
  222. <el-table-column label="岗位名称" prop="positionName" align="center" />
  223. <el-table-column label="证书状态" prop="certificateStatus" align="center" />
  224. <el-table-column label="发证机关" prop="certificateOrgan" align="center" />
  225. <el-table-column label="发证时间" prop="startTime" align="center" />
  226. <el-table-column label="选择" prop="reviewTime" align="center">
  227. <template slot-scope="{row}">
  228. <el-button @click="selectRzcode(row)" type="primary">选择</el-button>
  229. </template>
  230. </el-table-column>
  231. </el-table>
  232. </el-dialog> -->
  233. </div>
  234. </template>
  235. <script>
  236. import {
  237. httpServer
  238. } from "@/components/httpServer/httpServer.js";
  239. import promise from "./promise.js";
  240. import {
  241. MessageBox
  242. } from "element-ui";
  243. import unLogin from "../../login/components/unLogin.vue";
  244. import {
  245. parseTime
  246. } from "@/utils";
  247. import DoUpload from '@/components/upload/index.vue'
  248. import exampleImg from '@/assets/template.png'
  249. import {
  250. mapGetters,
  251. mapActions
  252. } from "vuex";
  253. export default {
  254. name: "Index",
  255. data() {
  256. return {
  257. page: 1,
  258. size: 6,
  259. total: 0,
  260. stage: 0,
  261. isCompanyPay: 0,
  262. showTip: false,
  263. width: "",
  264. type: '',
  265. list: [],
  266. promiseType:{1:'温馨提示', 2:'承诺书', 3:'委 托 书'},
  267. nd: new Date().getFullYear()+'',
  268. filterName: '',
  269. ndList:[],
  270. allList:[],
  271. typeInfo:{},
  272. isCommitment: "",
  273. showAllRzcodeDialog: false,
  274. buyCourseDialog: false,
  275. showExample: false,
  276. showImgDialog: false,
  277. buyForm: {
  278. marks: '',
  279. rzCode: '',
  280. payNo:'',
  281. email:'',
  282. company:'',
  283. buyImg:'',
  284. name:'',
  285. courseName: '',
  286. list:[]
  287. },
  288. promise,
  289. imgUrl: '',
  290. qrcodeUrl: "",
  291. outTradeNo: "",
  292. courseFee: 0,
  293. title: '',
  294. timer: null,
  295. tickCount: 0,
  296. listLoading: false,
  297. loginDialog: false,
  298. isLoginOk: false,
  299. media: {},
  300. commitmentDialog: false,
  301. exampleImg: exampleImg,
  302. rules: {
  303. payNo:[
  304. {
  305. required: true,
  306. message: '请输入订单编号后六位'
  307. }
  308. ],
  309. marks:[
  310. {
  311. required: true,
  312. message: '请输入备注信息'
  313. }
  314. ],
  315. email: [{
  316. required: true,
  317. message: '请输入有效邮箱'
  318. },
  319. {
  320. type: 'string',
  321. message: '邮箱格式不正确',
  322. trigger: 'blur',
  323. transform(value) {
  324. if (!/^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value)) {
  325. return true
  326. } else {}
  327. }
  328. }
  329. ],
  330. company: [{
  331. required: true,
  332. message: '请输入所在企业'
  333. }],
  334. courseName: [{
  335. required: true,
  336. message: '请输入报考岗位'
  337. }]
  338. },
  339. errorImg: 'this.src="' + require('../../../assets/images/no-data_hash5abcd2ef62.png') + '"'
  340. };
  341. },
  342. computed: {
  343. ...mapGetters("user", ["typeList", "userInfo", "promiseList"])
  344. },
  345. components: {
  346. unLogin,
  347. DoUpload
  348. },
  349. filters: {
  350. dateFilter(val) {
  351. return parseTime(val, '{y}-{m}-{d}')
  352. }
  353. },
  354. watch: {
  355. type(val) {
  356. this.page = 1
  357. this.nd = new Date().getFullYear()+''
  358. this.filterData()
  359. },
  360. nd(){
  361. this.filterData()
  362. },
  363. filterName(){
  364. this.page = 1
  365. this.filterData()
  366. },
  367. isCommitment(val) {
  368. console.log(val)
  369. }
  370. },
  371. beforeMount() {
  372. this.type = this.$route.query.type||''
  373. this.getData();
  374. },
  375. beforeDestroy() {
  376. if (this.timer) window.clearInterval(this.timer);
  377. },
  378. methods: {
  379. showImg(url) {
  380. if (!url) return;
  381. this.imgUrl = url;
  382. this.showImgDialog = true;
  383. },
  384. openShowAllRzcodeDialog() {
  385. this.showAllRzcodeDialog = true;
  386. },
  387. selectRzcode(row) {
  388. this.buyForm.rzCode = row.certificateNum;
  389. this.showAllRzcodeDialog = false;
  390. },
  391. closeDialog() {
  392. if (this.timer) window.clearInterval(this.timer);
  393. },
  394. onLoad(e) {
  395. const img = e.target;
  396. let width = 0;
  397. if (img.fileSize > 0 || (img.width > 1 && img.height > 1)) {
  398. width = img.width + 40;
  399. }
  400. this.width = width + "px";
  401. },
  402. getData() {
  403. let param = {
  404. size: 1000,
  405. trainType: 1,
  406. from: 0
  407. }
  408. httpServer("course.getcoursemarket", param).then((res) => {
  409. if (res.code == 200) {
  410. this.allList = res.data.list;
  411. this.filterData()
  412. }
  413. });
  414. },
  415. filterData(){
  416. let nd = this.nd||'';
  417. let filterName = this.filterName||'';
  418. let type = this.type||''
  419. this.ndList = [];
  420. this.list = [];
  421. for(let i in this.allList){
  422. let item = this.allList[i];
  423. if( type != '' && item.type != type) continue;
  424. if(this.ndList.indexOf(item.nd) == -1){
  425. this.ndList.push(item.nd);
  426. }
  427. if(filterName!='' && item.name.indexOf(filterName) == - 1) continue;
  428. if(nd != '' && item.nd != nd ) continue;
  429. this.list.push(item)
  430. }
  431. },
  432. cancelBuyCourse(){
  433. this.$refs["elForm"].resetFields();
  434. this.buyCourseDialog=false
  435. },
  436. buyCourse() {
  437. this.$refs["elForm"].validate((valid) => {
  438. if (!valid) return;
  439. let { marks, company, payNo, course_id, courseName, rzCode, name, email, buyImg} = this.buyForm;
  440. if (courseName != name) {
  441. this.$message.errorMsg("报考岗位有误", 1)
  442. return;
  443. }
  444. let param = { marks, payNo, company,courseId: course_id, courseName,rzCode,email,buyImg }
  445. httpServer("course.buyCourse", param).then((res) => {
  446. if (res.code == 200) {
  447. this.$message.successMsg("申请购买成功", 1);
  448. this.buyForm.temp.marks = this.buyForm.marks
  449. Object.assign( this.buyForm.temp, param);
  450. this.$refs["elForm"].resetFields();
  451. this.buyForm.temp.is_pay = 0
  452. this.buyForm.list = this.buyForm.list||[]
  453. this.buyCourseDialog = false
  454. }
  455. });
  456. })
  457. },
  458. gotoDetail(courseId) {
  459. this.$router.push(`/main/course/${courseId}`);
  460. },
  461. uploadBuyImg(url) {
  462. this.buyForm.buyImg = url;
  463. },
  464. matchPromise( row ){
  465. let {name,type} = row;
  466. let isMatch = false
  467. for( let i in this.promiseList){
  468. let item = this.promiseList[i];
  469. if( name == item.type || item.type == type ){
  470. this.promise = Object.assign( this.promise, item);
  471. console.log("promise", this.promise);
  472. isMatch = true
  473. } else if( !isMatch && item.type == '默认类型'){
  474. this.promise = Object.assign( this.promise, item);
  475. }
  476. }
  477. },
  478. matchType(type) {
  479. for (let i in this.typeList) {
  480. let item = this.typeList[i];
  481. if(item.name == type) {
  482. this.typeInfo = Object.assign(this.typeInfo, item);
  483. return;
  484. }
  485. }
  486. },
  487. goPay( item ) {
  488. this.buyForm = Object.assign(this.buyForm, item)
  489. this.buyForm.company = this.userInfo.company;
  490. this.buyForm.temp = item;
  491. this.buyForm.courseName = item.name;
  492. let isEdu = this.type == '施工现场专业人员';
  493. this.matchPromise(item);
  494. this.matchType(item.type)
  495. // 绕开检查
  496. // this.stage = 2;
  497. // this.isCompanyPay = 1;
  498. // this.isCommitment=''
  499. // this.buyForm.rzCode = item.rzCode;
  500. // this.buyForm.company = 'ssss';
  501. // this.buyForm.courseName = item.courseName;
  502. // this.buyCourseDialog = true;
  503. // 检查
  504. httpServer("weixin.docheckpay", {
  505. courseId: item.course_id
  506. }).then((res) => {
  507. if (res.code == 200) {
  508. this.stage = 2;
  509. this.isCompanyPay = 0;
  510. this.isCommitment=''
  511. Object.assign( this.buyForm, res.data);
  512. if( isEdu){
  513. this.buyCourseDialog = true;
  514. }else{
  515. this.commitmentDialog = true;
  516. }
  517. }
  518. });
  519. },
  520. gotoPlay(courseId) {
  521. this.$router.push(`/center/class/train`);
  522. },
  523. handleCurrentChange(page) {
  524. this.page = page;
  525. this.filterData()
  526. },
  527. login(param) {
  528. httpServer("Auth.LoginStudy", param).then(res => {
  529. if (res.code == 200) {
  530. let {
  531. nickname,
  532. token,
  533. uid
  534. } = res.data;
  535. localStorage.nickname = nickname;
  536. localStorage.token = token;
  537. localStorage.uid = uid
  538. this.user = {
  539. nickname,
  540. token,
  541. uid
  542. };
  543. this.loginOk = true
  544. this.loginDialog = false
  545. }
  546. })
  547. }
  548. },
  549. };
  550. </script>
  551. <style>
  552. @import "../../../assets/css/content.css";
  553. @import "../../../assets/css/course.css";
  554. @import url("./index.css");
  555. .buyForm-title {
  556. width: 90px;
  557. padding: 2px;
  558. text-align: center;
  559. }
  560. .commitment-header {
  561. font-size: 16px;
  562. text-align: left;
  563. }
  564. .commitment {
  565. text-indent: 30px;
  566. margin-top: 20px;
  567. font-size: 16px;
  568. line-height: 200%;
  569. }
  570. .commitment-footer {
  571. margin-top: 30px;
  572. text-indent: 50px;
  573. font-size: 16px;
  574. text-align: left;
  575. }
  576. .commitment-content {
  577. font-size: 16px;
  578. }
  579. .tip-card{
  580. border-radius: 20px;
  581. font-size:14px;
  582. float: right;
  583. width: 420px;
  584. right: 20px;
  585. position: absolute;
  586. top:50px;
  587. color: white;
  588. background-color: #7fbae4 ;
  589. z-index: 1000;
  590. }
  591. .tips-intro {
  592. color: #468cf2;
  593. cursor: pointer;
  594. position: relative;
  595. }
  596. </style>