innerdetails.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976
  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?.storageTime }}</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-column
  236. label="生产日期"
  237. prop="detailProductionDate"
  238. :show-overflow-tooltip="true"
  239. >
  240. </el-table-column>
  241. <el-table-column
  242. label="采购日期"
  243. prop="detailPurchaseDate"
  244. :show-overflow-tooltip="true"
  245. >
  246. </el-table-column>
  247. <el-table-column
  248. label="失效日期"
  249. prop="detailExpireDate"
  250. :show-overflow-tooltip="true"
  251. >
  252. </el-table-column>
  253. </el-table>
  254. </div>
  255. <div class="mt20">
  256. <header-title :title="`包装明细`" size="16px"></header-title>
  257. <el-table
  258. ref="showPackingListTable"
  259. :data="showPackingList"
  260. tooltip-effect="dark"
  261. :max-height="300"
  262. border
  263. :row-class-name="tableRowClassName"
  264. :header-cell-style="rowClass"
  265. v-el-table-infinite-scroll="pickingHandleScroll"
  266. @selection-change="handleSelectionChange"
  267. >
  268. <el-table-column label="序号" type="index" width="50">
  269. </el-table-column>
  270. <el-table-column type="selection" width="55" align="center">
  271. </el-table-column>
  272. <el-table-column
  273. label="编码"
  274. prop="categoryCode"
  275. :show-overflow-tooltip="true"
  276. ></el-table-column>
  277. <el-table-column
  278. label="名称"
  279. prop="categoryName"
  280. :show-overflow-tooltip="true"
  281. ></el-table-column>
  282. <el-table-column
  283. label="批次号"
  284. prop="batchNo"
  285. :show-overflow-tooltip="true"
  286. ></el-table-column>
  287. <el-table-column
  288. label="发货条码"
  289. prop="barcodes"
  290. :show-overflow-tooltip="true"
  291. ></el-table-column>
  292. <el-table-column
  293. label="包装编码"
  294. prop="packageNo"
  295. :show-overflow-tooltip="true"
  296. ></el-table-column>
  297. <el-table-column
  298. label="包装数量"
  299. prop="packingQuantity"
  300. :show-overflow-tooltip="true"
  301. ></el-table-column>
  302. <el-table-column
  303. label="包装单位"
  304. prop="packingUnit"
  305. :show-overflow-tooltip="true"
  306. ></el-table-column>
  307. <el-table-column
  308. label="计量数量"
  309. prop="measureQuantity"
  310. :show-overflow-tooltip="true"
  311. ></el-table-column>
  312. <el-table-column
  313. label="计量单位"
  314. prop="measureUnit"
  315. :show-overflow-tooltip="true"
  316. ></el-table-column>
  317. <el-table-column
  318. label="物料代号"
  319. prop="materielDesignation"
  320. :show-overflow-tooltip="true"
  321. >
  322. </el-table-column>
  323. <el-table-column
  324. label="客户代号"
  325. prop="clientCode"
  326. :show-overflow-tooltip="true"
  327. >
  328. </el-table-column>
  329. <el-table-column
  330. label="刻码"
  331. prop="engrave"
  332. :show-overflow-tooltip="true"
  333. >
  334. </el-table-column>
  335. <el-table-column
  336. label="重量"
  337. prop="weight"
  338. :show-overflow-tooltip="true"
  339. >
  340. </el-table-column>
  341. <el-table-column
  342. label="重量单位"
  343. prop="weightUnit"
  344. :show-overflow-tooltip="true"
  345. >
  346. </el-table-column>
  347. <el-table-column
  348. label="质检结果"
  349. prop="result"
  350. :show-overflow-tooltip="true"
  351. >
  352. <template slot-scope="{ row }">
  353. <span>{{ qualityResults[row.result] }}</span>
  354. </template>
  355. </el-table-column>
  356. <el-table-column
  357. label="质检状态"
  358. prop="status"
  359. :show-overflow-tooltip="true"
  360. >
  361. <template slot-scope="{ row }">
  362. <span>{{ qualityStatus[row.status] }}</span>
  363. </template>
  364. </el-table-column>
  365. <el-table-column
  366. label="仓库"
  367. prop="warehouseName"
  368. :show-overflow-tooltip="true"
  369. >
  370. </el-table-column>
  371. <el-table-column
  372. label="货区"
  373. prop="areaName"
  374. :show-overflow-tooltip="true"
  375. >
  376. </el-table-column>
  377. <el-table-column
  378. label="货架"
  379. prop="goodsShelfName"
  380. :show-overflow-tooltip="true"
  381. >
  382. </el-table-column>
  383. <el-table-column
  384. label="货位"
  385. prop="goodsAllocationName"
  386. :show-overflow-tooltip="true"
  387. >
  388. </el-table-column>
  389. <el-table-column
  390. label="生产日期"
  391. prop="productionDate"
  392. :show-overflow-tooltip="true"
  393. >
  394. </el-table-column>
  395. <el-table-column
  396. label="采购日期"
  397. prop="purchaseDate"
  398. :show-overflow-tooltip="true"
  399. >
  400. </el-table-column>
  401. <el-table-column
  402. label="失效日期"
  403. prop="expireDate"
  404. :show-overflow-tooltip="true"
  405. >
  406. </el-table-column>
  407. </el-table>
  408. </div>
  409. <!-- <div class="mt20">
  410. <header-title :title="`物料明细`" size="16px"> </header-title>
  411. <el-table
  412. ref="multipleTable"
  413. :data="showMaterialList"
  414. tooltip-effect="dark"
  415. :max-height="300"
  416. border
  417. :row-class-name="tableRowClassName"
  418. :header-cell-style="rowClass"
  419. style="width: 100%"
  420. stripe
  421. height="300px"
  422. v-el-table-infinite-scroll="materielHandleScroll"
  423. >
  424. <el-table-column label="序号" type="index" width="50">
  425. </el-table-column>
  426. <el-table-column
  427. label="编码"
  428. prop="categoryCode"
  429. :show-overflow-tooltip="true"
  430. ></el-table-column>
  431. <el-table-column
  432. label="名称"
  433. prop="categoryName"
  434. :show-overflow-tooltip="true"
  435. ></el-table-column>
  436. <el-table-column label="批次号" prop="batchNo"></el-table-column>
  437. <el-table-column
  438. label="物料编码"
  439. prop="materialCode"
  440. :show-overflow-tooltip="true"
  441. ></el-table-column>
  442. <el-table-column
  443. label="发货条码"
  444. prop="barcodes"
  445. :show-overflow-tooltip="true"
  446. ></el-table-column>
  447. <el-table-column
  448. label="计量数量"
  449. prop="measureQuantity"
  450. ></el-table-column>
  451. <el-table-column
  452. label="计量单位"
  453. prop="measureUnit"
  454. ></el-table-column>
  455. <el-table-column label="物料代号" prop="materielDesignation">
  456. </el-table-column>
  457. <el-table-column label="客户代号" prop="clientCode">
  458. </el-table-column>
  459. <el-table-column label="刻码" prop="engrave"> </el-table-column>
  460. <el-table-column width="100" label="重量" prop="weight">
  461. </el-table-column>
  462. <el-table-column label="重量单位" prop="weightUnit">
  463. </el-table-column>
  464. <el-table-column label="质检结果" prop="result" width="120">
  465. <template slot-scope="{ row }">
  466. <span>{{ qualityResults[row.result] }}</span>
  467. </template>
  468. </el-table-column>
  469. <el-table-column label="质检状态" prop="status" width="120">
  470. <template slot-scope="{ row }">
  471. <span>{{ qualityStatus[row.status] }}</span>
  472. </template>
  473. </el-table-column>
  474. </el-table>
  475. </div> -->
  476. </div>
  477. </el-card>
  478. </div>
  479. </template>
  480. <script>
  481. import elTableInfiniteScroll from 'el-table-infinite-scroll';
  482. import { getFile } from '@/api/system/file/index.js';
  483. import { fieldModelAPI } from '@/api/main';
  484. import { allCategoryLevel, getInfoBySourceBizNoAPI } from '@/api/wms';
  485. import { mapGetters, mapActions } from 'vuex';
  486. import { useDictLabel } from '@/utils/dict';
  487. import { sceneStateEnum } from '@/enum/dict';
  488. export default {
  489. components: {},
  490. directives: {
  491. 'el-table-infinite-scroll': elTableInfiniteScroll
  492. },
  493. data() {
  494. return {
  495. newColumns: [], // 动态表头
  496. qualityStatus: {
  497. 0: '未质检',
  498. 1: '待检',
  499. 2: '已质检'
  500. }, // 质检状态
  501. qualityResults: {
  502. 1: '合格',
  503. 2: '不合格',
  504. 3: '让步接收'
  505. }, // 质检结果 1合格 2不合格
  506. productList: [], // 产品列表
  507. showPackingList: [], // 展示的包装列表
  508. packingList: [], // 包装列表
  509. showMaterialList: [], // 展示物料列表
  510. materialList: [], // 物料列表
  511. extInfo: {}, // 扩展信息
  512. pageSize: 20,
  513. pickingPageNum: 1,
  514. materielPageNum: 1,
  515. codeList: [],
  516. infoData: {},
  517. // stepsTitle: '已完成',
  518. stepsStatus: 'success',
  519. active: 0
  520. };
  521. },
  522. watch: {
  523. packingList: {
  524. handler(newVal) {
  525. this.showPackingList = newVal.slice(
  526. 0,
  527. this.pageSize * (this.pickingPageNum > 0 ? this.pickingPageNum : 1)
  528. );
  529. },
  530. deep: true
  531. },
  532. materialList: {
  533. handler(newVal) {
  534. this.showMaterialList = newVal.slice(
  535. 0,
  536. this.pageSize *
  537. (this.materielPageNum > 0 ? this.materielPageNum : 1)
  538. );
  539. },
  540. deep: true
  541. }
  542. },
  543. computed: {
  544. ...mapGetters(['getDictValue']),
  545. clientEnvironmentId() {
  546. return this.$store.state.user.info.clientEnvironmentId;
  547. }
  548. },
  549. created() {
  550. this.getFieldModel();
  551. this.requestDict('类型用途');
  552. this.getAllCategoryType();
  553. this._getInfo();
  554. },
  555. methods: {
  556. // 获取动态表头
  557. getFieldModel() {
  558. fieldModelAPI({ fieldModel: 't_main_category' }).then((res) => {
  559. let newRes = res.map((m) => {
  560. return {
  561. prop: 'extField.' + m.prop,
  562. label: m.label,
  563. align: 'center',
  564. showOverflowTooltip: true
  565. };
  566. });
  567. this.newColumns = [...newRes];
  568. });
  569. },
  570. isUpper(row) {
  571. let filterPackingList = this.packingList.filter((packingItem) => {
  572. return packingItem.parentIndex === row.index;
  573. });
  574. let boolen = filterPackingList.every((item) => {
  575. return item.areaId && item.goodsShelfId && item.goodsAllocationId;
  576. });
  577. return boolen;
  578. },
  579. formDataData() {
  580. // 处理包装数据
  581. this.packingList = this.packingList.map((packingItem) => {
  582. return {
  583. ...packingItem,
  584. materialDetailList: this.materialList.filter(
  585. (item) => item.parentIndex === packingItem.index
  586. )
  587. };
  588. });
  589. // 处理产品数据
  590. this.productList = this.productList.map((productItem) => {
  591. return {
  592. ...productItem,
  593. outInDetailRecordRequestList: this.packingList.filter(
  594. (item) => item.parentIndex === productItem.index
  595. )
  596. };
  597. });
  598. this.infoData.outInDetailList = this.productList;
  599. },
  600. pickingHandleScroll() {
  601. if (this.showPackingList.length < this.packingList.length) {
  602. if (this.packingList.length > this.pageSize) {
  603. this.pickingPageNum += 1;
  604. }
  605. this.pickingFetchData();
  606. }
  607. },
  608. pickingFetchData() {
  609. const start = (this.pickingPageNum - 1) * this.pageSize;
  610. const end = start + this.pageSize;
  611. this.showPackingList = this.showPackingList.concat(
  612. this.packingList.slice(start, end)
  613. );
  614. },
  615. materielHandleScroll() {
  616. if (this.showMaterialList.length < this.materialList.length) {
  617. if (this.materialList.length > this.pageSize) {
  618. this.materielPageNum += 1;
  619. }
  620. this.materielFetchData();
  621. }
  622. },
  623. materielFetchData() {
  624. const start = (this.materielPageNum - 1) * this.pageSize;
  625. const end = start + this.pageSize;
  626. this.showMaterialList = this.showMaterialList.concat(
  627. this.materialList.slice(start, end)
  628. );
  629. },
  630. ...mapActions('dict', ['requestDict']),
  631. getSceneState: useDictLabel(sceneStateEnum),
  632. handleAssetType(r) {
  633. let codes = r.split(',');
  634. let name = codes.map((code) => {
  635. return this.codeList.find((val) => val.dictCode == code)?.dictValue;
  636. });
  637. return name.toString();
  638. },
  639. tableRowClassName({ row, rowIndex }) {
  640. if (row.result == 2) {
  641. return 'warning-row';
  642. } else {
  643. return '';
  644. }
  645. },
  646. goBack() {
  647. this.$router.go(-1);
  648. },
  649. rowClass({ row, column, rowIndex, columnIndex }) {
  650. if (rowIndex === 1) {
  651. return {
  652. display: 'none',
  653. background: '#EEEEEE'
  654. };
  655. }
  656. return { background: '#0000' };
  657. },
  658. async getAllCategoryType() {
  659. const { data } = await allCategoryLevel();
  660. this.codeList = data.map((item) => {
  661. return { dictCode: item.id, dictValue: item.name };
  662. });
  663. },
  664. async _getInfo(sourceBizNo) {
  665. if (!sourceBizNo) {
  666. return;
  667. }
  668. const res = await getInfoBySourceBizNoAPI(sourceBizNo);
  669. this.infoData = res;
  670. this.extInfo = res.extInfo;
  671. this.productList = res?.outInDetailList?.map(
  672. (productItem, productIndex) => {
  673. return {
  674. ...productItem,
  675. index: this.productList?.length + productIndex,
  676. outInDetailRecordRequestList:
  677. productItem.outInDetailRecordRequestList.map(
  678. (packingItem, packingIndex) => {
  679. return {
  680. ...packingItem,
  681. index:
  682. this.productList?.length +
  683. productIndex +
  684. '-' +
  685. packingIndex, // 包装索引
  686. parentIndex: this.productList?.length + productIndex, // 物品索引
  687. categoryName: productItem.categoryName,
  688. categoryCode: productItem.categoryCode,
  689. materialDetailList: packingItem.materialDetailList.map(
  690. (materialItem, materialIndex) => {
  691. return {
  692. ...materialItem,
  693. index:
  694. this.productList?.length +
  695. productIndex +
  696. '-' +
  697. packingIndex +
  698. '——' +
  699. materialIndex, // 包装索引
  700. parentIndex:
  701. this.productList?.length +
  702. productIndex +
  703. '-' +
  704. packingIndex, // 物品索引
  705. categoryName: productItem.categoryName,
  706. categoryCode: productItem.categoryCode
  707. };
  708. }
  709. )
  710. };
  711. }
  712. )
  713. };
  714. }
  715. );
  716. // 获取包装维度数据
  717. const arr = [];
  718. for (const key in this.productList) {
  719. for (const k in this.productList[key].outInDetailRecordRequestList) {
  720. arr.push({
  721. ...this.productList[key].outInDetailRecordRequestList[k]
  722. });
  723. }
  724. }
  725. this.packingList = arr;
  726. // 获取物料维度数据
  727. let iArr = [];
  728. arr.forEach((item) => {
  729. item.materialDetailList.forEach((ele) => {
  730. iArr.push({ ...ele });
  731. });
  732. });
  733. this.materialList = iArr;
  734. this.pickingFetchData();
  735. this.materielFetchData();
  736. },
  737. handleSelectionChange(val) {
  738. this.multipleSelection = val;
  739. },
  740. getValue() {
  741. return this.multipleSelection.map((item) => {
  742. item['packageId'] = item.id;
  743. item['outInCode'] = item.bizNo;
  744. item['outboundType'] = item.outType;
  745. item['outboundDetailId'] = item.id;
  746. item['productName'] = item.categoryName;
  747. item['productCode'] = item.categoryCode;
  748. item['measuringUnit'] = item.measureUnit;
  749. item['productId'] = item.categoryId;
  750. item['receiveTotalWeight'] = item.weight;
  751. this.productList.forEach((val) => {
  752. if (item.categoryCode == val.categoryCode) {
  753. item['warehouseId'] = val.warehouseId;
  754. item['warehouseName'] = val.warehouseName;
  755. }
  756. });
  757. item.id = '';
  758. return item;
  759. });
  760. },
  761. download(row) {
  762. if (row.storePath) {
  763. getFile({ objectName: row.storePath }, row.name);
  764. }
  765. }
  766. }
  767. };
  768. </script>
  769. <style lang="scss" scoped>
  770. ::v-deep .warning-row {
  771. color: red;
  772. }
  773. ::v-deep .page-title {
  774. border-bottom: none;
  775. }
  776. ::v-deep .page-title-div {
  777. width: 100%;
  778. }
  779. .stepsStatus {
  780. width: 40%;
  781. margin: 0 auto;
  782. }
  783. .el-form-item {
  784. margin-bottom: 10px;
  785. }
  786. .p20 {
  787. padding: 20px;
  788. }
  789. .flex {
  790. display: flex;
  791. }
  792. .title {
  793. justify-content: space-between;
  794. border-bottom: 1px solid #ccc;
  795. padding-bottom: 5px;
  796. span {
  797. font-size: 16px;
  798. }
  799. .col {
  800. padding-left: 40px;
  801. font-size: 14px;
  802. color: #aaaaaa;
  803. }
  804. }
  805. .degree {
  806. margin-right: 10px;
  807. padding: 0px 15px;
  808. color: #fff;
  809. font-size: 13px;
  810. line-height: 23px;
  811. border-radius: 23px;
  812. display: flex;
  813. align-items: center;
  814. justify-content: space-between;
  815. span {
  816. width: 5px;
  817. height: 5px;
  818. border-radius: 100%;
  819. margin-right: 6px;
  820. background-color: #fff;
  821. }
  822. }
  823. .red {
  824. background-color: rgb(163, 0, 20);
  825. }
  826. .blue {
  827. background-color: #1989fa;
  828. }
  829. .createdInfo {
  830. justify-content: space-around;
  831. margin-top: 10px;
  832. font-size: 14px;
  833. .col {
  834. color: #6e6e6e;
  835. padding-right: 10px;
  836. }
  837. }
  838. .mt40 {
  839. margin-top: 40px;
  840. }
  841. .custSteps {
  842. margin-top: 20px;
  843. margin-left: 70px;
  844. .box {
  845. width: 158px;
  846. border: 1px solid #ccc;
  847. padding: 10px;
  848. flex-direction: row;
  849. flex-wrap: wrap;
  850. // justify-content: space-between;
  851. font-size: 12px;
  852. color: #9e9e9e;
  853. .x {
  854. width: 20px;
  855. height: 15px;
  856. margin-right: 5px;
  857. }
  858. .q {
  859. background-color: #d0e4d5;
  860. }
  861. .b {
  862. background-color: #1989fa;
  863. }
  864. .g {
  865. background-color: #157a2c;
  866. }
  867. .r {
  868. background-color: #a30014;
  869. }
  870. .a {
  871. align-items: center;
  872. margin-bottom: 10px;
  873. }
  874. .mr10 {
  875. margin-right: 10px;
  876. }
  877. .mb0 {
  878. margin-bottom: 0;
  879. }
  880. }
  881. .stepsInfo {
  882. // flex: 1;
  883. width: 483px;
  884. }
  885. }
  886. .mt20 {
  887. margin-top: 20px;
  888. }
  889. .content-detail {
  890. overflow: hidden;
  891. }
  892. .executor {
  893. font-size: 14px;
  894. .col {
  895. color: #6e6e6e;
  896. padding-right: 10px;
  897. }
  898. }
  899. .result {
  900. justify-content: space-around;
  901. }
  902. .mr20 {
  903. margin-right: 20px;
  904. }
  905. .details {
  906. font-size: 14px;
  907. margin-bottom: 10px;
  908. }
  909. .customSteps {
  910. margin-top: 40px;
  911. font-size: 14px;
  912. margin-left: 80px;
  913. .time {
  914. font-size: 12px;
  915. color: #6e6e6e;
  916. margin-right: 20px;
  917. position: relative;
  918. &::after {
  919. content: '';
  920. width: 1px;
  921. height: 100%;
  922. background-color: #157a2c;
  923. position: absolute;
  924. right: -26px;
  925. }
  926. }
  927. .flex:last-child {
  928. .time {
  929. &::after {
  930. display: none;
  931. }
  932. }
  933. }
  934. .round {
  935. margin-right: 20px;
  936. width: 10px;
  937. height: 10px;
  938. border-radius: 100%;
  939. background-color: #157a2c;
  940. position: relative;
  941. span {
  942. position: absolute;
  943. top: 50%;
  944. left: 50%;
  945. width: 4px;
  946. height: 4px;
  947. background-color: #fff;
  948. border-radius: 100%;
  949. transform: translate(-2px, -2px);
  950. }
  951. }
  952. .text {
  953. .info {
  954. margin-top: 10px;
  955. width: 955px;
  956. background-color: #f0f3f3;
  957. overflow: hidden;
  958. padding: 10px;
  959. margin-bottom: 10px;
  960. }
  961. }
  962. }
  963. .switch_left li {
  964. border-right: 1px solid rgba(222, 222, 222, 1);
  965. border-left: 1px solid rgba(222, 222, 222, 1);
  966. }
  967. </style>