|
@@ -1,10 +1,13 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <div style="padding-left: 20px; display: flex; align-items: center">
|
|
|
+ <div
|
|
|
+ style="padding-left: 20px; display: flex; align-items: center"
|
|
|
+ v-loading="btnLoading"
|
|
|
+ >
|
|
|
<el-icon @click="handleRefresh" style="cursor: pointer">
|
|
|
<Refresh />
|
|
|
</el-icon>
|
|
|
- <!-- <div class="vertical-line"></div>
|
|
|
+ <div class="vertical-line"></div>
|
|
|
<div>
|
|
|
<el-checkbox
|
|
|
v-model="isCheckAll"
|
|
@@ -15,12 +18,15 @@
|
|
|
</div>
|
|
|
<div style="color: #666666">
|
|
|
<span
|
|
|
- >(共998封,其中<span style="color: #39c55a"> 未读邮件 </span
|
|
|
- >6封)</span
|
|
|
+ >(共 {{ tableData.pagination.total }} 封,其中<span
|
|
|
+ style="color: #39c55a"
|
|
|
+ >
|
|
|
+ 未读邮件 </span
|
|
|
+ >{{ unReadCount }} 封)</span
|
|
|
>
|
|
|
</div>
|
|
|
<el-button
|
|
|
- @click="handleMove"
|
|
|
+ @click="handleSetAllRead"
|
|
|
:disabled="selectData.length === 0"
|
|
|
style="margin-left: 10px"
|
|
|
>全部标为已读</el-button
|
|
@@ -30,6 +36,7 @@
|
|
|
placeholder="标记为"
|
|
|
style="margin: 0 10px; width: 120px"
|
|
|
:disabled="selectData.length === 0"
|
|
|
+ @change="handleSetTag"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in tagData"
|
|
@@ -46,10 +53,11 @@
|
|
|
style="margin-right: 10px; width: 120px"
|
|
|
check-strictly
|
|
|
:render-after-expand="false"
|
|
|
+ @change="handleSetFolder"
|
|
|
/>
|
|
|
- <el-button @click="handleMove" :disabled="selectData.length === 0"
|
|
|
+ <el-button @click="handleDeleteAll" :disabled="selectData.length === 0"
|
|
|
>删除</el-button
|
|
|
- > -->
|
|
|
+ >
|
|
|
</div>
|
|
|
<div style="padding: 10px 15px; width: 100%">
|
|
|
<el-table
|
|
@@ -59,7 +67,7 @@
|
|
|
@selection-change="handleSelectionChange"
|
|
|
v-loading="loading"
|
|
|
>
|
|
|
- <!-- <el-table-column label=" " width="40" align="center">
|
|
|
+ <el-table-column label=" " width="40" align="center">
|
|
|
<template #default="{ row, $index }">
|
|
|
<div>
|
|
|
<el-checkbox
|
|
@@ -70,7 +78,7 @@
|
|
|
/>
|
|
|
</div>
|
|
|
</template>
|
|
|
- </el-table-column> -->
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="状态" width="70">
|
|
|
<template #default="{ row, $index }">
|
|
|
<div style="cursor: pointer" @click="handleRowClick(row, $index)">
|
|
@@ -177,6 +185,8 @@
|
|
|
import byTable from "@/components/byTable/index";
|
|
|
import useMailStore from "@/store/modules/mail";
|
|
|
import useUserStore from "@/store/modules/user";
|
|
|
+import { ElMessage, ElMessageBox } from "element-plus";
|
|
|
+
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
const mailStore = useMailStore();
|
|
|
let loading = ref(false);
|
|
@@ -196,6 +206,7 @@ const tableData = reactive({
|
|
|
total: 0,
|
|
|
},
|
|
|
});
|
|
|
+const unReadCount = computed(() => mailStore.currentMenu.unReadCount);
|
|
|
const config = computed(() => {
|
|
|
return [
|
|
|
{
|
|
@@ -334,12 +345,24 @@ const handleSizeChange = (val) => {
|
|
|
};
|
|
|
const myFolderTreeData = ref([]);
|
|
|
const tagData = ref([]);
|
|
|
+
|
|
|
+const handleTreeData = (arr) => {
|
|
|
+ for (let i = 0; i < arr.length; i++) {
|
|
|
+ const e = arr[i];
|
|
|
+ e.value = e.id;
|
|
|
+ if (e.children && e.children.length > 0) {
|
|
|
+ e.children = handleTreeData(e.children);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return arr;
|
|
|
+};
|
|
|
+
|
|
|
const getOtherData = () => {
|
|
|
setTimeout(() => {
|
|
|
proxy
|
|
|
.post("/myFolder/tree", { mailboxId: mailStore.selectMail.id })
|
|
|
.then((res) => {
|
|
|
- myFolderTreeData.value = res.map((x) => ({ ...x, value: x.id }));
|
|
|
+ myFolderTreeData.value = handleTreeData(res);
|
|
|
});
|
|
|
}, 1000);
|
|
|
|
|
@@ -355,7 +378,7 @@ const getOtherData = () => {
|
|
|
});
|
|
|
}, 1000);
|
|
|
};
|
|
|
-// getOtherData();
|
|
|
+getOtherData();
|
|
|
const isCheckAll = ref(false);
|
|
|
const selectTag = ref("");
|
|
|
const selectFolder = ref("");
|
|
@@ -377,6 +400,104 @@ const handleChangeCheckAll = () => {
|
|
|
selectData.value = [];
|
|
|
}
|
|
|
};
|
|
|
+const btnLoading = ref(false);
|
|
|
+const handleSetAllRead = () => {
|
|
|
+ btnLoading.value = true;
|
|
|
+ const uidList = selectData.value.map((x) => x.id);
|
|
|
+ const data = {
|
|
|
+ folderName: mailStore.currentMenu.oldName,
|
|
|
+ uidList,
|
|
|
+ mailboxId: mailStore.selectMail.id,
|
|
|
+ type: mailStore.selectMail.type,
|
|
|
+ };
|
|
|
+ proxy.post("/mailService/setSeen", data).then(
|
|
|
+ (res) => {
|
|
|
+ ElMessage({
|
|
|
+ message: `操作成功!`,
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ btnLoading.value = false;
|
|
|
+ },
|
|
|
+ (err) => {
|
|
|
+ btnLoading.value = false;
|
|
|
+ }
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
+const handleSetTag = (val) => {
|
|
|
+ if (!val) return;
|
|
|
+ btnLoading.value = true;
|
|
|
+ const messageIdList = selectData.value.map((x) => x.id);
|
|
|
+ const data = {
|
|
|
+ myTagId: val,
|
|
|
+ messageIdList,
|
|
|
+ };
|
|
|
+ proxy.post("/myTagMessage/addBath", data).then(
|
|
|
+ (res) => {
|
|
|
+ ElMessage({
|
|
|
+ message: `操作成功!`,
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ selectTag.value = "";
|
|
|
+ btnLoading.value = false;
|
|
|
+ },
|
|
|
+ (err) => {
|
|
|
+ btnLoading.value = false;
|
|
|
+ }
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
+const handleSetFolder = (val) => {
|
|
|
+ if (!val) return;
|
|
|
+ btnLoading.value = true;
|
|
|
+ const messageIdList = selectData.value.map((x) => x.id);
|
|
|
+ const data = {
|
|
|
+ myFolderId: val,
|
|
|
+ messageIdList,
|
|
|
+ };
|
|
|
+ proxy.post("/myFolderMessage/addBath", data).then(
|
|
|
+ (res) => {
|
|
|
+ ElMessage({
|
|
|
+ message: `操作成功!`,
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ selectFolder.value = "";
|
|
|
+ btnLoading.value = false;
|
|
|
+ },
|
|
|
+ (err) => {
|
|
|
+ btnLoading.value = false;
|
|
|
+ }
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
+const handleDeleteAll = () => {
|
|
|
+ ElMessageBox.confirm(`此操作将删除选中的邮件, 是否继续?`, "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ }).then(() => {
|
|
|
+ btnLoading.value = true;
|
|
|
+ const idList = selectData.value.map((x) => x.id);
|
|
|
+ const data = {
|
|
|
+ type: mailStore.selectMail.type,
|
|
|
+ idList,
|
|
|
+ };
|
|
|
+ proxy.post("/mailService/deleteBatchMail", data).then(
|
|
|
+ (res) => {
|
|
|
+ ElMessage({
|
|
|
+ message: `操作成功!`,
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ btnLoading.value = false;
|
|
|
+ selectData.value = [];
|
|
|
+ getList();
|
|
|
+ },
|
|
|
+ (err) => {
|
|
|
+ btnLoading.value = false;
|
|
|
+ }
|
|
|
+ );
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
defineExpose({
|
|
|
initFn: init,
|