index.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833
  1. <template>
  2. <view class="container">
  3. <image mode="" style="width: 100%; height: 336rpx;" src="../../static/images/zxks.jpeg">
  4. <view class='mainBox'>
  5. <view class="mainTop">
  6. 考试概要
  7. </view>
  8. <view class="ksBox">
  9. <image mode="" class="imgStyle" style="width: 100%; height: 100%;"
  10. src="../../static/images/gkbj.png">
  11. <text class="fontTitle">{{htmlData.examName}}</text>
  12. <text class="fontStyle">出题人</text>
  13. <text class="fontSize">{{htmlData.createBy}}</text>
  14. <view class="ksMain">
  15. <view class="boxStyle">
  16. <view class="fontColor">
  17. {{htmlData.questionsNum||0}}题
  18. </view>
  19. <view class="fontStyle">
  20. <uni-icons type="calendar" size="20"></uni-icons>
  21. 题目总数
  22. </view>
  23. </view>
  24. <view class="boxStyle">
  25. <view class="fontColor">
  26. {{htmlData.scoreNum||0}}分
  27. </view>
  28. <view class="fontStyle">
  29. <uni-icons type="star" size="20"></uni-icons>
  30. 题目总分
  31. </view>
  32. </view>
  33. <view class="boxStyle">
  34. <view class="fontColor">
  35. {{htmlData.paperPeriod||0}}分钟
  36. </view>
  37. <view class="fontStyle">
  38. <uni-icons type="wallet" size="20"></uni-icons>
  39. 考试时长
  40. </view>
  41. </view>
  42. </view>
  43. <button type="primary" class="buttonStyle" @click="open">开始答题</button>
  44. </view>
  45. </view>
  46. <view class='mainBox'>
  47. <view class="mainTop">
  48. 考试说明
  49. </view>
  50. <view class="ksBox fontStyle">
  51. <text class="smPadding">
  52. {{htmlData.remark||'无'}}
  53. </text>
  54. </view>
  55. </view>
  56. <view class="phb" @click="toRanking">
  57. <uni-icons type="flag" size="20" color="#FFFFFF"></uni-icons>
  58. 排行
  59. </view>
  60. <view class="ckcj" @click="lookGrade" v-if="isUser">
  61. <!-- v-if="uni.getStorageSync("user")" -->
  62. <uni-icons type="flag" size="20" color="#FFFFFF"></uni-icons>
  63. 成绩
  64. </view>
  65. <!-- <view class="outLogin" @click="outLogin" v-if="isUser&&isH5">
  66. <uni-icons type="arrow-left" size="20" color="#FFFFFF"></uni-icons>
  67. 退出
  68. </view> -->
  69. <view class="outLogin" @click="outLogin" v-if="isUser">
  70. <uni-icons type="arrow-left" size="20" color="#FFFFFF"></uni-icons>
  71. 退出
  72. </view>
  73. <uni-popup ref="popup" type="center">
  74. <view class="popupBox">
  75. <view class="testTitle">
  76. <view class="hr"></view>
  77. <view class="testText">本场考试</view>
  78. <view class="hr"></view>
  79. </view>
  80. <view class="ksMain">
  81. <view class="boxStyle">
  82. <view class="fontColor">
  83. {{htmlData.questionsNum}}题
  84. </view>
  85. <view class="fontStyle">
  86. 题目总数
  87. </view>
  88. </view>
  89. <view class="boxStyle">
  90. <view class="fontColor">
  91. {{htmlData.scoreNum}}分
  92. </view>
  93. <view class="fontStyle">
  94. 题目总分
  95. </view>
  96. </view>
  97. <view class="boxStyle">
  98. <view class="fontColor">
  99. {{htmlData.paperPeriod}}分钟
  100. </view>
  101. <view class="fontStyle">
  102. 考试时长
  103. </view>
  104. </view>
  105. </view>
  106. <view class="testTitle">
  107. <view class="hr"></view>
  108. <view class="testText">登录考试</view>
  109. <view class="hr"></view>
  110. </view>
  111. <uni-forms ref="dynamicForm" :rules="dynamicRules" :modelValue="dynamicFormData" class="formStyle">
  112. <template v-for="(item,index) in dynamicLists">
  113. <uni-forms-item :label="item.label" required :rules="changeRules(item)" :key="item.name"
  114. v-if="item.required==true" :name="item.name">
  115. <view class="form-item">
  116. <uni-easyinput v-model="dynamicFormData[item.name]"
  117. @input="setValue(item.name,dynamicFormData[item.name])"
  118. :placeholder="'请输入'+item.label" />
  119. </view>
  120. </uni-forms-item>
  121. <uni-forms-item :label="item.label" :rules="changeRules(item)" :key="item.name" v-else
  122. :name="item.name">
  123. <view class="form-item">
  124. <uni-easyinput v-model="dynamicFormData[item.name]"
  125. :placeholder="'请输入'+item.label" />
  126. </view>
  127. </uni-forms-item>
  128. </template>
  129. </uni-forms>
  130. <button type="primary" class="buttonStyle1" @click="login('dynamicForm')">登录考试</button>
  131. <button type="primary" class="buttonStyle1" @click="register()"
  132. v-if="htmlData.examType =='1'">注册</button>
  133. </view>
  134. </uni-popup>
  135. <uni-popup ref="popup1" type="center">
  136. <view class="popupBox">
  137. <view class="testTitle">
  138. <view class="hr"></view>
  139. <view class="testText">本场考试</view>
  140. <view class="hr"></view>
  141. </view>
  142. <view class="ksMain">
  143. <view class="boxStyle">
  144. <view class="fontColor">
  145. {{htmlData.questionsNum}}题
  146. </view>
  147. <view class="fontStyle">
  148. 题目总数
  149. </view>
  150. </view>
  151. <view class="boxStyle">
  152. <view class="fontColor">
  153. {{htmlData.scoreNum}}分
  154. </view>
  155. <view class="fontStyle">
  156. 题目总分
  157. </view>
  158. </view>
  159. <view class="boxStyle">
  160. <view class="fontColor">
  161. {{htmlData.paperPeriod}}分钟
  162. </view>
  163. <view class="fontStyle">
  164. 考试时长
  165. </view>
  166. </view>
  167. </view>
  168. <view class="testTitle">
  169. <view class="hr"></view>
  170. <view class="testText">注册账号</view>
  171. <view class="hr"></view>
  172. </view>
  173. <!-- <uni-forms ref="registerForm" :rules="registerRules" :modelValue="registerFormData" class="formStyle">
  174. <template v-for="(item,index) in registerLists">
  175. <uni-forms-item :label="item.label" required :rules="changeRules(item)" :key="item.name"
  176. v-if="item.required==true" :name="item.name">
  177. <view class="form-item">
  178. <uni-easyinput v-model="registerFormData[item.name]"
  179. @input="setValue(item.name,registerFormData[item.name])"
  180. :placeholder="'请输入'+item.label" />
  181. </view>
  182. </uni-forms-item>
  183. <uni-forms-item :label="item.label" :rules="changeRules(item)" :key="item.name" v-else
  184. :name="item.name">
  185. <view class="form-item">
  186. <uni-easyinput v-model="registerFormData[item.name]"
  187. :placeholder="'请输入'+item.label" />
  188. </view>
  189. </uni-forms-item>
  190. </template>
  191. </uni-forms> -->
  192. <uni-forms ref="registerForm" :modelValue="registerFormData" :rules="registerRules"
  193. class="formStyle">
  194. <uni-forms-item label="姓名" required name="studentName">
  195. <uni-easyinput type="text" v-model="registerFormData.studentName" placeholder="请输入姓名" />
  196. </uni-forms-item>
  197. <uni-forms-item label="账号" required name="loginName">
  198. <uni-easyinput type="text" v-model="registerFormData.loginName" placeholder="请输入账号" />
  199. </uni-forms-item>
  200. <uni-forms-item label="密码" required name="password">
  201. <uni-easyinput type="text" v-model="registerFormData.password" placeholder="请输入密码" />
  202. </uni-forms-item>
  203. </uni-forms>
  204. <button type="primary" class="buttonStyle1" @click="registerData('registerForm')">确定注册</button>
  205. </view>
  206. </uni-popup>
  207. </view>
  208. </template>
  209. <script>
  210. import {
  211. getExam,
  212. phoneLogin,
  213. checkOpenId,
  214. getStuOpenId,
  215. startExam,
  216. register,
  217. unbindMiniOpenid,
  218. } from "../../utils/url.js";
  219. import openId from "../../utils/getOpenId.js";
  220. export default {
  221. data() {
  222. return {
  223. // 数据源
  224. dynamicFormData: {
  225. loginName: '',
  226. password: '',
  227. },
  228. registerFormData: {
  229. studentName: '',
  230. loginName: '',
  231. password: '',
  232. },
  233. // 动态表单数据
  234. dynamicLists: [{
  235. label: '账号',
  236. id: 0,
  237. name: 'loginName',
  238. required: true
  239. },
  240. {
  241. label: '密码',
  242. id: 1,
  243. name: 'password',
  244. required: true
  245. }
  246. ],
  247. registerLists: [{
  248. label: '姓名',
  249. id: 0,
  250. name: 'studentName',
  251. required: true
  252. },
  253. {
  254. label: '账号',
  255. id: 1,
  256. name: 'loginName',
  257. required: true
  258. },
  259. {
  260. label: '密码',
  261. id: 2,
  262. name: 'password',
  263. required: true
  264. }
  265. ],
  266. // 规则
  267. dynamicRules: {
  268. email: {
  269. rules: []
  270. }
  271. },
  272. registerRules: {
  273. studentName: {
  274. rules: [{
  275. required: true,
  276. errorMessage: '请输入姓名',
  277. }]
  278. },
  279. loginName: {
  280. rules: [{
  281. required: true,
  282. errorMessage: '请输入账号',
  283. }]
  284. },
  285. password: {
  286. rules: [{
  287. required: true,
  288. errorMessage: '请输入密码',
  289. }]
  290. },
  291. },
  292. //页面数据
  293. htmlData: {
  294. // 考试名 examName
  295. // 出题人 createBy
  296. // 题目总数 questionsNum
  297. // 题目总分 scoreNum
  298. // 考试时长 paperPeriod
  299. // 考试说明 remark
  300. // 考试类型 0选人 1自主填报
  301. },
  302. paper: null,
  303. examId: null,
  304. isPaper: false,
  305. isUser: false,
  306. isH5: false,
  307. }
  308. },
  309. methods: {
  310. async unbindMiniOpenid() {
  311. let res = {
  312. examId: uni.getStorageSync("examData").id,
  313. openId: uni.getStorageSync("openId")
  314. }
  315. let data = await unbindMiniOpenid(res);
  316. uni.setStorageSync("token", "");
  317. uni.setStorageSync("user", "");
  318. uni.showToast({
  319. title: '退出成功',
  320. icon: 'none',
  321. duration: 1500
  322. })
  323. },
  324. register() {
  325. this.registerFormData = {
  326. studentName: '',
  327. loginName: '',
  328. password: '',
  329. };
  330. this.$refs.popup1.open();
  331. },
  332. handUser() {
  333. console.log(uni.getStorageSync("user"), 'uni.getStorageSync("user")')
  334. if (uni.getStorageSync("user")) {
  335. return true
  336. } else {
  337. return false
  338. }
  339. },
  340. setValue(name, value) {
  341. // 设置表单某项对应得值来触发表单校验
  342. // 接受两个参数,第一个参数为表单域的 name ,第二个参数为表单域的值
  343. this.$refs.dynamicForm.setValue(name, value)
  344. },
  345. async getPaper(id) {
  346. uni.showLoading({
  347. title: '加载中'
  348. });
  349. let data = await getExam(id);
  350. uni.hideLoading();
  351. this.htmlData = data.data;
  352. uni.setStorageSync("examData", data.data);
  353. if(uni.getStorageSync("examData").id != uni.getStorageSync("oldExamId")||uni.getStorageSync("examData").examType != uni.getStorageSync("oldExamType")){
  354. uni.setStorageSync("token", "");
  355. uni.setStorageSync("user", "");
  356. // // #ifdef H5
  357. // location.reload();
  358. // // #endif
  359. }
  360. if (uni.getStorageSync("user")) {
  361. this.isUser = true;
  362. } else {
  363. this.isUser = false;
  364. }
  365. },
  366. async phoneLogin(res,is) {
  367. //卷子是否存在
  368. //防止重复登录
  369. if (!uni.getStorageSync("token") || !uni.getStorageSync("user")||is) {
  370. console.log(!uni.getStorageSync("token"),'!uni.getStorageSync("token")');
  371. console.log(!uni.getStorageSync("user"),'!uni.getStorageSync("user")');
  372. console.log(res.is,'res.is');
  373. uni.showLoading({
  374. title: '加载中'
  375. });
  376. console.log(res, 'res');
  377. let data = await phoneLogin(res);
  378. console.log(data, 'data');
  379. uni.hideLoading();
  380. uni.setStorageSync("token", data.data.token.access_token);
  381. uni.setStorageSync("user", res);
  382. let resd = uni.getStorageSync("examFlg") == 1 && uni.getStorageSync("examData").id == uni
  383. .getStorageSync("oldExamId") && uni.getStorageSync("user").loginName == uni.getStorageSync(
  384. "oldLoginName") && uni.getStorageSync("paper")
  385. //重新登录之后判断是否有未答完的卷子
  386. if (this.isPaper || resd) {
  387. uni.showModal({
  388. title: '提醒',
  389. content: '还有未答完的试卷!',
  390. success: function(res) {
  391. if (res.confirm) {
  392. uni.navigateTo({
  393. url: '/pages/test/test?paper=true'
  394. });
  395. } else if (res.cancel) {
  396. // alert('用户点击取消');
  397. }
  398. }
  399. })
  400. } else {
  401. this.starExam();
  402. }
  403. } else {
  404. let resd = uni.getStorageSync("examFlg") == 1 && uni.getStorageSync("examData").id == uni
  405. .getStorageSync("oldExamId") && uni.getStorageSync("user").loginName == uni.getStorageSync(
  406. "oldLoginName") && uni.getStorageSync("paper")
  407. //已经登录的判断是否有未答完的卷子
  408. if (this.isPaper || resd) {
  409. uni.navigateTo({
  410. url: '/pages/test/test?paper=true'
  411. });
  412. } else {
  413. this.starExam();
  414. }
  415. }
  416. },
  417. //开始答题
  418. async starExam() {
  419. let res = uni.getStorageSync("user");
  420. console.log(res, 'res');
  421. let parmar = await this.getExam(uni.getStorageSync("examData").id, res.loginName, res.password);
  422. console.log(parmar, 'parmar');
  423. uni.navigateTo({
  424. url: '/pages/test/test'
  425. });
  426. },
  427. async open() {
  428. console.log(uni.getStorageSync("token"), 'uni.getStorageSync("token")')
  429. if (uni.getStorageSync("user")) {
  430. let res = uni.getStorageSync("user");
  431. let exam = uni.getStorageSync("examData")
  432. //考试类型不一样需要登录
  433. // if (exam.examType != uni.getStorageSync("oldExamType")) {
  434. // this.$refs.popup.open();
  435. // } else {
  436. this.phoneLogin({
  437. ...res,
  438. examId: exam.id
  439. });
  440. // }
  441. } else {
  442. this.$refs.popup.open();
  443. }
  444. },
  445. async getExam(examId, loginName, loginPassword) {
  446. uni.showLoading({
  447. title: '加载中'
  448. });
  449. let data = await startExam(examId, loginName, loginPassword);
  450. uni.hideLoading();
  451. uni.setStorageSync("paper", data.data);
  452. },
  453. login(ref) {
  454. this.$refs[ref].validate().then(res => {
  455. this.phoneLogin({
  456. ...res,
  457. examId: this.htmlData.id,
  458. openId: uni.getStorageSync("openId") ? uni.getStorageSync("openId") : null,
  459. },true);
  460. this.$refs.popup.close()
  461. }).catch(err => {
  462. console.log('表单错误信息:', err);
  463. })
  464. },
  465. registerData(ref) {
  466. this.$refs[ref].validate().then(res => {
  467. this.registerText({
  468. ...res,
  469. examId: this.htmlData.id,
  470. });
  471. }).catch(err => {
  472. console.log('表单错误信息:', err);
  473. })
  474. },
  475. async registerText(res) {
  476. let data = await register(res);
  477. uni.showToast({
  478. title: '注册成功',
  479. icon: 'none',
  480. duration: 1500
  481. })
  482. this.$refs.popup1.close();
  483. console.log(data, '111');
  484. },
  485. changeRules(item) {
  486. return [{
  487. 'required': item.required,
  488. errorMessage: item.label + '必填'
  489. }, ]
  490. },
  491. toRanking() {
  492. uni.navigateTo({
  493. url: '/pages/ranking/ranking?examId=' + this.examId
  494. });
  495. },
  496. lookGrade() {
  497. uni.navigateTo({
  498. url: '/pages/performance/performance'
  499. });
  500. },
  501. async checkOpenId(examId, openId) {
  502. uni.showLoading({
  503. title: '加载中'
  504. });
  505. let result = await checkOpenId(examId, openId);
  506. uni.hideLoading();
  507. console.log(result, 'result');
  508. if (result.data.id) {
  509. this.paper = result.data;
  510. uni.setStorageSync("paper", this.paper);
  511. // let user = {
  512. // loginName: result.data.loginName,
  513. // password: result.data.loginPassword,
  514. // examId: this.examId,
  515. // openId: uni.getStorageSync("openId") ? uni.getStorageSync("openId") : null
  516. // }
  517. // uni.setStorageSync("user", user);
  518. //存在卷,并且卷还在进行中
  519. if (parseInt(result.data.examNum) > 0 && result.data.examFlg == '1') {
  520. this.isPaper = true;
  521. // this.phoneLogin({
  522. // loginName: result.data.loginName,
  523. // password: result.data.loginPassword,
  524. // examId: this.examId,
  525. // openId: uni.getStorageSync("openId") ? uni.getStorageSync("openId") : null
  526. // });
  527. } else {
  528. this.isPaper = false;
  529. }
  530. } else {
  531. uni.setStorageSync("token", "");
  532. uni.setStorageSync("user", "");
  533. }
  534. },
  535. getParam(path, name) {
  536. var reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i");
  537. if (reg.test(path))
  538. return unescape(RegExp.$2.replace(/\+/g, " "));
  539. return "";
  540. },
  541. outLogin() {
  542. let that = this;
  543. uni.showModal({
  544. title: '提示',
  545. content: '确定退出当前用户吗?',
  546. success: function(res) {
  547. if (res.confirm) {
  548. that.isUser = false;
  549. that.isH5 = false;
  550. //H5页面不是响应式的
  551. // #ifdef H5
  552. uni.setStorageSync("token", "");
  553. uni.setStorageSync("user", "");
  554. uni.showToast({
  555. title: '退出成功',
  556. icon: 'none',
  557. duration: 5000
  558. })
  559. location.reload();
  560. // #endif
  561. // #ifdef MP-WEIXIN
  562. that.unbindMiniOpenid();
  563. // #endif
  564. } else if (res.cancel) {
  565. console.log('用户点击取消');
  566. }
  567. }
  568. });
  569. }
  570. },
  571. async onShow() {
  572. //// #ifdef H5
  573. // openId.getOpenId(() => {
  574. // let dt = window.localStorage.getItem("openId");
  575. // console.log(dt,'dt');
  576. // });
  577. //// #endif
  578. console.log(this.examId, 'this.examId');
  579. console.log(!this.examId, 'this.examId');
  580. console.log(uni.getStorageSync("user"), 'uni.getStorageSync("user")');
  581. if (!this.examId && uni.getStorageSync("examData")) {
  582. // console.log(uni.getStorageSync("examData"),'uni.getStorageSync("examData")');
  583. this.examId = uni.getStorageSync("examData").id;
  584. }
  585. await this.getPaper(this.examId);
  586. console.log(this.examId, 'this.examId');
  587. // let openId = uni.getStorageSync("openId");
  588. // if (openId) {
  589. // this.checkOpenId(this.examId, openId)
  590. // //有id代表就是有卷子
  591. // }
  592. },
  593. async onLoad(options) {
  594. // #ifdef MP-WEIXIN
  595. if (options.q) {
  596. const q = decodeURIComponent(options.q); // 获取到二维码原始链接内容
  597. const scancode_time = parseInt(options.scancode_time); // 获取用户扫码时间 UNIX 时间戳
  598. console.log(q, 'q');
  599. console.log(scancode_time, 'scancode_time');
  600. let str = q
  601. let index = str.lastIndexOf("\/");
  602. str = str.substring(index + 1, str.length);
  603. console.log('我是获取到的考试id', str);
  604. this.examId = str;
  605. }
  606. uni.login({
  607. provider: 'weixin',
  608. success: async (res) => {
  609. uni.showLoading({
  610. title: '加载中'
  611. });
  612. let data = await getStuOpenId({
  613. jsCode: res.code
  614. });
  615. uni.hideLoading();
  616. uni.setStorageSync("openId", data.msg);
  617. }
  618. })
  619. // #endif
  620. // #ifdef H5
  621. // uni.setStorageSync("token", "");
  622. // console.log('我是清除token');
  623. // uni.setStorageSync("user", "");
  624. // uni.setStorageSync("examData", "");
  625. let local = location.href;
  626. let payment_id = this.getParam(local, "id");
  627. this.examId = parseInt(payment_id);
  628. this.isH5 = true;
  629. // #endif
  630. //获取url中的参数
  631. // let id = 88;
  632. // this.examId = id;
  633. }
  634. }
  635. </script>
  636. <style scoped>
  637. .container {}
  638. .mainBox {
  639. width: 90%;
  640. /* height: 600rpx; */
  641. margin: 20rpx auto;
  642. position: relative;
  643. border-radius: 10rpx;
  644. display: flex;
  645. flex-direction: column;
  646. box-shadow: 0 0.05333rem 0.10667rem rgb(0 0 0 / 12%), 0 0 0.16rem rgb(0 0 0 / 4%);
  647. }
  648. .imgStyle {
  649. position: absolute;
  650. width: 100%;
  651. height: 75%;
  652. bottom: 0;
  653. }
  654. .mainTop {
  655. height: 80rpx;
  656. border-radius: 10rpx 10rpx 0 0;
  657. line-height: 80rpx;
  658. text-align: center;
  659. color: #fff;
  660. font-size: 32rpx;
  661. background-color: rgb(245, 166, 35);
  662. }
  663. .container {
  664. background: #fff;
  665. width: 100%;
  666. /* height: 100%; */
  667. }
  668. .ksBox {
  669. position: relative;
  670. width: 100%;
  671. height: 100%;
  672. display: flex;
  673. flex-direction: column;
  674. text-align: center;
  675. }
  676. .ksMain {
  677. /* height: 140rpx; */
  678. display: flex;
  679. /* margin-top: 20rpx; */
  680. }
  681. .fontStyle {
  682. color: #909399;
  683. font-size: 28rpx;
  684. }
  685. .boxStyle {
  686. /* margin-left: 55rpx;
  687. margin-top: 10rpx; */
  688. text-align: center;
  689. margin-top: 10rpx;
  690. flex: 1;
  691. }
  692. .fontColor {
  693. color: rgb(245, 166, 35);
  694. font-size: 28rpx;
  695. margin-bottom: 10rpx;
  696. }
  697. .fontSize {
  698. font-size: 28rpx;
  699. }
  700. .fontTitle {
  701. font-size: 30rpx;
  702. margin-top: 35rpx;
  703. margin-bottom: 35rpx;
  704. }
  705. /* 小程序端需要添加!important,要不颜色是默认绿色 */
  706. .buttonStyle {
  707. width: 85%;
  708. margin-left: 7%;
  709. margin-top: 30rpx;
  710. margin-bottom: 70rpx;
  711. background-color: rgb(245, 166, 35) !important;
  712. border-radius: 44rpx;
  713. }
  714. .buttonStyle1 {
  715. width: 85%;
  716. margin-left: 7%;
  717. margin-top: 30rpx;
  718. margin-bottom: 30rpx;
  719. background-color: rgb(245, 166, 35) !important;
  720. border-radius: 44rpx;
  721. }
  722. .smPadding {
  723. margin: 20rpx;
  724. line-height: 40rpx;
  725. text-align: left;
  726. }
  727. .phb {
  728. position: fixed;
  729. right: 0;
  730. bottom: 20%;
  731. display: flex;
  732. background-color: rgb(245, 166, 35);
  733. padding: 10rpx 10rpx 10rpx 30rpx;
  734. border-radius: 30rpx 0 0 30rpx;
  735. font-size: 25rpx;
  736. color: #fff;
  737. }
  738. .ckcj {
  739. position: fixed;
  740. right: 0;
  741. bottom: 14%;
  742. display: flex;
  743. background-color: rgb(245, 166, 35);
  744. padding: 10rpx 10rpx 10rpx 30rpx;
  745. border-radius: 30rpx 0 0 30rpx;
  746. font-size: 25rpx;
  747. color: #fff;
  748. }
  749. .outLogin {
  750. position: fixed;
  751. right: 0;
  752. bottom: 8%;
  753. display: flex;
  754. background-color: rgb(245, 166, 35);
  755. padding: 10rpx 10rpx 10rpx 30rpx;
  756. border-radius: 30rpx 0 0 30rpx;
  757. font-size: 25rpx;
  758. color: #fff;
  759. }
  760. .popupBox {
  761. background-color: #f7f8fa;
  762. /* width: 680rpx;
  763. height: 800rpx; */
  764. border-radius: 12rpx;
  765. display: flex;
  766. flex-direction: column;
  767. padding: 50rpx 0;
  768. }
  769. .testTitle {
  770. display: flex;
  771. justify-content: center;
  772. }
  773. .hr {
  774. background-color: #dcdfe6;
  775. width: 200rpx;
  776. height: 2rpx;
  777. margin: 20rpx;
  778. }
  779. .testText {
  780. color: #303133;
  781. font-weight: 700;
  782. }
  783. .formStyle {
  784. padding: 0 40rpx;
  785. margin-top: 40rpx;
  786. }
  787. </style>