AssetsDialog.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. <template>
  2. <ele-modal
  3. :visible.sync="visible"
  4. title="物品信息"
  5. width="80vw"
  6. :maxable="true"
  7. >
  8. <el-form :model="searchForm" label-width="100px">
  9. <el-row :gutter="20">
  10. <el-col :span="6">
  11. <el-form-item label="列表维度:" prop="dimension">
  12. <template>
  13. <el-select
  14. style="width: 100%"
  15. @change="changeDimensionHandler"
  16. @keyup.enter.native="doSearch"
  17. v-model="dimension"
  18. placeholder="请选择"
  19. >
  20. <!-- <el-option label="物料维度" value="4"> </el-option> -->
  21. <el-option label="包装维度" value="3"> </el-option>
  22. <el-option label="批次维度" value="2"> </el-option>
  23. <el-option label="物品维度" value="1"> </el-option>
  24. </el-select>
  25. </template>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :span="6">
  29. <el-form-item label="物品编码:">
  30. <el-input
  31. type="text"
  32. placeholder="搜索物品编码"
  33. v-model="searchForm.categoryCode"
  34. @keyup.enter.native="doSearch"
  35. ></el-input>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :span="6">
  39. <el-form-item label="物品名称:">
  40. <el-input
  41. type="text"
  42. placeholder="搜索物品名称"
  43. v-model="searchForm.categoryName"
  44. @keyup.enter.native="doSearch"
  45. ></el-input>
  46. </el-form-item>
  47. </el-col>
  48. <el-col :span="6">
  49. <el-form-item label="批次号:">
  50. <el-input
  51. type="text"
  52. placeholder="搜索批次号"
  53. v-model="searchForm.batchNo"
  54. @keyup.enter.native="doSearch"
  55. ></el-input>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="6">
  59. <el-form-item label="刻码">
  60. <el-input
  61. type="text"
  62. placeholder="搜索物品刻码"
  63. v-model="searchForm.engrave"
  64. @keyup.enter.native="doSearch"
  65. ></el-input>
  66. </el-form-item>
  67. </el-col>
  68. <el-col :span="6">
  69. <el-form-item label="物料代号">
  70. <el-input
  71. type="text"
  72. placeholder="搜索物料代号"
  73. v-model="searchForm.materielDesignation"
  74. @keyup.enter.native="doSearch"
  75. ></el-input>
  76. </el-form-item>
  77. </el-col>
  78. <el-col :span="6">
  79. <el-form-item label="发货码">
  80. <el-input
  81. type="text"
  82. placeholder="搜索发货码"
  83. v-model="searchForm.barcodes"
  84. @keyup.enter.native="doSearch"
  85. ></el-input>
  86. </el-form-item>
  87. </el-col>
  88. <el-col :span="6">
  89. <el-form-item label="牌号">
  90. <el-input
  91. type="text"
  92. placeholder="搜索牌号"
  93. v-model="searchForm.brandNum"
  94. @keyup.enter.native="doSearch"
  95. ></el-input>
  96. </el-form-item>
  97. </el-col>
  98. <el-col :span="6">
  99. <el-form-item label="仓库">
  100. <el-select
  101. clearable
  102. style="width: 100%"
  103. v-model="searchForm.warehouseId"
  104. placeholder="请选择"
  105. @keyup.enter.native="doSearch"
  106. >
  107. <el-option
  108. v-for="item in warehouseList"
  109. :label="item.name"
  110. :value="item.id"
  111. :key="item.id"
  112. >
  113. </el-option>
  114. </el-select>
  115. </el-form-item>
  116. </el-col>
  117. <el-col :span="6">
  118. <el-form-item label="所属工厂" prop="factoryId">
  119. <el-select
  120. filterable
  121. placeholder="请选择"
  122. v-model="searchForm.factoryId"
  123. clearable
  124. class="w100"
  125. @keyup.enter.native="doSearch"
  126. >
  127. <el-option
  128. v-for="item in factoryList"
  129. :key="item.id"
  130. :label="item.name"
  131. :value="item.id"
  132. ></el-option>
  133. </el-select>
  134. </el-form-item>
  135. </el-col>
  136. <el-col :span="6">
  137. <el-form-item label="关键字">
  138. <el-input
  139. clearable
  140. type="text"
  141. placeholder="请输入"
  142. v-model="searchForm.keyWord"
  143. @keyup.enter.native="doSearch"
  144. ></el-input>
  145. </el-form-item>
  146. </el-col>
  147. <el-col>
  148. <div style="float: right">
  149. <el-button type="primary" @click="doSearch">搜索</el-button>
  150. <el-button icon="el-icon-refresh-left" @click="reset"
  151. >重置</el-button
  152. >
  153. </div>
  154. </el-col>
  155. </el-row>
  156. </el-form>
  157. <el-container class="assets-dialog">
  158. <el-aside width="200px" class="wrapper-assets">
  159. <AssetTree
  160. ref="treeList"
  161. :treeIds="treeIds"
  162. @handleNodeClick="handleNodeClick"
  163. />
  164. </el-aside>
  165. <el-main>
  166. <ele-pro-table
  167. row-key="id"
  168. :selection.sync="selectionList"
  169. ref="table"
  170. class="table"
  171. :columns="columns"
  172. :datasource="datasource"
  173. height="calc(100vh - 550px)"
  174. full-height="calc(100vh - 116px)"
  175. tool-class="ele-toolbar-form"
  176. :pageSize="20"
  177. @columns-change="handleColumnChange"
  178. :cache-key="cacheKeyUrl"
  179. >
  180. <template v-slot:outboundNum="{ row }">
  181. <el-input
  182. type="text"
  183. placeholder="请输入"
  184. v-model="row.outboundNum"
  185. @input="handleInput(row, $event)"
  186. :disabled="inputDisabled(row)"
  187. ></el-input>
  188. </template>
  189. </ele-pro-table>
  190. </el-main>
  191. </el-container>
  192. <div slot="footer">
  193. <el-button type="primary" @click="confirm">确定</el-button>
  194. <el-button @click="cancel">关闭</el-button>
  195. </div>
  196. </ele-modal>
  197. </template>
  198. <script>
  199. import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
  200. import storageApi from '@/api/warehouseManagement';
  201. import AssetTree from '../stockManagement/components/assetTree.vue';
  202. import { getWarehouseList } from '@/api/classifyManage/itemInformation';
  203. import { getDetailById, quantityDelivery } from '@/api/classifyManage';
  204. import tabMixins from '@/mixins/tableColumnsMixin';
  205. export default {
  206. mixins: [tabMixins],
  207. components: { AssetTree },
  208. props: {
  209. treeIds: { type: Array, default: () => [] }
  210. },
  211. data() {
  212. return {
  213. factoryList: [],
  214. newColumns: [], // 动态表头
  215. isShowTable: true,
  216. qualityResultOption: [
  217. {
  218. value: 0,
  219. label: '合格'
  220. },
  221. {
  222. value: 1,
  223. label: '不合格'
  224. }
  225. ],
  226. qualityStatusOption: [
  227. {
  228. value: 1,
  229. label: '已质检'
  230. },
  231. {
  232. value: 0,
  233. label: '未质检'
  234. }
  235. ],
  236. visible: false,
  237. tableData: [],
  238. total: 0,
  239. categoryLevelId: '',
  240. searchForm: {
  241. categoryCode: '',
  242. categoryName: '',
  243. batchNo: '',
  244. factoryId: '',
  245. brandNum: '',
  246. engrave: '',
  247. barcodes: '',
  248. categoryLevelId: '',
  249. warehouseId: '',
  250. pageNum: 1,
  251. size: 20
  252. },
  253. selectionList: [],
  254. materialType: '',
  255. warehouseList: [],
  256. dimension: '1',
  257. productLists: [],
  258. columnsVersion: 1,
  259. diffCacheKeyUrl: 'wms-warehouseManagement-components-AssetsDialog',
  260. cacheKeyUrl: 'wms-warehouseManagement-components-AssetsDialog1',
  261. selection: []
  262. };
  263. },
  264. created() {
  265. console.log('created');
  266. this.getFieldModel();
  267. this.getWarehouse();
  268. this.getFactoryList();
  269. },
  270. mounted() {
  271. // this.$nextTick(() => {
  272. // this.$refs.table.reload();
  273. // });
  274. },
  275. computed: {
  276. inputDisabled() {
  277. let _this = this;
  278. return (row) => {
  279. // console.log(row);
  280. return (
  281. _this.productLists.some((it) => it.categoryId == row.categoryId) ||
  282. _this.dimension == '3'
  283. );
  284. };
  285. },
  286. columns() {
  287. const _this = this;
  288. const version = this.columnsVersion;
  289. let kk = [];
  290. let jj = [];
  291. if (this.dimension == 1) {
  292. kk = this.newColumns.map((item) => {
  293. return {
  294. label: item.label,
  295. align: item.align,
  296. prop: item.prop,
  297. showOverflowTooltip: item.showOverflowTooltip
  298. };
  299. });
  300. } else {
  301. kk = [
  302. {
  303. label: '批次号',
  304. prop: 'batchNo',
  305. showOverflowTooltip: true
  306. }
  307. ];
  308. }
  309. if (this.dimension == 3) {
  310. jj = [
  311. {
  312. label: '包装编码',
  313. prop: 'packageNo',
  314. align: 'center',
  315. showOverflowTooltip: true
  316. },
  317. {
  318. label: '包装数量',
  319. prop: 'packingQuantity',
  320. align: 'center',
  321. showOverflowTooltip: true
  322. },
  323. {
  324. label: '包装单位',
  325. prop: 'packingUnit',
  326. align: 'center',
  327. showOverflowTooltip: true
  328. },
  329. {
  330. label: '发货条码',
  331. prop: 'barcodes',
  332. align: 'center',
  333. showOverflowTooltip: true
  334. },
  335. {
  336. label: '物料代号',
  337. prop: 'materielDesignation',
  338. align: 'center',
  339. showOverflowTooltip: true
  340. },
  341. {
  342. label: '客户代号',
  343. prop: 'clientCode',
  344. align: 'center',
  345. showOverflowTooltip: true
  346. },
  347. {
  348. label: '刻码',
  349. prop: 'engrave',
  350. align: 'center',
  351. showOverflowTooltip: true
  352. },
  353. {
  354. label: '仓库',
  355. prop: 'warehouseName',
  356. align: 'center',
  357. showOverflowTooltip: true
  358. }
  359. ];
  360. }
  361. let arr = [
  362. this.dimension == 1
  363. ? {
  364. width: 55,
  365. type: 'selection',
  366. columnKey: 'selection',
  367. fixed: 'left',
  368. align: 'center',
  369. reserveSelection: true,
  370. selectable: (row) => {
  371. return !_this.productLists.some(
  372. (it) => it.categoryId == row.categoryId
  373. );
  374. }
  375. }
  376. : {
  377. width: 55,
  378. type: 'selection',
  379. columnKey: 'selection',
  380. fixed: 'left',
  381. align: 'center',
  382. reserveSelection: true,
  383. selectable: (row) => {
  384. return !_this.productLists.some(
  385. (it) => it.categoryId == row.categoryId
  386. );
  387. }
  388. },
  389. {
  390. columnKey: 'index',
  391. type: 'index',
  392. width: 50,
  393. align: 'center',
  394. label: '序号',
  395. showOverflowTooltip: true,
  396. fixed: 'left'
  397. },
  398. {
  399. fixed: 'left',
  400. prop: 'categoryCode',
  401. label: '物品编码',
  402. align: 'center',
  403. showOverflowTooltip: true
  404. },
  405. {
  406. fixed: 'left',
  407. prop: 'categoryName',
  408. label: '物品名称',
  409. align: 'center',
  410. showOverflowTooltip: true
  411. },
  412. {
  413. prop: 'outboundNum',
  414. label: '出库数量',
  415. align: 'center',
  416. minWidth: '100',
  417. showOverflowTooltip: true,
  418. slot: 'outboundNum'
  419. },
  420. {
  421. prop: 'brandNum',
  422. label: '牌号',
  423. align: 'center',
  424. showOverflowTooltip: true
  425. },
  426. {
  427. prop: 'categoryModel',
  428. label: '型号',
  429. align: 'center',
  430. showOverflowTooltip: true
  431. },
  432. {
  433. prop: 'specification',
  434. label: '规格',
  435. align: 'center',
  436. showOverflowTooltip: true
  437. },
  438. ...kk,
  439. {
  440. prop: 'level',
  441. label: '级别',
  442. align: 'center',
  443. showOverflowTooltip: true
  444. },
  445. {
  446. prop: 'measureQuantity',
  447. label: '计量数量',
  448. align: 'center',
  449. showOverflowTooltip: true
  450. },
  451. {
  452. prop: 'measureUnit',
  453. label: '计量单位',
  454. align: 'center',
  455. showOverflowTooltip: true
  456. },
  457. {
  458. prop: 'weight',
  459. label: '重量',
  460. align: 'center',
  461. showOverflowTooltip: true
  462. },
  463. {
  464. prop: 'weightUnit',
  465. label: '重量单位',
  466. align: 'center',
  467. showOverflowTooltip: true
  468. },
  469. ...jj,
  470. {
  471. prop: 'supplierName',
  472. label: '供应商',
  473. align: 'center',
  474. showOverflowTooltip: true
  475. },
  476. {
  477. prop: 'supplierCode',
  478. label: '供应商代号',
  479. align: 'center',
  480. showOverflowTooltip: true
  481. }
  482. ];
  483. return arr;
  484. }
  485. },
  486. watch: {},
  487. methods: {
  488. //获取工厂列表
  489. async getFactoryList() {
  490. const res = await warehouseDefinition.getFactoryarea({
  491. pageNum: 1,
  492. size: 9999,
  493. type: 1
  494. });
  495. this.factoryList = res.list;
  496. },
  497. async getWarehouse() {
  498. const { data } = await getWarehouseList();
  499. this.warehouseList = data;
  500. },
  501. // 获取动态表头
  502. getFieldModel() {
  503. storageApi.fieldModel({ fieldModel: 't_main_category' }).then((res) => {
  504. let newRes = res.map((m) => {
  505. return {
  506. prop: 'extField.' + m.prop,
  507. label: m.label,
  508. align: 'center',
  509. showOverflowTooltip: true
  510. };
  511. });
  512. this.newColumns = [...newRes];
  513. });
  514. },
  515. // 出库数量限制
  516. handleInput(row, value) {
  517. if (row.outboundNum <= row.measureQuantity) {
  518. // return (row.outboundNum = value.replace(/^(0+)|[^\d]+/g, ''));
  519. // 过滤掉非数字和小数点的字符
  520. const filteredValue = value.replace(/[^0-9.]/g, '');
  521. // 限制只能有一个小数点
  522. const singleDotValue = filteredValue.replace(/(\..*)\./g, '$1');
  523. let finalValue = '';
  524. const dotIndex = singleDotValue.indexOf('.');
  525. if (dotIndex !== -1) {
  526. // 截取小数点后最多两位
  527. finalValue = singleDotValue.slice(0, dotIndex + 3);
  528. } else {
  529. finalValue = singleDotValue;
  530. }
  531. return (row.outboundNum = finalValue);
  532. } else {
  533. row.outboundNum = row.measureQuantity;
  534. }
  535. },
  536. // 切换维度
  537. changeDimensionHandler(e) {
  538. this.searchForm.pageNum = 1;
  539. this.selectionList = [];
  540. this.cacheKeyUrl = this.diffCacheKeyUrl + e;
  541. this.getTabColumns();
  542. this.reload();
  543. },
  544. async changeDimension(e) {
  545. this.dimension = e;
  546. if (this.dimension == 1) {
  547. // 物品维度
  548. const data = await storageApi.getProductList(this.searchForm);
  549. this.tableData = data.list;
  550. this.total = data.count;
  551. } else if (this.dimension == 2) {
  552. // 批次维度
  553. const data = await storageApi.getBatchList(this.searchForm);
  554. for (let i = 0; i < data.list.length; i++) {
  555. data.list[i].outboundNum = data.list[i].measureQuantity;
  556. }
  557. this.tableData = data.list;
  558. this.total = data.count;
  559. } else if (this.dimension == 4) {
  560. // 物料维度
  561. const data = await storageApi.getMaterialList(this.searchForm);
  562. this.tableData = data.list;
  563. this.total = data.count;
  564. } else {
  565. // 包装维度
  566. const data = await storageApi.getPackingList(this.searchForm);
  567. for (let i = 0; i < data.list.length; i++) {
  568. data.list[i].outboundNum = data.list[i].packingQuantity;
  569. }
  570. this.tableData = data.list;
  571. this.total = data.count;
  572. }
  573. console.log(this.tableData);
  574. this.updateProductOutboundNums(this.tableData);
  575. },
  576. updateProductOutboundNums(list) {
  577. console.log(this.productLists, 'this.productLists');
  578. console.log(this.dimension);
  579. // 物品时有bug,可能有多条,不用find,用filter
  580. if (this.dimension == 1) {
  581. //物品层
  582. for (let i = 0; i < list.length; i++) {
  583. const item = list[i];
  584. const matchedProduct = this.productLists.filter(
  585. (product) => product.categoryId === item.categoryId
  586. );
  587. let num = matchedProduct.reduce(
  588. (pre, cur) => pre + cur.measureQuantity,
  589. 0
  590. );
  591. // console.log(matchedProduct);
  592. if (matchedProduct.length) {
  593. this.$set(item, 'outboundNum', num);
  594. }
  595. const isSelection = this.selectionList.find(
  596. (product) => product.categoryId === item.categoryId
  597. );
  598. if (isSelection) {
  599. this.$set(item, 'outboundNum', isSelection.outboundNum);
  600. }
  601. }
  602. } else {
  603. for (let i = 0; i < list.length; i++) {
  604. const item = list[i];
  605. const matchedProduct = this.productLists.find(
  606. (product) => product.id === item.id
  607. );
  608. if (matchedProduct) {
  609. this.$set(item, 'outboundNum', matchedProduct.measureQuantity);
  610. }
  611. const isSelection = this.selectionList.find(
  612. (product) => product.id === item.id
  613. );
  614. if (isSelection) {
  615. this.$set(item, 'outboundNum', isSelection.outboundNum);
  616. }
  617. }
  618. }
  619. },
  620. open(val) {
  621. let that = this;
  622. this.productLists = val || [];
  623. this.visible = true;
  624. this.$nextTick(() => {
  625. this.$refs.treeList.getTreeData().then((data) => {
  626. // that.$nextTick(() => {
  627. // that.categoryLevelId = data.id;
  628. // that.searchForm.categoryLevelId = data.id;
  629. // that.doSearch();
  630. // });
  631. this.handleNodeClick(data);
  632. });
  633. });
  634. },
  635. async confirm() {
  636. console.log(this.selectionList);
  637. if (!this.selectionList.length) {
  638. this.$message.error('请至少选择一条数据!');
  639. return;
  640. }
  641. if (this.dimension == 1) {
  642. let boolen = this.selectionList.every((item) => item.outboundNum > 0);
  643. if (!boolen) {
  644. this.$message.error('请输入出库数量!');
  645. return;
  646. }
  647. }
  648. console.log(this.selectionList);
  649. let data = null;
  650. if (this.dimension == 3) {
  651. data = await storageApi.getHierarchyList({
  652. ids: this.selectionList.map((item) => item.id).join(','),
  653. type: this.dimension
  654. });
  655. } else if (this.dimension == 2) {
  656. data = await storageApi.getHierarchyFifo({
  657. type: this.dimension,
  658. ids: this.selectionList.map((item) => item.id),
  659. builders: this.selectionList.map((item) => {
  660. return {
  661. categoryId: item.categoryId,
  662. num: item.outboundNum,
  663. id: item.id
  664. };
  665. })
  666. });
  667. } else if (this.dimension == 1) {
  668. data = await storageApi.getHierarchyFifo({
  669. type: this.dimension,
  670. builders: this.selectionList.map((item) => {
  671. return {
  672. categoryId: item.categoryId,
  673. num: item.outboundNum
  674. };
  675. })
  676. });
  677. }
  678. console.log('data-------------------', data);
  679. this.$emit('detailData', data, this.dimension);
  680. this.cancel();
  681. },
  682. cancel() {
  683. this.selectionList = [];
  684. // this.$refs.multipleTable.clearSelection();
  685. this.visible = false;
  686. },
  687. handleSelectionChange(val) {
  688. this.selectionList = val;
  689. },
  690. handleNodeClick(data) {
  691. // console.log(data);
  692. this.categoryLevelId = data.id;
  693. this.searchForm.categoryLevelId = data.id;
  694. this.doSearch();
  695. },
  696. handleCurrentChange() {
  697. this.changeDimension(this.dimension);
  698. },
  699. reset() {
  700. this.searchForm = {
  701. categoryCode: '',
  702. categoryName: '',
  703. batchNo: '',
  704. brandNum: '',
  705. engrave: '',
  706. barcodes: '',
  707. warehouseId: '',
  708. factoryId: '',
  709. categoryLevelId: this.categoryLevelId,
  710. pageNum: 1,
  711. size: 20
  712. };
  713. this.doSearch();
  714. },
  715. doSearch() {
  716. this.searchForm.pageNum = 1;
  717. this.$refs.table.reload();
  718. this.$refs.table.reRenderTable();
  719. },
  720. handleSizeChange() {
  721. this.searchForm.pageNum = 1;
  722. this.changeDimension(this.dimension, 'page');
  723. },
  724. // 翻页时,输入的数量会重置
  725. updateSelect(data) {
  726. if (!this.selectionList.length) {
  727. return data;
  728. }
  729. let ids = this.selectionList.map((item) => item.id);
  730. data.list.forEach((item) => {
  731. let id = ids.find((id) => item.id === id);
  732. if (id) {
  733. item.outboundNum = this.selectionList.find(
  734. (item) => item.id === id
  735. ).outboundNum;
  736. }
  737. });
  738. return data;
  739. },
  740. async datasource({ page, limit, where, order }) {
  741. const dimension = this.dimension;
  742. let data;
  743. // console.log(this.searchForm);
  744. // console.log(dimension);
  745. if (dimension == 1) {
  746. data = await storageApi.getProductList({
  747. ...where,
  748. ...order,
  749. ...this.searchForm,
  750. pageNum: page,
  751. size: limit
  752. });
  753. // console.log(data);
  754. // let result = this.updateSelect(data);
  755. // return result;
  756. this.updateProductOutboundNums(data.list);
  757. return data;
  758. }
  759. if (dimension == 2) {
  760. data = await storageApi.getBatchList({
  761. ...where,
  762. ...order,
  763. ...this.searchForm,
  764. pageNum: page,
  765. size: limit
  766. });
  767. data.list.forEach((item) => {
  768. item.outboundNum = item.measureQuantity;
  769. });
  770. return data;
  771. }
  772. if (dimension == 3) {
  773. data = await storageApi.getPackingList({
  774. ...where,
  775. ...order,
  776. ...this.searchForm,
  777. pageNum: page,
  778. size: limit
  779. });
  780. data.list.forEach((item) => {
  781. item.outboundNum = item.packingQuantity;
  782. });
  783. this.updateProductOutboundNums(data.list);
  784. return data;
  785. }
  786. },
  787. reload(where) {
  788. this.$refs.table.reload({
  789. pageNum: 1
  790. });
  791. }
  792. }
  793. };
  794. </script>
  795. <style lang="scss" scoped>
  796. .el-dialog__wrapper {
  797. ::v-deep .el-aside {
  798. background-color: #fff !important;
  799. border: 1px solid #ccc;
  800. }
  801. }
  802. .wrapper-assets {
  803. max-height: 53vh;
  804. overflow: auto;
  805. }
  806. </style>