details.vue 28 KB

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