diff --git a/src/api/file-upload.ts b/src/api/file-upload.ts index edd2862..d9db1a1 100644 --- a/src/api/file-upload.ts +++ b/src/api/file-upload.ts @@ -2,7 +2,7 @@ import request from "@/utils/request"; export const fileUploadUrl = '/admin/sys-file/upload' -export const handleHttpUpload = (options: any) => { +export function handleHttpUpload(options: any) { let formData = new FormData(); formData.append('file', options.file); formData.append('dir', options.dir) @@ -22,4 +22,26 @@ export const handleHttpUpload = (options: any) => { reject(error) } }) +} + +export function handleHttpUploadUrl(options: any, url: string | undefined) { + let formData = new FormData(); + formData.append('file', options.file); + formData.append('dir', options.dir) + return new Promise((resolve, reject) => { + try { + request({ + url: url, + method: 'post', + headers: { + 'Content-Type': 'multipart/form-data', + }, + data: formData, + }).then((res: any) => { + resolve(res.data) + }); + } catch (error) { + reject(error) + } + }) } \ No newline at end of file diff --git a/src/api/user.ts b/src/api/user.ts index 1ef3adc..edc326a 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -10,6 +10,8 @@ const userPageUrl = '/admin/user/page' const addUserUrl = '/admin/user' +const modifyPwUrl = "/admin/user/modifyPw" + export function getUserInfo() { return new Promise(resolve => { getData(userInfoUrl).then((data: any) => { @@ -46,7 +48,14 @@ export function editPassword(data: any) { export function userPage(data: any) { return new Promise(resolve => { - getData(userPageUrl, data).then((res: any) => { + request({ + url: userPageUrl, + method: "post", + headers: { + 'Content-Type': CommonHeaderEnum.FORM_CONTENT_TYPE + }, + data + }).then((res: any) => { resolve(res.data) }).catch(err => { console.log(err) @@ -63,3 +72,34 @@ export function addUser(data: any) { }) }) } + +export function modifyPw(data: any) { + return new Promise((resolve, reject) => { + request({ + url: modifyPwUrl, + method: "post", + headers: { + 'Content-Type': CommonHeaderEnum.FORM_CONTENT_TYPE + }, + data + }).then((res: any) => { + resolve(res.data) + }).catch(error => { + reject(error) + }) + }) +} + +export function updateUI(data: any) { + return new Promise((resolve, reject) => { + request({ + url: addUserUrl, + method: "put", + data + }).then((res: any) => { + resolve(res.data) + }).catch(error => { + reject(error) + }) + }) +} diff --git a/src/components/common-pagination.vue b/src/components/common-pagination.vue index 8e9c1ea..afadf57 100644 --- a/src/components/common-pagination.vue +++ b/src/components/common-pagination.vue @@ -7,7 +7,7 @@ diff --git a/src/components/user-info.vue b/src/components/user-info.vue index e106a87..847a60e 100644 --- a/src/components/user-info.vue +++ b/src/components/user-info.vue @@ -151,7 +151,6 @@ function handleAvatarSuccess(uploadFile: any) { function handleUpload(options: any) { handleHttpUpload(options).then((res: any) => { - console.log(res) if (res && res.code == 0) { formData.value.avatar = res.data.url const param = { diff --git a/src/utils/file-util.ts b/src/utils/file-util.ts new file mode 100644 index 0000000..051f6fe --- /dev/null +++ b/src/utils/file-util.ts @@ -0,0 +1,36 @@ +import request from "@/utils/request"; +import {ElMessage} from "element-plus"; + +export function downBlobFile(url: any, query: any, fileName: string) { + return request({ + url: url, + method: 'get', + responseType: 'blob', + params: query, + }).then((response) => { + handleBlobFile(response.data, fileName); + }); +} + +export function handleBlobFile(response: any, fileName: string) { + // 处理返回的文件流 + const blob = response; + if (blob && blob.size === 0) { + ElMessage.error('内容为空,无法下载'); + return; + } + const link = document.createElement('a'); + + // 兼容一下 入参不是 File Blob 类型情况 + let binaryData = [] as any; + binaryData.push(response); + link.href = window.URL.createObjectURL(new Blob(binaryData)); + link.download = fileName; + document.body.appendChild(link); + link.click(); + window.setTimeout(function () { + // @ts-ignore + URL.revokeObjectURL(blob); + document.body.removeChild(link); + }, 0); +} \ No newline at end of file diff --git a/src/utils/table-util.ts b/src/utils/table-util.ts index cc39635..fd6f7fb 100644 --- a/src/utils/table-util.ts +++ b/src/utils/table-util.ts @@ -1,6 +1,7 @@ import * as XLSX from "xlsx" import { ElMessage, ElMessageBox } from 'element-plus' import { dateFormater } from '@/utils/date-util' +import {downBlobFile} from "@/utils/file-util"; export const tableRemoveRow = (params: any, callback: (res: boolean) => void) => { if (!params.data) params.data = [] @@ -44,13 +45,11 @@ export const tableRemoveRow = (params: any, callback: (res: boolean) => void) => } export const exportData = (fileName: string, data: Array) => { - if(data.length < 1) return - const wb = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet( - wb, - XLSX.utils.json_to_sheet(data) - ) - XLSX.writeFile(wb, fileName + '.xls'); // 导出Excel + downBlobFile("/admin/user/export", { + deptId: "", + phone: "", + username: "" + }, "users.xlsx") } /** diff --git a/src/views/permissions-manage/doctor-manage.vue b/src/views/permissions-manage/doctor-manage.vue index 54cc8cf..45ff461 100644 --- a/src/views/permissions-manage/doctor-manage.vue +++ b/src/views/permissions-manage/doctor-manage.vue @@ -5,8 +5,8 @@ 用户名 - 查询 - 重置 + 查询 + 重置
@@ -14,7 +14,7 @@ 导入 删除
-
@@ -38,18 +38,18 @@ @@ -63,17 +63,18 @@ - + diff --git a/src/views/permissions-manage/form/doctor-form.vue b/src/views/permissions-manage/form/doctor-form.vue index 554b3bf..cf8e695 100644 --- a/src/views/permissions-manage/form/doctor-form.vue +++ b/src/views/permissions-manage/form/doctor-form.vue @@ -34,16 +34,16 @@ - - + + - 有效 - 禁用 + 解锁 + 锁定 - + { } else { ElMessage.error('角色列表获取失败') } - console.log(res) }) defineExpose({ @@ -147,10 +146,10 @@ function resetData() { id: '', username: '', name: '', - role: '', + role: [], email: '', phone: '', - password: '', + password: '', lockFlag: '0', } } @@ -158,15 +157,34 @@ function resetData() { const saveData = async () => { await formRef.value.validate((valid: any, fields: any) => { if (valid) { - addUser(formData.value).then((data: any) => { - console.log(data) - }) - ElMessage.success('保存成功!') - emit('save', formData.value, props.type) - console.log(formData.value) - close() - } else { - // console.log('error submit!', fields) + if (props.type == "add") { + addUser(formData.value).then((data: any) => { + if (data.code == 0) { + ElMessage.success('保存成功!') + emit('save', formData.value, props.type) + close() + } else { + ElMessage.error("保存失败") + } + }) + } else { + updateUI({ + userId: formData.value.userId, + username: formData.value.username, + name: formData.value.name, + role: formData.value.role, + email: formData.value.email, + phone: formData.value.phone + }).then((data: any) => { + if (data.code == 0) { + ElMessage.success('修改成功!') + emit('save', formData.value, props.type) + close() + } else { + ElMessage.error("修改失败") + } + }) + } } }) } diff --git a/vite.config.ts b/vite.config.ts index 31d21ab..aced26f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -24,14 +24,14 @@ export default defineConfig({ proxy: { '/api': { //target: 'http://192.168.137.235:9999', // 目标服务器地址 - target: 'http://localhost:8888', // 目标服务器地址 + target: 'http://localhost:9999', // 目标服务器地址 ws: true, // 是否启用 WebSocket changeOrigin: true, // 是否修改请求头中的 Origin 字段 rewrite: (path) => path.replace(/^\/api/, ''), }, '/socket.io': { //target: 'ws://192.168.137.235:9999', - target: 'ws://localhost:8888', + target: 'ws://localhost:9999', ws: true, changeOrigin: true, rewrite: (path) => path.replace(/^\/socket.io/, ''),