details.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never">
  4. <div class="page-title">
  5. <!-- <PageHeader title="出库单详情"> </PageHeader> -->
  6. </div>
  7. <!-- <StatusStep :activeCode="infoData.verifyStatus" /> -->
  8. <div class="stepsStatus">
  9. <el-steps :active="active" align-center>
  10. <el-step title="创建"></el-step>
  11. <el-step title="待审核"></el-step>
  12. <el-step :title="stepsTitle" :status="stepsStatus"></el-step>
  13. </el-steps>
  14. </div>
  15. <div>
  16. <div class="content-detail">
  17. <header-title title="基本信息" size="16px"></header-title>
  18. <div class="mt20">
  19. <el-form label-width="110px">
  20. <el-col :span="8">
  21. <el-form-item label="出库单号">
  22. <span>{{ infoData.bizNo }}</span>
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="8">
  26. <el-form-item label="出库物品类型">
  27. <span>{{
  28. infoData.bizType == 3
  29. ? '物品'
  30. : getDictValue('类型用途', infoData.assetType)
  31. }}</span>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="8">
  35. <el-form-item label="出库场景">
  36. <span>{{ getSceneState(infoData.bizType) }}</span>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="8" v-if="infoData.bizType == 3">
  40. <el-form-item label="客户名称">
  41. <span>{{ infoData.clientName }}</span>
  42. </el-form-item> </el-col
  43. ><el-col :span="8" v-if="infoData.bizType == 3">
  44. <el-form-item label="客户联系人">
  45. <span>{{ infoData.clientUser }}</span>
  46. </el-form-item> </el-col
  47. ><el-col :span="8" v-if="infoData.bizType == 3">
  48. <el-form-item label="客户电话">
  49. <span>{{ infoData.clientPhone }}</span>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="8">
  53. <el-form-item
  54. :label="infoData.bizType == 4 ? '领料单' : '来源单据'"
  55. >
  56. <span>{{ infoData.sourceBizNo }}</span>
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="8">
  60. <el-form-item label="领料人联系方式">
  61. <span>{{ infoData.fromUserPhone }}</span>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="8">
  65. <el-form-item label="出库登记人">
  66. <span>{{ infoData.extInfo?.createUserName }}</span>
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="8">
  70. <el-form-item label="权属部门">
  71. <span>{{ infoData.extInfo?.deptName }}</span>
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="8">
  75. <el-form-item label="创建时间">
  76. <span>{{ infoData.createTime }}</span>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="8">
  80. <el-form-item label="出库时间">
  81. <span>{{ infoData.createTime }}</span>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="8">
  85. <el-form-item label="状态:">
  86. <span>{{ stepsTitle }}</span>
  87. </el-form-item>
  88. </el-col>
  89. <el-col :span="8">
  90. <el-form-item label="领料人部门">
  91. <span>{{ infoData.verifyDeptName }}</span>
  92. </el-form-item>
  93. </el-col>
  94. <el-col :span="8">
  95. <el-form-item label="领料人">
  96. <span>{{ infoData.fromUser }}</span>
  97. </el-form-item>
  98. </el-col>
  99. <el-col :span="16">
  100. <el-form-item label="备注">
  101. <span>{{ infoData.remark }}</span>
  102. </el-form-item>
  103. </el-col>
  104. </el-form>
  105. </div>
  106. </div>
  107. <div class="content-detail mt20">
  108. <header-title title="出库物品明细" size="16px"></header-title>
  109. <div class="mt20">
  110. <div class="mt10">
  111. <el-table
  112. ref="multipleTable"
  113. :data="warehousingMaterialList"
  114. tooltip-effect="dark"
  115. style="width: 100%"
  116. :max-height="300"
  117. stripe
  118. :header-cell-style="{ background: '#EEEEEE', border: 'none' }"
  119. >
  120. <el-table-column label="序号" type="index" width="50">
  121. </el-table-column>
  122. <el-table-column
  123. label="编码"
  124. prop="categoryCode"
  125. :show-overflow-tooltip="true"
  126. ></el-table-column>
  127. <el-table-column
  128. label="名称"
  129. prop="name"
  130. :show-overflow-tooltip="true"
  131. ></el-table-column>
  132. <el-table-column
  133. v-for="(item, index) in tableHeader"
  134. :key="index"
  135. align="center"
  136. :label="item.label"
  137. :prop="item.prop"
  138. :width="item.width"
  139. :show-overflow-tooltip="true"
  140. >
  141. <template slot-scope="{ row }">
  142. <template v-if="item.formatter">{{
  143. item.formatter(row)
  144. }}</template>
  145. <template v-else>{{ row[item.prop] }}</template>
  146. </template>
  147. </el-table-column>
  148. <el-table-column
  149. label="批次号"
  150. prop="batchNo"
  151. ></el-table-column>
  152. <el-table-column label="最小包装单元" width="120">
  153. <template slot-scope="{ row }">
  154. {{ row.minPackingCount }}{{ row.measuringUnit }}/{{
  155. row.packingUnit
  156. }}
  157. </template>
  158. </el-table-column>
  159. <el-table-column label="包装数量" prop="availableCountBase">
  160. <template slot-scope="{ row }">
  161. {{ row.packingCount }}{{ row.packingUnit }}
  162. </template>
  163. </el-table-column>
  164. <el-table-column
  165. label="计量数量"
  166. prop="count"
  167. ></el-table-column>
  168. <el-table-column
  169. label="计量单位"
  170. prop="measuringUnit"
  171. ></el-table-column>
  172. <el-table-column label="重量" prop="weight"></el-table-column>
  173. <el-table-column
  174. label="重量单位"
  175. prop="weightUnit"
  176. ></el-table-column>
  177. <el-table-column label="单价">
  178. <template slot-scope="{ row }">
  179. {{ row.price ? row.price : '-' }}元/{{ row.measuringUnit }}
  180. </template>
  181. </el-table-column>
  182. <el-table-column
  183. label="金额"
  184. prop="totalMoney"
  185. ></el-table-column>
  186. <el-table-column
  187. label="领料部门"
  188. prop="llbm"
  189. :show-overflow-tooltip="true"
  190. ></el-table-column>
  191. </el-table>
  192. </div>
  193. </div>
  194. </div>
  195. <!-- ${
  196. infoData.bizType == 3
  197. ? '物品'
  198. : getDictValue('类型用途', infoData.assetType)
  199. }明细 -->
  200. <div class="mt20">
  201. <header-title :title="`出库包装明细`" size="16px"></header-title>
  202. <el-table
  203. ref="multipleTable"
  204. :data="materialCodeReqList"
  205. tooltip-effect="dark"
  206. style="width: 100%"
  207. :max-height="300"
  208. stripe
  209. :header-cell-style="{ background: '#EEEEEE', border: 'none' }"
  210. >
  211. <el-table-column label="序号" type="index" width="50">
  212. </el-table-column>
  213. <!-- ${
  214. infoData.bizType == 3
  215. ? '物品'
  216. : getDictValue('类型用途', infoData.assetType)
  217. } -->
  218. <el-table-column
  219. :label="`编码`"
  220. prop="categoryCode"
  221. :show-overflow-tooltip="true"
  222. ></el-table-column>
  223. <el-table-column
  224. :label="`名称`"
  225. prop="name"
  226. :show-overflow-tooltip="true"
  227. ></el-table-column>
  228. <el-table-column label="批次号" prop="batchNo"></el-table-column>
  229. <el-table-column
  230. label="包装编码"
  231. prop="code"
  232. width="150"
  233. :show-overflow-tooltip="true"
  234. ></el-table-column>
  235. <el-table-column label="包装数量" prop="packingCount" width="80">
  236. <template slot-scope="{ row }">
  237. {{ row.packingCount == 0 ? '0' : row.packingCount }}
  238. </template>
  239. </el-table-column>
  240. <el-table-column
  241. label="包装单位"
  242. prop="packingUnit"
  243. ></el-table-column>
  244. <el-table-column
  245. label="计量数量"
  246. prop="totalCount"
  247. ></el-table-column>
  248. <el-table-column
  249. label="计量单位"
  250. prop="measuringUnit"
  251. ></el-table-column>
  252. <!-- <el-table-column label="领料部门" prop=""></el-table-column> -->
  253. <el-table-column
  254. v-if="infoData.bizType == 2 || infoData.bizType == 1"
  255. label="物料代号"
  256. prop="materielCode"
  257. >
  258. <template slot-scope="{ row }">
  259. {{ row.materielCode }}
  260. </template>
  261. </el-table-column>
  262. <el-table-column
  263. v-if="infoData.bizType == 2 || infoData.bizType == 1"
  264. label="客户代号"
  265. prop="clientCode"
  266. >
  267. <template slot-scope="{ row }">
  268. {{ row.clientCode }}
  269. </template>
  270. </el-table-column>
  271. <!-- v-if="infoData.bizType == 1" -->
  272. <el-table-column label="刻码" prop="engrave">
  273. <template slot-scope="{ row }">
  274. {{ row.engrave }}
  275. </template>
  276. </el-table-column>
  277. <el-table-column label="重量" prop="weight">
  278. <template slot-scope="{ row }">
  279. {{ row.weight }}
  280. </template>
  281. </el-table-column>
  282. <el-table-column label="重量单位" prop="weightUtil">
  283. <template slot-scope="{ row }">
  284. {{ row.weightUtil }}
  285. </template>
  286. </el-table-column>
  287. <el-table-column label="日期" prop="createTime" width="200">
  288. <template slot="header" slot-scope="scope">
  289. <!-- {{ dateTypes != 1 ? '采购日期' : '生产日期' }} -->
  290. 采购日期
  291. </template>
  292. <template slot-scope="{ row }">
  293. {{ row.createTime }}
  294. </template>
  295. </el-table-column>
  296. <el-table-column
  297. label="领料部门"
  298. prop=""
  299. :show-overflow-tooltip="true"
  300. >
  301. <template slot-scope="{ row }">
  302. {{ row.llbm }}
  303. </template>
  304. </el-table-column>
  305. <!-- <el-table-column label="转消耗" prop="">
  306. <template slot-scope="{ row }">
  307. <el-checkbox
  308. disabled
  309. v-model="row.isTransferAsset"
  310. ></el-checkbox>
  311. </template>
  312. </el-table-column> -->
  313. </el-table>
  314. </div>
  315. <div class="mt20">
  316. <header-title :title="`出库物料明细`" size="16px"></header-title>
  317. <el-table
  318. ref="multipleTable1"
  319. :data="metaList"
  320. tooltip-effect="dark"
  321. style="width: 100%"
  322. :max-height="300"
  323. stripe
  324. :header-cell-style="{ background: '#EEEEEE', border: 'none' }"
  325. >
  326. <el-table-column label="序号" type="index" width="50">
  327. </el-table-column>
  328. <el-table-column
  329. label="编码"
  330. prop="assetCode"
  331. :show-overflow-tooltip="true"
  332. >
  333. </el-table-column>
  334. <el-table-column
  335. label="名称"
  336. prop="assetName"
  337. :show-overflow-tooltip="true"
  338. >
  339. </el-table-column>
  340. <el-table-column label="批次号" prop="batchNo"> </el-table-column>
  341. <el-table-column
  342. label="物料编码"
  343. prop="no"
  344. :show-overflow-tooltip="true"
  345. >
  346. </el-table-column>
  347. <el-table-column label="计量数量" prop="">
  348. <template slot-scope="{ row }">1</template>
  349. </el-table-column>
  350. <el-table-column label="计量单位" prop="measuringUnit">
  351. </el-table-column>
  352. <el-table-column label="物料代号" prop="meterielCode">
  353. </el-table-column>
  354. <el-table-column label="客户代号" prop="clientCode">
  355. </el-table-column>
  356. <el-table-column label="刻码" prop="engrave"> </el-table-column>
  357. <el-table-column label="重量" prop="weight"> </el-table-column>
  358. <el-table-column label="重量单位" prop="weightUnit">
  359. </el-table-column>
  360. </el-table>
  361. </div>
  362. </div>
  363. </el-card>
  364. </div>
  365. </template>
  366. <script>
  367. import StatusStep from '@/components/StatusStep/common.vue';
  368. // import { getInfo } from '@/api/stockManagement/outgoingManagement' '@/components/PageHeader'
  369. // import PageHeader from '@/components/PageHeader';
  370. import { tableHeader } from '../common';
  371. import { mapGetters, mapActions } from 'vuex';
  372. import outin from '@/api/warehouseManagement/outin';
  373. import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
  374. import {
  375. materialType,
  376. warehousingType,
  377. useDict,
  378. useDictLabel,
  379. inputStatus,
  380. outputSceneState,
  381. auditStatus
  382. } from '@/utils/dict/index';
  383. import { getUser } from '@/api/system/user';
  384. export default {
  385. components: { StatusStep },
  386. data() {
  387. return {
  388. metaList: [],
  389. infoData: {},
  390. warehousingMaterialList: [],
  391. materialCodeReqList: [],
  392. tableData2: [],
  393. fromUserList: [],
  394. activeName: 'a',
  395. num: 1,
  396. stepsList: [
  397. { status: 'Done', nodeName: '创建' },
  398. { status: 'Done', nodeName: '暂存', time: '2023-01-06' },
  399. { status: 'Done', nodeName: '收货中' },
  400. { status: 'Processing', nodeName: '已收货' }
  401. ],
  402. list: [
  403. {
  404. name: '紧急',
  405. color: 'red'
  406. },
  407. {
  408. name: '重要',
  409. color: 'blue'
  410. },
  411. {
  412. name: '已催办',
  413. color: 'red'
  414. }
  415. ],
  416. stepsTitle: '已完成',
  417. stepsStatus: 'success',
  418. active: 0
  419. };
  420. },
  421. watch: {
  422. 'infoData.verifyStatus': {
  423. immediate: true,
  424. handler(val) {
  425. if (val == 0) {
  426. this.active = 1;
  427. this.stepsTitle = '未审核';
  428. this.stepsStatus = 'wait';
  429. } else if (val == 1) {
  430. this.active = 2;
  431. this.stepsTitle = '审核中';
  432. this.stepsStatus = 'process';
  433. } else if (val == 2) {
  434. this.active = 2;
  435. this.stepsTitle = '审核通过';
  436. this.stepsStatus = 'success';
  437. } else if (val == 3) {
  438. this.active = 2;
  439. this.stepsTitle = '驳回';
  440. this.stepsStatus = 'error';
  441. }
  442. }
  443. }
  444. },
  445. computed: {
  446. ...mapGetters(['getDictValue']),
  447. tableHeader() {
  448. return tableHeader(this.infoData?.extInfo?.assetType);
  449. }
  450. },
  451. created() {
  452. this.getUser();
  453. this._getInfo();
  454. this.requestDict('类型用途');
  455. },
  456. methods: {
  457. getUserName(id) {
  458. let obj = this.fromUserList.find((x) => x.id == id);
  459. return obj && obj.name;
  460. },
  461. async getUser() {
  462. let res22 = await warehouseDefinition.getUserPage({
  463. groupId: 1,
  464. size: 9999,
  465. page: 1
  466. });
  467. this.fromUserList = res22.list;
  468. },
  469. // close() {
  470. // finishPageTab(); // 关闭当前页签
  471. // },
  472. ...mapActions('dict', ['requestDict']),
  473. getMaterialType: useDictLabel(materialType),
  474. getInputStatus: useDictLabel(inputStatus),
  475. getWarehousingType: useDictLabel(warehousingType),
  476. getSceneState: useDictLabel(outputSceneState),
  477. getAuditStatus: useDictLabel(auditStatus),
  478. async _getInfo() {
  479. const res = await outin.getById(this.$route.query.id);
  480. console.log(res);
  481. this.infoData = {
  482. ...res,
  483. assetType: res.extInfo.assetType,
  484. fromUserPhone: res.fromUserPhone,
  485. verifyDeptName: res.extInfo.verifyDeptName
  486. };
  487. if (res) {
  488. // this.warehousingMaterialList = res.warehouseLedgerInfos.map(
  489. // (item) => {
  490. // item.selfSum = (item.warehouseLedgerDetails || []).reduce(
  491. // (sum, pre) => {
  492. // if (item.isUnpack) {
  493. // return ++sum;
  494. // }
  495. // return sum + pre.measurementUnit;
  496. // },
  497. // 0
  498. // );
  499. // return item;
  500. // }
  501. // );
  502. for (const item of res.outInDetailVOList) {
  503. for (const it of item.outInDetailRecordVOList) {
  504. it.llbm = res.extInfo.verifyDeptName;
  505. }
  506. }
  507. this.warehousingMaterialList = res.outInDetailVOList.map((item) => {
  508. return {
  509. ...item,
  510. llbm: res.extInfo.verifyDeptName
  511. };
  512. });
  513. // this.materialCodeReqList =
  514. // res.warehouseLedgerInfos.warehouseLedgerDetails;
  515. let arr = [];
  516. for (const key in res.outInDetailVOList) {
  517. for (const k in res.outInDetailVOList[key]
  518. .outInDetailRecordVOList) {
  519. arr.push({
  520. ...res.outInDetailVOList[key].outInDetailRecordVOList[k]
  521. });
  522. }
  523. }
  524. this.materialCodeReqList = arr;
  525. let arrs = [];
  526. for (const key in res.outInDetailVOList) {
  527. for (const j in res.outInDetailVOList[key]
  528. .outInDetailRecordVOList) {
  529. for (const k in res.outInDetailVOList[key]
  530. .outInDetailRecordVOList[j]
  531. .outInDetailRecordMaterialDetailVOList) {
  532. arrs.push({
  533. ...res.outInDetailVOList[key].outInDetailRecordVOList[j]
  534. .outInDetailRecordMaterialDetailVOList[k]
  535. });
  536. }
  537. }
  538. }
  539. this.metaList = arrs;
  540. // console.log('qwqwqw', arr);
  541. // res.warehouseLedgerInfos.ledgers;
  542. // .map((i) =>
  543. // (i.outInDetailRecordVOList || []).map((item) => ({
  544. // ...item,
  545. // isUnpack: i.isUnpack
  546. // }))
  547. // )
  548. // .flat();
  549. }
  550. },
  551. // 时间差计算
  552. difference(beginTime, endTime) {
  553. var dateBegin = new Date(beginTime);
  554. var dateEnd = new Date(endTime);
  555. var dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
  556. var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
  557. var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
  558. var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
  559. //计算相差分钟数
  560. var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
  561. var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
  562. //计算相差秒数
  563. var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
  564. var seconds = Math.round(leave3 / 1000);
  565. if (dayDiff == -1) {
  566. dayDiff = 0;
  567. hours = 0;
  568. minutes = 0;
  569. }
  570. return dayDiff + '天' + hours + '小时' + minutes + '分钟';
  571. }
  572. }
  573. };
  574. </script>
  575. <style lang="scss" scoped>
  576. .stepsStatus {
  577. width: 40%;
  578. margin: 0 auto;
  579. }
  580. .p20 {
  581. padding: 20px;
  582. }
  583. .flex {
  584. display: flex;
  585. }
  586. .title {
  587. justify-content: space-between;
  588. border-bottom: 1px solid #ccc;
  589. padding-bottom: 5px;
  590. span {
  591. font-size: 16px;
  592. }
  593. .col {
  594. padding-left: 40px;
  595. font-size: 14px;
  596. color: #aaaaaa;
  597. }
  598. }
  599. .degree {
  600. margin-right: 10px;
  601. padding: 0px 15px;
  602. color: #fff;
  603. font-size: 13px;
  604. line-height: 23px;
  605. border-radius: 23px;
  606. display: flex;
  607. align-items: center;
  608. justify-content: space-between;
  609. span {
  610. width: 5px;
  611. height: 5px;
  612. border-radius: 100%;
  613. margin-right: 6px;
  614. background-color: #fff;
  615. }
  616. }
  617. .red {
  618. background-color: rgb(163, 0, 20);
  619. }
  620. .blue {
  621. background-color: #1989fa;
  622. }
  623. .createdInfo {
  624. justify-content: space-around;
  625. margin-top: 10px;
  626. font-size: 14px;
  627. .col {
  628. color: #6e6e6e;
  629. padding-right: 10px;
  630. }
  631. }
  632. .mt40 {
  633. margin-top: 40px;
  634. }
  635. .custSteps {
  636. margin-top: 20px;
  637. margin-left: 70px;
  638. .box {
  639. width: 158px;
  640. border: 1px solid #ccc;
  641. padding: 10px;
  642. flex-direction: row;
  643. flex-wrap: wrap;
  644. // justify-content: space-between;
  645. font-size: 12px;
  646. color: #9e9e9e;
  647. .x {
  648. width: 20px;
  649. height: 15px;
  650. margin-right: 5px;
  651. }
  652. .q {
  653. background-color: #d0e4d5;
  654. }
  655. .b {
  656. background-color: #1989fa;
  657. }
  658. .g {
  659. background-color: #157a2c;
  660. }
  661. .r {
  662. background-color: #a30014;
  663. }
  664. .a {
  665. align-items: center;
  666. margin-bottom: 10px;
  667. }
  668. .mr10 {
  669. margin-right: 10px;
  670. }
  671. .mb0 {
  672. margin-bottom: 0;
  673. }
  674. }
  675. .stepsInfo {
  676. // flex: 1;
  677. width: 483px;
  678. }
  679. }
  680. .mt20 {
  681. margin-top: 20px;
  682. }
  683. .content-detail {
  684. overflow: hidden;
  685. }
  686. .executor {
  687. font-size: 14px;
  688. .col {
  689. color: #6e6e6e;
  690. padding-right: 10px;
  691. }
  692. }
  693. .result {
  694. justify-content: space-around;
  695. }
  696. .mr20 {
  697. margin-right: 20px;
  698. }
  699. .details {
  700. font-size: 14px;
  701. margin-bottom: 10px;
  702. }
  703. .customSteps {
  704. margin-top: 40px;
  705. font-size: 14px;
  706. margin-left: 80px;
  707. .time {
  708. font-size: 12px;
  709. color: #6e6e6e;
  710. margin-right: 20px;
  711. position: relative;
  712. &::after {
  713. content: '';
  714. width: 1px;
  715. height: 100%;
  716. background-color: #157a2c;
  717. position: absolute;
  718. right: -26px;
  719. }
  720. }
  721. .flex:last-child {
  722. .time {
  723. &::after {
  724. display: none;
  725. }
  726. }
  727. }
  728. .round {
  729. margin-right: 20px;
  730. width: 10px;
  731. height: 10px;
  732. border-radius: 100%;
  733. background-color: #157a2c;
  734. position: relative;
  735. span {
  736. position: absolute;
  737. top: 50%;
  738. left: 50%;
  739. width: 4px;
  740. height: 4px;
  741. background-color: #fff;
  742. border-radius: 100%;
  743. transform: translate(-2px, -2px);
  744. }
  745. }
  746. .text {
  747. .info {
  748. margin-top: 10px;
  749. width: 955px;
  750. background-color: #f0f3f3;
  751. overflow: hidden;
  752. padding: 10px;
  753. margin-bottom: 10px;
  754. }
  755. }
  756. }
  757. </style>