导出申请评估记录

This commit is contained in:
zhonghua.li
2026-05-15 14:03:16 +08:00
parent baa24338b7
commit 0106c8373b
2 changed files with 95 additions and 0 deletions

View File

@@ -40,3 +40,13 @@ export function parseAssessmentApplyFromText(data) {
timeout: 120000
})
}
/** 按租户与申请日期时间范围导出申请评估 Excel */
export function exportLbAssessmentApply(params) {
return request({
url: '/lbAssessmentApply/export',
method: 'get',
params,
responseType: 'blob'
})
}

View File

@@ -23,6 +23,7 @@
<el-card class="action-container" shadow="never">
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
<el-button type="success" icon="el-icon-download" :loading="exportLoading" @click="openExportDialog">导出</el-button>
</el-card>
<el-card class="table-container" shadow="never">
@@ -65,6 +66,26 @@
/>
</el-card>
<el-dialog title="导出申请评估" :visible.sync="exportDialogVisible" width="520px" @close="resetExportForm">
<el-form ref="exportFormRef" :model="exportForm" :rules="exportRules" label-width="140px">
<el-form-item label="申请日期" prop="applicationDateRange">
<el-date-picker
v-model="exportForm.applicationDateRange"
type="daterange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
style="width: 100%"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="exportDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="exportLoading" @click="submitExport">确定</el-button>
</div>
</el-dialog>
<el-dialog v-dialog-drag :title="dialogTitle" :visible.sync="dialogVisible" width="760px" @close="resetForm">
<el-form ref="dataForm" :model="form" :rules="formRules" label-width="120px">
<template v-if="!isEdit">
@@ -208,6 +229,7 @@
import {
addLbAssessmentApply,
deleteLbAssessmentApply,
exportLbAssessmentApply,
getLbAssessmentApplyList,
parseAssessmentApplyFromText,
updateLbAssessmentApply
@@ -221,6 +243,8 @@ export default {
loading: false,
submitLoading: false,
parseAiLoading: false,
exportLoading: false,
exportDialogVisible: false,
assessmentApplyText: '',
list: [],
total: 0,
@@ -272,6 +296,12 @@ export default {
formRules: {
applicantName: [{ required: true, message: '请输入申请人', trigger: 'blur' }],
applicantPhone: [{ required: true, message: '请输入申请人电话', trigger: 'blur' }]
},
exportForm: {
applicationDateRange: []
},
exportRules: {
applicationDateRange: [{ required: true, message: '请选择申请日期范围', trigger: 'change' }]
}
}
},
@@ -416,6 +446,61 @@ export default {
this.$refs.dataForm && this.$refs.dataForm.clearValidate()
})
},
openExportDialog() {
this.exportDialogVisible = true
this.$nextTick(() => {
if (this.$refs.exportFormRef) this.$refs.exportFormRef.clearValidate()
})
},
submitExport() {
this.$refs.exportFormRef.validate((valid) => {
if (!valid) return
const tenantId = this.getTenantIdFromBusinessHeaders()
if (!tenantId) {
this.$message.error('未获取到租户ID请先登录或配置业务请求头中的租户')
return
}
const range = this.exportForm.applicationDateRange || []
const startDate = range[0]
const endDate = range[1]
if (!startDate || !endDate) {
this.$message.warning('请选择申请日期范围')
return
}
const applicationDatetimeStart = `${startDate} 00:00:00`
const applicationDatetimeEnd = `${endDate} 23:59:59`
this.exportLoading = true
exportLbAssessmentApply({
tenantId,
applicationDatetimeStart,
applicationDatetimeEnd
})
.then((blob) => {
const safeBlob = blob instanceof Blob ? blob : new Blob([blob], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
})
const url = window.URL.createObjectURL(safeBlob)
const link = document.createElement('a')
link.href = url
link.download = `lbAssessmentApply_${startDate}_${endDate}_${tenantId}.xlsx`
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
this.$message.success('导出成功')
this.exportDialogVisible = false
})
.finally(() => {
this.exportLoading = false
})
})
},
resetExportForm() {
if (this.$refs.exportFormRef) this.$refs.exportFormRef.resetFields()
this.exportForm = {
applicationDateRange: []
}
},
handleEdit(row) {
this.dialogTitle = '编辑评估申请'
this.isEdit = true