index.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. <template>
  2. <div>
  3. <basic-container v-if="key>0">
  4. <avue-crud
  5. :data="goodsList"
  6. :option="goodsOptionCrud"
  7. :table-loading="loading"
  8. :page.sync="page"
  9. ref="crud"
  10. @on-load="onLoad"
  11. @resetColumn="resetColumn"
  12. @saveColumn="saveColumn"
  13. @search-change="searchChange"
  14. @search-criteria-switch="searchCriteriaSwitch"
  15. @row-save="(row,done,loading)=>{rowSave(row,0,done,loading)}"
  16. @row-update="rowSave">
  17. <template slot-scope="{row}" slot="fleetId">
  18. <span>{{ row.fleetName }}</span>
  19. </template>
  20. <template slot="billNo" slot-scope="{row,index}">
  21. <span class="el-button--text" style="cursor: pointer" @click.stop="celJump(row,index)">{{row.billNo}}</span>
  22. </template>
  23. <template slot="corpName" slot-scope="{row,index}">
  24. <span class="el-button--text" style="cursor: pointer" @click.stop="celJump(row,index)">{{row.corpName}}</span>
  25. </template>
  26. <template slot="orderNo" slot-scope="{row,index}">
  27. <span class="el-button--text" style="cursor: pointer" @click.stop="celJump(row,index)">{{row.orderNo}}</span>
  28. </template>
  29. <template slot-scope="{row}" slot="fleetIdSearch">
  30. <crop-select
  31. v-model="row.fleetId"
  32. corpType="CD"
  33. ></crop-select>
  34. </template>
  35. <template slot-scope="{row,index}" slot="menu">
  36. <el-button
  37. type="text"
  38. size="small"
  39. v-if="row.status === 2"
  40. @click="rowSaveT(row,index)"
  41. >{{ row.$cellEdit ? '保 存' : '修 改' }}
  42. </el-button>
  43. <el-button
  44. size="small"
  45. type="text"
  46. @click="designate(row, index)"
  47. v-if="row.status===2"
  48. >受 理
  49. </el-button>
  50. <el-button
  51. size="small"
  52. type="text"
  53. @click="cancelDesignate(row, index)"
  54. v-if="row.status===3"
  55. >取消受理
  56. </el-button>
  57. <el-button
  58. size="small"
  59. type="text"
  60. @click="confirmCompletion(row, index)"
  61. v-if="row.status === 3"
  62. >确认完工
  63. </el-button>
  64. <el-button
  65. size="small"
  66. type="text"
  67. @click="annexOpen(row, index)"
  68. >附 件
  69. </el-button>
  70. </template>
  71. <template slot="addressDetail" slot-scope="{ row,index}">
  72. <el-tooltip class="item" effect="dark" placement="top">
  73. <div v-html="ToBreak(row.addressDetail)" slot="content"></div>
  74. <div style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">{{row.addressDetail}}</div>
  75. </el-tooltip>
  76. </template>
  77. </avue-crud>
  78. <el-dialog
  79. title="附件"
  80. :visible.sync="dialogVisible"
  81. append-to-body
  82. width="70%">
  83. <c-upload
  84. typeUpload="GZ"
  85. :basic="true"
  86. deleteUrl="/api/blade-client/common-file/remove"
  87. :data="orderList"
  88. :disabled="form.status===4"
  89. :enumerationValue="76"
  90. ></c-upload>
  91. <span slot="footer" class="dialog-footer">
  92. <el-button @click="dialogVisible = false" size="small">取 消</el-button>
  93. <el-button type="primary" @click="saveAnnex" size="small" :disabled="form.status===4">保 存</el-button>
  94. </span>
  95. </el-dialog>
  96. </basic-container>
  97. </div>
  98. </template>
  99. <script>
  100. import {
  101. driverQueryCollection,
  102. acceptanceCollection,
  103. acceptanceDispatchCollection,
  104. confirmCompletion,
  105. fleetList, motorcadeDriver, fleetDriverSave, getAttachment, saveAttached
  106. } from "@/api/landTransportation";
  107. export default {
  108. name: "index",
  109. data() {
  110. return {
  111. key:0,
  112. form: {},
  113. orderList:[],
  114. dialogVisible: false,
  115. loading: false,
  116. activeName:'',
  117. page: {
  118. pageSize: 10,
  119. currentPage: 1,
  120. total: 0,
  121. pageSizes: [10, 50, 100, 200, 300]
  122. },
  123. roleName: localStorage.getItem("roleName").split(',')[0],
  124. goodsList: [],
  125. goodsOptionCrud:{},
  126. optionList: {
  127. stripe:true,
  128. index: true,
  129. addBtn: false,
  130. delBtn: false,
  131. cellBtn: false,
  132. cancelBtn: false,
  133. editBtn: false,
  134. addRowBtn: false,
  135. refreshBtn: false,
  136. searchIcon: true,
  137. searchIndex: 2,
  138. searchSpan: 8,
  139. menu:false,
  140. searchMenuPosition: "right",
  141. searchMenuSpan: 6,
  142. align: 'center',
  143. height: "auto",
  144. showSummary: true,
  145. summaryText: "合计",
  146. sumColumnList: [
  147. {
  148. name: 'landWeight',
  149. type: 'sum',
  150. decimals: 2
  151. }, {
  152. name: 'landAmountC',
  153. type: 'sum',
  154. decimals: 2
  155. }, {
  156. name: 'ctnQuantity',
  157. type: 'count'
  158. },{
  159. name: 'oneFeeC',
  160. type: 'sum',
  161. decimals: 2
  162. },{
  163. name: 'twoFeeC',
  164. type: 'sum',
  165. decimals: 2
  166. },{
  167. name: 'threeFeeC',
  168. type: 'sum',
  169. decimals: 2
  170. },{
  171. name: 'fourFeeC',
  172. type: 'sum',
  173. decimals: 2
  174. },{
  175. name: 'fiveFeeC',
  176. type: 'sum',
  177. decimals: 2
  178. }, {
  179. name: 'oneFeeD',
  180. type: 'sum',
  181. decimals: 2
  182. }, {
  183. name: 'twoFeeD',
  184. type: 'sum',
  185. decimals: 2
  186. }, {
  187. name: 'threeFeeD',
  188. type: 'sum',
  189. decimals: 2
  190. }, {
  191. name: 'fourFeeD',
  192. type: 'sum',
  193. decimals: 2
  194. }, {
  195. name: 'fiveFeeD',
  196. type: 'sum',
  197. decimals: 2
  198. }],
  199. column: [{
  200. label: '订单号',
  201. prop: 'orderNo',
  202. overHidden: true,
  203. index: 1,
  204. width: 140,
  205. search: true,
  206. },{
  207. label: '到厂时间',
  208. prop: 'arrivalTime',
  209. overHidden: true,
  210. type: "date",
  211. searchRange: true,
  212. defaultTime: ['00:00:00', '23:59:59'],
  213. format: "yyyy-MM-dd HH:mm:ss",
  214. valueFormat: "yyyy-MM-dd HH:mm:ss",
  215. index: 1,
  216. width: 140,
  217. search: true,
  218. }, {
  219. label: '客户名称',
  220. prop: 'corpName',
  221. overHidden: true,
  222. index: 2,
  223. width: 140,
  224. search: true,
  225. },{
  226. label: '路线',
  227. index: 3,
  228. width: 160,
  229. search: true,
  230. prop: 'addressDetail'
  231. },{
  232. label: '发票号',
  233. prop: 'invoiceNo',
  234. },{
  235. label: '提单号',
  236. width: 100,
  237. index:4,
  238. search: true,
  239. overHidden: true,
  240. prop: 'billNo'
  241. }, {
  242. label: '尺寸箱型',
  243. width: 100,
  244. search: true,
  245. index: 5,
  246. overHidden: true,
  247. prop: 'ctnType',
  248. type: 'select',
  249. dicUrl: "/api/blade-system/dict-biz/dictionary?code=boxType",
  250. props: {
  251. label: "dictValue",
  252. value: "dictValue"
  253. },
  254. }, {
  255. label: '车队',
  256. width: 200,
  257. search: true,
  258. index:7,
  259. overHidden: true,
  260. prop: 'fleetId'
  261. }, {
  262. label: '利润',
  263. width: 100,
  264. precision: 2,
  265. cell: true,
  266. index: 8,
  267. controls: false,
  268. type: 'number',
  269. prop: 'profit'
  270. }, {
  271. label: '应收陆运费',
  272. overHidden: true,
  273. index: 9,
  274. prop: 'landAmountD'
  275. }, {
  276. label: '其他',
  277. width: 100,
  278. precision: 2,
  279. index: 13,
  280. cell: true,
  281. type: 'number',
  282. controls: false,
  283. prop: 'fiveFeeC'
  284. }, {
  285. label: '费用备注',
  286. width: 245,
  287. index: 14,
  288. cell: true,
  289. prop: 'feeRemarksC'
  290. },{
  291. label: '应收场站费',
  292. width: 100,
  293. precision: 2,
  294. index: 15,
  295. controls: false,
  296. type: 'number',
  297. prop: 'oneFeeD'
  298. }, {
  299. label: '应收港杂费',
  300. width: 100,
  301. precision: 2,
  302. index: 16,
  303. controls: false,
  304. type: 'number',
  305. prop: 'twoFeeD'
  306. }, {
  307. label: '应收扣款',
  308. width: 100,
  309. precision: 2,
  310. controls: false,
  311. index: 17,
  312. type: 'number',
  313. prop: 'threeFeeD'
  314. }, {
  315. label: '应收待时费',
  316. width: 100,
  317. precision: 2,
  318. index: 18,
  319. controls: false,
  320. type: 'number',
  321. prop: 'fourFeeD'
  322. }, {
  323. label: '应收其他',
  324. width: 100,
  325. precision: 2,
  326. index: 19,
  327. type: 'number',
  328. controls: false,
  329. prop: 'fiveFeeD'
  330. }, {
  331. label: '应收费用备注',
  332. width: 245,
  333. index: 20,
  334. prop: 'feeRemarksD'
  335. }, {
  336. label: '应付陆运费',
  337. overHidden: true,
  338. index: 20,
  339. prop: 'landAmountC'
  340. }, {
  341. label: '应付场站费',
  342. width: 100,
  343. precision: 2,
  344. controls: false,
  345. index: 21,
  346. type: 'number',
  347. prop: 'oneFeeC'
  348. }, {
  349. label: '应付港杂费',
  350. width: 100,
  351. precision: 2,
  352. index: 22,
  353. controls: false,
  354. type: 'number',
  355. prop: 'twoFeeC'
  356. }, {
  357. label: '应付扣款',
  358. width: 100,
  359. index: 23,
  360. precision: 2,
  361. controls: false,
  362. type: 'number',
  363. prop: 'threeFeeC'
  364. }, {
  365. label: '应付待时费',
  366. width: 100,
  367. precision: 2,
  368. index: 24,
  369. controls: false,
  370. type: 'number',
  371. prop: 'fourFeeC'
  372. }, {
  373. label: '应付其他',
  374. width: 100,
  375. precision: 2,
  376. type: 'number',
  377. index: 25,
  378. controls: false,
  379. prop: 'fiveFeeC'
  380. }, {
  381. label: '应付费用备注',
  382. width: 245,
  383. index: 26,
  384. prop: 'feeRemarksC'
  385. }, {
  386. label: '车号',
  387. width: 150,
  388. prop: 'vehicleId',
  389. overHidden: true,
  390. index: 27,
  391. type: 'select',
  392. search: true,
  393. dicUrl: "/api/blade-client/land-vehicle/vehicle-list?fleetId={{key}}",
  394. props: {
  395. label: "plateNo",
  396. value: "id"
  397. }
  398. }, {
  399. label: '司机',
  400. width: 115,
  401. index: 28,
  402. search: true,
  403. overHidden: true,
  404. prop: 'driverId',
  405. type: 'select',
  406. dicUrl: "/api/blade-client/land-driver/driver-list?vehicleId={{key}}",
  407. props: {
  408. label: "name",
  409. value: "id"
  410. },
  411. }, {
  412. label: '电话',
  413. width: 160,
  414. index: 29,
  415. overHidden: true,
  416. search: true,
  417. prop: 'tel'
  418. }
  419. // ,{
  420. // label: '状态',
  421. // width: 100,
  422. // type: 'select',
  423. // index:1,
  424. // overHidden: true,
  425. // dicUrl: "/api/blade-system/dict-biz/dictionary?code=land_order_status",
  426. // props: {
  427. // label: "dictValue",
  428. // value: "dictKey"
  429. // },
  430. // dataType: "string",
  431. // prop: 'status'
  432. // },{
  433. // label: '货物名称',
  434. // overHidden: true,
  435. // width: 160,
  436. // search: true,
  437. // index: 9,
  438. // prop: 'goods'
  439. // }, {
  440. // label: '箱号',
  441. // cell: true,
  442. // width: 245,
  443. // index: 10,
  444. // overHidden: true,
  445. // search: true,
  446. // prop: 'ctnNo'
  447. // }, {
  448. // label: '场站',
  449. // prop: 'station',
  450. // overHidden: true,
  451. // index: 11,
  452. // width: 140,
  453. // search: true,
  454. // },{
  455. // label: '制单日期',
  456. // overHidden: true,
  457. // prop: 'createTime',
  458. // type: "date",
  459. // searchRange: true,
  460. // defaultTime: ['00:00:00', '23:59:59'],
  461. // format: "yyyy-MM-dd HH:mm:ss",
  462. // valueFormat: "yyyy-MM-dd HH:mm:ss",
  463. // index: 12,
  464. // width: 140,
  465. // search: true,
  466. // },{
  467. // label: '船名航次',
  468. // prop: 'factory',
  469. // overHidden: true,
  470. // index: 13,
  471. // width: 140,
  472. // search: true,
  473. // }, {
  474. // label: '箱量',
  475. // width: 50,
  476. // index: 15,
  477. // prop: 'ctnQuantity'
  478. // }, {
  479. // label: '重量(吨)',
  480. // width: 160,
  481. // prop: 'landWeight',
  482. // controls: false,
  483. // overHidden: true,
  484. // index: 16,
  485. // precision: 2,
  486. // type: 'number'
  487. // }, {
  488. // label: '委托备注',
  489. // overHidden: true,
  490. // width: 245,
  491. // index: 18,
  492. // prop: 'remarks'
  493. // }, {
  494. // label: '车队备注',
  495. // overHidden: true,
  496. // width: 245,
  497. // index: 19,
  498. // prop: 'fleetRemarks'
  499. // }, {
  500. // label: '司机备注',
  501. // overHidden: true,
  502. // cell: true,
  503. // width: 245,
  504. // index: 20,
  505. // prop: 'driverRemarks'
  506. // }
  507. ],
  508. },
  509. totalData:{}
  510. }
  511. },
  512. async created() {
  513. this.goodsOptionCrud = await this.getColumnData(this.getColumnName(88.1), this.optionList);
  514. this.key++
  515. let i = 0;
  516. this.goodsOptionCrud.column.forEach(item => {
  517. if (item.search) i++
  518. })
  519. if (i % 3 !== 0) {
  520. const num = 3 - Number(i % 3)
  521. this.goodsOptionCrud.searchMenuSpan = num * 8;
  522. this.goodsOptionCrud.searchMenuPosition = "right";
  523. }
  524. },
  525. methods: {
  526. //自定义列保存
  527. async saveColumn() {
  528. /**
  529. * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
  530. * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
  531. * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
  532. */
  533. const inSave = await this.saveColumnData(this.getColumnName(88.1), this.goodsOptionCrud);
  534. if (inSave) {
  535. this.$message.success("保存成功");
  536. //关闭窗口
  537. this.$refs.crud.$refs.dialogColumn.columnBox = false;
  538. }
  539. },
  540. //自定义列重置
  541. async resetColumn() {
  542. this.goodsOptionCrud = this.optionList;
  543. const inSave = await this.delColumnData(this.getColumnName(88.1), this.optionList);
  544. if (inSave) {
  545. this.$message.success("重置成功");
  546. this.$refs.crud.$refs.dialogColumn.columnBox = false;
  547. }
  548. },
  549. //行跳转
  550. celJump(row,index){
  551. this.$router.push({
  552. path: '/landTransportation/dispatchingCars/index',
  553. query: {orderId:row.orderId},
  554. });
  555. },
  556. // 获得高度
  557. searchCriteriaSwitch(type) {
  558. if (type) {
  559. this.goodsOptionCrud.height = this.goodsOptionCrud.height - 184
  560. } else {
  561. this.goodsOptionCrud.height = this.goodsOptionCrud.height + 184
  562. }
  563. this.$refs.crud.getTableHeight()
  564. },
  565. //箱信息保存
  566. rowSave(row, index, done, loading) {
  567. done()
  568. },
  569. //箱信息选择车队
  570. getfleetIdT(data, row) {
  571. this.$set(row, 'fleetName', data.cname)
  572. },
  573. //搜索
  574. searchChange(params, done) {
  575. this.onLoad(this.page, params)
  576. done();
  577. },
  578. //切换订单状态
  579. handleClick(tab) {
  580. this.activeName = tab
  581. this.onLoad(this.page)
  582. },
  583. //查询
  584. onLoad(page, params) {
  585. motorcadeDriver(4).then(res=>{
  586. this.totalData = res.data.data
  587. })
  588. let queryParams = {
  589. size: page.pageSize,
  590. current: page.currentPage,
  591. tag: '0',
  592. ...params
  593. }
  594. if (queryParams.arrivalTime){
  595. queryParams.beginArrivalTime=params.arrivalTime[0]
  596. queryParams.endArrivalTime=params.arrivalTime[1]
  597. delete queryParams.arrivalTime
  598. }
  599. this.loading = true;
  600. driverQueryCollection(queryParams).then(res => {
  601. this.goodsList = res.data.data.records
  602. this.page.total = res.data.data.total
  603. this.goodsOptionCrud.height = window.innerHeight - 245;
  604. }).finally(() => {
  605. this.loading = false;
  606. })
  607. },
  608. //箱信息保存
  609. rowSaveT(row, index, done, loading) {
  610. if (row.$cellEdit){
  611. fleetDriverSave(row).then(res=>{
  612. this.$message.success("保存成功");
  613. })
  614. }
  615. this.$refs.crud.rowCell(row, index)
  616. },
  617. //箱信息派车
  618. designate(row) {
  619. this.$confirm('是否确定受理', '提示', {
  620. confirmButtonText: '确定',
  621. cancelButtonText: '取消',
  622. type: 'warning'
  623. }).then(() => {
  624. acceptanceCollection(row).then(res => {
  625. this.$message.success('操作成功');
  626. this.onLoad(this.page)
  627. })
  628. }).catch(() => {
  629. this.$message({
  630. type: 'info',
  631. message: '已取消'
  632. });
  633. });
  634. },
  635. //取消派车
  636. cancelDesignate(row) {
  637. this.$confirm('是否确定取消受理', '提示', {
  638. confirmButtonText: '确定',
  639. cancelButtonText: '取消',
  640. type: 'warning'
  641. }).then(() => {
  642. acceptanceDispatchCollection({id: row.id}).then(res => {
  643. this.$message.success('操作成功');
  644. this.onLoad(this.page)
  645. })
  646. }).catch(() => {
  647. this.$message({
  648. type: 'info',
  649. message: '已取消'
  650. });
  651. });
  652. },
  653. confirmCompletion(row) {
  654. this.$confirm('是否确定完工', '提示', {
  655. confirmButtonText: '确定',
  656. cancelButtonText: '取消',
  657. type: 'warning'
  658. }).then(() => {
  659. confirmCompletion({id: row.id}).then(res => {
  660. this.$message.success('操作成功');
  661. this.onLoad(this.page)
  662. })
  663. }).catch(() => {
  664. this.$message({
  665. type: 'info',
  666. message: '已取消'
  667. });
  668. });
  669. },
  670. //打开附件
  671. annexOpen(row, index){
  672. this.dialogVisible = true
  673. this.form = row
  674. getAttachment({id:row.id}).then(res=>{
  675. this.orderList = res.data.data
  676. })
  677. },
  678. //保存
  679. saveAnnex(){
  680. saveAttached({
  681. id:this.form.id,
  682. fileList:this.orderList
  683. }).then(res=>{
  684. this.annexOpen(this.form)
  685. })
  686. },
  687. ToBreak (val) {
  688. if (val)return val.replace('\n', '<br/>')
  689. }
  690. }
  691. }
  692. </script>
  693. <style lang="scss" scoped>
  694. .home-container {
  695. padding: 0px 5px 5px 5px;
  696. box-sizing: border-box;
  697. height: 100%;
  698. ::v-deep .el-card__body {
  699. padding: 10px 15px;
  700. font-size: 14px;
  701. }
  702. &__card {
  703. width: 100%;
  704. height: 100%;
  705. }
  706. .title {
  707. display: flex;
  708. justify-content: space-between;
  709. .right {
  710. display: flex;
  711. align-items: center;
  712. &_but {
  713. margin-right: 10px;
  714. border: 1px solid #409eff;
  715. width: 80px;
  716. border-radius: 3px;
  717. display: flex;
  718. &_left {
  719. width: 40px;
  720. text-align: center;
  721. color: #409eff;
  722. cursor: pointer;
  723. }
  724. &_right {
  725. width: 40px;
  726. text-align: center;
  727. color: #409eff;
  728. cursor: pointer;
  729. }
  730. &_active {
  731. color: #fff;
  732. background-color: #409eff;
  733. }
  734. }
  735. }
  736. }
  737. }
  738. .content {
  739. display: flex;
  740. justify-content: center;
  741. align-items: center;
  742. height: 6vh;
  743. width: 80vw;
  744. .divider {
  745. display: block;
  746. height: 0px;
  747. width: 100%;
  748. border-top: 1px dashed #dcdfe6;
  749. }
  750. &-item {
  751. margin-left: 1vw;
  752. .card {
  753. width: 130px;
  754. display: flex;
  755. align-items: center;
  756. &-title {
  757. width: 40px;
  758. height: 40px;
  759. text-align: center;
  760. border-radius: 50%;
  761. font-size: 20px;
  762. font-weight: 600;
  763. display: flex;
  764. justify-content: center;
  765. align-items: center;
  766. span {
  767. line-height: 20px;
  768. }
  769. }
  770. &-title1 {
  771. color: #037fe1;
  772. background-color: rgba(3, 127, 225, 0.15);
  773. }
  774. &-title2 {
  775. color: #ffa21e;
  776. background-color: rgba(255, 162, 30, 0.15);
  777. }
  778. &-title3 {
  779. color: #fb5b60;
  780. background-color: rgba(251, 91, 96, 0.15);
  781. }
  782. &-title4 {
  783. color: #42bc6f;
  784. background-color: rgba(66, 188, 111, 0.15);
  785. }
  786. &-title5 {
  787. color: #14cde1;
  788. background-color: rgba(52, 149, 161, 0.15);
  789. }
  790. &-title6 {
  791. color: rgba(4, 66, 31, 0.63);
  792. background-color: rgba(66, 188, 111, 0.15);
  793. }
  794. &-content {
  795. padding-left: 1vw;
  796. display: flex;
  797. flex-direction: column;
  798. &-num {
  799. font-size: 20px;
  800. font-weight: 600;
  801. }
  802. &-text {
  803. color: #909399;
  804. }
  805. }
  806. }
  807. }
  808. }
  809. </style>