Browse Source

价格表

master
常熟吴彦祖 3 weeks ago
parent
commit
6a2651b080
  1. 15
      src/api/supplier/priceSheetReport.js
  2. 31
      src/views/modules/supplier/priceSheetReport.vue

15
src/api/supplier/priceSheetReport.js

@ -1,4 +1,4 @@
import { createAPI } from '@/utils/httpRequest.js'
import http, { createAPI } from '@/utils/httpRequest.js'
export const getPriceListPage = data => createAPI('/supplier/priceSheetReport/priceListPage', 'post', data)
@ -6,9 +6,10 @@ export const getHandlingChargePage = data => createAPI('/supplier/priceSheetRepo
export const getPaymentTermsPage = data => createAPI('/supplier/priceSheetReport/paymentTermsPage', 'post', data)
export const exportPriceSheetReport = data => createAPI(
'/supplier/priceSheetReport/export',
'post',
data,
{ responseType: 'blob', timeout: 600000 }
)
export const exportPriceSheetReport = data => http({
url: http.adornUrl('/supplier/priceSheetReport/export'),
method: 'post',
data: http.adornData(data),
responseType: 'blob',
timeout: 600000
})

31
src/views/modules/supplier/priceSheetReport.vue

@ -320,7 +320,23 @@ export default {
},
handleExport () {
this.exportLoading = true
exportPriceSheetReport(this.buildQuery()).then(response => {
exportPriceSheetReport(this.buildQuery()).then(async response => {
const contentType = String(
(response.headers && response.headers['content-type']) || ''
).toLowerCase()
if (contentType.includes('application/json') || contentType.includes('text/plain') || contentType.includes('text/html')) {
const errorText = await this.readBlobAsText(response.data)
let errorMessage = '导出失败'
try {
const errorData = JSON.parse(errorText)
errorMessage = errorData.msg || errorData.message || errorMessage
} catch (error) {
if (errorText) errorMessage = errorText
}
this.$message.error(errorMessage)
return
}
const blob = new Blob([response.data], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
})
@ -332,6 +348,7 @@ export default {
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
this.$message.success('导出成功')
}).catch(() => {
this.$message.error('导出失败')
}).finally(() => {
@ -343,6 +360,18 @@ export default {
},
formatDollarCell (row, column, value) {
return value === null || value === undefined || value === '' ? '' : `$${value}`
},
readBlobAsText (blob) {
return new Promise(resolve => {
if (!blob) {
resolve('')
return
}
const reader = new FileReader()
reader.onload = () => resolve(String(reader.result || ''))
reader.onerror = () => resolve('')
reader.readAsText(blob)
})
}
}
}

Loading…
Cancel
Save