index.vue 23 KB

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