details.vue 34 KB

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