incidentList.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863
  1. <template>
  2. <div class="bgColor">
  3. <div slot="content" class="scroll-wrapper">
  4. <div class="demo">
  5. <div class="header">事件列表</div>
  6. <cube-select
  7. class="stateSearch"
  8. v-model="searchType"
  9. :options="searchsType"
  10. @change="stateChange()"
  11. ></cube-select>
  12. <div class="scroll-list-wrap">
  13. <cube-scroll
  14. ref="scroll"
  15. :data="items"
  16. :options="options"
  17. @pulling-down="onPullingDown"
  18. @pulling-up="onPullingUp"
  19. >
  20. <div class="conentBox" v-if="!loadShow && items.length">
  21. <div
  22. class="conent"
  23. v-for="item in items"
  24. :key="item.id"
  25. @click="toIncidentDetails(item)"
  26. >
  27. <div class="head">
  28. <p>
  29. <i class="iconfont icon-zuixinbaoxiu newPapir"></i>
  30. 事件编号:{{ item.incidentsign }}
  31. <span
  32. :class="{
  33. btn: true,
  34. daipingjia: item.state.name == '待评价',
  35. daijiedan:
  36. item.state.name == '待接单' &&
  37. item.handlerUser &&
  38. !item.candidateGroups,
  39. daiqiangdan:
  40. item.state.name == '待接单' &&
  41. !item.handlerUser &&
  42. item.candidateGroups,
  43. chulizhong: item.state.name == '处理中',
  44. yijiejue: item.state.name == '已解决',
  45. yiguanbi: item.state.name == '已关闭',
  46. chongxinzhipai: item.state.name == '重新指派'
  47. }"
  48. >{{
  49. item.state.name == "待接单"
  50. ? item.handlerUser && !item.candidateGroups
  51. ? "待接单"
  52. : "待抢单"
  53. : item.state.name
  54. }}</span
  55. >
  56. </p>
  57. </div>
  58. <div class="center">
  59. <p class="desc">
  60. <span class="fl">事件描述:</span>
  61. <span
  62. class="grayFont overflowEllipsis2"
  63. v-html="item.description"
  64. ></span>
  65. </p>
  66. <p>
  67. 报修<span>{{ valConfig == 1 ? "人" : "科室" }}</span> :
  68. <span class="grayFont">{{ item.contacts }}</span>
  69. <span @click.stop v-if="item.contactsInformation"
  70. ><a :href="'tel:' + item.contactsInformation"
  71. >(<i class="iconfont icon-shouji"></i
  72. >{{ item.contactsInformation }})</a
  73. ></span
  74. >
  75. </p>
  76. </div>
  77. <div class="bottom">
  78. <span v-if="!item.place"></span>
  79. <span
  80. v-if="item.place"
  81. style="width:70%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"
  82. >{{ item.branch?item.branch.hosName:'' }} {{ item.place.area.area }} {{ item.place.place }}
  83. {{ item.houseNumber }}</span
  84. >
  85. <span>{{ item.acceptDate | timeFormat("MM-dd HH:mm") }}</span>
  86. </div>
  87. <div class="btns">
  88. <cube-form-group
  89. class="sub-btn"
  90. v-show="
  91. (item.state.id === 1544 || item.state.id === 1543) &&
  92. isAssign &&
  93. item.assignee
  94. "
  95. >
  96. <cube-button @click.stop="assign(item)">指派</cube-button>
  97. </cube-form-group>
  98. <cube-form-group
  99. class="sub-btn"
  100. v-show="item.state.id === 1544"
  101. >
  102. <cube-button @click.stop="addHandlerLog(item)"
  103. >新增沟通记录</cube-button
  104. >
  105. </cube-form-group>
  106. </div>
  107. </div>
  108. </div>
  109. <template slot="pulldown" slot-scope="props">
  110. <div
  111. v-if="props.pullDownRefreshObj"
  112. class="cube-pulldown-wrapper"
  113. :style="props.pullDownStyle"
  114. >
  115. <div
  116. v-show="props.beforePullDown"
  117. class="before-trigger"
  118. :style="{ paddingTop: props.bubbleY + 'px' }"
  119. >
  120. <span
  121. :class="{
  122. rotate: props.bubbleY > pullDownRefreshThreshold - 80
  123. }"
  124. >↓</span
  125. >
  126. </div>
  127. <div class="after-trigger" v-show="!props.beforePullDown">
  128. <div v-show="props.isPullingDown" class="loading">
  129. <cube-loading></cube-loading>
  130. </div>
  131. <div v-show="!props.isPullingDown" class="text">
  132. <span class="refresh-text">更新成功</span>
  133. </div>
  134. </div>
  135. </div>
  136. </template>
  137. <div class="wushuju" v-if="!loadShow && items.length === 0">
  138. <img src="./../../static/images/wushuju.svg" alt />
  139. <p>暂无事件</p>
  140. </div>
  141. </cube-scroll>
  142. </div>
  143. </div>
  144. </div>
  145. <load-ing v-show="loadShow"></load-ing>
  146. <!-- 指派弹窗 -->
  147. <showModel
  148. :title="models.title"
  149. :icon="models.icon"
  150. :disjunctor="models.disjunctor"
  151. @ok="ok"
  152. @cancel="cancel"
  153. :operate="models.operate"
  154. selectName="user"
  155. ></showModel>
  156. <!-- 新增沟通记录弹窗 -->
  157. <showModel
  158. :title="models1.title"
  159. :icon="models1.icon"
  160. :disjunctor="models1.disjunctor"
  161. @ok="ok1"
  162. @cancel="cancel1"
  163. :operate="models1.operate"
  164. textName="textarea"
  165. ></showModel>
  166. </div>
  167. </template>
  168. <script>
  169. import Vue from "vue";
  170. import showModel from "../components/showModel/showModel.vue";
  171. import CubePage from "../components/cube-page.vue";
  172. import SwitchOption from "../components/switch-option";
  173. import InputOption from "../components/input-option";
  174. import SelectOption from "../components/select-option";
  175. import { formatDate } from "./../components/js/date.js";
  176. import LoadIng from "./../views/loading.vue";
  177. export default {
  178. data() {
  179. return {
  180. modelsData: null, //点击弹窗的那一项数据
  181. modelsData1: null, //点击弹窗的那一项数据
  182. // 弹窗model
  183. models: {
  184. disjunctor: false
  185. },
  186. models1: {
  187. disjunctor: false
  188. },
  189. isAssign: false, //是否有权限指派
  190. loginUser: JSON.parse(localStorage.getItem("loginUser")),
  191. valConfig: JSON.parse(localStorage.getItem("valConfig")) - 0, //报修主体
  192. items: [],
  193. pullDownRefresh: true,
  194. pullDownRefreshThreshold: 60,
  195. pullDownRefreshStop: 40,
  196. pullDownRefreshTxt: "更新成功",
  197. pullUpLoad: true,
  198. pullUpLoadThreshold: 0,
  199. pullUpLoadMoreTxt: "加载更多",
  200. pullUpLoadNoMoreTxt: "没有更多数据",
  201. customPullDown: true,
  202. candidateGroups: "",
  203. searchsType: [
  204. {
  205. text: "全部",
  206. value: "userAll"
  207. },
  208. {
  209. text: "待处理",
  210. value: "todo"
  211. },
  212. {
  213. text: "处理过",
  214. value: "done"
  215. }
  216. // {
  217. // text: "我创建",
  218. // value: "create"
  219. // }
  220. ],
  221. searchType: "userAll",
  222. type: "all",
  223. sum: 10,
  224. idx: 0,
  225. stateClass: "",
  226. loadShow: true
  227. };
  228. },
  229. components: {
  230. CubePage,
  231. SwitchOption,
  232. InputOption,
  233. SelectOption,
  234. LoadIng,
  235. showModel
  236. },
  237. computed: {
  238. options() {
  239. return {
  240. pullDownRefresh: this.pullDownRefreshObj,
  241. pullUpLoad: this.pullUpLoadObj,
  242. scrollbar: true
  243. };
  244. },
  245. pullDownRefreshObj: function() {
  246. return this.pullDownRefresh
  247. ? {
  248. threshold: parseInt(this.pullDownRefreshThreshold),
  249. txt: this.pullDownRefreshTxt
  250. }
  251. : false;
  252. },
  253. pullUpLoadObj: function() {
  254. return this.pullUpLoad
  255. ? {
  256. threshold: parseInt(this.pullUpLoadThreshold),
  257. txt: {
  258. more: this.pullUpLoadMoreTxt,
  259. noMore: this.pullUpLoadNoMoreTxt
  260. }
  261. }
  262. : false;
  263. }
  264. },
  265. methods: {
  266. //确定
  267. ok(selectUserId) {
  268. console.log(selectUserId);
  269. if (!selectUserId) {
  270. this.$createDialog({
  271. type: "alert",
  272. title: "请选择指派对象",
  273. icon: "cubeic-warn"
  274. }).show();
  275. return;
  276. }
  277. const toast = this.$createToast({
  278. txt: "Loading...",
  279. mask: true
  280. });
  281. toast.show();
  282. this.$http
  283. .post("service/bpm/bpm/delegateTask/" + this.modelsData.taskId, {
  284. assginee: selectUserId
  285. })
  286. .then(res => {
  287. toast.hide();
  288. this.models.disjunctor = false;
  289. if (res.status == 200) {
  290. this.$createDialog({
  291. type: "alert",
  292. title: "操作成功",
  293. icon: "cubeic-right",
  294. onConfirm: (e, promptValue) => {
  295. this.loadShow = true;
  296. this.items = [];
  297. this.idx = 0;
  298. this.getData();
  299. }
  300. }).show();
  301. } else {
  302. this.$createDialog({
  303. type: "alert",
  304. title: "系统错误,请稍后再试!",
  305. icon: "cubeic-wrong",
  306. onConfirm: (e, promptValue) => {
  307. this.loadShow = true;
  308. this.items = [];
  309. this.idx = 0;
  310. this.getData();
  311. }
  312. }).show();
  313. }
  314. });
  315. },
  316. //取消
  317. cancel() {
  318. this.models.disjunctor = false;
  319. },
  320. // 指派
  321. assign(item) {
  322. this.modelsData = item;
  323. this.models = {
  324. disjunctor: true,
  325. title: "指派对象",
  326. icon: "warn",
  327. operate: {
  328. ok: "确定",
  329. cancel: "取消"
  330. }
  331. };
  332. },
  333. //确定
  334. ok1(text) {
  335. console.log(text);
  336. if (!text.trim()) {
  337. this.$createDialog({
  338. type: "alert",
  339. title: "请填写沟通结果",
  340. icon: "cubeic-warn"
  341. }).show();
  342. return;
  343. }
  344. const toast = this.$createToast({
  345. txt: "Loading...",
  346. mask: true
  347. });
  348. toast.show();
  349. this.$http
  350. .post("service/bpm/data/addData/operationLog", {
  351. operationLog: {
  352. opType: "handlerLog",
  353. opValue: text,
  354. extra1: this.modelsData1.id
  355. }
  356. })
  357. .then(res => {
  358. toast.hide();
  359. this.models1.disjunctor = false;
  360. if (res.status == 200) {
  361. this.$createDialog({
  362. type: "alert",
  363. title: "操作成功",
  364. icon: "cubeic-right",
  365. onConfirm: (e, promptValue) => {
  366. this.loadShow = true;
  367. this.items = [];
  368. this.idx = 0;
  369. this.getData();
  370. }
  371. }).show();
  372. } else {
  373. this.$createDialog({
  374. type: "alert",
  375. title: "系统错误,请稍后再试!",
  376. icon: "cubeic-wrong",
  377. onConfirm: (e, promptValue) => {
  378. this.loadShow = true;
  379. this.items = [];
  380. this.idx = 0;
  381. this.getData();
  382. }
  383. }).show();
  384. }
  385. });
  386. },
  387. //取消
  388. cancel1() {
  389. this.models1.disjunctor = false;
  390. },
  391. // 新增沟通记录
  392. addHandlerLog(item) {
  393. this.modelsData1 = item;
  394. this.models1 = {
  395. disjunctor: true,
  396. title: "新增沟通记录",
  397. icon: "warn",
  398. operate: {
  399. ok: "确定",
  400. cancel: "取消"
  401. }
  402. };
  403. },
  404. getParamsState() {
  405. if (this.$route.params.type) {
  406. this.type = this.$route.params.type;
  407. if (this.type === "todo") {
  408. this.searchType = "todo";
  409. } else if (this.type === "done") {
  410. this.searchType = "done";
  411. } else {
  412. this.searchType = "userAll";
  413. }
  414. }
  415. },
  416. stateChange() {
  417. var that = this;
  418. this.loadShow = true;
  419. that.items = [];
  420. that.idx = 0;
  421. that.sum = 10;
  422. that.getData();
  423. },
  424. toIncidentDetails(data) {
  425. console.log(1111111);
  426. console.log(data);
  427. var name = "";
  428. if (data.state.value == "pending") {
  429. if (data.handlerUser && !data.candidateGroups) {
  430. // 指派给人 接单
  431. name = "Order";
  432. } else if (data.candidateGroups && !data.handlerUser) {
  433. // 指派给组 抢单
  434. name = "GrabSheet";
  435. }
  436. } else if (data.state.value == "reassign") {
  437. name = "AgainAssign";
  438. } else if (data.state.value == "handler") {
  439. name = "Processing";
  440. } else if (data.state.value == "resolved") {
  441. name = "Solved";
  442. } else if (data.state.value == "close") {
  443. name = "Closed";
  444. }
  445. this.$router.push({
  446. name: name,
  447. params: {
  448. data: data
  449. }
  450. });
  451. },
  452. getData() {
  453. var that = this;
  454. let postData = {
  455. assignee: that.loginUser.id,
  456. candidateGroups: that.candidateGroups,
  457. searchType: that.searchType,
  458. idx: that.idx,
  459. sum: that.sum,
  460. incident: { temporary: true }
  461. };
  462. if (this.type === "today") {
  463. postData.incident.acceptDate =
  464. formatDate(new Date(), "yyyy-MM-dd") + " 00:00:00";
  465. postData.incident.acceptDateEnd =
  466. formatDate(new Date(), "yyyy-MM-dd") + " 23:59:59";
  467. }
  468. that.$http
  469. .post("service/bpm/bpm/fetchTask/bpm_incident", postData)
  470. .then(function(res) {
  471. if (res.data.data.length > 0) {
  472. for (var i = 0; i < res.data.data.length; i++) {
  473. res.data.data[i].createTime = formatDate(
  474. new Date(res.data.data[i].createTime),
  475. "yyyy-MM-dd hh:mm"
  476. );
  477. }
  478. if (that.idx) {
  479. that.items = that.items.concat(res.data.data);
  480. } else {
  481. that.items = res.data.data;
  482. }
  483. } else {
  484. that.pullUpLoad = false;
  485. }
  486. that.loadShow = false;
  487. });
  488. },
  489. onPullingDown() {
  490. var that = this;
  491. that.idx = 0;
  492. that.sum = 10;
  493. setTimeout(() => {
  494. that.getData();
  495. }, 1000);
  496. },
  497. onPullingUp() {
  498. var that = this;
  499. that.idx = that.idx + 1;
  500. that.getData();
  501. },
  502. updatePullDownRefresh(val) {
  503. this.pullDownRefresh = val;
  504. },
  505. updatePullDownRefreshThreshold(val) {
  506. this.pullDownRefreshThreshold = val;
  507. },
  508. updatePullDownRefreshTxt(val) {
  509. this.pullDownRefreshTxt = val;
  510. },
  511. updatePullUpLoad(val) {
  512. this.pullUpLoad = val;
  513. },
  514. updatePullUpLoadThreshold(val) {
  515. this.pullUpLoadThreshold = val;
  516. },
  517. updatePullUpLoadMoreTxt(val) {
  518. this.pullUpLoadMoreTxt = val;
  519. },
  520. updatePullUpLoadNoMoreTxt(val) {
  521. this.pullUpLoadNoMoreTxt = val;
  522. },
  523. updateCustomPullDown(val) {
  524. this.customPullDown = val;
  525. },
  526. rebuildScroll() {
  527. Vue.nextTick(() => {
  528. this.$refs.scroll.destroy();
  529. this.$refs.scroll.initScroll();
  530. });
  531. }
  532. },
  533. created() {
  534. var that = this;
  535. let menu = JSON.parse(localStorage.getItem("menu"));
  536. if (menu) {
  537. this.isAssign = menu.some(v => v.link == "shijianliebiao_assign");
  538. }
  539. that.loginUser.group.forEach(element => {
  540. that.candidateGroups += element.id + ",";
  541. });
  542. that.candidateGroups = that.candidateGroups.substring(
  543. 0,
  544. that.candidateGroups.length - 1
  545. );
  546. this.getParamsState();
  547. this.loadShow = true;
  548. this.getData();
  549. localStorage.removeItem("modelData");
  550. // localStorage.removeItem("category");
  551. // localStorage.removeItem("categoryVal");
  552. localStorage.removeItem("referenceInfo");
  553. localStorage.removeItem("order");
  554. localStorage.removeItem("model");
  555. // localStorage.removeItem("selectedCategoryTxt");
  556. }
  557. };
  558. </script>
  559. <style lang="stylus" rel="stylesheet/stylus" scoped>
  560. .btns{
  561. display: flex;
  562. justify-content: space-between
  563. .sub-btn {
  564. margin:0 2px;
  565. flex:1;
  566. background: #ececec;
  567. .cube-btn {
  568. background-color: #005395 !important;
  569. border-radius: 8px
  570. }
  571. }
  572. }
  573. .scroll-list-wrap {
  574. height: calc(100vh - 2.72rem);
  575. border-radius: 5px;
  576. transform: rotate(0deg); // fix 子元素超出边框圆角部分不隐藏的问题
  577. overflow: hidden;
  578. padding-top: 1.76rem;
  579. }
  580. .foods-wrapper {
  581. .food-item {
  582. display: flex;
  583. /* padding: 18px */
  584. /* border-bottom: 1px solid rgba(7, 17, 27, 0.1) */
  585. /* border-top: 1px solid rgba(7, 17, 27, 0.1)!important */
  586. &:last-child {
  587. border-none();
  588. margin-bottom: 0;
  589. }
  590. .icon {
  591. flex: 0 0 57px;
  592. margin-right: 10px;
  593. }
  594. .food-content {
  595. flex: 1;
  596. .name {
  597. margin: 2px 0 8px 0;
  598. height: 14px;
  599. line-height: 14px;
  600. font-size: 14px;
  601. color: rgb(7, 17, 27);
  602. }
  603. .description, .extra {
  604. line-height: 10px;
  605. font-size: 10px;
  606. color: rgb(147, 153, 159);
  607. }
  608. .description {
  609. line-height: 12px;
  610. margin-bottom: 8px;
  611. }
  612. .extra {
  613. .count {
  614. margin-right: 12px;
  615. }
  616. }
  617. .price {
  618. font-weight: 700;
  619. line-height: 24px;
  620. .now {
  621. margin-right: 8px;
  622. font-size: 14px;
  623. color: rgb(240, 20, 20);
  624. }
  625. .old {
  626. text-decoration: line-through;
  627. font-size: 10px;
  628. color: rgb(147, 153, 159);
  629. }
  630. }
  631. .cartcontrol-wrapper {
  632. position: absolute;
  633. right: 0;
  634. bottom: 12px;
  635. .scroll-wrapper {
  636. .cube-pulldown-wrapper {
  637. .before-trigger {
  638. font-size: 30px;
  639. line-height: 30px;
  640. align-self: flex-end;
  641. span {
  642. display: inline-block;
  643. transition: all 0.3s;
  644. color: #666;
  645. &.rotate {
  646. transform: rotate(180deg);
  647. }
  648. }
  649. }
  650. .after-trigger {
  651. .refresh-text {
  652. color: grey;
  653. }
  654. }
  655. }
  656. }
  657. }
  658. }
  659. }
  660. }
  661. </style>
  662. <style lang="less" scoped>
  663. .cont {
  664. margin-top: 1.86rem;
  665. }
  666. .scroll-list-wrap {
  667. padding-top: 1.76rem;
  668. }
  669. .header {
  670. width: 100%;
  671. height: 0.88rem;
  672. line-height: 0.88rem;
  673. text-align: center;
  674. color: #fff;
  675. font-size: 0.37rem;
  676. background: linear-gradient(#2e2f32, #414246);
  677. position: fixed;
  678. top: 0;
  679. z-index: 6;
  680. }
  681. .stateSearch {
  682. width: 100%;
  683. position: fixed;
  684. top: 0.88rem;
  685. z-index: 6;
  686. }
  687. .bgColor {
  688. background-color: white;
  689. }
  690. .food-item {
  691. border-top: 0.16rem rgb(238, 238, 238) solid;
  692. }
  693. .food-content {
  694. border-top: 0.01rem rgb(223, 222, 222) solid;
  695. border-bottom: 0.01rem rgb(223, 222, 222) solid;
  696. }
  697. .cube-select {
  698. height: 0.88rem;
  699. line-height: 0.88rem;
  700. padding: 0 0.24rem;
  701. font-size: 0.36rem;
  702. color: #333333;
  703. border-bottom: 0.08rem solid #e5e5e5;
  704. }
  705. .title {
  706. display: flex;
  707. justify-content: space-between;
  708. height: 0.7rem;
  709. line-height: 0.7rem;
  710. border-top: 0.01rem rgb(223, 222, 222) solid;
  711. padding: 0 0.24rem;
  712. border-bottom: 0.01rem rgb(223, 222, 222) solid;
  713. }
  714. .title i {
  715. font-size: 0.32rem;
  716. color: #005395;
  717. }
  718. .title div:nth-child(1) {
  719. font-size: 0.32rem;
  720. }
  721. .title div:nth-child(1) span {
  722. display: inline-block;
  723. margin-left: 0.08rem;
  724. }
  725. .title div:nth-child(2) {
  726. padding: 0.05rem 0.3rem;
  727. /* border: 0.01rem rgb(0,0,255) solid; */
  728. border-radius: 16px;
  729. /* color: rgb(0,0,255); */
  730. height: 0.25rem;
  731. line-height: 0.25rem;
  732. margin-top: 0.15rem;
  733. font-size: 0.24rem;
  734. }
  735. .weishouli {
  736. color: #991f00;
  737. border: 0.01rem #991f00 solid;
  738. background-color: #f4e8e5;
  739. }
  740. .bushouli {
  741. color: #666666;
  742. background-color: #eeeeee;
  743. border: 0.01rem #666666 solid;
  744. }
  745. .chulizhong {
  746. color: #003057;
  747. background-color: #e5eaee;
  748. border: 0.01rem #003057 solid;
  749. }
  750. .daipingjia {
  751. color: #825b00;
  752. background-color: #f2eee5;
  753. border: 0.01rem #825b00 solid;
  754. }
  755. .yijiejue {
  756. color: #40a19c;
  757. background-color: #ebf5f5;
  758. border: 0.01rem #40a19c solid;
  759. }
  760. .yichehui {
  761. color: #48a843;
  762. background-color: #ecf6ec;
  763. border: 0.01rem #48a843 solid;
  764. }
  765. // .conent {
  766. // font-size: 0.28rem;
  767. // line-height: 0.39rem;
  768. // overflow: hidden;
  769. // display: -webkit-box;
  770. // -webkit-line-clamp: 2;
  771. // -webkit-box-orient: vertical;
  772. // word-break: break-all;
  773. // padding: 0 0.64rem;
  774. // margin: 0.24rem 0;
  775. // }
  776. .timeBox {
  777. display: flex;
  778. justify-content: space-between;
  779. font-size: 0.24rem;
  780. color: #999999;
  781. border-top: 0.01rem rgb(223, 222, 222) solid;
  782. height: 0.7rem;
  783. line-height: 0.7rem;
  784. padding: 0 0.24rem 0 0.64rem;
  785. }
  786. .wushuju {
  787. margin-top: 2.4rem;
  788. text-align: center;
  789. color: #999;
  790. }
  791. .wushuju img {
  792. width: 5.12rem;
  793. height: 2.84rem;
  794. }
  795. .conentBox {
  796. width: 100%;
  797. height: 100%;
  798. .conent {
  799. font-size: 0.32rem;
  800. font-weight: 400;
  801. line-height: 0.45rem;
  802. border-bottom: 0.16rem solid #e5e5e5;
  803. .head {
  804. border-bottom: 0.01rem solid #e6e6e6;
  805. p {
  806. padding: 0.24rem 0.48rem;
  807. i {
  808. color: #00559d;
  809. }
  810. .btn {
  811. float: right;
  812. }
  813. }
  814. }
  815. .center {
  816. color: #333333;
  817. border-bottom: 0.01rem solid #e6e6e6;
  818. padding: 0.24rem 0.48rem;
  819. p {
  820. &.desc {
  821. overflow: hidden;
  822. max-height: 0.88rem;
  823. }
  824. .grayFont {
  825. overflow-x: scroll;
  826. color: #666;
  827. }
  828. }
  829. }
  830. .bottom {
  831. display: flex;
  832. justify-content: space-between;
  833. align-items: center;
  834. overflow: hidden;
  835. height: 0.86rem;
  836. border-bottom: 0.01rem solid #e6e6e6;
  837. font-size: 0.24rem;
  838. color: #999;
  839. padding: 0 0.24rem 0 0.48rem;
  840. }
  841. }
  842. }
  843. </style>