details.vue 26 KB

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