details.vue 28 KB

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