| src/views/inventoryManagement/dispatchLog/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/issueManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/receiptManagement/components/formDiaManual.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/receiptManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/components/FormDiaManual.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/inventoryManagement/dispatchLog/index.vue
@@ -128,71 +128,6 @@ /> </div> </el-tab-pane> <el-tab-pane label="ææåºåº" name="manual"> <div class="search_form"> <div> <span class="search_title ml10">åºåºæ¥æï¼</span> <el-date-picker v-model="searchForm.timeStr" type="date" placeholder="è¯·éæ©æ¥æ" value-format="YYYY-MM-DD" format="YYYY-MM-DD" clearable @change="handleQuery" /> <span class="search_title ml10">产å大类ï¼</span> <el-input v-model="searchForm.productCategory" style="width: 240px" placeholder="请è¾å ¥" clearable /> <el-button type="primary" @click="handleQuery" style="margin-left: 10px">æç´¢</el-button> </div> <div> <el-button @click="handleOut">导åº</el-button> <el-button type="danger" plain @click="handleDelete">å é¤</el-button> <el-button type="primary" plain @click="handlePrint">æå°</el-button> </div> </div> <div class="table_list"> <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange" :expand-row-keys="expandedRowKeys" :row-key="(row) => row.id" show-summary style="width: 100%" :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)" > <el-table-column align="center" type="selection" width="55" /> <el-table-column align="center" label="åºå·" type="index" width="60" /> <el-table-column label="åºåºæ¥æ" prop="createTime" show-overflow-tooltip width="130"/> <el-table-column label="æ¹æ¬¡å·" prop="code" width="130" show-overflow-tooltip /> <el-table-column label="产å大类" prop="productCategory" show-overflow-tooltip /> <el-table-column label="è§æ ¼åå·" prop="specificationModel" show-overflow-tooltip /> <el-table-column label="åä½" prop="unit" show-overflow-tooltip /> <el-table-column label="ç©åç±»å" prop="itemType" show-overflow-tooltip /> <el-table-column label="åºåºæ°é" prop="inboundNum" show-overflow-tooltip /> <el-table-column label="åä»·(å )" prop="taxInclusiveUnitPrice" width="150"></el-table-column> <el-table-column label="æ»ä»·(å )" prop="taxInclusiveTotalPrice" width="150"></el-table-column> <el-table-column label="åºåºäºº" prop="createBy" show-overflow-tooltip /> </el-table> <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> </el-tab-pane> </el-tabs> <!-- æå°é¢è§å¼¹çª --> @@ -218,7 +153,7 @@ <div v-for="(item, index) in printData" :key="index" class="print-page"> <div class="delivery-note"> <div class="header"> <div class="company-name">æµ·å·å¼å¿é£åæéå ¬å¸</div> <div class="company-name">åæ³°ä¼ä¸ï¼å¤©æ´¥ï¼æéå ¬å¸</div> <div class="document-title">é¶å®åè´§å</div> </div> @@ -322,7 +257,6 @@ } from "@/api/inventoryManagement/stockOut.js"; import { getStockInPageByProduct, getStockInPageByCustom, } from "@/api/inventoryManagement/stockIn.js"; const userStore = useUserStore(); @@ -347,7 +281,7 @@ supplierName: "", customerName: "", productCategory:'', timeStr: getCurrentDate(), timeStr: '', }, form: { supplierId: null, @@ -397,8 +331,6 @@ // æ ¹æ®ä¸åç tab ç±»åè°ç¨ä¸åçæ¥å£ const apiCall = activeTab.value === 'production' ? getStockInPageByProduct(params) : activeTab.value === 'manual' ? getStockInPageByCustom(params) : getStockOutPage(params) apiCall @@ -414,7 +346,7 @@ const unitPrice = Number(item.unitPrice) || 0; item.totalPrice = (unitPrice * inboundNum).toFixed(2); } else { // åæåææåºåºï¼æ»ä»· = taxInclusiveUnitPrice à inboundNum // åæåºåºï¼æ»ä»· = taxInclusiveUnitPrice à inboundNum const taxInclusiveUnitPrice = Number(item.taxInclusiveUnitPrice) || 0; item.taxInclusiveTotalPrice = (taxInclusiveUnitPrice * inboundNum).toFixed(2); } @@ -465,8 +397,6 @@ let exportUrl = "/stockmanagement/export" if (activeTab.value === 'production') { exportUrl = "/stockmanagement/exportone" } else if (activeTab.value === 'manual') { exportUrl = "/stockmanagement/exportTwo" } proxy.download(exportUrl, {}, "åºåºå°è´¦.xlsx"); }) @@ -661,7 +591,7 @@ <div class="print-page"> <div class="delivery-note"> <div class="header"> <div class="company-name">æµ·å·å¼å¿é£åæéå ¬å¸</div> <div class="company-name">åæ³°ä¼ä¸ï¼å¤©æ´¥ï¼æéå ¬å¸</div> <div class="document-title">é¶å®åè´§å</div> </div> src/views/inventoryManagement/issueManagement/index.vue
@@ -77,45 +77,6 @@ :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> </el-tab-pane> <el-tab-pane label="ææåºåº" name="manual"> <div class="search_form"> <div> <span class="search_title ml10">产å大类ï¼</span> <el-input v-model="searchForm.productCategory" style="width: 240px" placeholder="请è¾å ¥" clearable /> <el-button type="primary" @click="handleQuery" style="margin-left: 10px">æç´¢</el-button> </div> <div> <el-button @click="handleOut">导åº</el-button> </div> </div> <div class="table_list"> <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange" :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%" :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)"> <el-table-column align="center" type="selection" width="55" /> <el-table-column align="center" label="åºå·" type="index" width="60" /> <el-table-column label="æ¹æ¬¡å·" prop="code" width="130" show-overflow-tooltip /> <el-table-column label="产å大类" prop="productCategory" show-overflow-tooltip /> <el-table-column label="è§æ ¼åå·" prop="specificationModel" show-overflow-tooltip /> <el-table-column label="åä½" prop="unit" width="70" show-overflow-tooltip /> <el-table-column label="ç©åç±»å" prop="itemType" show-overflow-tooltip /> <el-table-column label="å©ä½åºå" prop="inboundNum0" width="90" show-overflow-tooltip /> <el-table-column fixed="right" label="æä½" width="100" align="center"> <template #default="scope"> <el-button link type="primary" size="small" @click="openForm(scope.row);">é¢ç¨</el-button> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> </el-tab-pane> </el-tabs> <el-dialog v-model="dialogFormVisible" :title="getDialogTitle()" width="40%" @close="closeDia"> <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef"> @@ -154,7 +115,6 @@ import { getStockInPage, getStockInPageByProduction, getStockInPageByCustom, getInPageByCustom } from "@/api/inventoryManagement/stockIn.js"; import { getStockManagePage, @@ -187,7 +147,7 @@ nickName: '', userId: '', productCategory:'', timeStr: getCurrentDate(), timeStr: '', }, form: { productrecordId: '', @@ -225,8 +185,6 @@ let apiCall if (activeTab.value === 'production') { apiCall = getStockInPageByProduction(params) } else if (activeTab.value === 'manual') { apiCall = getInPageByCustom(params) } else { apiCall = getStockInPage(params) } @@ -312,14 +270,14 @@ } proxy.$refs["formRef"].validate(valid => { if (valid && currentRowId.value) { const typeMap = { production: 2, purchase: 1, manual: 3 } const typeMap = { production: 2, purchase: 1 } const outData = { id: currentRowId.value, // åå§è®°å½ID salesLedgerProductId: activeTab.value === 'manual' ? 0 : salesLedgerProductId.value, salesLedgerProductId: salesLedgerProductId.value, quantity: form.value.inboundQuantity, // åºåºæ°é time: form.value.inboundTime, // åºåºæ¶é´ userId: form.value.nickName, // æä½äºº type: typeMap[activeTab.value] // åºåºç±»åï¼éè´1ï¼ç产2ï¼èªå®ä¹3 type: typeMap[activeTab.value] // åºåºç±»åï¼éè´1ï¼ç产2 } console.log(outData) @@ -353,8 +311,6 @@ let exportUrl = "/stockin/export" if (activeTab.value === 'production') { exportUrl = "/stockin/exportOne" } else if (activeTab.value === 'manual') { exportUrl = "/stockin/exportTwo" } proxy.download(exportUrl, {}, 'å ¥åºå°è´¦.xlsx') }).catch(() => { @@ -399,8 +355,7 @@ const getDialogTitle = () => { const titleMap = { production: 'æ°å¢åè´§', purchase: 'æ°å¢é¢ç¨', manual: 'æ°å¢é¢ç¨' purchase: 'æ°å¢é¢ç¨' }; return titleMap[activeTab.value] || 'æ°å¢åºåº'; }; @@ -409,8 +364,7 @@ const getAvailableQuantityText = () => { const textMap = { production: 'å¯åè´§æ°é', purchase: 'å¯é¢ç¨æ°é', manual: 'å¯é¢ç¨æ°é' purchase: 'å¯é¢ç¨æ°é' }; return textMap[activeTab.value] || 'å¯åºåºæ°é'; }; @@ -419,8 +373,7 @@ const getQuantityLabel = () => { const labelMap = { production: 'åè´§æ°éï¼', purchase: 'é¢ç¨æ°éï¼', manual: 'é¢ç¨æ°éï¼' purchase: 'é¢ç¨æ°éï¼' }; return labelMap[activeTab.value] || 'åºåºæ°éï¼'; }; @@ -429,8 +382,7 @@ const getDateLabel = () => { const labelMap = { production: 'åè´§æ¥æï¼', purchase: 'é¢ç¨æ¥æï¼', manual: 'é¢ç¨æ¥æï¼' purchase: 'é¢ç¨æ¥æï¼' }; return labelMap[activeTab.value] || 'åºåºæ¥æï¼'; }; @@ -439,8 +391,7 @@ const getPersonLabel = () => { const labelMap = { production: 'å货人ï¼', purchase: 'é¢ç¨äººï¼', manual: 'é¢ç¨äººï¼' purchase: 'é¢ç¨äººï¼' }; return labelMap[activeTab.value] || 'åºåºäººï¼'; }; src/views/inventoryManagement/receiptManagement/components/formDiaManual.vue
ÎļþÒÑɾ³ý src/views/inventoryManagement/receiptManagement/index.vue
@@ -107,66 +107,9 @@ :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> </el-tab-pane> <el-tab-pane label="ææå ¥åº" name="manual"> <div class="search_form"> <div> <span class="search_title ml10">å ¥åºæ¥æï¼</span> <el-date-picker v-model="searchForm.timeStr" type="date" placeholder="è¯·éæ©æ¥æ" value-format="YYYY-MM-DD" format="YYYY-MM-DD" clearable @change="handleQuery" /> <span class="search_title ml10">产å大类ï¼</span> <el-input v-model="searchForm.productCategory" style="width: 240px" placeholder="请è¾å ¥" clearable /> <el-button type="primary" @click="handleQuery" style="margin-left: 10px">æç´¢</el-button> </div> <div> <el-button type="primary" @click="openForm('add', 'manual')">æ°å¢å ¥åº</el-button> <el-button @click="handleOut">导åº</el-button> <el-button type="danger" plain @click="handleDelete">å é¤</el-button> </div> </div> <div class="table_list"> <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange" :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%" :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)"> <el-table-column align="center" type="selection" width="55" /> <el-table-column align="center" label="åºå·" type="index" width="60" /> <el-table-column label="å ¥åºæ¶é´" prop="inboundDate" width="100" show-overflow-tooltip /> <el-table-column label="æ¹æ¬¡å·" prop="code" width="130" show-overflow-tooltip /> <el-table-column label="产å大类" prop="productCategory" show-overflow-tooltip /> <el-table-column label="è§æ ¼åå·" prop="specificationModel" show-overflow-tooltip /> <el-table-column label="åä½" prop="unit" width="70" show-overflow-tooltip /> <el-table-column label="ç©åç±»å" prop="itemType" show-overflow-tooltip /> <el-table-column label="å ¥åºæ°é" prop="inboundNum" width="100" show-overflow-tooltip /> <el-table-column label="å©ä½åºå" prop="inboundNum0" show-overflow-tooltip /> <el-table-column label="åä»·(å )" prop="taxInclusiveUnitPrice" width="150"></el-table-column> <el-table-column label="æ»ä»·(å )" prop="taxInclusiveTotalPrice" width="150"></el-table-column> <el-table-column label="å ¥åºäºº" prop="createBy" width="80" show-overflow-tooltip /> <el-table-column fixed="right" label="æä½" width="100" align="center"> <template #default="scope"> <el-button link type="primary" size="small" @click="openForm('edit', scope.row, 'manual');">ç¼è¾</el-button> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> </el-tab-pane> </el-tabs> <form-dia ref="formDia" @close="handleQuery" @success="handleQuery"></form-dia> <form-dia-manual ref="formDiaManual" @close="handleQuery" @success="handleQuery"></form-dia-manual> <form-dia-product ref="formDiaProduct" @close="handleQuery" @success="handleQuery"></form-dia-product> </div> </template> @@ -181,10 +124,8 @@ getStockInPage, getStockInPageByProduction, delStockIn, delStockInCustom, getInPageByCustom, } from "@/api/inventoryManagement/stockIn.js"; import FormDia from './components/formDia.vue' import FormDiaManual from './components/formDiaManual.vue' import FormDiaProduct from './components/formDiaProduct.vue' // è·åå½åæ¥æ @@ -198,7 +139,6 @@ const selectedRows = ref([]) const tableLoading = ref(false) const formDia = ref() const formDiaManual = ref() const formDiaProduct = ref() const activeTab = ref('production') // å½åæ¿æ´»ç tab @@ -213,7 +153,7 @@ supplierName: '', customerName: '', productCategory:'', timeStr: getCurrentDate(), timeStr: '', }, }) const { searchForm } = toRefs(data) @@ -245,8 +185,6 @@ // æ ¹æ®ä¸åç tab ç±»åè°ç¨ä¸åçæ¥å£ const apiCall = activeTab.value === 'production' ? getStockInPageByProduction(params) : activeTab.value === 'manual' ? getInPageByCustom(params) : getStockInPage(params) apiCall.then(res => { @@ -293,9 +231,7 @@ const openForm = async (type, row, tabType) => { const currentTab = tabType || activeTab.value await nextTick(() => { if (currentTab === 'manual') { formDiaManual.value?.openDialog(type, row) } else if (currentTab === 'production') { if (currentTab === 'production') { formDiaProduct.value?.openDialog(type, row) }else { formDia.value?.openDialog(type, row) @@ -326,8 +262,6 @@ let exportUrl = "/stockin/export" if (activeTab.value === 'production') { exportUrl = "/stockin/exportOne" } else if (activeTab.value === 'manual') { exportUrl = "/stockin/exportTwo" } proxy.download(exportUrl, {}, 'å ¥åºå°è´¦.xlsx') }).catch(() => { @@ -355,14 +289,10 @@ // æåå é¤ï¼typeä¼ 2 deleteApi = delStockIn deleteParams = { ids, type: 2 } } else if (activeTab.value === 'purchase') { } else { // åæå é¤ï¼typeä¼ 1 deleteApi = delStockIn deleteParams = { ids, type: 1 } } else { // ææå ¥åº deleteApi = delStockInCustom deleteParams = { ids } } deleteApi(deleteParams).then(() => { src/views/inventoryManagement/stockManagement/components/FormDiaManual.vue
ÎļþÒÑɾ³ý src/views/inventoryManagement/stockManagement/index.vue
@@ -103,61 +103,6 @@ :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> </el-tab-pane> <el-tab-pane label="ææåºå" name="manual"> <div class="search_form"> <div> <span class="search_title ml10">å ¥åºæ¥æï¼</span> <el-date-picker v-model="searchForm.timeStr" type="date" placeholder="è¯·éæ©æ¥æ" value-format="YYYY-MM-DD" format="YYYY-MM-DD" clearable @change="handleQuery" /> <span class="search_title ml10">产å大类ï¼</span> <el-input v-model="searchForm.productCategory" style="width: 240px" placeholder="请è¾å ¥" clearable /> <el-button type="primary" @click="handleQuery" style="margin-left: 10px">æç´¢</el-button> </div> <div> <el-button @click="handleOut">导åº</el-button> <!-- <el-button type="danger" plain @click="handleDelete">å é¤</el-button>--> </div> </div> <div class="table_list"> <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange" :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%" :row-class-name="tableRowClassName" :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)"> <el-table-column align="center" type="selection" width="55" /> <el-table-column align="center" label="åºå·" type="index" width="60" /> <el-table-column label="å ¥åºæ¥æ" prop="inboundDate" width="100" show-overflow-tooltip /> <el-table-column label="æ¹æ¬¡å·" prop="code" width="130" show-overflow-tooltip /> <el-table-column label="产å大类" prop="productCategory" show-overflow-tooltip /> <el-table-column label="è§æ ¼åå·" prop="specificationModel" show-overflow-tooltip /> <el-table-column label="åä½" prop="unit" width="80" show-overflow-tooltip /> <el-table-column label="ç©åç±»å" prop="itemType" width="120" show-overflow-tooltip /> <el-table-column label="å·²åºåºæ°é" prop="totalInboundNum" width="100" show-overflow-tooltip /> <el-table-column label="å©ä½åºå" prop="inboundNum0" width="100" show-overflow-tooltip /> <el-table-column label="åä»·(å )" prop="taxInclusiveUnitPrice" width="150"></el-table-column> <el-table-column label="æ»ä»·(å )" prop="taxInclusiveTotalPrice" width="150"></el-table-column> <el-table-column fixed="right" label="æä½" width="100" align="center"> <template #default="scope"> <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">ç¼è¾</el-button> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> </el-tab-pane> </el-tabs> <!-- æååºåå¼¹æ¡ --> @@ -177,15 +122,6 @@ @submit="submitForm" @close="closeDia" /> <!-- ææåºåå¼¹æ¡ --> <FormDiaManual v-model:dialogFormVisible="manualDialogVisible" :operationType="operationType" :formData="form" @submit="submitForm" @close="closeDia" /> </div> </template> @@ -199,17 +135,15 @@ import { getStockManagePage, getStockManagePageByProduction, getStockManagePageByCustom, delStockManage, } from "@/api/inventoryManagement/stockManage.js"; import { updateManagement, updateManagementByCustom, updateStockIn } from "@/api/inventoryManagement/stockIn.js"; // å¯¼å ¥ä¸ä¸ªç¬ç«çå¼¹æ¡ç»ä»¶ // å¯¼å ¥ä¸¤ä¸ªç¬ç«çå¼¹æ¡ç»ä»¶ import FormDiaProduction from './components/FormDiaProduction.vue' import FormDiaPurchase from './components/FormDiaPurchase.vue' import FormDiaManual from './components/FormDiaManual.vue' const userStore = useUserStore() const { proxy } = getCurrentInstance() @@ -232,17 +166,16 @@ const operationType = ref('') const activeTab = ref('production') // ä¸ä¸ªç¬ç«çå¼¹æ¡æ¾ç¤ºç¶æ // å¼¹æ¡æ¾ç¤ºç¶æ const productionDialogVisible = ref(false) const purchaseDialogVisible = ref(false) const manualDialogVisible = ref(false) const data = reactive({ searchForm: { // supplierName: '', productCategory:'', customerName: '', timeStr: getCurrentDate(), timeStr: '', }, form: { supplierId: null, @@ -314,14 +247,9 @@ const getList = () => { tableLoading.value = true const params = buildQueryParams() let apiCall if (activeTab.value === 'production') { apiCall = getStockManagePageByProduction(params) } else if (activeTab.value === 'manual') { apiCall = getStockManagePageByCustom(params) } else { apiCall = getStockManagePage(params) } const apiCall = activeTab.value === 'production' ? getStockManagePageByProduction(params) : getStockManagePage(params) apiCall.then(res => { tableLoading.value = false tableData.value = res.data.records @@ -340,10 +268,6 @@ item.totalPrice = (unitPrice * remainingStock).toFixed(2) } else if (activeTab.value === 'purchase') { // åæåºåï¼å«ç¨æ»ä»· = å«ç¨åä»· à å©ä½åºå const taxInclusiveUnitPrice = parseFloat(item.taxInclusiveUnitPrice) || 0 item.taxInclusiveTotalPrice = (taxInclusiveUnitPrice * remainingStock).toFixed(2) } else if (activeTab.value === 'manual') { // ææåºåï¼å«ç¨æ»ä»· = å«ç¨åä»· à å©ä½åºå const taxInclusiveUnitPrice = parseFloat(item.taxInclusiveUnitPrice) || 0 item.taxInclusiveTotalPrice = (taxInclusiveUnitPrice * remainingStock).toFixed(2) } @@ -421,8 +345,6 @@ productionDialogVisible.value = true } else if (activeTab.value === 'purchase') { purchaseDialogVisible.value = true } else if (activeTab.value === 'manual') { manualDialogVisible.value = true } } @@ -440,9 +362,6 @@ } else if (activeTab.value === 'purchase') { // åæåºåï¼ç§»é¤å«ç¨æ»ä»·å段 delete submitData.taxInclusiveTotalPrice } else if (activeTab.value === 'manual') { // ææåºåï¼ç§»é¤å«ç¨æ»ä»·å段 delete submitData.taxInclusiveTotalPrice } // ç§»é¤å ¶ä»å¯è½çæ»ä»·å段 @@ -455,9 +374,6 @@ if (activeTab.value === 'production') { // æååºåä½¿ç¨ updateManagement æ¥å£ apiCall = updateManagement(submitData) } else if (activeTab.value === 'manual') { // ææåºåä½¿ç¨ updateManagementByCustom æ¥å£ apiCall = updateManagementByCustom(submitData) } else { // åæåºåä½¿ç¨ updateManagementByCustom æ¥å£ apiCall = updateManagementByCustom(submitData) @@ -501,7 +417,6 @@ proxy.resetForm("formRef") productionDialogVisible.value = false purchaseDialogVisible.value = false manualDialogVisible.value = false } // å¯¼åº @@ -519,8 +434,6 @@ let exportUrl = "/stockin/exportCopy" if (activeTab.value === 'production') { exportUrl = "/stockin/exportCopyOne" } else if (activeTab.value === 'manual') { exportUrl = "/stockin/exportCopyTwo" } proxy.download(exportUrl, exportParams, 'åºåä¿¡æ¯.xlsx') }).catch(() => {