details.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925
  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="120px">
  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(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">
  40. <el-form-item label="客户名称:">
  41. <span>{{ infoData.clientName }}</span>
  42. </el-form-item>
  43. <!-- </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><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>{{ extInfo?.createUserName }}</span>
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="8">
  70. <el-form-item label="权属部门:">
  71. <span>{{ 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>{{ 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. v-for="(item, index) in newColumns"
  158. :label="item.label"
  159. :align="item.align"
  160. :prop="item.prop"
  161. :show-overflow-tooltip="item.showOverflowTooltip"
  162. ></el-table-column>
  163. <el-table-column
  164. label="批次号"
  165. prop="batchNo"
  166. align="center"
  167. :show-overflow-tooltip="true"
  168. >
  169. </el-table-column>
  170. <el-table-column
  171. label="包装数量"
  172. prop="packingQuantity"
  173. align="center"
  174. >
  175. </el-table-column>
  176. <el-table-column
  177. label="包装单位"
  178. align="center"
  179. width="120"
  180. prop="packingUnit"
  181. >
  182. </el-table-column>
  183. <el-table-column
  184. label="计量数量"
  185. prop="measureQuantity"
  186. width="100"
  187. align="center"
  188. >
  189. </el-table-column>
  190. <el-table-column label="计量单位" prop="measureUnit" align="center">
  191. </el-table-column>
  192. <el-table-column
  193. label="重量"
  194. prop="weight"
  195. align="center"
  196. :show-overflow-tooltip="true"
  197. >
  198. </el-table-column>
  199. <el-table-column
  200. label="重量单位"
  201. prop="weightUnit"
  202. align="center"
  203. :show-overflow-tooltip="true"
  204. >
  205. </el-table-column>
  206. <el-table-column
  207. label="单价"
  208. prop="price"
  209. align="center"
  210. v-if="isPrice == 1"
  211. >
  212. <template slot-scope="{ row }">
  213. <template>
  214. {{ row.price ? row.price : '-' + '元' }}/{{ row.measureUnit }}
  215. </template>
  216. </template>
  217. </el-table-column>
  218. <el-table-column
  219. v-if="isPrice == 1"
  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 {
  443. useDictLabel,
  444. outputSceneState,
  445. qualityStatus,
  446. qualityResults
  447. } from '@/utils/dict/index';
  448. import { mapGetters, mapActions } from 'vuex';
  449. import { parameterGetByCode } from '@/api/sys/index.js';
  450. export default {
  451. components: { PageHeader },
  452. directives: {
  453. 'el-table-infinite-scroll': elTableInfiniteScroll
  454. },
  455. data() {
  456. return {
  457. newColumns: [], // 动态表头
  458. // qualityStatus: {
  459. // 0: '未质检',
  460. // 1: '已质检'
  461. // }, // 质检状态 0未检 1已检
  462. // qualityResults: {
  463. // 1: '合格',
  464. // 2: '不合格'
  465. // }, // 质检结果 1合格 2不合格
  466. qualityStatus,
  467. qualityResults,
  468. productList: [], // 产品列表
  469. showPackingList: [], // 展示的包装列表
  470. packingList: [], // 包装列表
  471. showMaterialList: [], // 展示物料列表
  472. materialList: [], // 物料列表
  473. extInfo: {}, // 扩展信息
  474. pageSize: 20,
  475. pickingPageNum: 1,
  476. materielPageNum: 1,
  477. codeList: [],
  478. infoData: {},
  479. stepsTitle: '已完成',
  480. stepsStatus: 'success',
  481. active: 0,
  482. isPrice: 1
  483. };
  484. },
  485. watch: {
  486. 'infoData.verifyStatus': {
  487. immediate: true,
  488. handler(val) {
  489. if (val == 0) {
  490. this.active = 1;
  491. this.stepsTitle = '未审核';
  492. this.stepsStatus = 'wait';
  493. } else if (val == 1) {
  494. this.active = 2;
  495. this.stepsTitle = '审核中';
  496. this.stepsStatus = 'process';
  497. } else if (val == 2) {
  498. this.active = 2;
  499. this.stepsTitle = '审核通过';
  500. this.stepsStatus = 'success';
  501. } else if (val == 3) {
  502. this.active = 2;
  503. this.stepsTitle = '驳回';
  504. this.stepsStatus = 'error';
  505. }
  506. }
  507. },
  508. packingList: {
  509. handler(newVal) {
  510. console.log('包装列表', newVal);
  511. console.log('当前包装列表加载页数', this.pickingPageNum);
  512. this.showPackingList = newVal.slice(
  513. 0,
  514. this.pageSize * (this.pickingPageNum > 0 ? this.pickingPageNum : 1)
  515. );
  516. },
  517. deep: true
  518. },
  519. materialList: {
  520. handler(newVal) {
  521. console.log('物料列表', newVal);
  522. console.log('当前物料列表加载页数', this.materielPageNum);
  523. this.showMaterialList = newVal.slice(
  524. 0,
  525. this.pageSize *
  526. (this.materielPageNum > 0 ? this.materielPageNum : 1)
  527. );
  528. },
  529. deep: true
  530. }
  531. },
  532. computed: {
  533. ...mapGetters(['getDictValue']),
  534. clientEnvironmentId() {
  535. return this.$store.state.user.info.clientEnvironmentId;
  536. }
  537. },
  538. created() {
  539. //仓库出入库是否显示金额(0:不显示 1:显示)
  540. parameterGetByCode({
  541. code: 'wms_price'
  542. }).then((res) => {
  543. this.isPrice = res.value;
  544. });
  545. this.getFieldModel();
  546. this.requestDict('类型用途');
  547. this.getAllCategoryType();
  548. this._getInfo();
  549. },
  550. methods: {
  551. // 获取动态表头
  552. getFieldModel() {
  553. storageApi.fieldModel({ fieldModel: 't_main_category' }).then((res) => {
  554. let newRes = res.map((m) => {
  555. return {
  556. prop: 'extField.' + m.prop,
  557. label: m.label,
  558. align: 'center',
  559. showOverflowTooltip: true
  560. };
  561. });
  562. this.newColumns = [...newRes];
  563. });
  564. },
  565. pickingHandleScroll() {
  566. console.log('---------pickingHandleScroll------------');
  567. if (this.showPackingList.length < this.packingList.length) {
  568. if (this.packingList.length > this.pageSize) {
  569. this.pickingPageNum += 1;
  570. }
  571. this.pickingFetchData();
  572. }
  573. },
  574. pickingFetchData() {
  575. const start = (this.pickingPageNum - 1) * this.pageSize;
  576. const end = start + this.pageSize;
  577. this.showPackingList = this.showPackingList.concat(
  578. this.packingList.slice(start, end)
  579. );
  580. },
  581. materielHandleScroll() {
  582. console.log('---------materielHandleScroll------------');
  583. if (this.showMaterialList.length < this.materialList.length) {
  584. if (this.materialList.length > this.pageSize) {
  585. this.materielPageNum += 1;
  586. }
  587. this.materielFetchData();
  588. }
  589. },
  590. materielFetchData() {
  591. const start = (this.materielPageNum - 1) * this.pageSize;
  592. const end = start + this.pageSize;
  593. this.showMaterialList = this.showMaterialList.concat(
  594. this.materialList.slice(start, end)
  595. );
  596. console.log(this.showMaterialList);
  597. },
  598. ...mapActions('dict', ['requestDict']),
  599. getSceneState: useDictLabel(outputSceneState),
  600. handleAssetType(r) {
  601. const code = this.codeList.find((item) => item.dictCode == r);
  602. return code?.dictValue;
  603. },
  604. tableRowClassName({ row, rowIndex }) {
  605. console.log(row);
  606. if (row.result == 2) {
  607. return 'warning-row';
  608. } else {
  609. return '';
  610. }
  611. },
  612. rowClass({ row, column, rowIndex, columnIndex }) {
  613. if (rowIndex === 1) {
  614. return {
  615. display: 'none',
  616. background: '#EEEEEE'
  617. };
  618. }
  619. return { background: '#0000' };
  620. },
  621. async getAllCategoryType() {
  622. const { data } = await allCategoryLevel();
  623. this.codeList = data.map((item) => {
  624. return { dictCode: item.id, dictValue: item.name };
  625. });
  626. },
  627. getDeptName() {
  628. if (this.extInfo.createUserId) {
  629. storageApi.getGroupById(this.extInfo.createUserId).then((res) => {
  630. this.extInfo.deptName = res?.groupName;
  631. });
  632. }
  633. },
  634. async _getInfo() {
  635. let res = null;
  636. if (this.$route.query.id) {
  637. res = await storageApi.getInboundDetailsById(this.$route.query.id);
  638. } else {
  639. res = await storageApi.getInboundDetailsByBizNo(
  640. this.$route.query.bizNo
  641. );
  642. }
  643. this.infoData = res;
  644. this.extInfo = res.extInfo;
  645. this.getDeptName();
  646. this.productList = res.outInDetailList.map(
  647. (productItem, productIndex) => {
  648. return {
  649. ...productItem,
  650. outInDetailRecordRequestList:
  651. productItem.outInDetailRecordRequestList.map((packingItem) => {
  652. return {
  653. ...packingItem,
  654. categoryName: productItem.categoryName,
  655. categoryCode: productItem.categoryCode,
  656. materialDetailList: packingItem.materialDetailList.map(
  657. (materialItem) => {
  658. return {
  659. ...materialItem,
  660. categoryName: productItem.categoryName,
  661. categoryCode: productItem.categoryCode
  662. };
  663. }
  664. )
  665. };
  666. })
  667. };
  668. }
  669. );
  670. // 获取包装维度数据
  671. const arr = [];
  672. for (const key in this.productList) {
  673. for (const k in this.productList[key].outInDetailRecordRequestList) {
  674. arr.push({
  675. ...this.productList[key].outInDetailRecordRequestList[k]
  676. });
  677. }
  678. }
  679. this.packingList = arr;
  680. // 获取物料维度数据
  681. let iArr = [];
  682. arr.forEach((item) => {
  683. item.materialDetailList.forEach((ele) => {
  684. iArr.push({ ...ele });
  685. });
  686. });
  687. this.materialList = iArr;
  688. console.log(this.packingList);
  689. console.log(this.materialList);
  690. this.pickingFetchData();
  691. this.materielFetchData();
  692. },
  693. download(row) {
  694. if (row.storePath) {
  695. getFile({ objectName: row.storePath }, row.name);
  696. }
  697. }
  698. }
  699. };
  700. </script>
  701. <style lang="scss" scoped>
  702. .stepsStatus {
  703. width: 40%;
  704. margin: 0 auto;
  705. }
  706. .p20 {
  707. padding: 20px;
  708. }
  709. .flex {
  710. display: flex;
  711. }
  712. .title {
  713. justify-content: space-between;
  714. border-bottom: 1px solid #ccc;
  715. padding-bottom: 5px;
  716. span {
  717. font-size: 16px;
  718. }
  719. .col {
  720. padding-left: 40px;
  721. font-size: 14px;
  722. color: #aaaaaa;
  723. }
  724. }
  725. .degree {
  726. margin-right: 10px;
  727. padding: 0px 15px;
  728. color: #fff;
  729. font-size: 13px;
  730. line-height: 23px;
  731. border-radius: 23px;
  732. display: flex;
  733. align-items: center;
  734. justify-content: space-between;
  735. span {
  736. width: 5px;
  737. height: 5px;
  738. border-radius: 100%;
  739. margin-right: 6px;
  740. background-color: #fff;
  741. }
  742. }
  743. .red {
  744. background-color: rgb(163, 0, 20);
  745. }
  746. .blue {
  747. background-color: #1989fa;
  748. }
  749. .createdInfo {
  750. justify-content: space-around;
  751. margin-top: 10px;
  752. font-size: 14px;
  753. .col {
  754. color: #6e6e6e;
  755. padding-right: 10px;
  756. }
  757. }
  758. .mt40 {
  759. margin-top: 40px;
  760. }
  761. .custSteps {
  762. margin-top: 20px;
  763. margin-left: 70px;
  764. .box {
  765. width: 158px;
  766. border: 1px solid #ccc;
  767. padding: 10px;
  768. flex-direction: row;
  769. flex-wrap: wrap;
  770. // justify-content: space-between;
  771. font-size: 12px;
  772. color: #9e9e9e;
  773. .x {
  774. width: 20px;
  775. height: 15px;
  776. margin-right: 5px;
  777. }
  778. .q {
  779. background-color: #d0e4d5;
  780. }
  781. .b {
  782. background-color: #1989fa;
  783. }
  784. .g {
  785. background-color: #157a2c;
  786. }
  787. .r {
  788. background-color: #a30014;
  789. }
  790. .a {
  791. align-items: center;
  792. margin-bottom: 10px;
  793. }
  794. .mr10 {
  795. margin-right: 10px;
  796. }
  797. .mb0 {
  798. margin-bottom: 0;
  799. }
  800. }
  801. .stepsInfo {
  802. // flex: 1;
  803. width: 483px;
  804. }
  805. }
  806. .mt20 {
  807. margin-top: 20px;
  808. }
  809. .content-detail {
  810. overflow: hidden;
  811. }
  812. .executor {
  813. font-size: 14px;
  814. .col {
  815. color: #6e6e6e;
  816. padding-right: 10px;
  817. }
  818. }
  819. .result {
  820. justify-content: space-around;
  821. }
  822. .mr20 {
  823. margin-right: 20px;
  824. }
  825. .details {
  826. font-size: 14px;
  827. margin-bottom: 10px;
  828. }
  829. .customSteps {
  830. margin-top: 40px;
  831. font-size: 14px;
  832. margin-left: 80px;
  833. .time {
  834. font-size: 12px;
  835. color: #6e6e6e;
  836. margin-right: 20px;
  837. position: relative;
  838. &::after {
  839. content: '';
  840. width: 1px;
  841. height: 100%;
  842. background-color: #157a2c;
  843. position: absolute;
  844. right: -26px;
  845. }
  846. }
  847. .flex:last-child {
  848. .time {
  849. &::after {
  850. display: none;
  851. }
  852. }
  853. }
  854. .round {
  855. margin-right: 20px;
  856. width: 10px;
  857. height: 10px;
  858. border-radius: 100%;
  859. background-color: #157a2c;
  860. position: relative;
  861. span {
  862. position: absolute;
  863. top: 50%;
  864. left: 50%;
  865. width: 4px;
  866. height: 4px;
  867. background-color: #fff;
  868. border-radius: 100%;
  869. transform: translate(-2px, -2px);
  870. }
  871. }
  872. .text {
  873. .info {
  874. margin-top: 10px;
  875. width: 955px;
  876. background-color: #f0f3f3;
  877. overflow: hidden;
  878. padding: 10px;
  879. margin-bottom: 10px;
  880. }
  881. }
  882. }
  883. </style>