mirror of
https://gitee.com/elegant_wings/dbd-meeting-html.git
synced 2025-06-21 04:29:36 +08:00
20250523-修复导出功能-新增弹窗(存在一个小问题:会情表选择一天时正常,多天,标题以第一天为准,月份汇总正常)
This commit is contained in:
parent
38faff747e
commit
7c05e4d2b1
@ -147,7 +147,7 @@ export function addStaff(parameter) {
|
||||
export function expMRByDate(parameter){
|
||||
return axios({
|
||||
// url: '/api/roomContent/cancelOrder',
|
||||
url: api.meetingReservation + '/io/exportDayMR',
|
||||
url: '/admin/mr/io/exportDayMR',
|
||||
method: 'post',
|
||||
params: parameter,
|
||||
responseType: 'blob'
|
||||
@ -157,7 +157,7 @@ export function expMRByDate(parameter){
|
||||
export function expMRByMonth(parameter){
|
||||
return axios({
|
||||
// url: '/api/roomContent/cancelOrder',
|
||||
url: api.meetingReservation + '/io/exportMonthMR',
|
||||
url: '/admin/mr/io/exportMonthMR',
|
||||
method: 'post',
|
||||
params: parameter,
|
||||
responseType: 'blob'
|
||||
|
@ -94,9 +94,9 @@
|
||||
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
|
||||
<a-button style='margin-left: 8px' @click='reset'>重置</a-button>
|
||||
<a-button v-if='isAdmin' type='danger' style='margin-left: 8px'
|
||||
@click='exportOrderList'>导出会议日程</a-button>
|
||||
@click='showExportDayModal = true'>导出会议日程</a-button>
|
||||
<a-button v-if='isAdmin' type='danger' style='margin-left: 8px'
|
||||
@click='exportMonthOrder'>导出月度汇总</a-button>
|
||||
@click='showExportMonthModal = true'>导出月度汇总</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@ -190,6 +190,48 @@
|
||||
:auto-size='{ minRows: 3, maxRows: 5 }'
|
||||
/>
|
||||
</a-modal>
|
||||
|
||||
<!-- 导出会议日程弹窗 -->
|
||||
<a-modal
|
||||
title='导出会议日程'
|
||||
:visible='showExportDayModal'
|
||||
@ok='handleExportDay'
|
||||
@cancel='showExportDayModal = false'
|
||||
>
|
||||
<a-form-item label='选择日期范围'>
|
||||
<a-range-picker v-model='exportDayDate' style='width: 100%' />
|
||||
</a-form-item>
|
||||
<a-form-item label='会议名称'>
|
||||
<a-input v-model='exportDayTitle' placeholder='可选,输入会议名称进行筛选' />
|
||||
</a-form-item>
|
||||
<a-form-item label='预约单位'>
|
||||
<a-input v-model='exportDayUserOrg' placeholder='可选,输入预约单位进行筛选' />
|
||||
</a-form-item>
|
||||
<a-form-item label='预约状态'>
|
||||
<a-select v-model='exportDayStatus'>
|
||||
<a-select-option value=''>全部预约</a-select-option>
|
||||
<a-select-option value='5'>待审核</a-select-option>
|
||||
<a-select-option value='7'>待开始</a-select-option>
|
||||
<a-select-option value='11'>已结束</a-select-option>
|
||||
<a-select-option value='1'>已取消</a-select-option>
|
||||
<a-select-option value='3'>已驳回</a-select-option>
|
||||
<a-select-option value='4'>占用</a-select-option>
|
||||
<a-select-option value='9'>进行中</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-modal>
|
||||
|
||||
<!-- 导出月度汇总弹窗 -->
|
||||
<a-modal
|
||||
title='导出月度汇总'
|
||||
:visible='showExportMonthModal'
|
||||
@ok='handleExportMonth'
|
||||
@cancel='showExportMonthModal = false'
|
||||
>
|
||||
<a-form-item label='选择月份'>
|
||||
<a-month-picker v-model='exportMonthDate' style='width: 100%' placeholder='请选择月份' />
|
||||
</a-form-item>
|
||||
</a-modal>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
@ -401,7 +443,18 @@ export default {
|
||||
rejectReason: '',
|
||||
rejectId: '',
|
||||
roomList: [],
|
||||
isAdmin: checkPermission('meeting:admin')
|
||||
isAdmin: checkPermission('meeting:admin'),
|
||||
|
||||
// 导出会议日程弹窗
|
||||
showExportDayModal: false,
|
||||
exportDayDate: null,
|
||||
exportDayTitle: '',
|
||||
exportDayUserOrg: '',
|
||||
exportDayStatus: '',
|
||||
|
||||
// 导出月度汇总弹窗
|
||||
showExportMonthModal: false,
|
||||
exportMonthDate: null,
|
||||
}
|
||||
},
|
||||
filters: {},
|
||||
@ -447,13 +500,13 @@ export default {
|
||||
}
|
||||
},
|
||||
reset() {
|
||||
this.queryParam = {
|
||||
status: '',
|
||||
sort: '',
|
||||
this.queryParam = {
|
||||
status: '',
|
||||
sort: '',
|
||||
name: '',
|
||||
startDate: '',
|
||||
endDate: '',
|
||||
filterDate: ''
|
||||
startDate: '',
|
||||
endDate: '',
|
||||
filterDate: ''
|
||||
}
|
||||
this.queryParam.chooseDate = null
|
||||
this.$refs.table.refresh(true)
|
||||
@ -603,65 +656,120 @@ export default {
|
||||
staff(id) {
|
||||
this.$refs.staffModal.add(id)
|
||||
},
|
||||
// 导出预约列表
|
||||
exportOrderList() {
|
||||
let chooseDate = this.queryParam.chooseDate
|
||||
let filterDate = ''
|
||||
let startDate = ''
|
||||
let endDate = ''
|
||||
|
||||
if (chooseDate && chooseDate.length === 2) {
|
||||
startDate = chooseDate[0].format('YYYY-MM-DD')
|
||||
endDate = chooseDate[1].format('YYYY-MM-DD')
|
||||
} else if (chooseDate && chooseDate.length === 1) {
|
||||
filterDate = chooseDate[0].format('YYYY-MM-DD')
|
||||
} else {
|
||||
this.$message.error('请选择会议预约时间')
|
||||
// 处理导出会议日程
|
||||
handleExportDay() {
|
||||
if (!this.exportDayDate || this.exportDayDate.length !== 2) {
|
||||
this.$message.error('请选择日期范围')
|
||||
return
|
||||
}
|
||||
|
||||
const startDate = this.exportDayDate[0].format('YYYY-MM-DD')
|
||||
const endDate = this.exportDayDate[1].format('YYYY-MM-DD')
|
||||
|
||||
// 显示加载提示
|
||||
this.$message.loading({ content: '正在导出数据,请稍候...', key: 'exportLoading', duration: 0 })
|
||||
|
||||
// 添加随机数防止缓存
|
||||
const timestamp = new Date().getTime()
|
||||
|
||||
expMRByDate({
|
||||
'filterDate': filterDate,
|
||||
'filterDate': '',
|
||||
'startDate': startDate,
|
||||
'endDate': endDate,
|
||||
'userOrg': this.queryParam.userOrg,
|
||||
'title': this.queryParam.title,
|
||||
'status': this.queryParam.status
|
||||
'userOrg': this.exportDayUserOrg,
|
||||
'title': this.exportDayTitle,
|
||||
'status': this.exportDayStatus,
|
||||
'_t': timestamp
|
||||
}).then(res => {
|
||||
let fileName = ''
|
||||
if (startDate && endDate) {
|
||||
fileName = startDate + '至' + endDate + '会议室预约记录'
|
||||
} else {
|
||||
fileName = filterDate + '会议室预约记录'
|
||||
}
|
||||
this.$message.success({ content: '导出成功', key: 'exportLoading' })
|
||||
const fileName = startDate + '至' + endDate + '会议室预约记录'
|
||||
this.exportExcel(fileName, res)
|
||||
this.showExportDayModal = false
|
||||
}).catch(error => {
|
||||
console.error('导出失败:', error)
|
||||
let errorMsg = '导出失败'
|
||||
if (error.response && error.response.data) {
|
||||
try {
|
||||
if (typeof error.response.data === 'string') {
|
||||
errorMsg = error.response.data
|
||||
} else if (error.response.data instanceof Blob) {
|
||||
// 如果响应是Blob,尝试读取为文本
|
||||
const reader = new FileReader()
|
||||
reader.onload = () => {
|
||||
try {
|
||||
const text = reader.result
|
||||
this.$message.error({ content: text || '导出失败', key: 'exportLoading' })
|
||||
} catch (e) {
|
||||
this.$message.error({ content: '导出失败: ' + error.message, key: 'exportLoading' })
|
||||
}
|
||||
}
|
||||
reader.readAsText(error.response.data)
|
||||
return
|
||||
} else {
|
||||
errorMsg = error.response.data.msg || '导出失败'
|
||||
}
|
||||
} catch (e) {
|
||||
errorMsg = '导出失败: ' + error.message
|
||||
}
|
||||
} else {
|
||||
errorMsg = '导出失败: ' + error.message
|
||||
}
|
||||
this.$message.error({ content: errorMsg, key: 'exportLoading' })
|
||||
})
|
||||
},
|
||||
exportMonthOrder() {
|
||||
let chooseDate = this.queryParam.chooseDate
|
||||
let filterDate = ''
|
||||
let startMonth = ''
|
||||
let endMonth = ''
|
||||
|
||||
if (chooseDate && chooseDate.length === 2) {
|
||||
startMonth = chooseDate[0].format('YYYY-MM')
|
||||
endMonth = chooseDate[1].format('YYYY-MM')
|
||||
if (startMonth !== endMonth) {
|
||||
this.$message.error('月度汇总请选择同一个月的日期范围')
|
||||
return
|
||||
}
|
||||
filterDate = startMonth
|
||||
} else if (chooseDate && chooseDate.length === 1) {
|
||||
filterDate = chooseDate[0].format('YYYY-MM')
|
||||
} else {
|
||||
this.$message.error('请选择会议预约时间')
|
||||
|
||||
// 处理导出月度汇总
|
||||
handleExportMonth() {
|
||||
if (!this.exportMonthDate) {
|
||||
this.$message.error('请选择月份')
|
||||
return
|
||||
}
|
||||
|
||||
const month = this.exportMonthDate.format('YYYY-MM')
|
||||
|
||||
// 显示加载提示
|
||||
this.$message.loading({ content: '正在导出数据,请稍候...', key: 'exportLoading', duration: 0 })
|
||||
|
||||
// 添加随机数防止缓存
|
||||
const timestamp = new Date().getTime()
|
||||
|
||||
expMRByMonth({
|
||||
'month': filterDate
|
||||
'month': month,
|
||||
'_t': timestamp
|
||||
}).then(res => {
|
||||
this.exportExcel(filterDate + '月度会议汇总', res)
|
||||
this.$message.success({ content: '导出成功', key: 'exportLoading' })
|
||||
this.exportExcel(month + '月度会议汇总', res)
|
||||
this.showExportMonthModal = false
|
||||
}).catch(error => {
|
||||
console.error('导出失败:', error)
|
||||
let errorMsg = '导出失败'
|
||||
if (error.response && error.response.data) {
|
||||
try {
|
||||
if (typeof error.response.data === 'string') {
|
||||
errorMsg = error.response.data
|
||||
} else if (error.response.data instanceof Blob) {
|
||||
// 如果响应是Blob,尝试读取为文本
|
||||
const reader = new FileReader()
|
||||
reader.onload = () => {
|
||||
try {
|
||||
const text = reader.result
|
||||
this.$message.error({ content: text || '导出失败', key: 'exportLoading' })
|
||||
} catch (e) {
|
||||
this.$message.error({ content: '导出失败: ' + error.message, key: 'exportLoading' })
|
||||
}
|
||||
}
|
||||
reader.readAsText(error.response.data)
|
||||
return
|
||||
} else {
|
||||
errorMsg = error.response.data.msg || '导出失败'
|
||||
}
|
||||
} catch (e) {
|
||||
errorMsg = '导出失败: ' + error.message
|
||||
}
|
||||
} else {
|
||||
errorMsg = '导出失败: ' + error.message
|
||||
}
|
||||
this.$message.error({ content: errorMsg, key: 'exportLoading' })
|
||||
})
|
||||
},
|
||||
exportExcel(filename, res) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user