index.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  1. <template>
  2. <div class="my-classhour">
  3. <div class="my-classhour__body">
  4. <el-tabs :value="activeName" @tab-click="tabChange">
  5. <el-tab-pane label="学时审核" name="1"></el-tab-pane>
  6. <el-tab-pane label="学习凭证" name="2"></el-tab-pane>
  7. </el-tabs>
  8. <template v-if="activeName == '1'">
  9. <div class="no-data" v-if="listData.length == 0">
  10. 您暂无相关学时审核记录哦
  11. </div>
  12. <template v-else>
  13. <div class="learn-list">
  14. <div
  15. class="classhour-item"
  16. v-for="(item, index) in listData"
  17. :key="index"
  18. >
  19. <div class="classhour-item__header">
  20. <div class="state">
  21. 学时审核状态:
  22. <div class="note" v-if="item.periodStatus === -1">
  23. 不可审核
  24. </div>
  25. <div
  26. class="note note--success"
  27. v-if="item.periodStatus === 1"
  28. >
  29. 机构审核通过
  30. </div>
  31. <div class="note note--wait" v-if="item.periodStatus === 2">
  32. 等待审核
  33. </div>
  34. <div class="note note--wait" v-if="item.periodStatus === 3">
  35. 审核中
  36. </div>
  37. <div class="note" v-if="item.periodStatus === 0">
  38. 机构审核不通过,有{{ item.rebuild }}节需要重修
  39. </div>
  40. </div>
  41. </div>
  42. <div class="classhour-item__body clearfix">
  43. <!-- <div class="img"></div> -->
  44. <div class="text">
  45. <div class="title">{{ item.goodsName }}</div>
  46. <div class="desc desc--black" v-if="item.periodStatus === 1">
  47. <template
  48. v-if="
  49. item.educationName == '继续教育' &&
  50. item.businessName == '二级' &&
  51. item.projectName == '建造师'
  52. "
  53. >
  54. 机构已审核通过,需等待注册中心复审后即可获得继续教育学时。审核时间约15个工作日,届时请前往官网申请证书延期。
  55. <div class="copy-btn">
  56. <a @click="copy">复制官网链接</a>
  57. </div>
  58. </template>
  59. </div>
  60. <div class="desc" v-if="item.periodStatus === -1">
  61. 您的学时还未修完,请尽快完成课程学习
  62. </div>
  63. <div class="desc" v-if="item.periodStatus === 2">
  64. 学习完成后7-15个工作日完成学时审核。
  65. </div>
  66. <div class="desc" v-if="item.periodStatus === 0">
  67. 请查看需重学记录,并及时重学对应课程,以免延误学时审核进度。
  68. </div>
  69. <div class="desc" v-if="item.periodStatus === 3">
  70. 会在7-15个工作日左右完成学时审核
  71. </div>
  72. </div>
  73. <div class="btns-wrap">
  74. <div class="btns" v-if="item.periodStatus !== 2">
  75. <el-button
  76. type="primary"
  77. class="btn"
  78. v-if="
  79. item.periodStatus === -1 &&
  80. !(
  81. sysTime <= item.serviceStartTime ||
  82. sysTime >= item.serviceEndTime ||
  83. (item.classStartTime &&
  84. sysTime <= item.classStartTime) ||
  85. (item.classEndTime && sysTime >= item.classEndTime) ||
  86. item.learningStatus == 2 ||
  87. item.classStatus == 0 ||
  88. (item.learningStatus == 3 &&
  89. sysTime < item.learningTimeStart)
  90. )
  91. "
  92. @click="goCourseDetail(item)"
  93. >
  94. 课程学习
  95. </el-button>
  96. <el-button
  97. type="primary"
  98. class="btn"
  99. v-if="
  100. item.periodStatus === 1 &&
  101. item.applyStatus === 1 &&
  102. !(
  103. sysTime <= item.serviceStartTime ||
  104. sysTime >= item.serviceEndTime ||
  105. (item.classStartTime &&
  106. sysTime <= item.classStartTime) ||
  107. (item.classEndTime && sysTime >= item.classEndTime) ||
  108. item.learningStatus == 2 ||
  109. item.classStatus == 0 ||
  110. (item.learningStatus == 3 &&
  111. sysTime < item.learningTimeStart)
  112. )
  113. "
  114. @click="appointment(item)"
  115. >
  116. 预约考试
  117. </el-button>
  118. <el-button
  119. type="primary"
  120. class="btn"
  121. v-if="
  122. item.periodStatus === 1 &&
  123. item.beforeStatus === 1 &&
  124. !(
  125. sysTime <= item.serviceStartTime ||
  126. sysTime >= item.serviceEndTime ||
  127. (item.classStartTime &&
  128. sysTime <= item.classStartTime) ||
  129. (item.classEndTime && sysTime >= item.classEndTime) ||
  130. item.learningStatus == 2 ||
  131. item.classStatus == 0 ||
  132. (item.learningStatus == 3 &&
  133. sysTime < item.learningTimeStart)
  134. )
  135. "
  136. @click="appBeforeAddress(item)"
  137. >
  138. 进入刷题
  139. </el-button>
  140. <el-button
  141. type="primary"
  142. class="btn"
  143. v-if="item.periodStatus === 0 && item.rebuildStatus === 0"
  144. @click="getcourseperiodcheat(item)"
  145. >
  146. 查看详情
  147. </el-button>
  148. <div
  149. class="btn"
  150. v-if="item.periodStatus === 0 && item.rebuildStatus === 1"
  151. @click="goCourseDetail(item)"
  152. >
  153. 重修目录
  154. </div>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. <div class="pagination">
  161. <el-pagination
  162. @current-change="currentChange"
  163. background
  164. layout="prev, pager, next"
  165. :total="total"
  166. :pager-count="5"
  167. :page-size="param.pageSize"
  168. >
  169. </el-pagination>
  170. </div>
  171. </template>
  172. </template>
  173. <template v-if="activeName == '2'">
  174. <div class="no-data" v-if="listData1.length == 0">
  175. 您暂无相关学习凭证记录哦
  176. </div>
  177. <template v-else>
  178. <div class="certificate-list">
  179. <div
  180. class="certificate-item"
  181. v-for="(item, index) in listData1"
  182. :key="index"
  183. >
  184. <div class="certificate-item__header">
  185. <div class="title">证书名称:</div>
  186. <div class="desc">{{ item.title }}</div>
  187. </div>
  188. <div class="certificate-item__body">
  189. <div class="title">证书编号</div>
  190. <div class="desc">{{ item.certificateCode }}</div>
  191. </div>
  192. <div class="certificate-item__footer">
  193. <div class="btn" @click="preview(item)">查看</div>
  194. <div class="btn" @click="download(item)">下载</div>
  195. </div>
  196. </div>
  197. </div>
  198. <div class="pagination">
  199. <el-pagination
  200. @current-change="currentChange"
  201. background
  202. layout="prev, pager, next"
  203. :total="total"
  204. :pager-count="5"
  205. :page-size="param.pageSize"
  206. >
  207. </el-pagination>
  208. </div>
  209. </template>
  210. </template>
  211. </div>
  212. <el-dialog
  213. title="预约考试"
  214. :visible.sync="appointModal"
  215. width="600px"
  216. class="appoint-modal"
  217. :close-on-click-modal="false"
  218. :close-on-press-escape="false"
  219. >
  220. <div class="appoint-modal__content">
  221. <el-radio
  222. v-for="(appointChild, appointIndex) in appointItem.applyList"
  223. v-model="applyId"
  224. :key="appointIndex"
  225. :label="appointChild.applyId"
  226. >{{ appointChild.applyName }}</el-radio
  227. >
  228. </div>
  229. <span slot="footer" class="dialog-footer">
  230. <el-button @click="appointModal = false">取 消</el-button>
  231. <el-button type="primary" @click="confirmAppoint">立即预约</el-button>
  232. </span>
  233. </el-dialog>
  234. <el-dialog
  235. title="实名验证确认"
  236. :visible.sync="showConfirm"
  237. width="600px"
  238. class="showconfirm"
  239. :close-on-click-modal="false"
  240. :close-on-press-escape="false"
  241. :show-close="false"
  242. >
  243. <div class="showconfirm__content">
  244. <div class="text">
  245. 为避免个人信息不正确导致您的学习时长无效,请认真核对以下信息是否正确,如信息有误请取消当前操作,立刻联系020-38946666
  246. </div>
  247. <el-descriptions :column="1">
  248. <el-descriptions-item label="姓名">{{
  249. userInfo && userInfo.realname
  250. }}</el-descriptions-item>
  251. <el-descriptions-item label="手机号">{{
  252. userInfo && userInfo.telphone
  253. }}</el-descriptions-item>
  254. <el-descriptions-item label="身份证号">{{
  255. userInfo && userInfo.idCard
  256. }}</el-descriptions-item>
  257. </el-descriptions>
  258. <div class="">
  259. <el-checkbox v-model="confirmChecked">确认个人信息无误</el-checkbox>
  260. </div>
  261. </div>
  262. <span slot="footer" class="dialog-footer">
  263. <el-button @click="showConfirm = false">取 消</el-button>
  264. <el-button
  265. type="primary"
  266. @click="confirmUser"
  267. :disabled="confirmCount > 0"
  268. :loading="confirmLoading"
  269. >{{
  270. confirmCount > 0 ? "确 定(" + confirmCount + ")" : "确 定"
  271. }}</el-button
  272. >
  273. </span>
  274. </el-dialog>
  275. <RebuildModal
  276. ref="rebuildModal"
  277. @rebuildSubmit="rebuildSubmit($event)"
  278. ></RebuildModal>
  279. <ExercisesModal ref="exercisesModal"></ExercisesModal>
  280. <el-image-viewer
  281. v-if="showViewer"
  282. :on-close="closeViewer"
  283. :url-list="[url]"
  284. />
  285. </div>
  286. </template>
  287. <script>
  288. import ElImageViewer from "element-ui/packages/image/src/image-viewer";
  289. import RebuildModal from "@/components/rebuildModal";
  290. import ExercisesModal from "@/components/exercisesModal";
  291. import { mapGetters, mapActions } from "vuex";
  292. export default {
  293. name: "MyClasshour",
  294. components: {
  295. RebuildModal,
  296. ElImageViewer,
  297. ExercisesModal,
  298. },
  299. computed: {
  300. ...mapGetters(["sysTime", "userInfo"]),
  301. },
  302. data() {
  303. return {
  304. appointItem: {},
  305. applyId: "",
  306. appointModal: false,
  307. copyUrl: "http://gdzczx.gdcic.net/",
  308. showViewer: false,
  309. rebuildShow: false,
  310. showDetailModal: false,
  311. confirmChecked: false,
  312. confirmTimer: null,
  313. confirmLoading: false,
  314. confirmCount: 10,
  315. showConfirm: false,
  316. activeName: "1",
  317. activeItem: {},
  318. listData: [],
  319. listData1: [],
  320. rebuildItems: [],
  321. rebuildItem: {},
  322. param: {
  323. pageNum: 1,
  324. pageSize: 10,
  325. },
  326. url: "",
  327. total: 0,
  328. };
  329. },
  330. mounted() {
  331. this.setSystemTime();
  332. this.getcourseperiodlistGoods();
  333. },
  334. methods: {
  335. ...mapActions(["setSystemTime"]),
  336. appBeforeAddress(item) {
  337. console.log(this.$refs.exercisesModal);
  338. this.$refs.exercisesModal.showModal(item);
  339. },
  340. closeViewer() {
  341. this.showViewer = false;
  342. },
  343. async goCourseDetail(item) {
  344. this.activeItem = item;
  345. var confirmDetail = true;
  346. if (item.educationName == "继续教育") {
  347. if (
  348. item.officialName &&
  349. item.businessName == "二级" &&
  350. item.projectName == "建造师"
  351. ) {
  352. confirmDetail = await this.userConfirmInfoDetail(item);
  353. }
  354. }
  355. if (!confirmDetail) {
  356. return;
  357. }
  358. this.$router.push({
  359. path: `/my-course-detail/${item.goodsId}`,
  360. query: {
  361. gradeId: item.gradeId,
  362. orderGoodsId: item.orderGoodsId,
  363. },
  364. });
  365. },
  366. confirmUser() {
  367. if (!this.confirmChecked) {
  368. this.$message.warning("请勾选确认个人信息无误");
  369. return;
  370. }
  371. this.confirmLoading = true;
  372. let infoJson = {
  373. realname: this.userInfo.realname,
  374. idCard: this.userInfo.idCard,
  375. telphone: this.userInfo.telphone,
  376. };
  377. this.$request
  378. .userConfirminfo({
  379. infoJson: JSON.stringify(infoJson),
  380. orderGoodsId: this.activeItem.orderGoodsId,
  381. })
  382. .then((res) => {
  383. if (res.data.pushInfo) {
  384. this.$message.success("提交成功");
  385. } else {
  386. this.$confirm(
  387. "开通信息推送不成功,无法进入学习,请联系020-87085982!",
  388. "提示",
  389. {
  390. confirmButtonText: "确定",
  391. closeOnClickModal: false,
  392. closeOnPressEscape: false,
  393. distinguishCancelAndClose: false,
  394. showClose: false,
  395. showCancelButton: false,
  396. }
  397. )
  398. .then((_) => {})
  399. .catch((_) => {});
  400. }
  401. this.showConfirm = false;
  402. this.confirmLoading = false;
  403. });
  404. },
  405. userConfirmInfoDetail(item) {
  406. return new Promise((resolve) => {
  407. this.$request
  408. .userConfirmInfoDetail({
  409. orderGoodsId: this.activeItem.orderGoodsId,
  410. })
  411. .then((res) => {
  412. if (!res.data) {
  413. clearInterval(this.confirmTimer);
  414. this.confirmCount = 10;
  415. this.showConfirm = true;
  416. this.confirmTimer = setInterval(() => {
  417. if (this.confirmCount > 0) {
  418. this.confirmCount--;
  419. } else {
  420. clearInterval(this.confirmTimer);
  421. }
  422. }, 1000);
  423. } else {
  424. if (res.data.pushInfo) {
  425. resolve(true);
  426. } else {
  427. this.$confirm(
  428. "开通信息推送不成功,无法进入学习,请联系020-87085982!",
  429. "提示",
  430. {
  431. confirmButtonText: "确定",
  432. closeOnClickModal: false,
  433. closeOnPressEscape: false,
  434. distinguishCancelAndClose: false,
  435. showClose: false,
  436. showCancelButton: false,
  437. }
  438. )
  439. .then((_) => {})
  440. .catch((_) => {});
  441. resolve(false);
  442. }
  443. }
  444. });
  445. });
  446. },
  447. tabChange(e) {
  448. console.log(e.name);
  449. if (this.activeName == e.name) {
  450. return;
  451. }
  452. this.activeName = e.name;
  453. this.param.pageNum = 1;
  454. if (this.activeName == "1") {
  455. this.getcourseperiodlistGoods();
  456. } else {
  457. this.getUserCertificateList();
  458. }
  459. },
  460. currentChange(e) {
  461. this.param.pageNum = e;
  462. if (this.activeName == "1") {
  463. this.getcourseperiodlistGoods();
  464. } else {
  465. this.getUserCertificateList();
  466. }
  467. },
  468. appointment(item) {
  469. this.applyId = "";
  470. this.appointItem = item;
  471. this.appointModal = true;
  472. // var data = {
  473. // goodsId: item.goodsId,
  474. // gradeId: item.gradeId,
  475. // };
  476. // this.$request
  477. // .getApplysubscribe(data)
  478. // .then((res) => {
  479. // this.$router.push({
  480. // path: "/person-center/my-classhour/appointment",
  481. // query: {
  482. // goodsId: item.goodsId,
  483. // gradeId: item.gradeId,
  484. // orderGoodsId: item.orderGoodsId,
  485. // },
  486. // });
  487. // })
  488. // .catch((err) => {
  489. // this.$message({
  490. // type: "success",
  491. // message: err.msg,
  492. // });
  493. // });
  494. },
  495. confirmAppoint() {
  496. if (!this.applyId) {
  497. this.$message.warning("请选择要预约的考试");
  498. return;
  499. }
  500. var data = {
  501. goodsId: this.appointItem.goodsId,
  502. gradeId: this.appointItem.gradeId,
  503. applyId: this.applyId,
  504. orderGoodsId: this.appointItem.orderGoodsId,
  505. };
  506. this.$request
  507. .getApplysubscribe(data)
  508. .then((res) => {
  509. this.$router.push({
  510. path: "/person-center/my-classhour/appointment",
  511. query: {
  512. goodsId: this.appointItem.goodsId,
  513. gradeId: this.appointItem.gradeId,
  514. orderGoodsId: this.appointItem.orderGoodsId,
  515. applyId: this.applyId,
  516. },
  517. });
  518. })
  519. .catch((err) => {
  520. this.$message({
  521. type: "warning",
  522. message: err.msg,
  523. });
  524. });
  525. },
  526. rebuildSubmit() {
  527. this.$router.push({
  528. path: `/my-course-detail/${item.goodsId}`,
  529. query: {
  530. gradeId: item.gradeId,
  531. orderGoodsId: item.orderGoodsId,
  532. },
  533. });
  534. },
  535. getcourseperiodlistGoods() {
  536. this.$request
  537. .getcourseperiodlistGoods(this.param)
  538. .then((res) => {
  539. this.listData = [...res.rows];
  540. this.total = res.total;
  541. })
  542. .catch((err) => {});
  543. },
  544. getUserCertificateList() {
  545. this.$request
  546. .getUserCertificateList(this.param)
  547. .then((res) => {
  548. this.listData1 = [...res.rows];
  549. this.total = res.total;
  550. })
  551. .catch((err) => {});
  552. },
  553. getcourseperiodcheat(item) {
  554. this.$refs.rebuildModal.showModal(item);
  555. },
  556. preview(item) {
  557. this.url = this.$tools.splitImgHost(item.certificatePath);
  558. this.showViewer = true;
  559. },
  560. download(item) {
  561. var url = this.$tools.splitImgHost(item.certificatePath, true);
  562. var a = document.createElement("a");
  563. var event = new MouseEvent("click");
  564. a.download = "img";
  565. a.href = url;
  566. a.dispatchEvent(event);
  567. },
  568. copy() {
  569. var copyInput = document.createElement("input");
  570. //val是要复制的内容
  571. copyInput.setAttribute("value", this.copyUrl);
  572. document.body.appendChild(copyInput);
  573. copyInput.select();
  574. try {
  575. var copyed = document.execCommand("copy");
  576. if (copyed) {
  577. document.body.removeChild(copyInput);
  578. this.$message.success("复制成功");
  579. }
  580. } catch (err) {
  581. this.$message.error("复制失败,请检查浏览器兼容");
  582. }
  583. },
  584. },
  585. };
  586. </script>
  587. <!-- Add "scoped" attribute to limit CSS to this component only -->
  588. <style scoped lang="scss">
  589. .my-classhour {
  590. &__body {
  591. /deep/ .el-tabs__header {
  592. margin-bottom: 0;
  593. }
  594. .learn-list {
  595. .classhour-item {
  596. margin-top: 24px;
  597. background: #fafbfc;
  598. border-radius: 8px;
  599. overflow: hidden;
  600. &__header {
  601. height: 40px;
  602. border-bottom: 1px solid #eee;
  603. padding: 0 18px;
  604. .state {
  605. margin-top: 8px;
  606. float: left;
  607. font-size: 14px;
  608. font-family: Microsoft YaHei;
  609. font-weight: 400;
  610. color: #666666;
  611. .note {
  612. vertical-align: middle;
  613. display: inline-block;
  614. padding: 0 20px;
  615. height: 24px;
  616. background: #ffeceb;
  617. border: 1px solid #ff3b30;
  618. border-radius: 12px;
  619. font-size: 14px;
  620. font-family: Microsoft YaHei;
  621. font-weight: 400;
  622. color: #ff3b30;
  623. text-align: center;
  624. line-height: 24px;
  625. &--success {
  626. color: #34c759;
  627. border: 1px solid #34c759;
  628. background: #e6feea;
  629. }
  630. &--wait {
  631. color: #007aff;
  632. border: 1px solid #007aff;
  633. background: rgba(247, 250, 255, 1);
  634. }
  635. }
  636. }
  637. .time {
  638. float: right;
  639. line-height: 40px;
  640. text-align: right;
  641. font-size: 12px;
  642. font-family: Microsoft YaHei;
  643. font-weight: 400;
  644. color: #666666;
  645. }
  646. }
  647. &__body {
  648. padding-bottom: 20px;
  649. .img {
  650. float: left;
  651. width: 160px;
  652. height: 90px;
  653. background: #3f8dfd;
  654. }
  655. .text {
  656. width: 700px;
  657. float: left;
  658. margin-left: 12px;
  659. .title {
  660. margin-top: 10px;
  661. font-size: 16px;
  662. font-family: Microsoft YaHei;
  663. font-weight: bold;
  664. color: #333333;
  665. .note {
  666. display: inline-block;
  667. vertical-align: middle;
  668. border: 1px solid #333333;
  669. border-radius: 4px;
  670. font-size: 12px;
  671. font-family: Microsoft YaHei;
  672. font-weight: 400;
  673. color: #333333;
  674. padding: 2px 5px;
  675. margin-left: 12px;
  676. }
  677. }
  678. .desc {
  679. font-size: 16px;
  680. font-family: Microsoft YaHei;
  681. font-weight: 400;
  682. color: #ff3b30;
  683. margin-top: 20px;
  684. .copy-btn {
  685. text-decoration: underline;
  686. padding-top: 10px;
  687. color: #007aff;
  688. }
  689. &--black {
  690. color: #333;
  691. }
  692. }
  693. }
  694. .btns-wrap {
  695. display: table;
  696. float: right;
  697. height: 90px;
  698. width: 130px;
  699. .btns {
  700. display: table-cell;
  701. vertical-align: middle;
  702. text-align: center;
  703. .btn {
  704. cursor: pointer;
  705. margin: 2px 0;
  706. width: 122px;
  707. height: 32px;
  708. padding: 0;
  709. border-radius: 16px;
  710. display: inline-block;
  711. text-align: center;
  712. line-height: 32px;
  713. color: #fff;
  714. &--warm {
  715. background: #ff3b30;
  716. }
  717. }
  718. }
  719. }
  720. }
  721. }
  722. }
  723. .certificate-list {
  724. font-size: 0;
  725. .certificate-item {
  726. display: inline-block;
  727. margin-top: 24px;
  728. margin-right: 24px;
  729. width: 354px;
  730. height: 240px;
  731. background: linear-gradient(0deg, #ffffff, #e7f1ff);
  732. border: 1px solid #eeeeee;
  733. box-shadow: 0px 0px 7px 1px rgba(0, 0, 0, 0.04);
  734. border-radius: 10px;
  735. &:nth-of-type(3n) {
  736. margin: 0;
  737. }
  738. &__header {
  739. padding-left: 18px;
  740. overflow: hidden;
  741. border-bottom: 1px solid #fff;
  742. height: 95px;
  743. .title {
  744. margin-top: 16px;
  745. font-size: 14px;
  746. font-family: Microsoft YaHei;
  747. font-weight: bold;
  748. color: #333333;
  749. }
  750. .desc {
  751. margin-top: 14px;
  752. font-size: 14px;
  753. font-family: Microsoft YaHei;
  754. font-weight: 400;
  755. color: #666666;
  756. }
  757. }
  758. &__body {
  759. padding-left: 18px;
  760. overflow: hidden;
  761. border-bottom: 1px solid #fff;
  762. height: 80px;
  763. .title {
  764. margin-top: 16px;
  765. font-size: 14px;
  766. font-family: Microsoft YaHei;
  767. font-weight: bold;
  768. color: #333333;
  769. }
  770. .desc {
  771. margin-top: 14px;
  772. font-size: 14px;
  773. font-family: Microsoft YaHei;
  774. font-weight: 400;
  775. color: #666666;
  776. }
  777. }
  778. &__footer {
  779. height: 65px;
  780. padding-top: 16px;
  781. text-align: center;
  782. .btn {
  783. cursor: pointer;
  784. margin: 0 12px;
  785. display: inline-block;
  786. width: 122px;
  787. height: 32px;
  788. border: 1px solid #3f8dfd;
  789. border-radius: 16px;
  790. text-align: center;
  791. line-height: 30px;
  792. color: #3f8dfd;
  793. font-size: 16px;
  794. }
  795. }
  796. }
  797. }
  798. .no-data {
  799. text-align: center;
  800. padding: 50px 0;
  801. color: #666;
  802. font-size: 16px;
  803. }
  804. .pagination {
  805. padding: 30px 0;
  806. text-align: center;
  807. }
  808. }
  809. .appoint-modal {
  810. &__content {
  811. .el-radio {
  812. display: block;
  813. margin: 10px 30px 10px 0;
  814. }
  815. }
  816. }
  817. }
  818. </style>