Compare commits
3 Commits
de46692c89
...
6bea984e06
Author | SHA1 | Date | |
---|---|---|---|
6bea984e06 | |||
3522ef30ea | |||
8fdb1078ae |
@ -21,6 +21,7 @@
|
|||||||
"echarts-gl": "^2.0.9",
|
"echarts-gl": "^2.0.9",
|
||||||
"echarts-wordcloud": "^2.1.0",
|
"echarts-wordcloud": "^2.1.0",
|
||||||
"element-plus": "^2.6.1",
|
"element-plus": "^2.6.1",
|
||||||
|
"file-saver": "^2.0.5",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
"js-table2excel": "^1.1.2",
|
"js-table2excel": "^1.1.2",
|
||||||
"jsplumb": "^2.15.6",
|
"jsplumb": "^2.15.6",
|
||||||
@ -42,6 +43,7 @@
|
|||||||
"vue-router": "^4.3.0"
|
"vue-router": "^4.3.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/file-saver": "^2.0.7",
|
||||||
"@types/chart.js": "^2.9.41",
|
"@types/chart.js": "^2.9.41",
|
||||||
"@types/mockjs": "^1.0.10",
|
"@types/mockjs": "^1.0.10",
|
||||||
"@types/node": "^20.11.28",
|
"@types/node": "^20.11.28",
|
||||||
|
@ -26,11 +26,11 @@ export function attachmentApi() {
|
|||||||
method: 'get',
|
method: 'get',
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
downloadFiles: (ids: object) => {
|
downloadFiles: (ids: String) => {
|
||||||
return request({
|
return request({
|
||||||
url: baseUrlHost + '/enAttachment/uploadByType',
|
url: baseUrlHost + `/enAttachment/downloadFiles/${ids}`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
ids,
|
responseType: 'blob',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -35,8 +35,13 @@
|
|||||||
批量下载
|
批量下载
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="state.tableData.data" v-loading="state.tableData.loading" style="width: 100%" @selection-change="handleSelectionChange"
|
<el-table
|
||||||
ref="tableRef">
|
:data="state.tableData.data"
|
||||||
|
v-loading="state.tableData.loading"
|
||||||
|
style="width: 100%"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
ref="tableRef"
|
||||||
|
>
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column prop="name" label="附件名称" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="name" label="附件名称" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="moduleName" label="模块" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="moduleName" label="模块" show-overflow-tooltip></el-table-column>
|
||||||
@ -72,6 +77,7 @@ import { articleApi } from '/@/api/article';
|
|||||||
import { attachmentApi } from '/@/api/attachment';
|
import { attachmentApi } from '/@/api/attachment';
|
||||||
import { ElMessage, TableColumnCtx } from 'element-plus';
|
import { ElMessage, TableColumnCtx } from 'element-plus';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
|
import FileSaver from 'file-saver';
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
@ -94,15 +100,15 @@ const state = reactive({
|
|||||||
|
|
||||||
// 模块列表
|
// 模块列表
|
||||||
interface Module {
|
interface Module {
|
||||||
id: number;
|
id: number;
|
||||||
moduleName: string;
|
moduleName: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const moduleList = ref<Module[]>([]);
|
const moduleList = ref<Module[]>([]);
|
||||||
|
|
||||||
// 标签列表
|
// 标签列表
|
||||||
interface Label {
|
interface Label {
|
||||||
name: string;
|
name: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const labelList = ref<Label[]>([]);
|
const labelList = ref<Label[]>([]);
|
||||||
@ -135,21 +141,17 @@ const handleSelectionChange = (selection: any[]) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 批量下载
|
// 批量下载
|
||||||
const downloadSelected = () => {
|
const downloadSelected = async () => {
|
||||||
if (!state.selectedRows.length) {
|
if (!state.selectedRows.length) {
|
||||||
ElMessage.warning('请先选择附件!');
|
ElMessage.warning('请先选择附件!');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.selectedRows.forEach((file) => {
|
|
||||||
// 假设提供了 API 或工具进行文件下载
|
|
||||||
// 示例:使用 Blob URL 或直接调用下载 API
|
|
||||||
console.log(`下载文件: ${file.id}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
// 需要传给后端ids的数据
|
// 需要传给后端ids的数据
|
||||||
const ids = state.selectedRows.map((item) => item.id);
|
const ids = state.selectedRows.map((item) => item.id).join(',');
|
||||||
console.log(ids);
|
let res = await atcmApi.downloadFiles(ids);
|
||||||
atcmApi.downloadFiles(ids);
|
|
||||||
|
const blob = new Blob([res], { type: 'application/zip' });
|
||||||
|
FileSaver.saveAs(blob, "attachment.zip");
|
||||||
};
|
};
|
||||||
|
|
||||||
const getModuleList = async () => {
|
const getModuleList = async () => {
|
||||||
|
@ -3,19 +3,19 @@
|
|||||||
<el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="400px">
|
<el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="400px">
|
||||||
<el-form ref="menuDialogFormRef" :model="state.ruleForm" size="default" label-width="120px" v-loading="state.dialog.loading">
|
<el-form ref="menuDialogFormRef" :model="state.ruleForm" size="default" label-width="120px" v-loading="state.dialog.loading">
|
||||||
<el-form-item label="标题:">
|
<el-form-item label="标题:">
|
||||||
{{ state.ruleForm.title }}
|
{{ state.ruleForm.title }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="发送者:">
|
<el-form-item label="发送者:">
|
||||||
{{ state.ruleForm.sendUserName }}
|
{{ state.ruleForm.sendUserName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="接收者:">
|
<el-form-item label="接收者:">
|
||||||
{{ state.ruleForm.userName }}
|
{{ state.ruleForm.userName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="内容:">
|
<el-form-item label="内容:">
|
||||||
{{ state.ruleForm.message }}
|
{{ state.ruleForm.message }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="时间:">
|
<el-form-item label="时间:">
|
||||||
{{ dateFormatter() }}
|
{{ dateFormatter() }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts" name="messagePushDialog">
|
<script setup lang="ts" name="messagePushDialog">
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
import { reactive, ref } from 'vue';
|
import { reactive, ref } from 'vue';
|
||||||
import { messagePushApi } from '/@/api/messagePush';
|
import { messagePushApi } from '/@/api/messagePush';
|
||||||
|
|
||||||
// 定义变量内容
|
// 定义变量内容
|
||||||
@ -38,15 +38,15 @@ const state = reactive({
|
|||||||
ruleForm: {
|
ruleForm: {
|
||||||
id: '',
|
id: '',
|
||||||
title: '',
|
title: '',
|
||||||
sendUserName: "",
|
sendUserName: '',
|
||||||
userName: "",
|
userName: '',
|
||||||
message: "",
|
message: '',
|
||||||
createtime: []
|
createtime: [],
|
||||||
},
|
},
|
||||||
dialog: {
|
dialog: {
|
||||||
isShowDialog: false,
|
isShowDialog: false,
|
||||||
title: '',
|
title: '',
|
||||||
loading: false
|
loading: false,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -55,37 +55,50 @@ const mesApi = messagePushApi();
|
|||||||
|
|
||||||
// 日期格式化
|
// 日期格式化
|
||||||
const dateFormatter = () => {
|
const dateFormatter = () => {
|
||||||
if(state.ruleForm.createtime === null) return '暂无';
|
if (state.ruleForm.createtime === null) return '暂无';
|
||||||
let date = state.ruleForm.createtime;
|
let date = state.ruleForm.createtime;
|
||||||
return `${date[0]}-${date[1]}-${date[2]} ${date[3]}:${date[4]}:${date[5]}`;
|
return `${date[0]}-${date[1]}-${date[2]} ${date[3]}:${date[4]}:${date[5]}`;
|
||||||
}
|
};
|
||||||
|
|
||||||
// 获取信息详情
|
// 获取信息详情
|
||||||
const getDetail = async(id? : number) => {
|
const getDetail = async (id?: number) => {
|
||||||
try {
|
try {
|
||||||
state.dialog.loading = true;
|
state.dialog.loading = true;
|
||||||
let res = await mesApi.getMessagePushDetail(id);
|
let res = await mesApi.getMessagePushDetail(id);
|
||||||
if(res?.success){
|
console.log(res);
|
||||||
|
if (res?.success) {
|
||||||
|
// 当res.data为null时,给state.ruleForm赋值为空对象
|
||||||
|
if (res.data === null) {
|
||||||
|
state.ruleForm = {
|
||||||
|
id: '',
|
||||||
|
title: '无',
|
||||||
|
sendUserName: '无',
|
||||||
|
userName: '无',
|
||||||
|
message: '无',
|
||||||
|
createtime: [],
|
||||||
|
};
|
||||||
|
return;
|
||||||
|
}
|
||||||
state.ruleForm = res.data;
|
state.ruleForm = res.data;
|
||||||
}else{
|
} else {
|
||||||
ElMessage.error('信息详情获取失败!');
|
ElMessage.error('信息详情获取失败!');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
} finally {
|
} finally {
|
||||||
state.dialog.loading = false;
|
state.dialog.loading = false;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
// 打开弹窗
|
// 打开弹窗
|
||||||
const openDialog = (id?: any) => {
|
const openDialog = (id?: any) => {
|
||||||
console.log(id)
|
state.dialog.isShowDialog = true;
|
||||||
state.dialog.isShowDialog = true;
|
getDetail(id);
|
||||||
state.dialog.title = '人才信息';
|
|
||||||
getDetail(id);
|
|
||||||
};
|
};
|
||||||
// 关闭弹窗
|
// 关闭弹窗
|
||||||
const closeDialog = () => {
|
const closeDialog = () => {
|
||||||
|
console.log('close');
|
||||||
state.dialog.isShowDialog = false;
|
state.dialog.isShowDialog = false;
|
||||||
|
console.log(state.dialog.isShowDialog);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 取消
|
// 取消
|
||||||
|
Loading…
Reference in New Issue
Block a user