diff --git a/src/api/home/salary.js b/src/api/home/salary.js index f821060..e05e1b8 100644 --- a/src/api/home/salary.js +++ b/src/api/home/salary.js @@ -2,7 +2,7 @@ import request from '@/config/axios' // 查询工资条 export const getSalaryPage = async (params) => { - return await request.get({ url: '/admin-api/oa/user-salary-grant/page', params }) + return await request.get({ url: '/admin-api/oa/user-salary-grant/periodPage', params }) } // 生成工资条 @@ -15,8 +15,8 @@ export const createSalarySlip = async (data) => { } // 导入工资条 -export const importSalarySlip = async (params) => { - return await request.get({ url: '/admin-api/oa/user-salary-grant/import', params }) +export const importSalarySlip = async (data) => { + return await request.post({ url: '/admin-api/oa/user-salary-grant/import', data }) } // 修改工资条 @@ -31,15 +31,21 @@ export const sealupSalarySlip = async (data) => { // 获取考勤模板链接 export const getLinkAttendance = async () => { - return await request.get({ url: '/admin-api/oa/user-attendance/get-import-template' }) + return await request.download({ + url: '/admin-api/oa/user-attendance/get-import-template' + }) } // 获取奖金模板 export const getLinkReward = async () => { - return await request.get({ url: '/admin-api/oa/user-salary-grant/get-import-template' }) + return await request.download({ + url: '/admin-api/oa/user-salary-grant/get-import-template' + }) } // 获取历史工资条模板 export const getLinkHistorySalary = async () => { - return await request.get({ url: '/admin-api/oa/user-salary-grant/get-import-template/history' }) + return await request.download({ + url: '/admin-api/oa/user-salary-grant/get-import-template/history' + }) } diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts index f3d7a71..857f34a 100644 --- a/src/config/axios/service.ts +++ b/src/config/axios/service.ts @@ -79,7 +79,7 @@ service.interceptors.request.use( config.data = qs.stringify(data) } // get参数编码 - if (config.method?.toUpperCase() === 'GET' && params) { + if (config.method?.toUpperCase() === 'GET' && Object.keys(params).length > 0) { config.params = {} const paramsStr = qs.stringify(params, { allowDots: true }) if (paramsStr) { diff --git a/src/utils/download.ts b/src/utils/download.ts index a124af9..11ee757 100644 --- a/src/utils/download.ts +++ b/src/utils/download.ts @@ -1,6 +1,7 @@ const download0 = (data: Blob, fileName: string, mineType: string) => { // 创建 blob const blob = new Blob([data], { type: mineType }) + // 创建 href 超链接,点击进行下载 window.URL = window.URL || window.webkitURL const href = URL.createObjectURL(blob) @@ -15,7 +16,11 @@ const download0 = (data: Blob, fileName: string, mineType: string) => { const download = { // 下载 Excel 方法 excel: (data: Blob, fileName: string) => { - download0(data, fileName, 'application/vnd.ms-excel') + download0( + data, + fileName, + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8' + ) }, // 下载 Word 方法 word: (data: Blob, fileName: string) => { @@ -36,19 +41,3 @@ const download = { } export default download - -export function downloadFile(url: string, fileName: string) { - const link = document.createElement('a') - // 这里是将url转成blob地址, - fetch(url) - .then((res) => res.blob()) - .then((blob) => { - // 将链接地址字符内容转变成blob地址 - link.href = URL.createObjectURL(blob) - link.download = fileName - document.body.appendChild(link) - link.click() - URL.revokeObjectURL(link.href) //清除引用 - document.body.removeChild(link) - }) -} diff --git a/src/views/Home/Salary/Comp/DialogCreateSalary.vue b/src/views/Home/Salary/Comp/DialogCreateSalary.vue index 715c199..23bf059 100644 --- a/src/views/Home/Salary/Comp/DialogCreateSalary.vue +++ b/src/views/Home/Salary/Comp/DialogCreateSalary.vue @@ -16,7 +16,7 @@ - +
import * as SalaryApi from '@/api/home/salary.js' -import { downloadFile } from '@/utils/download' +import download from '@/utils/download' const message = useMessage() // 消息弹窗 const dialogVisible = ref(false) @@ -104,13 +104,10 @@ async function handleSave() { if (!formRef.value) return const valid = await formRef.value.validate() if (!valid) return - if (!fd.value.get('attendanceFile')) { - message.info('请导入考勤表!') - return - } // 提交请求 formLoading.value = true try { + fd.value.delete('period') fd.value.append('period', formData.value.period) await SalaryApi.createSalarySlip(fd.value) message.success('生成成功') @@ -126,10 +123,11 @@ async function downloadTemplateFile(type) { let data if (type == 1) { data = await SalaryApi.getLinkReward() - downloadFile(data, '奖金模板.xls') + console.log(data) + download.excel(data, '奖金模板.xls') } else if (type == 2) { data = await SalaryApi.getLinkAttendance() - downloadFile(data, '考勤模板.xls') + download.excel(data, '考勤模板.xls') } } diff --git a/src/views/Home/Salary/Comp/DialogSalaryImport.vue b/src/views/Home/Salary/Comp/DialogSalaryImport.vue index d1c208b..9c65481 100644 --- a/src/views/Home/Salary/Comp/DialogSalaryImport.vue +++ b/src/views/Home/Salary/Comp/DialogSalaryImport.vue @@ -1,6 +1,6 @@