innerdetails.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never">
  4. <div>
  5. <div class="content-detail">
  6. <header-title title="基本信息" size="16px"></header-title>
  7. <div class="mt20">
  8. <el-form label-width="120px">
  9. <el-col :span="8">
  10. <el-form-item label="入库单:">
  11. <span>{{ infoData.bizNo }}</span>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="8">
  15. <el-form-item label="入库物品类型:">
  16. <span>{{ handleAssetType(extInfo?.assetType) }}</span>
  17. </el-form-item>
  18. </el-col>
  19. <el-col :span="8">
  20. <el-form-item label="入库场景:">
  21. <span>{{ getSceneState(infoData?.bizType) }}</span>
  22. </el-form-item>
  23. </el-col>
  24. <el-col :span="8">
  25. <el-form-item label="关联订单:">
  26. <span>{{ extInfo?.documentSource }}</span>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="8">
  30. <el-form-item label="权属部门:">
  31. <span>{{ extInfo?.deptName }}</span>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="8">
  35. <el-form-item label="入库登记人:">
  36. <span>{{ extInfo?.createUserName }}</span>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="8">
  40. <el-form-item label="入库时间:">
  41. <span>{{ infoData?.createTime }}</span>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="8">
  45. <el-form-item label="状态:">
  46. <span>{{ stepsTitle }}</span>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="8">
  50. <el-form-item label="审核人:">
  51. <span>{{ infoData?.verifyName }}</span>
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="8" v-if="infoData?.bizType == 2">
  55. <el-form-item label="客户:">
  56. <span>{{ infoData?.clientName }}</span>
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="8" v-if="infoData?.bizType == 2">
  60. <el-form-item label="供应商:">
  61. <span>{{ extInfo?.supplierName }}</span>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="8">
  65. <el-form-item label="送货人:">
  66. <span>{{ infoData?.fromUser }}</span>
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="8">
  70. <el-form-item label="送货人联系方式:">
  71. <span>{{ extInfo?.deliveryPhone }}</span>
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="8">
  75. <el-form-item label="附件:">
  76. <el-link
  77. type="primary"
  78. v-for="item in infoData?.qualityFile"
  79. @click="download(item)"
  80. :key="item.name"
  81. >{{ item.name }}</el-link
  82. >
  83. </el-form-item>
  84. </el-col>
  85. <el-col :span="24">
  86. <el-form-item label="备注:">
  87. <span>{{ infoData?.remark }}</span>
  88. </el-form-item>
  89. </el-col>
  90. </el-form>
  91. </div>
  92. </div>
  93. <div class="content-detail mt20">
  94. <header-title title="产品信息" size="16px"></header-title>
  95. <el-table
  96. ref="productListTable"
  97. :data="productList"
  98. tooltip-effect="dark"
  99. border
  100. :max-height="300"
  101. :header-cell-style="rowClass"
  102. >
  103. <el-table-column label="序号" type="index" width="50">
  104. </el-table-column>
  105. <el-table-column
  106. label="编码"
  107. prop="categoryCode"
  108. align="center"
  109. :show-overflow-tooltip="true"
  110. ></el-table-column>
  111. <el-table-column
  112. label="名称"
  113. align="center"
  114. prop="categoryName"
  115. :show-overflow-tooltip="true"
  116. ></el-table-column>
  117. <el-table-column
  118. v-if="clientEnvironmentId == 4"
  119. label="级别"
  120. prop="level"
  121. align="center"
  122. >
  123. </el-table-column>
  124. <el-table-column
  125. label="型号"
  126. align="center"
  127. prop="categoryModel"
  128. :show-overflow-tooltip="true"
  129. ></el-table-column>
  130. <el-table-column
  131. label="规格"
  132. align="center"
  133. prop="specification"
  134. :show-overflow-tooltip="true"
  135. ></el-table-column>
  136. <el-table-column
  137. label="牌号"
  138. align="center"
  139. prop="brandNum"
  140. :show-overflow-tooltip="true"
  141. ></el-table-column>
  142. <el-table-column
  143. v-for="(item, index) in newColumns"
  144. :label="item.label"
  145. :align="item.align"
  146. :prop="item.prop"
  147. :show-overflow-tooltip="item.showOverflowTooltip"
  148. ></el-table-column>
  149. <el-table-column
  150. label="批次号"
  151. prop="batchNo"
  152. align="center"
  153. :show-overflow-tooltip="true"
  154. >
  155. </el-table-column>
  156. <el-table-column
  157. label="最小包装单元"
  158. align="center"
  159. width="120"
  160. prop="minPackingQuantity"
  161. >
  162. <template slot-scope="{ row, $index }">
  163. {{ row.minPackingQuantity }} {{ row.measureUnit }} /{{
  164. row.packingUnit
  165. }}
  166. </template>
  167. </el-table-column>
  168. <el-table-column
  169. label="包装数量"
  170. prop="packingQuantity"
  171. align="center"
  172. >
  173. <template slot-scope="{ row, $index }">
  174. {{ row.packingQuantity }} {{ row.packingUnit }}
  175. </template>
  176. </el-table-column>
  177. <el-table-column
  178. label="计量数量"
  179. prop="measureQuantity"
  180. width="100"
  181. align="center"
  182. >
  183. </el-table-column>
  184. <el-table-column label="计量单位" prop="measureUnit" align="center">
  185. <template slot-scope="{ row, $index }">
  186. <template>
  187. {{ row.measureUnit }}
  188. </template>
  189. </template>
  190. </el-table-column>
  191. <el-table-column
  192. label="重量"
  193. prop="weight"
  194. align="center"
  195. :show-overflow-tooltip="true"
  196. >
  197. </el-table-column>
  198. <el-table-column
  199. label="重量单位"
  200. prop="weightUnit"
  201. align="center"
  202. :show-overflow-tooltip="true"
  203. >
  204. </el-table-column>
  205. <el-table-column label="单价" prop="price" align="center">
  206. <template slot-scope="{ row }">
  207. <template>
  208. {{ row.price ? row.price : '-' + '元' }}/{{ row.measureUnit }}
  209. </template>
  210. </template>
  211. </el-table-column>
  212. <el-table-column
  213. label="金额"
  214. align="center"
  215. prop="contentImage"
  216. :show-overflow-tooltip="true"
  217. >
  218. <template slot-scope="{ row, $index }">
  219. {{ row.totalMoney ? row.totalMoney : 0 }}
  220. </template>
  221. </el-table-column>
  222. <el-table-column
  223. v-if="clientEnvironmentId == 4"
  224. label="采购原因"
  225. align="center"
  226. prop="purpose"
  227. :show-overflow-tooltip="true"
  228. ></el-table-column>
  229. <el-table-column
  230. label="仓库"
  231. prop="warehouseName"
  232. :show-overflow-tooltip="true"
  233. >
  234. </el-table-column>
  235. </el-table>
  236. </div>
  237. <div class="mt20">
  238. <header-title :title="`包装明细`" size="16px"></header-title>
  239. <el-table
  240. ref="showPackingListTable"
  241. :data="showPackingList"
  242. tooltip-effect="dark"
  243. :max-height="300"
  244. border
  245. :row-class-name="tableRowClassName"
  246. :header-cell-style="rowClass"
  247. v-el-table-infinite-scroll="pickingHandleScroll"
  248. @selection-change="handleSelectionChange"
  249. >
  250. <el-table-column label="序号" type="index" width="50">
  251. </el-table-column>
  252. <el-table-column type="selection" width="55" align="center"> </el-table-column>
  253. <el-table-column
  254. label="编码"
  255. prop="categoryCode"
  256. :show-overflow-tooltip="true"
  257. ></el-table-column>
  258. <el-table-column
  259. label="名称"
  260. prop="categoryName"
  261. :show-overflow-tooltip="true"
  262. ></el-table-column>
  263. <el-table-column
  264. label="批次号"
  265. prop="batchNo"
  266. :show-overflow-tooltip="true"
  267. ></el-table-column>
  268. <el-table-column
  269. label="发货条码"
  270. prop="barcodes"
  271. :show-overflow-tooltip="true"
  272. ></el-table-column>
  273. <el-table-column
  274. label="包装编码"
  275. prop="packageNo"
  276. :show-overflow-tooltip="true"
  277. ></el-table-column>
  278. <el-table-column
  279. label="包装数量"
  280. prop="packingQuantity"
  281. :show-overflow-tooltip="true"
  282. ></el-table-column>
  283. <el-table-column
  284. label="包装单位"
  285. prop="packingUnit"
  286. :show-overflow-tooltip="true"
  287. ></el-table-column>
  288. <el-table-column
  289. label="计量数量"
  290. prop="measureQuantity"
  291. :show-overflow-tooltip="true"
  292. ></el-table-column>
  293. <el-table-column
  294. label="计量单位"
  295. prop="measureUnit"
  296. :show-overflow-tooltip="true"
  297. ></el-table-column>
  298. <el-table-column
  299. label="物料代号"
  300. prop="materielDesignation"
  301. :show-overflow-tooltip="true"
  302. >
  303. </el-table-column>
  304. <el-table-column
  305. label="客户代号"
  306. prop="clientCode"
  307. :show-overflow-tooltip="true"
  308. >
  309. </el-table-column>
  310. <el-table-column
  311. label="刻码"
  312. prop="engrave"
  313. :show-overflow-tooltip="true"
  314. >
  315. </el-table-column>
  316. <el-table-column
  317. label="重量"
  318. prop="weight"
  319. :show-overflow-tooltip="true"
  320. >
  321. </el-table-column>
  322. <el-table-column
  323. label="重量单位"
  324. prop="weightUnit"
  325. :show-overflow-tooltip="true"
  326. >
  327. </el-table-column>
  328. <el-table-column
  329. label="质检结果"
  330. prop="result"
  331. :show-overflow-tooltip="true"
  332. >
  333. <template slot-scope="{ row }">
  334. <span>{{ qualityResults[row.result] }}</span>
  335. </template>
  336. </el-table-column>
  337. <el-table-column
  338. label="质检状态"
  339. prop="status"
  340. :show-overflow-tooltip="true"
  341. >
  342. <template slot-scope="{ row }">
  343. <span>{{ qualityStatus[row.status] }}</span>
  344. </template>
  345. </el-table-column>
  346. <el-table-column
  347. label="仓库"
  348. prop="warehouseName"
  349. :show-overflow-tooltip="true"
  350. >
  351. </el-table-column>
  352. <el-table-column
  353. label="货区"
  354. prop="areaName"
  355. :show-overflow-tooltip="true"
  356. >
  357. </el-table-column>
  358. <el-table-column
  359. label="货架"
  360. prop="goodsShelfName"
  361. :show-overflow-tooltip="true"
  362. >
  363. </el-table-column>
  364. <el-table-column
  365. label="货位"
  366. prop="goodsAllocationName"
  367. :show-overflow-tooltip="true"
  368. >
  369. </el-table-column>
  370. <el-table-column
  371. label="生产日期"
  372. prop="productionDate"
  373. :show-overflow-tooltip="true"
  374. >
  375. </el-table-column>
  376. <el-table-column
  377. label="采购日期"
  378. prop="purchaseDate"
  379. :show-overflow-tooltip="true"
  380. >
  381. </el-table-column>
  382. </el-table>
  383. </div>
  384. <div class="mt20">
  385. <header-title :title="`物料明细`" size="16px"> </header-title>
  386. <el-table
  387. ref="multipleTable"
  388. :data="showMaterialList"
  389. tooltip-effect="dark"
  390. :max-height="300"
  391. border
  392. :row-class-name="tableRowClassName"
  393. :header-cell-style="rowClass"
  394. style="width: 100%"
  395. stripe
  396. height="300px"
  397. v-el-table-infinite-scroll="materielHandleScroll"
  398. >
  399. <el-table-column label="序号" type="index" width="50">
  400. </el-table-column>
  401. <el-table-column
  402. label="编码"
  403. prop="categoryCode"
  404. :show-overflow-tooltip="true"
  405. ></el-table-column>
  406. <el-table-column
  407. label="名称"
  408. prop="categoryName"
  409. :show-overflow-tooltip="true"
  410. ></el-table-column>
  411. <el-table-column label="批次号" prop="batchNo"></el-table-column>
  412. <el-table-column
  413. label="物料编码"
  414. prop="materialCode"
  415. :show-overflow-tooltip="true"
  416. ></el-table-column>
  417. <el-table-column
  418. label="发货条码"
  419. prop="barcodes"
  420. :show-overflow-tooltip="true"
  421. ></el-table-column>
  422. <el-table-column
  423. label="计量数量"
  424. prop="measureQuantity"
  425. ></el-table-column>
  426. <el-table-column
  427. label="计量单位"
  428. prop="measureUnit"
  429. ></el-table-column>
  430. <el-table-column label="物料代号" prop="materielDesignation">
  431. </el-table-column>
  432. <el-table-column label="客户代号" prop="clientCode">
  433. </el-table-column>
  434. <el-table-column label="刻码" prop="engrave"> </el-table-column>
  435. <el-table-column width="100" label="重量" prop="weight">
  436. </el-table-column>
  437. <el-table-column label="重量单位" prop="weightUnit">
  438. </el-table-column>
  439. <el-table-column label="质检结果" prop="result" width="120">
  440. <template slot-scope="{ row }">
  441. <span>{{ qualityResults[row.result] }}</span>
  442. </template>
  443. </el-table-column>
  444. <el-table-column label="质检状态" prop="status" width="120">
  445. <template slot-scope="{ row }">
  446. <span>{{ qualityStatus[row.status] }}</span>
  447. </template>
  448. </el-table-column>
  449. </el-table>
  450. </div>
  451. </div>
  452. </el-card>
  453. </div>
  454. </template>
  455. <script>
  456. import elTableInfiniteScroll from 'el-table-infinite-scroll';
  457. import { getFile } from '@/api/system/file/index.js';
  458. import { fieldModelAPI } from '@/api/main';
  459. import { allCategoryLevel, getInfoBySourceBizNoAPI } from '@/api/wms';
  460. import { mapGetters, mapActions } from 'vuex';
  461. import { useDictLabel } from '@/utils/dict';
  462. import { sceneStateEnum } from '@/enum/dict';
  463. export default {
  464. components: {},
  465. directives: {
  466. 'el-table-infinite-scroll': elTableInfiniteScroll
  467. },
  468. data() {
  469. return {
  470. newColumns: [], // 动态表头
  471. qualityStatus: {
  472. 0: '未质检',
  473. 1: '已质检'
  474. }, // 质检状态 0未检 1已检
  475. qualityResults: {
  476. 1: '合格',
  477. 2: '不合格'
  478. }, // 质检结果 1合格 2不合格
  479. productList: [], // 产品列表
  480. showPackingList: [], // 展示的包装列表
  481. packingList: [], // 包装列表
  482. showMaterialList: [], // 展示物料列表
  483. materialList: [], // 物料列表
  484. extInfo: {}, // 扩展信息
  485. pageSize: 20,
  486. pickingPageNum: 1,
  487. materielPageNum: 1,
  488. codeList: [],
  489. infoData: {},
  490. stepsTitle: '已完成',
  491. stepsStatus: 'success',
  492. active: 0
  493. };
  494. },
  495. watch: {
  496. packingList: {
  497. handler(newVal) {
  498. this.showPackingList = newVal.slice(
  499. 0,
  500. this.pageSize * (this.pickingPageNum > 0 ? this.pickingPageNum : 1)
  501. );
  502. },
  503. deep: true
  504. },
  505. materialList: {
  506. handler(newVal) {
  507. this.showMaterialList = newVal.slice(
  508. 0,
  509. this.pageSize *
  510. (this.materielPageNum > 0 ? this.materielPageNum : 1)
  511. );
  512. },
  513. deep: true
  514. }
  515. },
  516. computed: {
  517. ...mapGetters(['getDictValue']),
  518. clientEnvironmentId() {
  519. return this.$store.state.user.info.clientEnvironmentId;
  520. }
  521. },
  522. created() {
  523. this.getFieldModel();
  524. this.requestDict('类型用途');
  525. this.getAllCategoryType();
  526. this._getInfo();
  527. },
  528. methods: {
  529. // 获取动态表头
  530. getFieldModel() {
  531. fieldModelAPI({ fieldModel: 't_main_category' }).then((res) => {
  532. let newRes = res.map((m) => {
  533. return {
  534. prop: 'extField.' + m.prop,
  535. label: m.label,
  536. align: 'center',
  537. showOverflowTooltip: true
  538. };
  539. });
  540. this.newColumns = [...newRes];
  541. });
  542. },
  543. isUpper(row) {
  544. let filterPackingList = this.packingList.filter((packingItem) => {
  545. return packingItem.parentIndex === row.index;
  546. });
  547. let boolen = filterPackingList.every((item) => {
  548. return item.areaId && item.goodsShelfId && item.goodsAllocationId;
  549. });
  550. return boolen;
  551. },
  552. formDataData() {
  553. // 处理包装数据
  554. this.packingList = this.packingList.map((packingItem) => {
  555. return {
  556. ...packingItem,
  557. materialDetailList: this.materialList.filter(
  558. (item) => item.parentIndex === packingItem.index
  559. )
  560. };
  561. });
  562. // 处理产品数据
  563. this.productList = this.productList.map((productItem) => {
  564. return {
  565. ...productItem,
  566. outInDetailRecordRequestList: this.packingList.filter(
  567. (item) => item.parentIndex === productItem.index
  568. )
  569. };
  570. });
  571. this.infoData.outInDetailList = this.productList;
  572. },
  573. pickingHandleScroll() {
  574. if (this.showPackingList.length < this.packingList.length) {
  575. if (this.packingList.length > this.pageSize) {
  576. this.pickingPageNum += 1;
  577. }
  578. this.pickingFetchData();
  579. }
  580. },
  581. pickingFetchData() {
  582. const start = (this.pickingPageNum - 1) * this.pageSize;
  583. const end = start + this.pageSize;
  584. this.showPackingList = this.showPackingList.concat(
  585. this.packingList.slice(start, end)
  586. );
  587. },
  588. materielHandleScroll() {
  589. if (this.showMaterialList.length < this.materialList.length) {
  590. if (this.materialList.length > this.pageSize) {
  591. this.materielPageNum += 1;
  592. }
  593. this.materielFetchData();
  594. }
  595. },
  596. materielFetchData() {
  597. const start = (this.materielPageNum - 1) * this.pageSize;
  598. const end = start + this.pageSize;
  599. this.showMaterialList = this.showMaterialList.concat(
  600. this.materialList.slice(start, end)
  601. );
  602. },
  603. ...mapActions('dict', ['requestDict']),
  604. getSceneState: useDictLabel(sceneStateEnum),
  605. handleAssetType(r) {
  606. const code = this.codeList.find((item) => item.dictCode == r);
  607. return code?.dictValue;
  608. },
  609. tableRowClassName({ row, rowIndex }) {
  610. if (row.result == 2) {
  611. return 'warning-row';
  612. } else {
  613. return '';
  614. }
  615. },
  616. goBack() {
  617. this.$router.go(-1);
  618. },
  619. rowClass({ row, column, rowIndex, columnIndex }) {
  620. if (rowIndex === 1) {
  621. return {
  622. display: 'none',
  623. background: '#EEEEEE'
  624. };
  625. }
  626. return { background: '#0000' };
  627. },
  628. async getAllCategoryType() {
  629. const { data } = await allCategoryLevel();
  630. this.codeList = data.map((item) => {
  631. return { dictCode: item.id, dictValue: item.name };
  632. });
  633. },
  634. async _getInfo(sourceBizNo) {
  635. const res = await getInfoBySourceBizNoAPI(sourceBizNo);
  636. this.infoData = res;
  637. this.extInfo = res.extInfo;
  638. this.productList = res?.outInDetailList?.map(
  639. (productItem, productIndex) => {
  640. return {
  641. ...productItem,
  642. index: this.productList?.length + productIndex,
  643. outInDetailRecordRequestList:
  644. productItem.outInDetailRecordRequestList.map(
  645. (packingItem, packingIndex) => {
  646. return {
  647. ...packingItem,
  648. index:
  649. this.productList?.length +
  650. productIndex +
  651. '-' +
  652. packingIndex, // 包装索引
  653. parentIndex: this.productList?.length + productIndex, // 物品索引
  654. categoryName: productItem.categoryName,
  655. categoryCode: productItem.categoryCode,
  656. materialDetailList: packingItem.materialDetailList.map(
  657. (materialItem, materialIndex) => {
  658. return {
  659. ...materialItem,
  660. index:
  661. this.productList?.length +
  662. productIndex +
  663. '-' +
  664. packingIndex +
  665. '——' +
  666. materialIndex, // 包装索引
  667. parentIndex:
  668. this.productList?.length +
  669. productIndex +
  670. '-' +
  671. packingIndex, // 物品索引
  672. categoryName: productItem.categoryName,
  673. categoryCode: productItem.categoryCode
  674. };
  675. }
  676. )
  677. };
  678. }
  679. )
  680. };
  681. }
  682. );
  683. // 获取包装维度数据
  684. const arr = [];
  685. for (const key in this.productList) {
  686. for (const k in this.productList[key].outInDetailRecordRequestList) {
  687. arr.push({
  688. ...this.productList[key].outInDetailRecordRequestList[k]
  689. });
  690. }
  691. }
  692. this.packingList = arr;
  693. // 获取物料维度数据
  694. let iArr = [];
  695. arr.forEach((item) => {
  696. item.materialDetailList.forEach((ele) => {
  697. iArr.push({ ...ele });
  698. });
  699. });
  700. this.materialList = iArr;
  701. this.pickingFetchData();
  702. this.materielFetchData();
  703. },
  704. handleSelectionChange(val) {
  705. this.multipleSelection = val;
  706. },
  707. getValue() {
  708. return this.multipleSelection.map((item) => {
  709. item['packageId'] = item.id;
  710. item['outInCode'] = item.bizNo;
  711. item['outboundType'] = item.outType;
  712. item['outboundDetailId'] = item.id;
  713. item['productName'] = item.categoryName;
  714. item['productCode'] = item.categoryCode;
  715. item['measuringUnit'] = item.measureUnit;
  716. item['productId'] = item.categoryId;
  717. item['receiveTotalWeight']=item.weight;
  718. this.productList.forEach((val) => {
  719. if (item.categoryCode == val.categoryCode) {
  720. item['warehouseId'] = val.warehouseId;
  721. item['warehouseName'] = val.warehouseName;
  722. }
  723. });
  724. item.id = '';
  725. return item;
  726. });
  727. },
  728. download(row) {
  729. if (row.storePath) {
  730. getFile({ objectName: row.storePath }, row.name);
  731. }
  732. }
  733. }
  734. };
  735. </script>
  736. <style lang="scss" scoped>
  737. ::v-deep .warning-row {
  738. color: red;
  739. }
  740. ::v-deep .page-title {
  741. border-bottom: none;
  742. }
  743. ::v-deep .page-title-div {
  744. width: 100%;
  745. }
  746. .stepsStatus {
  747. width: 40%;
  748. margin: 0 auto;
  749. }
  750. .el-form-item {
  751. margin-bottom: 10px;
  752. }
  753. .p20 {
  754. padding: 20px;
  755. }
  756. .flex {
  757. display: flex;
  758. }
  759. .title {
  760. justify-content: space-between;
  761. border-bottom: 1px solid #ccc;
  762. padding-bottom: 5px;
  763. span {
  764. font-size: 16px;
  765. }
  766. .col {
  767. padding-left: 40px;
  768. font-size: 14px;
  769. color: #aaaaaa;
  770. }
  771. }
  772. .degree {
  773. margin-right: 10px;
  774. padding: 0px 15px;
  775. color: #fff;
  776. font-size: 13px;
  777. line-height: 23px;
  778. border-radius: 23px;
  779. display: flex;
  780. align-items: center;
  781. justify-content: space-between;
  782. span {
  783. width: 5px;
  784. height: 5px;
  785. border-radius: 100%;
  786. margin-right: 6px;
  787. background-color: #fff;
  788. }
  789. }
  790. .red {
  791. background-color: rgb(163, 0, 20);
  792. }
  793. .blue {
  794. background-color: #1989fa;
  795. }
  796. .createdInfo {
  797. justify-content: space-around;
  798. margin-top: 10px;
  799. font-size: 14px;
  800. .col {
  801. color: #6e6e6e;
  802. padding-right: 10px;
  803. }
  804. }
  805. .mt40 {
  806. margin-top: 40px;
  807. }
  808. .custSteps {
  809. margin-top: 20px;
  810. margin-left: 70px;
  811. .box {
  812. width: 158px;
  813. border: 1px solid #ccc;
  814. padding: 10px;
  815. flex-direction: row;
  816. flex-wrap: wrap;
  817. // justify-content: space-between;
  818. font-size: 12px;
  819. color: #9e9e9e;
  820. .x {
  821. width: 20px;
  822. height: 15px;
  823. margin-right: 5px;
  824. }
  825. .q {
  826. background-color: #d0e4d5;
  827. }
  828. .b {
  829. background-color: #1989fa;
  830. }
  831. .g {
  832. background-color: #157a2c;
  833. }
  834. .r {
  835. background-color: #a30014;
  836. }
  837. .a {
  838. align-items: center;
  839. margin-bottom: 10px;
  840. }
  841. .mr10 {
  842. margin-right: 10px;
  843. }
  844. .mb0 {
  845. margin-bottom: 0;
  846. }
  847. }
  848. .stepsInfo {
  849. // flex: 1;
  850. width: 483px;
  851. }
  852. }
  853. .mt20 {
  854. margin-top: 20px;
  855. }
  856. .content-detail {
  857. overflow: hidden;
  858. }
  859. .executor {
  860. font-size: 14px;
  861. .col {
  862. color: #6e6e6e;
  863. padding-right: 10px;
  864. }
  865. }
  866. .result {
  867. justify-content: space-around;
  868. }
  869. .mr20 {
  870. margin-right: 20px;
  871. }
  872. .details {
  873. font-size: 14px;
  874. margin-bottom: 10px;
  875. }
  876. .customSteps {
  877. margin-top: 40px;
  878. font-size: 14px;
  879. margin-left: 80px;
  880. .time {
  881. font-size: 12px;
  882. color: #6e6e6e;
  883. margin-right: 20px;
  884. position: relative;
  885. &::after {
  886. content: '';
  887. width: 1px;
  888. height: 100%;
  889. background-color: #157a2c;
  890. position: absolute;
  891. right: -26px;
  892. }
  893. }
  894. .flex:last-child {
  895. .time {
  896. &::after {
  897. display: none;
  898. }
  899. }
  900. }
  901. .round {
  902. margin-right: 20px;
  903. width: 10px;
  904. height: 10px;
  905. border-radius: 100%;
  906. background-color: #157a2c;
  907. position: relative;
  908. span {
  909. position: absolute;
  910. top: 50%;
  911. left: 50%;
  912. width: 4px;
  913. height: 4px;
  914. background-color: #fff;
  915. border-radius: 100%;
  916. transform: translate(-2px, -2px);
  917. }
  918. }
  919. .text {
  920. .info {
  921. margin-top: 10px;
  922. width: 955px;
  923. background-color: #f0f3f3;
  924. overflow: hidden;
  925. padding: 10px;
  926. margin-bottom: 10px;
  927. }
  928. }
  929. }
  930. .switch_left li {
  931. border-right: 1px solid rgba(222, 222, 222, 1);
  932. border-left: 1px solid rgba(222, 222, 222, 1);
  933. }
  934. </style>