mirror of
https://gitee.com/elegant_wings/dbd-meeting-html.git
synced 2025-06-21 06:49:37 +08:00
20250523-修复导出功能-新增弹窗(存在一个小问题:会情表选择一天时正常,多天,标题以第一天为准,月份汇总正常)
This commit is contained in:
parent
38faff747e
commit
7c05e4d2b1
@ -147,7 +147,7 @@ export function addStaff(parameter) {
|
|||||||
export function expMRByDate(parameter){
|
export function expMRByDate(parameter){
|
||||||
return axios({
|
return axios({
|
||||||
// url: '/api/roomContent/cancelOrder',
|
// url: '/api/roomContent/cancelOrder',
|
||||||
url: api.meetingReservation + '/io/exportDayMR',
|
url: '/admin/mr/io/exportDayMR',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: parameter,
|
params: parameter,
|
||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
@ -157,7 +157,7 @@ export function expMRByDate(parameter){
|
|||||||
export function expMRByMonth(parameter){
|
export function expMRByMonth(parameter){
|
||||||
return axios({
|
return axios({
|
||||||
// url: '/api/roomContent/cancelOrder',
|
// url: '/api/roomContent/cancelOrder',
|
||||||
url: api.meetingReservation + '/io/exportMonthMR',
|
url: '/admin/mr/io/exportMonthMR',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: parameter,
|
params: parameter,
|
||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
|
@ -94,9 +94,9 @@
|
|||||||
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
|
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
|
||||||
<a-button style='margin-left: 8px' @click='reset'>重置</a-button>
|
<a-button style='margin-left: 8px' @click='reset'>重置</a-button>
|
||||||
<a-button v-if='isAdmin' type='danger' style='margin-left: 8px'
|
<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'
|
<a-button v-if='isAdmin' type='danger' style='margin-left: 8px'
|
||||||
@click='exportMonthOrder'>导出月度汇总</a-button>
|
@click='showExportMonthModal = true'>导出月度汇总</a-button>
|
||||||
</span>
|
</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
@ -190,6 +190,48 @@
|
|||||||
:auto-size='{ minRows: 3, maxRows: 5 }'
|
:auto-size='{ minRows: 3, maxRows: 5 }'
|
||||||
/>
|
/>
|
||||||
</a-modal>
|
</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>
|
</a-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -401,7 +443,18 @@ export default {
|
|||||||
rejectReason: '',
|
rejectReason: '',
|
||||||
rejectId: '',
|
rejectId: '',
|
||||||
roomList: [],
|
roomList: [],
|
||||||
isAdmin: checkPermission('meeting:admin')
|
isAdmin: checkPermission('meeting:admin'),
|
||||||
|
|
||||||
|
// 导出会议日程弹窗
|
||||||
|
showExportDayModal: false,
|
||||||
|
exportDayDate: null,
|
||||||
|
exportDayTitle: '',
|
||||||
|
exportDayUserOrg: '',
|
||||||
|
exportDayStatus: '',
|
||||||
|
|
||||||
|
// 导出月度汇总弹窗
|
||||||
|
showExportMonthModal: false,
|
||||||
|
exportMonthDate: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
filters: {},
|
filters: {},
|
||||||
@ -447,13 +500,13 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
reset() {
|
reset() {
|
||||||
this.queryParam = {
|
this.queryParam = {
|
||||||
status: '',
|
status: '',
|
||||||
sort: '',
|
sort: '',
|
||||||
name: '',
|
name: '',
|
||||||
startDate: '',
|
startDate: '',
|
||||||
endDate: '',
|
endDate: '',
|
||||||
filterDate: ''
|
filterDate: ''
|
||||||
}
|
}
|
||||||
this.queryParam.chooseDate = null
|
this.queryParam.chooseDate = null
|
||||||
this.$refs.table.refresh(true)
|
this.$refs.table.refresh(true)
|
||||||
@ -603,65 +656,120 @@ export default {
|
|||||||
staff(id) {
|
staff(id) {
|
||||||
this.$refs.staffModal.add(id)
|
this.$refs.staffModal.add(id)
|
||||||
},
|
},
|
||||||
// 导出预约列表
|
// 处理导出会议日程
|
||||||
exportOrderList() {
|
handleExportDay() {
|
||||||
let chooseDate = this.queryParam.chooseDate
|
if (!this.exportDayDate || this.exportDayDate.length !== 2) {
|
||||||
let filterDate = ''
|
this.$message.error('请选择日期范围')
|
||||||
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('请选择会议预约时间')
|
|
||||||
return
|
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({
|
expMRByDate({
|
||||||
'filterDate': filterDate,
|
'filterDate': '',
|
||||||
'startDate': startDate,
|
'startDate': startDate,
|
||||||
'endDate': endDate,
|
'endDate': endDate,
|
||||||
'userOrg': this.queryParam.userOrg,
|
'userOrg': this.exportDayUserOrg,
|
||||||
'title': this.queryParam.title,
|
'title': this.exportDayTitle,
|
||||||
'status': this.queryParam.status
|
'status': this.exportDayStatus,
|
||||||
|
'_t': timestamp
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
let fileName = ''
|
this.$message.success({ content: '导出成功', key: 'exportLoading' })
|
||||||
if (startDate && endDate) {
|
const fileName = startDate + '至' + endDate + '会议室预约记录'
|
||||||
fileName = startDate + '至' + endDate + '会议室预约记录'
|
|
||||||
} else {
|
|
||||||
fileName = filterDate + '会议室预约记录'
|
|
||||||
}
|
|
||||||
this.exportExcel(fileName, res)
|
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 = ''
|
handleExportMonth() {
|
||||||
let startMonth = ''
|
if (!this.exportMonthDate) {
|
||||||
let endMonth = ''
|
this.$message.error('请选择月份')
|
||||||
|
|
||||||
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('请选择会议预约时间')
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const month = this.exportMonthDate.format('YYYY-MM')
|
||||||
|
|
||||||
|
// 显示加载提示
|
||||||
|
this.$message.loading({ content: '正在导出数据,请稍候...', key: 'exportLoading', duration: 0 })
|
||||||
|
|
||||||
|
// 添加随机数防止缓存
|
||||||
|
const timestamp = new Date().getTime()
|
||||||
|
|
||||||
expMRByMonth({
|
expMRByMonth({
|
||||||
'month': filterDate
|
'month': month,
|
||||||
|
'_t': timestamp
|
||||||
}).then(res => {
|
}).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) {
|
exportExcel(filename, res) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user