details.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never">
  4. <div class="page-title">
  5. <PageHeader title="出库单详情"> </PageHeader>
  6. </div>
  7. <div class="stepsStatus">
  8. <el-steps :active="active" align-center>
  9. <el-step title="创建"></el-step>
  10. <el-step title="待审核"></el-step>
  11. <el-step :title="stepsTitle" :status="stepsStatus"></el-step>
  12. </el-steps>
  13. </div>
  14. <div>
  15. <div class="content-detail">
  16. <header-title title="基本信息" size="16px"></header-title>
  17. <div class="mt20">
  18. <el-form label-width="110px">
  19. <el-col :span="8">
  20. <el-form-item label="出库单号">
  21. <span>{{ infoData.bizNo }}</span>
  22. </el-form-item>
  23. </el-col>
  24. <el-col :span="8">
  25. <el-form-item label="出库物品类型">
  26. <span>{{ handleAssetType(infoData.extInfo.assetType) }}</span>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="8">
  30. <el-form-item label="出库场景">
  31. <span>{{ getSceneState(infoData.bizType) }}</span>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="8">
  35. <el-form-item label="关联订单:">
  36. <span>{{ extInfo.documentSource }}</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.bizNo }}</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.extInfo.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. <el-table
  110. ref="productListTable"
  111. :data="productList"
  112. border
  113. tooltip-effect="dark"
  114. :max-height="300"
  115. :header-cell-style="rowClass"
  116. >
  117. <el-table-column label="序号" type="index" width="50">
  118. </el-table-column>
  119. <el-table-column
  120. label="编码"
  121. prop="categoryCode"
  122. align="center"
  123. :show-overflow-tooltip="true"
  124. ></el-table-column>
  125. <el-table-column
  126. label="名称"
  127. align="center"
  128. prop="categoryName"
  129. :show-overflow-tooltip="true"
  130. ></el-table-column>
  131. <el-table-column
  132. v-if="clientEnvironmentId == 4"
  133. label="级别"
  134. prop="level"
  135. align="center"
  136. >
  137. </el-table-column>
  138. <el-table-column
  139. label="型号"
  140. align="center"
  141. prop="categoryModel"
  142. :show-overflow-tooltip="true"
  143. ></el-table-column>
  144. <el-table-column
  145. label="规格"
  146. align="center"
  147. prop="specification"
  148. :show-overflow-tooltip="true"
  149. ></el-table-column>
  150. <el-table-column
  151. label="牌号"
  152. align="center"
  153. prop="brandNum"
  154. :show-overflow-tooltip="true"
  155. ></el-table-column>
  156. <el-table-column
  157. label="批次号"
  158. prop="batchNo"
  159. align="center"
  160. :show-overflow-tooltip="true"
  161. >
  162. </el-table-column>
  163. <el-table-column
  164. label="最小包装单元"
  165. align="center"
  166. width="120"
  167. prop="minPackingQuantity"
  168. >
  169. <template slot-scope="{ row, $index }">
  170. {{ row.minPackingQuantity }} {{ row.measureUnit }} /{{
  171. row.packingUnit
  172. }}
  173. </template>
  174. </el-table-column>
  175. <el-table-column
  176. label="包装数量"
  177. prop="packingQuantity"
  178. align="center"
  179. >
  180. <template slot-scope="{ row, $index }">
  181. {{ row.packingQuantity }} {{ row.packingUnit }}
  182. </template>
  183. </el-table-column>
  184. <el-table-column
  185. label="计量数量"
  186. prop="measureQuantity"
  187. width="100"
  188. align="center"
  189. >
  190. </el-table-column>
  191. <el-table-column label="计量单位" prop="measureUnit" align="center">
  192. <template slot-scope="{ row, $index }">
  193. <template>
  194. {{ row.measureUnit }}
  195. </template>
  196. </template>
  197. </el-table-column>
  198. <el-table-column
  199. label="重量"
  200. prop="weight"
  201. align="center"
  202. :show-overflow-tooltip="true"
  203. >
  204. </el-table-column>
  205. <el-table-column
  206. label="重量单位"
  207. prop="weightUnit"
  208. align="center"
  209. :show-overflow-tooltip="true"
  210. >
  211. </el-table-column>
  212. <el-table-column label="单价" prop="price" align="center">
  213. <template slot-scope="{ row }">
  214. <template>
  215. {{ row.price ? row.price : '-' + '元' }}/{{ row.measureUnit }}
  216. </template>
  217. </template>
  218. </el-table-column>
  219. <el-table-column
  220. label="金额"
  221. align="center"
  222. prop="contentImage"
  223. :show-overflow-tooltip="true"
  224. >
  225. <template slot-scope="{ row, $index }">
  226. {{ row.totalMoney ? row.totalMoney : 0 }}
  227. </template>
  228. </el-table-column>
  229. <el-table-column
  230. v-if="clientEnvironmentId == 4"
  231. label="采购原因"
  232. align="center"
  233. prop="purpose"
  234. :show-overflow-tooltip="true"
  235. ></el-table-column>
  236. <el-table-column
  237. label="仓库"
  238. prop="warehouseName"
  239. :show-overflow-tooltip="true"
  240. >
  241. </el-table-column>
  242. </el-table>
  243. </div>
  244. <div class="mt20">
  245. <header-title :title="`包装明细`" size="16px"></header-title>
  246. <el-table
  247. ref="showPackingListTable"
  248. :data="showPackingList"
  249. tooltip-effect="dark"
  250. :max-height="300"
  251. border
  252. :row-class-name="tableRowClassName"
  253. :header-cell-style="rowClass"
  254. v-el-table-infinite-scroll="pickingHandleScroll"
  255. >
  256. <el-table-column label="序号" type="index" width="50">
  257. </el-table-column>
  258. <el-table-column
  259. label="编码"
  260. prop="categoryCode"
  261. :show-overflow-tooltip="true"
  262. ></el-table-column>
  263. <el-table-column
  264. label="名称"
  265. prop="categoryName"
  266. :show-overflow-tooltip="true"
  267. ></el-table-column>
  268. <el-table-column
  269. label="批次号"
  270. prop="batchNo"
  271. :show-overflow-tooltip="true"
  272. ></el-table-column>
  273. <el-table-column
  274. label="发货条码"
  275. prop="barcodes"
  276. :show-overflow-tooltip="true"
  277. ></el-table-column>
  278. <el-table-column
  279. label="包装编码"
  280. prop="packageNo"
  281. :show-overflow-tooltip="true"
  282. ></el-table-column>
  283. <el-table-column
  284. label="包装数量"
  285. prop="packingQuantity"
  286. :show-overflow-tooltip="true"
  287. ></el-table-column>
  288. <el-table-column
  289. label="包装单位"
  290. prop="packingUnit"
  291. :show-overflow-tooltip="true"
  292. ></el-table-column>
  293. <el-table-column
  294. label="计量数量"
  295. prop="measureQuantity"
  296. :show-overflow-tooltip="true"
  297. ></el-table-column>
  298. <el-table-column
  299. label="计量单位"
  300. prop="measureUnit"
  301. :show-overflow-tooltip="true"
  302. ></el-table-column>
  303. <el-table-column
  304. label="物料代号"
  305. prop="materielDesignation"
  306. :show-overflow-tooltip="true"
  307. >
  308. </el-table-column>
  309. <el-table-column
  310. label="客户代号"
  311. prop="clientCode"
  312. :show-overflow-tooltip="true"
  313. >
  314. </el-table-column>
  315. <el-table-column
  316. label="刻码"
  317. prop="engrave"
  318. :show-overflow-tooltip="true"
  319. >
  320. </el-table-column>
  321. <el-table-column
  322. label="重量"
  323. prop="weight"
  324. :show-overflow-tooltip="true"
  325. >
  326. </el-table-column>
  327. <el-table-column
  328. label="重量单位"
  329. prop="weightUnit"
  330. :show-overflow-tooltip="true"
  331. >
  332. </el-table-column>
  333. <el-table-column
  334. label="质检结果"
  335. prop="result"
  336. :show-overflow-tooltip="true"
  337. >
  338. <template slot-scope="{ row }">
  339. <span>{{ qualityResults[row.result] }}</span>
  340. </template>
  341. </el-table-column>
  342. <el-table-column
  343. label="质检状态"
  344. prop="status"
  345. :show-overflow-tooltip="true"
  346. >
  347. <template slot-scope="{ row }">
  348. <span>{{ qualityStatus[row.status] }}</span>
  349. </template>
  350. </el-table-column>
  351. <el-table-column
  352. label="生产日期"
  353. prop="productionDate"
  354. :show-overflow-tooltip="true"
  355. >
  356. </el-table-column>
  357. <el-table-column
  358. label="采购日期"
  359. prop="purchaseDate"
  360. :show-overflow-tooltip="true"
  361. >
  362. </el-table-column>
  363. </el-table>
  364. </div>
  365. <div class="mt20">
  366. <header-title :title="`物料明细`" size="16px"> </header-title>
  367. <el-table
  368. ref="multipleTable"
  369. :data="showMaterialList"
  370. tooltip-effect="dark"
  371. :max-height="300"
  372. :row-class-name="tableRowClassName"
  373. :header-cell-style="rowClass"
  374. border
  375. style="width: 100%"
  376. stripe
  377. height="300px"
  378. v-el-table-infinite-scroll="materielHandleScroll"
  379. >
  380. <el-table-column label="序号" type="index" width="50">
  381. </el-table-column>
  382. <el-table-column
  383. label="编码"
  384. prop="categoryCode"
  385. :show-overflow-tooltip="true"
  386. ></el-table-column>
  387. <el-table-column
  388. label="名称"
  389. prop="categoryName"
  390. :show-overflow-tooltip="true"
  391. ></el-table-column>
  392. <el-table-column label="批次号" prop="batchNo"></el-table-column>
  393. <el-table-column
  394. label="物料编码"
  395. prop="materialCode"
  396. :show-overflow-tooltip="true"
  397. ></el-table-column>
  398. <el-table-column
  399. label="发货条码"
  400. prop="barcodes"
  401. :show-overflow-tooltip="true"
  402. ></el-table-column>
  403. <el-table-column
  404. label="计量数量"
  405. prop="measureQuantity"
  406. ></el-table-column>
  407. <el-table-column
  408. label="计量单位"
  409. prop="measureUnit"
  410. ></el-table-column>
  411. <el-table-column label="物料代号" prop="materielDesignation">
  412. </el-table-column>
  413. <el-table-column label="客户代号" prop="clientCode">
  414. </el-table-column>
  415. <el-table-column label="刻码" prop="engrave"> </el-table-column>
  416. <el-table-column width="100" label="重量" prop="weight">
  417. </el-table-column>
  418. <el-table-column label="重量单位" prop="weightUnit">
  419. </el-table-column>
  420. <el-table-column label="质检结果" prop="result" width="120">
  421. <template slot-scope="{ row }">
  422. <span>{{ qualityResults[row.result] }}</span>
  423. </template>
  424. </el-table-column>
  425. <el-table-column label="质检状态" prop="status" width="120">
  426. <template slot-scope="{ row }">
  427. <span>{{ qualityStatus[row.status] }}</span>
  428. </template>
  429. </el-table-column>
  430. </el-table>
  431. </div>
  432. </div>
  433. </el-card>
  434. </div>
  435. </template>
  436. <script>
  437. import elTableInfiniteScroll from 'el-table-infinite-scroll';
  438. import { getFile } from '@/api/system/file/index.js';
  439. import PageHeader from '@/components/PageHeader';
  440. import storageApi from '@/api/warehouseManagement';
  441. import { allCategoryLevel } from '@/api/classifyManage';
  442. import { useDictLabel, outputSceneState } from '@/utils/dict/index';
  443. import { mapGetters, mapActions } from 'vuex';
  444. export default {
  445. components: { PageHeader },
  446. directives: {
  447. 'el-table-infinite-scroll': elTableInfiniteScroll
  448. },
  449. data() {
  450. return {
  451. qualityStatus: {
  452. 0: '未质检',
  453. 1: '已质检'
  454. }, // 质检状态 0未检 1已检
  455. qualityResults: {
  456. 1: '合格',
  457. 2: '不合格'
  458. }, // 质检结果 1合格 2不合格
  459. productList: [], // 产品列表
  460. showPackingList: [], // 展示的包装列表
  461. packingList: [], // 包装列表
  462. showMaterialList: [], // 展示物料列表
  463. materialList: [], // 物料列表
  464. extInfo: {}, // 扩展信息
  465. pageSize: 20,
  466. pickingPageNum: 1,
  467. materielPageNum: 1,
  468. codeList: [],
  469. infoData: {},
  470. stepsTitle: '已完成',
  471. stepsStatus: 'success',
  472. active: 0
  473. };
  474. },
  475. watch: {
  476. 'infoData.verifyStatus': {
  477. immediate: true,
  478. handler(val) {
  479. if (val == 0) {
  480. this.active = 1;
  481. this.stepsTitle = '未审核';
  482. this.stepsStatus = 'wait';
  483. } else if (val == 1) {
  484. this.active = 2;
  485. this.stepsTitle = '审核中';
  486. this.stepsStatus = 'process';
  487. } else if (val == 2) {
  488. this.active = 2;
  489. this.stepsTitle = '审核通过';
  490. this.stepsStatus = 'success';
  491. } else if (val == 3) {
  492. this.active = 2;
  493. this.stepsTitle = '驳回';
  494. this.stepsStatus = 'error';
  495. }
  496. }
  497. },
  498. packingList: {
  499. handler(newVal) {
  500. console.log('包装列表', newVal);
  501. console.log('当前包装列表加载页数', this.pickingPageNum);
  502. this.showPackingList = newVal.slice(
  503. 0,
  504. this.pageSize * (this.pickingPageNum > 0 ? this.pickingPageNum : 1)
  505. );
  506. },
  507. deep: true
  508. },
  509. materialList: {
  510. handler(newVal) {
  511. console.log('物料列表', newVal);
  512. console.log('当前物料列表加载页数', this.materielPageNum);
  513. this.showMaterialList = newVal.slice(
  514. 0,
  515. this.pageSize *
  516. (this.materielPageNum > 0 ? this.materielPageNum : 1)
  517. );
  518. },
  519. deep: true
  520. }
  521. },
  522. computed: {
  523. ...mapGetters(['getDictValue']),
  524. clientEnvironmentId() {
  525. return this.$store.state.user.info.clientEnvironmentId;
  526. }
  527. },
  528. created() {
  529. this.requestDict('类型用途');
  530. this.getAllCategoryType();
  531. this._getInfo();
  532. },
  533. methods: {
  534. pickingHandleScroll() {
  535. console.log('---------pickingHandleScroll------------');
  536. if (this.showPackingList.length < this.packingList.length) {
  537. if (this.packingList.length > this.pageSize) {
  538. this.pickingPageNum += 1;
  539. }
  540. this.pickingFetchData();
  541. }
  542. },
  543. pickingFetchData() {
  544. const start = (this.pickingPageNum - 1) * this.pageSize;
  545. const end = start + this.pageSize;
  546. this.showPackingList = this.showPackingList.concat(
  547. this.packingList.slice(start, end)
  548. );
  549. },
  550. materielHandleScroll() {
  551. console.log('---------materielHandleScroll------------');
  552. if (this.showMaterialList.length < this.materialList.length) {
  553. if (this.materialList.length > this.pageSize) {
  554. this.materielPageNum += 1;
  555. }
  556. this.materielFetchData();
  557. }
  558. },
  559. materielFetchData() {
  560. const start = (this.materielPageNum - 1) * this.pageSize;
  561. const end = start + this.pageSize;
  562. this.showMaterialList = this.showMaterialList.concat(
  563. this.materialList.slice(start, end)
  564. );
  565. console.log(this.showMaterialList);
  566. },
  567. ...mapActions('dict', ['requestDict']),
  568. getSceneState: useDictLabel(outputSceneState),
  569. handleAssetType(r) {
  570. const code = this.codeList.find((item) => item.dictCode == r);
  571. return code?.dictValue;
  572. },
  573. tableRowClassName({ row, rowIndex }) {
  574. console.log(row);
  575. if (row.result == 2) {
  576. return 'warning-row';
  577. } else {
  578. return '';
  579. }
  580. },
  581. rowClass({ row, column, rowIndex, columnIndex }) {
  582. if (rowIndex === 1) {
  583. return {
  584. display: 'none',
  585. background: '#EEEEEE'
  586. };
  587. }
  588. return { background: '#0000' };
  589. },
  590. async getAllCategoryType() {
  591. const { data } = await allCategoryLevel();
  592. this.codeList = data.map((item) => {
  593. return { dictCode: item.id, dictValue: item.name };
  594. });
  595. },
  596. async _getInfo() {
  597. const res = await storageApi.getInboundDetailsById(
  598. this.$route.query.id
  599. );
  600. console.log('===', res);
  601. this.infoData = res;
  602. this.extInfo = res.extInfo;
  603. this.productList = res.outInDetailList.map(
  604. (productItem, productIndex) => {
  605. return {
  606. ...productItem,
  607. outInDetailRecordRequestList:
  608. productItem.outInDetailRecordRequestList.map((packingItem) => {
  609. return {
  610. ...packingItem,
  611. categoryName: productItem.categoryName,
  612. categoryCode: productItem.categoryCode,
  613. materialDetailList: packingItem.materialDetailList.map(
  614. (materialItem) => {
  615. return {
  616. ...materialItem,
  617. categoryName: productItem.categoryName,
  618. categoryCode: productItem.categoryCode
  619. };
  620. }
  621. )
  622. };
  623. })
  624. };
  625. }
  626. );
  627. // 获取包装维度数据
  628. const arr = [];
  629. for (const key in this.productList) {
  630. for (const k in this.productList[key].outInDetailRecordRequestList) {
  631. arr.push({
  632. ...this.productList[key].outInDetailRecordRequestList[k]
  633. });
  634. }
  635. }
  636. this.packingList = arr;
  637. // 获取物料维度数据
  638. let iArr = [];
  639. arr.forEach((item) => {
  640. item.materialDetailList.forEach((ele) => {
  641. iArr.push({ ...ele });
  642. });
  643. });
  644. this.materialList = iArr;
  645. console.log(this.packingList);
  646. console.log(this.materialList);
  647. this.pickingFetchData();
  648. this.materielFetchData();
  649. },
  650. download(row) {
  651. if (row.storePath) {
  652. getFile({ objectName: row.storePath }, row.name);
  653. }
  654. }
  655. }
  656. };
  657. </script>
  658. <style lang="scss" scoped>
  659. .stepsStatus {
  660. width: 40%;
  661. margin: 0 auto;
  662. }
  663. .p20 {
  664. padding: 20px;
  665. }
  666. .flex {
  667. display: flex;
  668. }
  669. .title {
  670. justify-content: space-between;
  671. border-bottom: 1px solid #ccc;
  672. padding-bottom: 5px;
  673. span {
  674. font-size: 16px;
  675. }
  676. .col {
  677. padding-left: 40px;
  678. font-size: 14px;
  679. color: #aaaaaa;
  680. }
  681. }
  682. .degree {
  683. margin-right: 10px;
  684. padding: 0px 15px;
  685. color: #fff;
  686. font-size: 13px;
  687. line-height: 23px;
  688. border-radius: 23px;
  689. display: flex;
  690. align-items: center;
  691. justify-content: space-between;
  692. span {
  693. width: 5px;
  694. height: 5px;
  695. border-radius: 100%;
  696. margin-right: 6px;
  697. background-color: #fff;
  698. }
  699. }
  700. .red {
  701. background-color: rgb(163, 0, 20);
  702. }
  703. .blue {
  704. background-color: #1989fa;
  705. }
  706. .createdInfo {
  707. justify-content: space-around;
  708. margin-top: 10px;
  709. font-size: 14px;
  710. .col {
  711. color: #6e6e6e;
  712. padding-right: 10px;
  713. }
  714. }
  715. .mt40 {
  716. margin-top: 40px;
  717. }
  718. .custSteps {
  719. margin-top: 20px;
  720. margin-left: 70px;
  721. .box {
  722. width: 158px;
  723. border: 1px solid #ccc;
  724. padding: 10px;
  725. flex-direction: row;
  726. flex-wrap: wrap;
  727. // justify-content: space-between;
  728. font-size: 12px;
  729. color: #9e9e9e;
  730. .x {
  731. width: 20px;
  732. height: 15px;
  733. margin-right: 5px;
  734. }
  735. .q {
  736. background-color: #d0e4d5;
  737. }
  738. .b {
  739. background-color: #1989fa;
  740. }
  741. .g {
  742. background-color: #157a2c;
  743. }
  744. .r {
  745. background-color: #a30014;
  746. }
  747. .a {
  748. align-items: center;
  749. margin-bottom: 10px;
  750. }
  751. .mr10 {
  752. margin-right: 10px;
  753. }
  754. .mb0 {
  755. margin-bottom: 0;
  756. }
  757. }
  758. .stepsInfo {
  759. // flex: 1;
  760. width: 483px;
  761. }
  762. }
  763. .mt20 {
  764. margin-top: 20px;
  765. }
  766. .content-detail {
  767. overflow: hidden;
  768. }
  769. .executor {
  770. font-size: 14px;
  771. .col {
  772. color: #6e6e6e;
  773. padding-right: 10px;
  774. }
  775. }
  776. .result {
  777. justify-content: space-around;
  778. }
  779. .mr20 {
  780. margin-right: 20px;
  781. }
  782. .details {
  783. font-size: 14px;
  784. margin-bottom: 10px;
  785. }
  786. .customSteps {
  787. margin-top: 40px;
  788. font-size: 14px;
  789. margin-left: 80px;
  790. .time {
  791. font-size: 12px;
  792. color: #6e6e6e;
  793. margin-right: 20px;
  794. position: relative;
  795. &::after {
  796. content: '';
  797. width: 1px;
  798. height: 100%;
  799. background-color: #157a2c;
  800. position: absolute;
  801. right: -26px;
  802. }
  803. }
  804. .flex:last-child {
  805. .time {
  806. &::after {
  807. display: none;
  808. }
  809. }
  810. }
  811. .round {
  812. margin-right: 20px;
  813. width: 10px;
  814. height: 10px;
  815. border-radius: 100%;
  816. background-color: #157a2c;
  817. position: relative;
  818. span {
  819. position: absolute;
  820. top: 50%;
  821. left: 50%;
  822. width: 4px;
  823. height: 4px;
  824. background-color: #fff;
  825. border-radius: 100%;
  826. transform: translate(-2px, -2px);
  827. }
  828. }
  829. .text {
  830. .info {
  831. margin-top: 10px;
  832. width: 955px;
  833. background-color: #f0f3f3;
  834. overflow: hidden;
  835. padding: 10px;
  836. margin-bottom: 10px;
  837. }
  838. }
  839. }
  840. </style>