Main.vue 29 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094
  1. <template>
  2. <div class="container">
  3. <div class="lt">
  4. <div class="top">
  5. <ul>
  6. <li @click="goPage('member')">
  7. <img src="../assets/img/main/member.png" height="54" width="54"/>
  8. <div class="liRight">
  9. <h5>会员人数</h5>
  10. <span>{{ AllCount }}</span>
  11. </div>
  12. <div class="btLine">
  13. <em class="emlt">
  14. <i class="el-icon-caret-top"></i>
  15. 今日新增 {{ NowCount }}
  16. </em>
  17. <em class="emrt">
  18. <i class="el-icon-caret-top"></i>
  19. 昨日新增 {{ YesterdayCount }}
  20. </em>
  21. </div>
  22. </li>
  23. <li @click="goPage('record')">
  24. <img src="../assets/img/main/appoint.png" height="54" width="54"/>
  25. <div class="liRight">
  26. <h5>今日预约人数</h5>
  27. <span>{{ TodayOrderNum }}</span>
  28. </div>
  29. <div class="btLine">
  30. <em class="emlt">
  31. <i class="el-icon-caret-top"></i>
  32. 昨日预约 {{ YestodayOrderNum }}
  33. </em>
  34. <em class="emrt">
  35. <i class="el-icon-caret-top"></i>
  36. 较昨日新增 {{ TodayIncreaseNum }}
  37. </em>
  38. </div>
  39. </li>
  40. <li @click="goPage('lesson')">
  41. <img src="../assets/img/main/lesson.png" height="54" width="54"/>
  42. <div class="liRight">
  43. <h5>课程数量</h5>
  44. <span>{{ ClassNum }}</span>
  45. </div>
  46. <div class="btLine">
  47. <em class="emlt">
  48. <i class="el-icon-caret-top"></i>
  49. 已预约课程 {{ TodayOrderSttNum }}
  50. </em>
  51. </div>
  52. </li>
  53. </ul>
  54. </div>
  55. <div class="finish">
  56. <div class="title">
  57. <h5>课程管理</h5>
  58. <!-- <span>{{getNowDate}}</span>-->
  59. </div>
  60. <ul>
  61. <li v-for="c in PreFinishList">
  62. <div class="finListTitle" :style="{ background:c.ClassColor }">
  63. <em> {{ c.ClassName }}</em>
  64. <s>{{ c.BeginTime|parseDate }}</s>
  65. </div>
  66. <div class="context">
  67. <div class="ctl">
  68. <span>上课时间:{{ c.BeginStr }} - {{ c.EndStr }}</span>
  69. <span>预约人数:{{ c.OrderNum }} 人</span>
  70. </div>
  71. <em>
  72. </em>
  73. <el-button type="primary" plain @click="goFinish(c)" v-if="c.FinishClass == 0">上课</el-button>
  74. <el-button type="primary" plain @click="checkClassOverPrepare(c)" v-if="c.FinishClass == 2">管理</el-button>
  75. <el-button type="primary" plain @click="goFinish(c)" v-if="c.FinishClass == 3">编辑</el-button>
  76. </div>
  77. </li>
  78. <span class="tips" v-if="PreFinishList == 0">
  79. <img src="../assets/img/main/empty.jpg" height="116" width="92"/>
  80. <br>
  81. 暂无下课课程
  82. </span>
  83. </ul>
  84. </div>
  85. <div class="appoint">
  86. <div class="title">
  87. <h5>预约课程</h5>
  88. <span>{{ getNowDate }}</span>
  89. </div>
  90. <div class="appointCard">
  91. <el-card class="box-card" v-for="c in classList" @click.native="goLesson">
  92. <div class="cardTitle ">
  93. {{ c.ClassName }}
  94. </div>
  95. <span>
  96. {{ c.BeginStr }}
  97. </span>
  98. <em>最大预约人数 <i>{{ c.OrderToplimit }}</i></em>
  99. <em>已预约人数 <i>{{ c.OrderNum }}</i></em>
  100. <em>预约状态
  101. <s class="blue" v-if="c.WxOrder > 0">可预约</s>
  102. <s class="red" v-if="c.WxOrder == 0">不可预约</s>
  103. </em>
  104. </el-card>
  105. <span class="tips" v-if="classList == 0">
  106. <img src="../assets/img/main/empty.jpg" height="116" width="92"/>
  107. <br>
  108. 暂无预约课程,请先添加
  109. <router-link to="/lessonManage">课程表</router-link>
  110. </span>
  111. </div>
  112. </div>
  113. </div>
  114. <div class="rt">
  115. <div class="rtContext">
  116. <div class="rtTitle">
  117. <h5>最新预约</h5>
  118. <span @click="goPage('appoint','second')">查看全部</span>
  119. </div>
  120. <ul>
  121. <!-- TodayVipOrder-->
  122. <li v-for="as in appointList" @click="goAppointDetail(as.UserName)">
  123. <div class="asTitle">
  124. <img :src="as.Head" alt="" v-if="as.Head" width="25px" height="25px">
  125. <img src="../assets/img/nav/head.png" alt="" v-else width="25px" height="25px">
  126. <span>
  127. {{ as.UserName }}
  128. {{ as.Phone }} &nbsp; &nbsp; &nbsp;
  129. <em>预约时间: {{ as.Base.CreatedAt |parseDate }}</em>
  130. </span>
  131. </div>
  132. <div class="asContent">
  133. <span>上课时间:<em>{{ as.CurrentDate.substr(5, 6) }} {{ as.BeginStr }}</em></span>
  134. <span>预约状态:
  135. <em v-if="as.Status == 1" class="green">已预约</em>
  136. <em v-if="as.Status == 2" class="red">已取消</em>
  137. <em v-if="as.Status == 3" class="yellow">预约未到</em>
  138. <em v-if="as.Status == 4">已完成</em>
  139. </span>
  140. <span>预约课程:<s class="blue"
  141. :style="{ background:as.ClassColor }"> {{ as.ClassName }}</s></span>
  142. <span>剩余课时:<em :class="[{'red':as.RemainHour == 0}]">{{ as.RemainHour }}课时</em></span>
  143. </div>
  144. </li>
  145. <span class="tips middleTips" v-if="appointList == 0">
  146. <img src="../assets/img/main/empty.jpg" height="116" width="92"/>
  147. <br>
  148. 暂无预约,可进入
  149. <router-link to="/appoint">预约管理</router-link>
  150. </span>
  151. </ul>
  152. </div>
  153. </div>
  154. </div>
  155. </template>
  156. <script>
  157. import {
  158. ClassPreFinishListQuery,
  159. WaitingBeginClassList,
  160. ClassOngoingList,
  161. OrderStatistics,
  162. VipUserStatistics,
  163. ClassStatistics,
  164. ClassOverPrepare,
  165. VipUserOrderQuery,
  166. LastOrderQuery,
  167. } from "../api/getApiRes";
  168. let qs = require('qs');
  169. export default {
  170. data() {
  171. return {
  172. editableTabsValue: '1',
  173. getNowDate: getNowDate(),
  174. classList: [],
  175. PreFinishList: [],
  176. appointList: [],
  177. TodayClassOrder: [],
  178. TodayVipOrder: [],
  179. AllCount: 0,
  180. YesterdayCount: 0,
  181. YestodayOrderNum: 0,
  182. NowCount: 0,
  183. CountAdd: 0,
  184. TodayIncreaseNum: 0,
  185. TodayOrderNum: 0,
  186. ClassNum: 0,
  187. TodayOrderSttNum: 0,
  188. }
  189. },
  190. mounted() {
  191. let that = this;
  192. // 下课管理
  193. this.getVipUserStatistics();
  194. this.getClassStatistics();
  195. this.ClassQuery();
  196. this.getVipUserOrderQuery();
  197. // 预约统计
  198. this.getOrderStatistics();
  199. this.getWaitingBeginClassList();
  200. this.timer = setInterval(() => {
  201. that.getVipUserOrderQuery();
  202. this.getVipUserStatistics();
  203. this.getClassStatistics();
  204. this.ClassQuery();
  205. this.getOrderStatistics();
  206. this.getWaitingBeginClassList();
  207. }, 10000);
  208. },
  209. destroyed() {
  210. clearInterval(this.timer);//页面销毁时清除定时器
  211. },
  212. methods: {
  213. goLesson() {
  214. this.$router.push({
  215. path: '/appoint',
  216. })
  217. },
  218. goAppointDetail(name) {
  219. this.$router.push({
  220. path: '/appoint',
  221. query: {
  222. page: 'second',
  223. name: name
  224. }
  225. })
  226. },
  227. goPage(url, page) {
  228. this.$router.push({
  229. path: '/' + url,
  230. query: {
  231. page: page
  232. }
  233. })
  234. },
  235. // 会员统计
  236. getVipUserStatistics() {
  237. let that = this;
  238. let param = {
  239. token: localStorage.token,
  240. };
  241. let postdata = qs.stringify(param);
  242. VipUserStatistics(postdata).then(res => {
  243. let json = res;
  244. if (json.Code == 0) {
  245. that.AllCount = json.Rs.AllCount;
  246. that.YesterdayCount = json.Rs.YesterdayCount;
  247. that.NowCount = json.Rs.NowCount;
  248. that.CountAdd = json.Rs.CountAdd;
  249. } else {
  250. if (json.Code == 1010) {
  251. that.$message.error(json.Memo);
  252. that.$router.push({path: '/login', query: {status: 1}});
  253. return false
  254. } else {
  255. that.$message.error(json.Memo);
  256. }
  257. }
  258. })
  259. },
  260. // 课程统计
  261. getClassStatistics() {
  262. let that = this;
  263. let param = {
  264. token: localStorage.token,
  265. };
  266. let postdata = qs.stringify(param);
  267. ClassStatistics(postdata).then(res => {
  268. let json = res;
  269. if (json.Code == 0) {
  270. that.ClassNum = json.Rs.ClassNum;
  271. that.TodayOrderSttNum = json.Rs.TodayOrderSttNum;
  272. } else {
  273. that.$message.error(json.Memo);
  274. }
  275. })
  276. },
  277. getOrderStatistics() {
  278. let that = this;
  279. that.loading = true;
  280. let param = {
  281. token: localStorage.token,
  282. };
  283. let postdata = qs.stringify(param);
  284. OrderStatistics(postdata).then(res => {
  285. let json = res;
  286. if (json.Code == 0) {
  287. that.loading = false;
  288. if (json.Rs) {
  289. that.TodayIncreaseNum = json.Rs.TodayIncreaseNum;
  290. that.TodayOrderNum = json.Rs.TodayOrderNum;
  291. that.YestodayOrderNum = json.Rs.YestodayOrderNum;
  292. }
  293. } else {
  294. that.$message.error(json.Memo);
  295. }
  296. })
  297. },
  298. checkClassOverPrepare(row) {
  299. let that = this;
  300. // courseEdit
  301. this.$router.push({
  302. path: '/courseEdit', query: {
  303. StdId: row.StdId,
  304. ClassName: row.ClassName,
  305. BeginStr: row.BeginStr,
  306. EndStr: row.EndStr,
  307. FinishClass: row.FinishClass,
  308. }
  309. });
  310. },
  311. goFinish(row) {
  312. this.$router.push({
  313. path: '/courses', query: {
  314. // id: row.StdId,
  315. // classId: row.ClassId,
  316. // ClassName: row.ClassName,
  317. // BeginTime: row.BeginTime,
  318. }
  319. });
  320. },
  321. getWaitingBeginClassList() {
  322. let that = this;
  323. that.loading = true;
  324. let param = {
  325. token: localStorage.token,
  326. };
  327. let postdata = qs.stringify(param);
  328. WaitingBeginClassList(postdata).then(res => {
  329. let json = res;
  330. if (json.Code == 0) {
  331. that.loading = false;
  332. that.classList = json.Rs;
  333. } else {
  334. that.$message.error(json.Memo);
  335. }
  336. })
  337. },
  338. // 下课管理
  339. ClassQuery() {
  340. let that = this;
  341. that.loading = true;
  342. let param = {
  343. token: localStorage.token,
  344. };
  345. let postdata = qs.stringify(param);
  346. ClassOngoingList(postdata).then(res => {
  347. let json = res;
  348. if (json.Code == 0) {
  349. that.loading = false;
  350. if (json.Rs) {
  351. that.PreFinishList = json.Rs;
  352. }
  353. } else {
  354. that.$message.error(json.Memo);
  355. }
  356. })
  357. },
  358. // 最新预约
  359. getVipUserOrderQuery() {
  360. let that = this;
  361. that.loading = true;
  362. let param = {
  363. token: localStorage.token,
  364. classId: 0,
  365. orderDate: globalcurrent(),
  366. stdId: 0,
  367. };
  368. let postdata = qs.stringify(param);
  369. // VipUserOrderQuery(postdata).then(res => {
  370. LastOrderQuery(postdata).then(res => {
  371. let json = res;
  372. if (json.Code == 0) {
  373. that.loading = false;
  374. if (json.Rs) {
  375. that.appointList = json.Rs;
  376. }
  377. } else {
  378. that.$message.error(json.Memo);
  379. }
  380. })
  381. }
  382. },
  383. filters: {
  384. parseDate: function (value) {
  385. if (!value) {
  386. return false
  387. } else {
  388. let res = nonTfmtDatetoLength(value, 10).substr(5, 10);
  389. return res;
  390. }
  391. },
  392. },
  393. watch: {
  394. $route(to) {
  395. if (to.name == 'Main') {
  396. this.getVipUserStatistics();
  397. this.getClassStatistics();
  398. this.ClassQuery();
  399. this.getVipUserOrderQuery();
  400. this.getOrderStatistics();
  401. this.getWaitingBeginClassList();
  402. } else {
  403. clearInterval(this.timer);//页面销毁时清除定时器
  404. }
  405. },
  406. },
  407. }
  408. </script>
  409. <style scoped>
  410. ul, li {
  411. list-style: none;
  412. margin: 0;
  413. padding: 0;
  414. }
  415. em {
  416. font-style: normal;
  417. }
  418. .container {
  419. width: 100%;
  420. height: 760px;
  421. overflow: hidden;
  422. overflow-y: scroll;
  423. display: block;
  424. margin: 0 auto;
  425. padding-bottom: 60px;
  426. }
  427. .container > .lt {
  428. width: 1173px;
  429. float: left;
  430. margin-top: 0px;
  431. }
  432. .container > .rt {
  433. /*width: 436px;*/
  434. width: 26%;
  435. height: 100%;
  436. float: right;
  437. }
  438. .lt .top {
  439. width: 100%;
  440. overflow: hidden;
  441. display: block;
  442. margin: 0 auto;
  443. }
  444. .lt .top li {
  445. width: 377px;
  446. height: 140px;
  447. float: left;
  448. background: #fff;
  449. border-radius: 12px;
  450. margin-right: 20px;
  451. cursor: pointer;
  452. }
  453. .lt .top li:nth-child(3) {
  454. margin-right: 0;
  455. }
  456. .top li img {
  457. float: left;
  458. margin-top: 17px;
  459. margin-left: 30px;
  460. margin-right: 24px;
  461. }
  462. .top li .liRight {
  463. width: 200px;
  464. float: left;
  465. margin-top: 17px;
  466. }
  467. .top .liRight h5 {
  468. margin: 0;
  469. padding: 0;
  470. text-align: left;
  471. }
  472. .top .liRight span {
  473. width: 100%;
  474. overflow: hidden;
  475. display: block;
  476. margin: 0 auto;
  477. text-align: left;
  478. font-size: 26px;
  479. font-family: Arial;
  480. margin-top: 7px;
  481. margin-bottom: 20px;
  482. }
  483. .btLine {
  484. width: 84%;
  485. overflow: hidden;
  486. display: block;
  487. margin: 0 auto;
  488. border-top: 1px solid #F0F2F5;
  489. padding-top: 17px;
  490. }
  491. .btLine em {
  492. font-size: 14px;
  493. }
  494. .btLine .emlt {
  495. width: 50%;
  496. float: left;
  497. text-align: left;
  498. }
  499. .btLine i {
  500. font-size: 18px;
  501. color: #BDBDBD;
  502. }
  503. .emlt i {
  504. float: left;
  505. }
  506. .finish {
  507. width: 100%;
  508. min-height: 358px;
  509. overflow: hidden;
  510. display: block;
  511. margin: 0 auto;
  512. background: #fff;
  513. margin-top: 15px;
  514. border-radius: 12px;
  515. padding-top: 15px;
  516. padding-bottom: 0px;
  517. }
  518. .finish .title {
  519. overflow: hidden;
  520. display: block;
  521. margin: 0 auto;
  522. padding-left: 30px;
  523. }
  524. .finish .title h5 {
  525. margin: 0;
  526. float: left;
  527. font-size: 18px;
  528. }
  529. .finish .title span {
  530. float: right;
  531. margin-right: 43px;
  532. font-size: 14px;
  533. color: #717171;
  534. }
  535. .finish ul {
  536. overflow: hidden;
  537. display: block;
  538. margin: 0 auto;
  539. padding-left: 30px;
  540. padding-right: 30px;
  541. margin: 0 auto;
  542. margin-top: 10px;
  543. }
  544. .finish ul li {
  545. width: 347px;
  546. height: 149px;
  547. overflow: hidden;
  548. float: left;
  549. margin-bottom: 14px;
  550. }
  551. .finish ul li:nth-child(2) {
  552. margin-left: 24px;
  553. margin-right: 24px;
  554. }
  555. .finish ul li:nth-child(5) {
  556. margin-left: 24px;
  557. margin-right: 24px;
  558. }
  559. .finish li .finListTitle {
  560. width: 100%;
  561. height: 35px;
  562. line-height: 35px;
  563. overflow: hidden;
  564. display: block;
  565. margin: 0 auto;
  566. background-color: #3799FF;
  567. border-top-left-radius: 7px;
  568. border-top-right-radius: 7px;
  569. color: #000;
  570. }
  571. li .finListTitle em {
  572. float: left;
  573. color: #fff;
  574. padding-left: 5%;
  575. }
  576. li .finListTitle s {
  577. float: right;
  578. text-decoration: none;
  579. color: #fff;
  580. padding-right: 5%;
  581. }
  582. .finish li .context {
  583. width: 344px;
  584. overflow: hidden;
  585. display: block;
  586. margin: 0 auto;
  587. border: 1px solid #E8E8E8;
  588. border-top: none;
  589. padding-top: 16px;
  590. padding-bottom: 16px;
  591. border-bottom-left-radius: 7px;
  592. border-bottom-right-radius: 7px;
  593. }
  594. .finish .context em {
  595. width: 85px;
  596. overflow: hidden;
  597. display: block;
  598. margin: 0 auto;
  599. height: 40px;
  600. line-height: 30px;
  601. color: #BDBDBD;
  602. }
  603. .context button {
  604. height: 30px;
  605. line-height: 30px;
  606. padding-top: 0;
  607. }
  608. .context .ctl {
  609. width: 211px;
  610. float: left;
  611. padding-left: 16px;
  612. margin-right: 20px;
  613. }
  614. .ctl span {
  615. width: 100%;
  616. height: 30px;
  617. line-height: 30px;
  618. overflow: hidden;
  619. display: block;
  620. margin: 0 auto;
  621. background-color: #F8F8F8;
  622. color: #404040;
  623. font-size: 14px;
  624. text-align: left;
  625. padding-left: 20px;
  626. margin-bottom: 15px;
  627. }
  628. .ctl span:nth-child(2) {
  629. margin-bottom: 0px;
  630. }
  631. /deep/ .el-button--primary.is-plain {
  632. background-color: #fff;
  633. }
  634. /deep/ .el-button--primary.is-plain:hover {
  635. color: #005EA2 !important;
  636. }
  637. .blue {
  638. color: #3799FF;
  639. }
  640. .appoint {
  641. width: 100%;
  642. overflow: hidden;
  643. display: block;
  644. margin: 0 auto;
  645. background: #fff;
  646. margin-top: 15px;
  647. border-radius: 12px;
  648. padding-top: 15px;
  649. padding-bottom: 1px;
  650. }
  651. .appoint .title {
  652. overflow: hidden;
  653. display: block;
  654. margin: 0 auto;
  655. padding-left: 30px;
  656. }
  657. .appoint .title h5 {
  658. margin: 0;
  659. float: left;
  660. font-size: 18px;
  661. }
  662. .appoint .title span {
  663. float: right;
  664. margin-right: 43px;
  665. font-size: 14px;
  666. color: #717171;
  667. }
  668. .appoint .appointCard {
  669. min-height: 195px;
  670. overflow: hidden;
  671. display: block;
  672. margin: 0 auto;
  673. padding-top: 25px;
  674. padding-bottom: 25px;
  675. padding-left: 30px;
  676. padding-right: 30px;
  677. }
  678. /deep/ .el-card {
  679. width: 150px;
  680. float: left;
  681. margin-right: 31px;
  682. padding: 0;
  683. border-radius: 12px;
  684. }
  685. /deep/ .el-card:nth-child(last) {
  686. margin-right: 0;
  687. }
  688. /deep/ .el-card__body {
  689. padding: 0;
  690. }
  691. .cardTitle {
  692. width: 100%;
  693. overflow: hidden;
  694. display: block;
  695. margin: 0 auto;
  696. height: 40px;
  697. line-height: 40px;
  698. background: #F0F2F5;
  699. }
  700. .appointCard span {
  701. width: 100%;
  702. overflow: hidden;
  703. display: block;
  704. margin: 0 auto;
  705. color: #777777;
  706. font-family: Arial;
  707. margin-top: 10px;
  708. margin-bottom: 10px;
  709. font-size: 16px;
  710. }
  711. .appointCard em {
  712. overflow: hidden;
  713. display: block;
  714. margin: 0 auto;
  715. font-size: 12px;
  716. margin-bottom: 14px;
  717. text-align: left;
  718. padding-left: 16px;
  719. padding-right: 16px;
  720. }
  721. .appointCard em i {
  722. float: right;
  723. color: #000000;
  724. padding-right: 3px;
  725. }
  726. .appointCard em s {
  727. /*width: 47px;*/
  728. height: 20px;
  729. line-height: 20px;
  730. text-align: center;
  731. font-style: normal;
  732. text-decoration: none;
  733. float: right;
  734. border-radius: 3px;
  735. padding: 0 3px;
  736. }
  737. .appointCard em s.blue {
  738. background-color: #E5F2FF;
  739. color: #3799FF;
  740. }
  741. .appointCard em s.red {
  742. background-color: #E5F2FF;
  743. color: rgb(204, 2, 2);
  744. }
  745. .rtContext {
  746. width: 100%;
  747. height: 100%;
  748. overflow: hidden;
  749. overflow-y: hidden;
  750. display: block;
  751. margin: 0 auto;
  752. margin-top: 0px;
  753. background: #fff;
  754. padding: 0;
  755. border-radius: 12px;
  756. min-height: 826px;
  757. background: #fff;
  758. }
  759. .rtContext .rtTitle {
  760. overflow: hidden;
  761. display: block;
  762. margin: 0 auto;
  763. padding: 10px 30px;
  764. }
  765. .rtTitle h5 {
  766. margin: 0;
  767. float: left;
  768. font-size: 18px;
  769. }
  770. .rtTitle span {
  771. float: right;
  772. font-size: 14px;
  773. color: #BDBDBD;
  774. cursor: pointer;
  775. }
  776. .rtContext ul {
  777. width: 100%;
  778. overflow: hidden;
  779. display: block;
  780. height: 100%;
  781. overflow: hidden;
  782. overflow-y: scroll;
  783. margin: 0 auto;
  784. padding-left: 30px;
  785. padding-right: 30px;
  786. }
  787. .rtContext li {
  788. width: 100%;
  789. overflow: hidden;
  790. display: block;
  791. margin: 0 auto;
  792. border-bottom: 1px solid #F0F2F5;
  793. padding-top: 30px;
  794. padding-bottom: 10px;
  795. cursor: pointer;
  796. }
  797. .asTitle {
  798. width: 100%;
  799. height: 30px;
  800. overflow: hidden;
  801. display: block;
  802. margin: 0 auto;
  803. text-align: left;
  804. line-height: 20px;
  805. color: #000000;
  806. font-size: 14px;
  807. }
  808. .asTitle img {
  809. float: left;
  810. margin-right: 5px;
  811. }
  812. .asTitle span {
  813. /*width: 26px;*/
  814. min-width: 300px;
  815. height: 30px;
  816. line-height: 26px;
  817. float: left;
  818. margin-right: 10px;
  819. }
  820. .asTitle em {
  821. float: right;
  822. text-align: right;
  823. }
  824. .asContent {
  825. width: 100%;
  826. overflow: hidden;
  827. display: block;
  828. margin: 0 auto;
  829. }
  830. .asContent span {
  831. width: 50%;
  832. float: left;
  833. font-size: 14px;
  834. color: #BDBDBD;
  835. margin-bottom: 10px;
  836. text-align: left;
  837. text-indent: 8px;
  838. }
  839. .asContent span em {
  840. color: #000;
  841. text-align: left;
  842. }
  843. .asContent span s {
  844. text-decoration: none;
  845. color: #000;
  846. border-radius: 250px;
  847. padding: 3px 5px;
  848. text-align: center;
  849. }
  850. .asContent span s.blue {
  851. background-color: #E5F2FF;
  852. }
  853. .box-card {
  854. cursor: pointer;
  855. }
  856. .box-card em {
  857. font-style: normal;
  858. }
  859. i {
  860. font-style: normal;
  861. }
  862. .asContent .green {
  863. color: #25CC42;
  864. }
  865. .asContent .red {
  866. color: red;
  867. }
  868. .asContent .yellow {
  869. color: #FFDD00;
  870. }
  871. /deep/ a {
  872. color: #03B1FF;
  873. }
  874. .tips {
  875. color: #333;
  876. font-size: 14px !important;
  877. overflow: hidden;
  878. display: block;
  879. margin: 0 auto;
  880. margin-top: 10px;
  881. line-height: 30px;
  882. }
  883. .middleTips {
  884. margin-top: 180px;
  885. }
  886. /*ipad only*/
  887. @media only screen and (max-width: 1366px) {
  888. .container {
  889. height: 600px;
  890. padding-top: 6px;
  891. }
  892. .container .lt {
  893. width: 80%;
  894. }
  895. .lt .top {
  896. width: 96%;
  897. }
  898. .lt .top li {
  899. width: 32%;
  900. margin-right: 2%;
  901. }
  902. .top li .liRight {
  903. width: 40%;
  904. }
  905. .btLine {
  906. width: 96%;
  907. }
  908. .btLine em {
  909. font-size: 12px;
  910. float: left;
  911. line-height: 22px;
  912. }
  913. .finish ul li {
  914. width: 30%;
  915. /*height: 159px;*/
  916. overflow: hidden;
  917. padding-bottom: 20px;
  918. }
  919. .finish li .context {
  920. width: 99%;
  921. overflow: hidden;
  922. display: block;
  923. margin: 0;
  924. padding: 0px;
  925. height: auto !important;
  926. padding-bottom: 5px;
  927. border-top-left-radius: 0;
  928. border-top-right-radius: 0;
  929. }
  930. .finish li .context .ctl {
  931. width: 100%;
  932. overflow: hidden;
  933. display: block;
  934. margin: 0;
  935. padding: 0;
  936. padding-top: 6px;
  937. margin-bottom: 3px;
  938. }
  939. .ctl span {
  940. width: 80%;
  941. padding: 0;
  942. font-size: 12px;
  943. text-align: center;
  944. }
  945. .finish {
  946. width: 97%;
  947. }
  948. .appoint {
  949. width: 97%;
  950. }
  951. .finish .context em {
  952. height: 30px;
  953. line-height: 40px;
  954. font-size: 12px;
  955. float: left;
  956. }
  957. .finish .context {
  958. height: auto !important;
  959. padding-bottom: 5px;
  960. }
  961. .el-main > .container {
  962. /*height: 772px;*/
  963. }
  964. .container .rt {
  965. width: 20%;
  966. }
  967. .rtTitle span {
  968. font-size: 12px;
  969. line-height: 30px;
  970. }
  971. .rtContext ul {
  972. padding: 2px !important;
  973. font-size: 12px;
  974. }
  975. .asTitle {
  976. width: 30px;
  977. float: left;
  978. }
  979. .asContent {
  980. width: 82%;
  981. }
  982. .asContent span {
  983. width: 100%;
  984. overflow: hidden;
  985. display: block;
  986. margin: 0 auto;
  987. font-size: 12px;
  988. height: 20px;
  989. }
  990. }
  991. </style>