结算全部打印,未结算报表zip导出,盘点入库编号设置

This commit is contained in:
hongchao 2025-11-06 17:22:45 +08:00
parent 532a1395af
commit 40ff5283d1
5 changed files with 100 additions and 52 deletions

View File

@ -228,27 +228,49 @@ export function downloadJson(url, params, filename, config) {
// 通用下载方法
export function downloadZip(url, params, filename, config) {
downloadLoadingInstance = Loading.service({
text: '正在下载数据,请稍候',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)',
})
return service
.post(url, params, {
transformRequest: [
(params) => {
return params
},
],
headers: { 'Content-Type': 'application/json',encryptResponse: false },
responseType: 'blob',
...config,
const backgroundMode = config && config.background === true
const showLoading = !(config && config.showLoading === false) && !backgroundMode
const finalAxiosConfig = {
transformRequest: [
(params) => {
return params
},
],
headers: { 'Content-Type': 'application/json', encryptResponse: false },
responseType: 'blob',
// if background mode and no explicit timeout, extend to 10 minutes
timeout: backgroundMode && !(config && typeof config.timeout === 'number') ? 600000 : undefined,
...config,
}
if (showLoading) {
downloadLoadingInstance = Loading.service({
text: '正在下载数据,请稍候',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)',
})
} else if (backgroundMode) {
Notification.info({
title: '已开始生成',
message: '批量导出任务已在后台执行,准备就绪后将自动下载。',
duration: 4000,
})
}
return service
.post(url, params, finalAxiosConfig)
.then(async (data) => {
const isBlob = blobValidate(data)
if (isBlob) {
const blob = new Blob([data])
saveAs(blob, filename)
if (backgroundMode) {
Notification.success({
title: '导出完成',
message: 'ZIP 文件已准备好,正在开始下载。',
duration: 3000,
})
}
} else {
const resText = await data.text()
const rspObj = JSON.parse(resText)
@ -256,12 +278,20 @@ export function downloadZip(url, params, filename, config) {
errorCode[rspObj.code] || rspObj.msg || errorCode['default']
Message.error(errMsg)
}
downloadLoadingInstance.close()
if (showLoading && downloadLoadingInstance) {
downloadLoadingInstance.close()
}
})
.catch((r) => {
console.error(r)
Message.error('下载文件出现错误,请联系管理员!')
downloadLoadingInstance.close()
if (r && r.message && r.message.includes('timeout')) {
Message.error('导出超时,请减少选择数量或稍后重试')
} else {
Message.error('下载文件出现错误,请联系管理员!')
}
if (showLoading && downloadLoadingInstance) {
downloadLoadingInstance.close()
}
})
}
export default service

View File

@ -145,10 +145,10 @@
<table border="1" cellspacing="0" cellpadding="6" class="header-table">
<colgroup>
<col style="width: 60px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 150px;">
<col style="width: 150px;">
<col style="width: 60px;">
<col style="width: 80px;">
<col style="width: 100px;">
<col style="width: 80px;">
<col style="width: 100px;">
<col style="width: 100px;">
@ -178,10 +178,10 @@
<table border="1" cellspacing="0" cellpadding="6" class="data-table">
<colgroup>
<col style="width: 60px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 150px;">
<col style="width: 150px;">
<col style="width: 60px;">
<col style="width: 80px;">
<col style="width: 100px;">
<col style="width: 80px;">
<col style="width: 100px;">
<col style="width: 100px;">
@ -834,7 +834,25 @@ export default {
},
methods: {
handlePrint() {
this.$refs.remarksPrintRef.print()
//
const tableBodies = document.querySelectorAll('.table-body');
tableBodies.forEach(body => {
body.style.maxHeight = 'none';
body.style.overflow = 'visible';
});
//
this.$nextTick(() => {
this.$refs.remarksPrintRef.print();
//
setTimeout(() => {
tableBodies.forEach(body => {
body.style.maxHeight = '400px';
body.style.overflow = 'auto';
});
}, 100);
});
},
// - API
initData() {

View File

@ -807,6 +807,7 @@ export default {
'material/slt_agreement_info/exportUnsettled',
JSON.stringify(param),
`未结算批量明细导出_${new Date().getTime()}.zip`,
{ background: true, showLoading: false, timeout: 600000 }
)
this.$refs.tableRef.clearSelection()

View File

@ -438,7 +438,7 @@ export default {
},
],
phone: [
{ required: false, message: "联系电话不能为空", trigger: "blur" },
{ required: true, message: "联系电话不能为空", trigger: "blur" },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",

View File

@ -991,8 +991,8 @@ export default {
trigger: 'blur',
},
{
pattern: /^[1-9][0-9]*$/,
message: '请输入大于0且不能以0开头的正整数',
pattern: /^[0-9]+[1-9][0-9]*$|^[1-9][0-9]*$|^0+[1-9][0-9]*$/,
message: '请输入有效的数字串不能只输入0',
},
],
putInType: [
@ -1137,22 +1137,25 @@ export default {
} else {
// this.codeForm.num, this.codeTableListthis.codeForm
for (let i = 0; i < this.codeForm.num; i++) {
// :
let suffix = parseInt(this.codeForm.codeSuffixStart) + i
if (suffix > parseInt(this.codeForm.codeSuffixEnd)) {
suffix = parseInt(this.codeForm.codeSuffixEnd)
//
const prefixLength = this.codeForm.codeSuffixStart?.length || 1
//
const originalNum = parseInt(this.codeForm.codeSuffixStart)
const currentNum = originalNum + i
//
let suffix = currentNum.toString().padStart(prefixLength, '0')
//
if (this.codeForm.codeSuffixEnd) {
const endNum = parseInt(this.codeForm.codeSuffixEnd)
if (currentNum > endNum) {
suffix = endNum.toString().padStart(prefixLength, '0')
}
}
suffix = suffix
.toString()
.padStart(
this.codeForm.codeSuffixStart?.length,
'0',
)
// console.log('🚀 ~ fillCodeForm ~ suffix:', suffix);
suffix = isNaN(suffix) ? '' : suffix
const maCode = `${
this.codeForm.codePrefix || ''
}${suffix}`
//
const maCode = `${this.codeForm.codePrefix || ''}${suffix}`
//
const outFacCode = ''
//
@ -1169,7 +1172,7 @@ export default {
// : codeForm.buyPrice
const buyPrice = this.codeForm.buyPrice || 0
this.codeTableList.push({
maCode: this.codeForm.codeSuffixStart * 1 + i,
maCode: maCode,
outFacCode,
maVender,
thisCheckTime,
@ -1198,16 +1201,12 @@ export default {
changeSuffixStart(num) {
if (isNaN(num)) {
this.$message.error('后缀范围请输入数字类型')
this.codeForm.codeSuffixStart =
this.codeForm.codeSuffixStart.replace(/[^\d]/g, '')
}
if (
isNaN(this.codeForm.codeSuffixStart) ||
this.codeForm.codeSuffixStart.includes('.')
) {
this.$message.error('后缀范围请输入整数类型')
this.codeForm.codeSuffixStart = ''
}
//
if (num) {
this.codeForm.codeSuffixStart = num.replace(/[^\d]/g, '')
}
},
changeSuffixEnd() {
if (!this.codeForm.codeSuffixStart) {