details.vue 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153
  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.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">
  55. <el-form-item label="客户:">
  56. <span>{{ infoData.clientName }}</span>
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="8">
  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. <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">
  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
  117. ref="productListTable"
  118. :data="productList"
  119. tooltip-effect="dark"
  120. :max-height="300"
  121. :header-cell-style="rowClass"
  122. border
  123. >
  124. <el-table-column label="序号" type="index" width="50">
  125. </el-table-column>
  126. <el-table-column
  127. v-if="isIds"
  128. minWidth="150"
  129. label="入库单号"
  130. prop="bizNo"
  131. align="center"
  132. :show-overflow-tooltip="true"
  133. ></el-table-column>
  134. <el-table-column
  135. label="仓库"
  136. prop="warehouseName"
  137. :show-overflow-tooltip="true"
  138. >
  139. </el-table-column>
  140. <el-table-column
  141. label="编码"
  142. prop="categoryCode"
  143. align="center"
  144. :show-overflow-tooltip="true"
  145. ></el-table-column>
  146. <el-table-column
  147. label="名称"
  148. align="center"
  149. prop="categoryName"
  150. :show-overflow-tooltip="true"
  151. ></el-table-column>
  152. <el-table-column
  153. v-if="clientEnvironmentId == 4"
  154. label="级别"
  155. prop="level"
  156. align="center"
  157. >
  158. </el-table-column>
  159. <el-table-column
  160. label="型号"
  161. align="center"
  162. prop="categoryModel"
  163. :show-overflow-tooltip="true"
  164. ></el-table-column>
  165. <el-table-column
  166. label="规格"
  167. align="center"
  168. prop="specification"
  169. :show-overflow-tooltip="true"
  170. ></el-table-column>
  171. <el-table-column
  172. label="牌号"
  173. align="center"
  174. prop="brandNum"
  175. :show-overflow-tooltip="true"
  176. ></el-table-column>
  177. <el-table-column
  178. v-for="(item, index) in newColumns"
  179. :label="item.label"
  180. :align="item.align"
  181. :prop="item.prop"
  182. :show-overflow-tooltip="item.showOverflowTooltip"
  183. ></el-table-column>
  184. <el-table-column
  185. label="批次号"
  186. prop="batchNo"
  187. align="center"
  188. :show-overflow-tooltip="true"
  189. >
  190. </el-table-column>
  191. <el-table-column
  192. label="数量"
  193. v-if="clientEnvironmentId == 3"
  194. prop="packingQuantity"
  195. align="center"
  196. >
  197. <template slot-scope="{ row, $index }">
  198. {{ row.packingQuantity }} {{ row.packingUnit }}
  199. </template>
  200. </el-table-column>
  201. <el-table-column
  202. v-else
  203. label="数量"
  204. prop="packingQuantity"
  205. width="80"
  206. ></el-table-column>
  207. <el-table-column
  208. v-if="clientEnvironmentId == 3"
  209. label="最小包装单元"
  210. align="center"
  211. width="120"
  212. prop="minPackingQuantity"
  213. >
  214. <template slot-scope="{ row, $index }">
  215. {{ row.minPackingQuantity }} {{ row.measureUnit }} /{{
  216. row.packingUnit
  217. }}
  218. </template>
  219. </el-table-column>
  220. <el-table-column
  221. v-else
  222. label="单位"
  223. prop="packingUnit"
  224. ></el-table-column>
  225. <el-table-column
  226. label="计量数量"
  227. prop="measureQuantity"
  228. :show-overflow-tooltip="true"
  229. ></el-table-column>
  230. <el-table-column
  231. label="计量单位"
  232. prop="measureUnit"
  233. ></el-table-column>
  234. <el-table-column
  235. label="重量"
  236. prop="weight"
  237. align="center"
  238. :show-overflow-tooltip="true"
  239. >
  240. </el-table-column>
  241. <el-table-column
  242. label="重量单位"
  243. prop="weightUnit"
  244. align="center"
  245. :show-overflow-tooltip="true"
  246. >
  247. </el-table-column>
  248. <el-table-column
  249. label="单价"
  250. prop="unitPrice"
  251. align="center"
  252. v-if="isPrice == 1"
  253. >
  254. <template slot-scope="{ row }">
  255. <template>
  256. {{ row.unitPrice ? row.unitPrice + '/元' : '' }}
  257. </template>
  258. </template>
  259. </el-table-column>
  260. <el-table-column
  261. label="金额"
  262. align="center"
  263. prop="totalMoney"
  264. v-if="isPrice == 1"
  265. :show-overflow-tooltip="true"
  266. >
  267. <template slot-scope="{ row, $index }">
  268. {{ row.totalMoney ? row.totalMoney : 0 }}
  269. </template>
  270. </el-table-column>
  271. <el-table-column
  272. v-if="clientEnvironmentId == 4"
  273. label="采购原因"
  274. align="center"
  275. prop="purpose"
  276. :show-overflow-tooltip="true"
  277. ></el-table-column>
  278. <el-table-column
  279. label="供应商"
  280. prop="supplierName"
  281. :show-overflow-tooltip="true"
  282. >
  283. </el-table-column>
  284. <el-table-column
  285. label="供应商代号"
  286. prop="supplierCode"
  287. width="120"
  288. :show-overflow-tooltip="true"
  289. >
  290. </el-table-column>
  291. <el-table-column
  292. label="产地"
  293. align="center"
  294. prop="provenance"
  295. v-if="bizType == 2"
  296. :show-overflow-tooltip="true"
  297. width="120"
  298. >
  299. <template slot-scope="{ row, $index }">
  300. {{
  301. row.provenance &&
  302. row.provenance
  303. .map((item) => getDictValue('产地', item))
  304. .join(',')
  305. }}
  306. </template>
  307. </el-table-column>
  308. <el-table-column
  309. label="生产日期"
  310. prop="detailProductionDate"
  311. :show-overflow-tooltip="true"
  312. >
  313. </el-table-column>
  314. <el-table-column
  315. label="采购日期"
  316. prop="detailPurchaseDate"
  317. :show-overflow-tooltip="true"
  318. >
  319. </el-table-column>
  320. <el-table-column
  321. label="失效日期"
  322. prop="detailExpireDate"
  323. :show-overflow-tooltip="true"
  324. >
  325. </el-table-column>
  326. </el-table>
  327. </div>
  328. <div class="mt20">
  329. <header-title :title="`包装明细`" size="16px"></header-title>
  330. <el-table
  331. ref="showPackingListTable"
  332. :data="showPackingList"
  333. tooltip-effect="dark"
  334. :max-height="300"
  335. :row-class-name="tableRowClassName"
  336. :header-cell-style="rowClass"
  337. border
  338. v-el-table-infinite-scroll="pickingHandleScroll"
  339. >
  340. <el-table-column label="序号" type="index" width="50">
  341. </el-table-column>
  342. <el-table-column
  343. label="批次号"
  344. prop="batchNo"
  345. width="80"
  346. :show-overflow-tooltip="true"
  347. ></el-table-column>
  348. <el-table-column
  349. label="包装编码"
  350. prop="packageNo"
  351. width="130"
  352. :show-overflow-tooltip="true"
  353. ></el-table-column>
  354. <el-table-column
  355. label="名称"
  356. prop="categoryName"
  357. width="120"
  358. :show-overflow-tooltip="true"
  359. ></el-table-column>
  360. <el-table-column
  361. label="编码"
  362. prop="categoryCode"
  363. width="120"
  364. :show-overflow-tooltip="true"
  365. ></el-table-column>
  366. <el-table-column
  367. label="型号"
  368. prop="categoryModel"
  369. width="80"
  370. :show-overflow-tooltip="true"
  371. ></el-table-column>
  372. <el-table-column
  373. label="规格"
  374. prop="specification"
  375. width="80"
  376. :show-overflow-tooltip="true"
  377. ></el-table-column>
  378. <el-table-column
  379. label="牌号"
  380. prop="brandNum"
  381. width="80"
  382. :show-overflow-tooltip="true"
  383. ></el-table-column>
  384. <!-- <el-table-column label="编码" prop="categoryCode" :show-overflow-tooltip="true"></el-table-column>
  385. <el-table-column label="名称" prop="categoryName" :show-overflow-tooltip="true"></el-table-column>
  386. <el-table-column label="批次号" prop="batchNo" :show-overflow-tooltip="true"></el-table-column> -->
  387. <el-table-column
  388. label="发货条码"
  389. prop="barcodes"
  390. :show-overflow-tooltip="true"
  391. ></el-table-column>
  392. <el-table-column
  393. label="包装数量"
  394. prop="packingQuantity"
  395. :show-overflow-tooltip="true"
  396. ></el-table-column>
  397. <el-table-column
  398. label="包装单位"
  399. prop="packingUnit"
  400. :show-overflow-tooltip="true"
  401. ></el-table-column>
  402. <el-table-column
  403. label="计量数量"
  404. prop="measureQuantity"
  405. :show-overflow-tooltip="true"
  406. ></el-table-column>
  407. <el-table-column
  408. label="计量单位"
  409. prop="measureUnit"
  410. :show-overflow-tooltip="true"
  411. ></el-table-column>
  412. <el-table-column
  413. label="物料代号"
  414. prop="materielDesignation"
  415. :show-overflow-tooltip="true"
  416. >
  417. </el-table-column>
  418. <el-table-column
  419. label="客户代号"
  420. prop="clientCode"
  421. :show-overflow-tooltip="true"
  422. >
  423. <template slot-scope="{ row, $index }">
  424. <span v-if="bizType != 2">{{ row?.clientCode }}</span>
  425. <span v-if="bizType == 2">{{ row?.customerMark }}</span>
  426. </template>
  427. </el-table-column>
  428. <el-table-column
  429. label="刻码"
  430. prop="engrave"
  431. :show-overflow-tooltip="true"
  432. >
  433. </el-table-column>
  434. <el-table-column
  435. label="重量"
  436. prop="weight"
  437. :show-overflow-tooltip="true"
  438. >
  439. </el-table-column>
  440. <el-table-column
  441. label="重量单位"
  442. prop="weightUnit"
  443. :show-overflow-tooltip="true"
  444. >
  445. </el-table-column>
  446. <el-table-column
  447. label="供应商"
  448. prop="supplierName"
  449. :show-overflow-tooltip="true"
  450. >
  451. </el-table-column>
  452. <el-table-column
  453. label="供应商代号"
  454. prop="supplierCode"
  455. width="120"
  456. :show-overflow-tooltip="true"
  457. >
  458. </el-table-column>
  459. <el-table-column
  460. label="质检结果"
  461. prop="result"
  462. :show-overflow-tooltip="true"
  463. >
  464. <template slot-scope="{ row }">
  465. <span>{{ qualityResults[row.result] }}</span>
  466. </template>
  467. </el-table-column>
  468. <el-table-column
  469. label="质检状态"
  470. prop="status"
  471. :show-overflow-tooltip="true"
  472. >
  473. <template slot-scope="{ row }">
  474. <span>{{ qualityStatus[row.status] }}</span>
  475. </template>
  476. </el-table-column>
  477. <el-table-column
  478. label="仓库"
  479. prop="warehouseName"
  480. :show-overflow-tooltip="true"
  481. >
  482. </el-table-column>
  483. <el-table-column
  484. label="货区"
  485. prop="areaName"
  486. :show-overflow-tooltip="true"
  487. >
  488. </el-table-column>
  489. <el-table-column
  490. label="货架"
  491. prop="goodsShelfName"
  492. :show-overflow-tooltip="true"
  493. >
  494. </el-table-column>
  495. <el-table-column
  496. label="货位"
  497. prop="goodsAllocationName"
  498. :show-overflow-tooltip="true"
  499. >
  500. </el-table-column>
  501. <el-table-column
  502. label="生产日期"
  503. prop="productionDate"
  504. :show-overflow-tooltip="true"
  505. >
  506. </el-table-column>
  507. <el-table-column
  508. label="采购日期"
  509. prop="purchaseDate"
  510. :show-overflow-tooltip="true"
  511. >
  512. </el-table-column>
  513. <el-table-column
  514. label="失效日期"
  515. prop="expireDate"
  516. :show-overflow-tooltip="true"
  517. >
  518. </el-table-column>
  519. </el-table>
  520. </div>
  521. <!-- <div class="mt20" v-if="bizType != '2'">
  522. <header-title :title="`物料明细`" size="16px"> </header-title>
  523. <el-table
  524. ref="multipleTable"
  525. :data="showMaterialList"
  526. tooltip-effect="dark"
  527. :max-height="300"
  528. :row-class-name="tableRowClassName"
  529. :header-cell-style="rowClass"
  530. border
  531. style="width: 100%"
  532. stripe
  533. height="300px"
  534. v-el-table-infinite-scroll="materielHandleScroll"
  535. >
  536. <el-table-column label="序号" type="index" width="50">
  537. </el-table-column>
  538. <el-table-column
  539. label="编码"
  540. prop="categoryCode"
  541. :show-overflow-tooltip="true"
  542. ></el-table-column>
  543. <el-table-column
  544. label="名称"
  545. prop="categoryName"
  546. :show-overflow-tooltip="true"
  547. ></el-table-column>
  548. <el-table-column label="批次号" prop="batchNo"></el-table-column>
  549. <el-table-column
  550. label="物料编码"
  551. prop="materialCode"
  552. :show-overflow-tooltip="true"
  553. ></el-table-column>
  554. <el-table-column
  555. label="发货条码"
  556. prop="barcodes"
  557. :show-overflow-tooltip="true"
  558. ></el-table-column>
  559. <el-table-column
  560. label="计价方式"
  561. prop="pricingWay"
  562. :show-overflow-tooltip="true"
  563. >
  564. <template slot-scope="{ row, $index }">
  565. <span v-if="row.pricingWay == 1">数量</span>
  566. <span v-if="row.pricingWay == 2">重量</span>
  567. </template>
  568. </el-table-column>
  569. <el-table-column
  570. label="计量数量"
  571. prop="measureQuantity"
  572. ></el-table-column>
  573. <el-table-column
  574. label="计量单位"
  575. prop="measureUnit"
  576. ></el-table-column>
  577. <el-table-column label="物料代号" prop="materielDesignation">
  578. </el-table-column>
  579. <el-table-column label="客户代号" prop="clientCode">
  580. <template slot-scope="{ row, $index }">
  581. <span v-if="bizType != 2">{{ row?.clientCode }}</span>
  582. <span v-if="bizType == 2">{{ row?.customerMark }}</span>
  583. </template>
  584. </el-table-column>
  585. <el-table-column label="刻码" prop="engrave"> </el-table-column>
  586. <el-table-column width="100" label="重量" prop="weight">
  587. </el-table-column>
  588. <el-table-column label="重量单位" prop="weightUnit">
  589. </el-table-column>
  590. <el-table-column label="质检结果" prop="result" width="120">
  591. <template slot-scope="{ row }">
  592. <span>{{ qualityResults[row.result] }}</span>
  593. </template>
  594. </el-table-column>
  595. <el-table-column label="质检状态" prop="status" width="120">
  596. <template slot-scope="{ row }">
  597. <span>{{ qualityStatus[row.status] }}</span>
  598. </template>
  599. </el-table-column>
  600. </el-table>
  601. </div>-->
  602. </div>
  603. </el-card>
  604. </div>
  605. </template>
  606. <script>
  607. import elTableInfiniteScroll from 'el-table-infinite-scroll';
  608. // import fileUpload from '@/BIZComponents/addDoc/index.vue';
  609. import { getFile } from '@/api/system/file/index.js';
  610. import storageApi from '@/api/warehouseManagement';
  611. import { allCategoryLevel } from '@/api/classifyManage';
  612. import {
  613. useDictLabel,
  614. sceneState,
  615. qualityStatus,
  616. qualityResults
  617. } from '@/utils/dict/index';
  618. import { mapGetters, mapActions } from 'vuex';
  619. import { parameterGetByCode } from '@/api/main/index.js';
  620. export default {
  621. directives: {
  622. 'el-table-infinite-scroll': elTableInfiniteScroll
  623. },
  624. // components: { fileUpload },
  625. props: {
  626. bizType: {
  627. type: String,
  628. default: ''
  629. },
  630. businessId: {
  631. type: String,
  632. default: ''
  633. },
  634. isUpload: {
  635. type: Boolean,
  636. default: false
  637. },
  638. isInterior: {
  639. type: Boolean,
  640. default: false
  641. },
  642. isIds: {
  643. //多个入库单ID
  644. type: Boolean,
  645. default: false
  646. }
  647. },
  648. data() {
  649. return {
  650. newColumns: [], // 动态表头
  651. qualityFile: [], // 回执附件
  652. qualityStatus, // 质检状态 0未检 1已检
  653. qualityResults, // 质检结果 0无 1合格 2不合格
  654. productList: [], // 产品列表
  655. showPackingList: [], // 展示的包装列表
  656. packingList: [], // 包装列表
  657. showMaterialList: [], // 展示物料列表
  658. materialList: [], // 物料列表
  659. extInfo: {}, // 扩展信息
  660. pageSize: 20,
  661. pickingPageNum: 1,
  662. materielPageNum: 1,
  663. codeList: [],
  664. infoData: {},
  665. stepsTitle: '已完成',
  666. stepsStatus: 'success',
  667. active: 0,
  668. isPrice: 1
  669. };
  670. },
  671. watch: {
  672. 'infoData.verifyStatus': {
  673. immediate: true,
  674. handler(val) {
  675. if (val == 0) {
  676. this.active = 1;
  677. this.stepsTitle = '未审核';
  678. this.stepsStatus = 'wait';
  679. } else if (val == 1) {
  680. this.active = 2;
  681. this.stepsTitle = '审核中';
  682. this.stepsStatus = 'process';
  683. } else if (val == 2) {
  684. this.active = 2;
  685. this.stepsTitle = '审核通过';
  686. this.stepsStatus = 'success';
  687. } else if (val == 3) {
  688. this.active = 2;
  689. this.stepsTitle = '驳回';
  690. this.stepsStatus = 'error';
  691. }
  692. }
  693. },
  694. businessId(val) {
  695. if (val) {
  696. this._getInfo(val);
  697. }
  698. }
  699. },
  700. computed: {
  701. ...mapGetters(['getDictValue']),
  702. clientEnvironmentId() {
  703. return this.$store.state.user.info.clientEnvironmentId;
  704. }
  705. },
  706. mounted() {
  707. this.getFieldModel();
  708. this.requestDict('类型用途');
  709. this.requestDict('产地');
  710. this.getAllCategoryType();
  711. this._getInfo(this.businessId);
  712. },
  713. created() {
  714. //仓库出入库是否显示金额(0:不显示 1:显示)
  715. parameterGetByCode({
  716. code: 'wms_price'
  717. }).then((res) => {
  718. this.isPrice = res.value;
  719. });
  720. },
  721. methods: {
  722. // 获取动态表头
  723. getFieldModel() {
  724. storageApi.fieldModel({ fieldModel: 't_main_category' }).then((res) => {
  725. let newRes = res.map((m) => {
  726. return {
  727. prop: 'extField.' + m.prop,
  728. label: m.label,
  729. align: 'center',
  730. showOverflowTooltip: true
  731. };
  732. });
  733. this.newColumns = [...newRes];
  734. });
  735. },
  736. //获取回执附件
  737. getQualityFile() {
  738. return { qualityFile: this.qualityFile, id: this.infoData.id };
  739. },
  740. pickingHandleScroll() {
  741. console.log('---------pickingHandleScroll------------');
  742. if (this.showPackingList.length < this.packingList.length) {
  743. if (this.packingList.length > this.pageSize) {
  744. this.pickingPageNum += 1;
  745. }
  746. this.pickingFetchData();
  747. }
  748. },
  749. pickingFetchData() {
  750. const start = (this.pickingPageNum - 1) * this.pageSize;
  751. const end = start + this.pageSize;
  752. this.showPackingList = this.showPackingList.concat(
  753. this.packingList.slice(start, end)
  754. );
  755. },
  756. materielHandleScroll() {
  757. console.log('---------materielHandleScroll------------');
  758. if (this.showMaterialList.length < this.materialList.length) {
  759. if (this.materialList.length > this.pageSize) {
  760. this.materielPageNum += 1;
  761. }
  762. this.materielFetchData();
  763. }
  764. },
  765. materielFetchData() {
  766. const start = (this.materielPageNum - 1) * this.pageSize;
  767. const end = start + this.pageSize;
  768. this.showMaterialList = this.showMaterialList.concat(
  769. this.materialList.slice(start, end)
  770. );
  771. console.log(this.showMaterialList);
  772. },
  773. ...mapActions('dict', ['requestDict']),
  774. getSceneState: useDictLabel(sceneState),
  775. handleAssetType(r) {
  776. if (r) {
  777. let arr = r.split(',');
  778. const filteredData = this.codeList.filter((item) =>
  779. arr.includes(item.dictCode)
  780. );
  781. return filteredData.map((item) => item.dictValue).join(',');
  782. }
  783. // const code = this.codeList.find((item) => item.dictCode == r);
  784. // return code?.dictValue;
  785. },
  786. tableRowClassName({ row, rowIndex }) {
  787. console.log(row);
  788. if (row.result == 2) {
  789. return 'warning-row';
  790. } else {
  791. return '';
  792. }
  793. },
  794. rowClass({ row, column, rowIndex, columnIndex }) {
  795. if (rowIndex === 1) {
  796. return {
  797. display: 'none',
  798. background: '#EEEEEE'
  799. };
  800. }
  801. return { background: '#0000' };
  802. },
  803. async getAllCategoryType() {
  804. const { data } = await allCategoryLevel();
  805. this.codeList = data.map((item) => {
  806. return { dictCode: item.id, dictValue: item.name };
  807. });
  808. },
  809. async _getInfo(id) {
  810. if (!id) return;
  811. let res = null;
  812. let resAll = null;
  813. if (this.isInterior) {
  814. res = await storageApi.getInboundDetailsById(id);
  815. } else if (this.isIds) {
  816. resAll = await storageApi.getInboundDetailsByIds(id);
  817. } else {
  818. res = await storageApi.getInfoBySourceBizNo(id);
  819. }
  820. console.log(
  821. 'idsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss',
  822. this.isIds
  823. );
  824. if (this.isIds) {
  825. res = JSON.parse(JSON.stringify(resAll[0]));
  826. this.extInfo = resAll[0].extInfo;
  827. res['outInDetailList'] = [];
  828. resAll.forEach((item) => {
  829. item.outInDetailList.forEach((val) => {
  830. val['bizNo'] = item.bizNo;
  831. res['outInDetailList'].push(val);
  832. });
  833. });
  834. res['bizNo'] = resAll.map((item) => item.bizNo);
  835. this.infoData = res;
  836. console.log('resAll---------------', resAll);
  837. } else {
  838. this.infoData = res;
  839. this.extInfo = res.extInfo;
  840. console.log(
  841. res,
  842. 'resresresresresresresresresresresresresresresresresresresresres2222'
  843. );
  844. }
  845. console.log('===', res);
  846. this.productList = res.outInDetailList.map(
  847. (productItem, productIndex) => {
  848. // if (this.isIds) {
  849. // productItem['bizNo'] = res.bizNo[productIndex];
  850. // }
  851. return {
  852. ...productItem,
  853. outInDetailRecordRequestList:
  854. productItem.outInDetailRecordRequestList.map((packingItem) => {
  855. return {
  856. ...packingItem,
  857. categoryName: productItem.categoryName,
  858. categoryCode: productItem.categoryCode,
  859. supplierCode: productItem.supplierCode,
  860. supplierName: productItem.supplierName,
  861. materialDetailList: packingItem.materialDetailList.map(
  862. (materialItem) => {
  863. return {
  864. ...materialItem,
  865. categoryName: productItem.categoryName,
  866. categoryCode: productItem.categoryCode
  867. };
  868. }
  869. )
  870. };
  871. })
  872. };
  873. }
  874. );
  875. // 获取包装维度数据
  876. const arr = [];
  877. for (const key in this.productList) {
  878. for (const k in this.productList[key].outInDetailRecordRequestList) {
  879. arr.push({
  880. ...this.productList[key].outInDetailRecordRequestList[k]
  881. });
  882. }
  883. }
  884. this.packingList = arr;
  885. // 获取物料维度数据
  886. let iArr = [];
  887. arr.forEach((item) => {
  888. item.materialDetailList.forEach((ele) => {
  889. iArr.push({ ...ele });
  890. });
  891. });
  892. this.materialList = iArr;
  893. console.log(this.packingList);
  894. console.log(this.materialList);
  895. this.pickingFetchData();
  896. this.materielFetchData();
  897. console.log(this.productList, 'this.productList');
  898. },
  899. download(row) {
  900. if (row.storePath) {
  901. getFile({ objectName: row.storePath }, row.name);
  902. }
  903. }
  904. }
  905. };
  906. </script>
  907. <style lang="scss" scoped>
  908. ::v-deep .warning-row {
  909. color: red;
  910. }
  911. ::v-deep .page-title {
  912. border-bottom: none;
  913. }
  914. ::v-deep .page-title-div {
  915. width: 100%;
  916. }
  917. .stepsStatus {
  918. width: 40%;
  919. margin: 0 auto;
  920. }
  921. .el-form-item {
  922. margin-bottom: 10px;
  923. }
  924. .p20 {
  925. padding: 20px;
  926. }
  927. .flex {
  928. display: flex;
  929. }
  930. .title {
  931. justify-content: space-between;
  932. border-bottom: 1px solid #ccc;
  933. padding-bottom: 5px;
  934. span {
  935. font-size: 16px;
  936. }
  937. .col {
  938. padding-left: 40px;
  939. font-size: 14px;
  940. color: #aaaaaa;
  941. }
  942. }
  943. .degree {
  944. margin-right: 10px;
  945. padding: 0px 15px;
  946. color: #fff;
  947. font-size: 13px;
  948. line-height: 23px;
  949. border-radius: 23px;
  950. display: flex;
  951. align-items: center;
  952. justify-content: space-between;
  953. span {
  954. width: 5px;
  955. height: 5px;
  956. border-radius: 100%;
  957. margin-right: 6px;
  958. background-color: #fff;
  959. }
  960. }
  961. .red {
  962. background-color: rgb(163, 0, 20);
  963. }
  964. .blue {
  965. background-color: #1989fa;
  966. }
  967. .createdInfo {
  968. justify-content: space-around;
  969. margin-top: 10px;
  970. font-size: 14px;
  971. .col {
  972. color: #6e6e6e;
  973. padding-right: 10px;
  974. }
  975. }
  976. .mt40 {
  977. margin-top: 40px;
  978. }
  979. .custSteps {
  980. margin-top: 20px;
  981. margin-left: 70px;
  982. .box {
  983. width: 158px;
  984. border: 1px solid #ccc;
  985. padding: 10px;
  986. flex-direction: row;
  987. flex-wrap: wrap;
  988. // justify-content: space-between;
  989. font-size: 12px;
  990. color: #9e9e9e;
  991. .x {
  992. width: 20px;
  993. height: 15px;
  994. margin-right: 5px;
  995. }
  996. .q {
  997. background-color: #d0e4d5;
  998. }
  999. .b {
  1000. background-color: #1989fa;
  1001. }
  1002. .g {
  1003. background-color: #157a2c;
  1004. }
  1005. .r {
  1006. background-color: #a30014;
  1007. }
  1008. .a {
  1009. align-items: center;
  1010. margin-bottom: 10px;
  1011. }
  1012. .mr10 {
  1013. margin-right: 10px;
  1014. }
  1015. .mb0 {
  1016. margin-bottom: 0;
  1017. }
  1018. }
  1019. .stepsInfo {
  1020. // flex: 1;
  1021. width: 483px;
  1022. }
  1023. }
  1024. .mt20 {
  1025. margin-top: 20px;
  1026. }
  1027. .content-detail {
  1028. overflow: hidden;
  1029. }
  1030. .executor {
  1031. font-size: 14px;
  1032. .col {
  1033. color: #6e6e6e;
  1034. padding-right: 10px;
  1035. }
  1036. }
  1037. .result {
  1038. justify-content: space-around;
  1039. }
  1040. .mr20 {
  1041. margin-right: 20px;
  1042. }
  1043. .details {
  1044. font-size: 14px;
  1045. margin-bottom: 10px;
  1046. }
  1047. .customSteps {
  1048. margin-top: 40px;
  1049. font-size: 14px;
  1050. margin-left: 80px;
  1051. .time {
  1052. font-size: 12px;
  1053. color: #6e6e6e;
  1054. margin-right: 20px;
  1055. position: relative;
  1056. &::after {
  1057. content: '';
  1058. width: 1px;
  1059. height: 100%;
  1060. background-color: #157a2c;
  1061. position: absolute;
  1062. right: -26px;
  1063. }
  1064. }
  1065. .flex:last-child {
  1066. .time {
  1067. &::after {
  1068. display: none;
  1069. }
  1070. }
  1071. }
  1072. .round {
  1073. margin-right: 20px;
  1074. width: 10px;
  1075. height: 10px;
  1076. border-radius: 100%;
  1077. background-color: #157a2c;
  1078. position: relative;
  1079. span {
  1080. position: absolute;
  1081. top: 50%;
  1082. left: 50%;
  1083. width: 4px;
  1084. height: 4px;
  1085. background-color: #fff;
  1086. border-radius: 100%;
  1087. transform: translate(-2px, -2px);
  1088. }
  1089. }
  1090. .text {
  1091. .info {
  1092. margin-top: 10px;
  1093. width: 955px;
  1094. background-color: #f0f3f3;
  1095. overflow: hidden;
  1096. padding: 10px;
  1097. margin-bottom: 10px;
  1098. }
  1099. }
  1100. }
  1101. .switch_left li {
  1102. border-right: 1px solid rgba(222, 222, 222, 1);
  1103. border-left: 1px solid rgba(222, 222, 222, 1);
  1104. }
  1105. </style>