Main.vue 26 KB

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