新增批量删除邮件
This commit is contained in:
239
mail-vue/package-lock.json
generated
239
mail-vue/package-lock.json
generated
@@ -101,9 +101,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/aix-ppc64": {
|
"node_modules/@esbuild/aix-ppc64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
|
||||||
"integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
|
"integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ppc64"
|
"ppc64"
|
||||||
],
|
],
|
||||||
@@ -118,9 +118,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-arm": {
|
"node_modules/@esbuild/android-arm": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
|
||||||
"integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
|
"integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@@ -135,9 +135,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-arm64": {
|
"node_modules/@esbuild/android-arm64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
|
||||||
"integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
|
"integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -152,9 +152,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-x64": {
|
"node_modules/@esbuild/android-x64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
|
||||||
"integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
|
"integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -169,9 +169,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/darwin-arm64": {
|
"node_modules/@esbuild/darwin-arm64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
|
||||||
"integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
|
"integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -186,9 +186,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/darwin-x64": {
|
"node_modules/@esbuild/darwin-x64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
|
||||||
"integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
|
"integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -203,9 +203,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/freebsd-arm64": {
|
"node_modules/@esbuild/freebsd-arm64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
|
||||||
"integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
|
"integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -220,9 +220,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/freebsd-x64": {
|
"node_modules/@esbuild/freebsd-x64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
|
||||||
"integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
|
"integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -237,9 +237,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-arm": {
|
"node_modules/@esbuild/linux-arm": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
|
||||||
"integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
|
"integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@@ -254,9 +254,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-arm64": {
|
"node_modules/@esbuild/linux-arm64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
|
||||||
"integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
|
"integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -271,9 +271,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-ia32": {
|
"node_modules/@esbuild/linux-ia32": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
|
||||||
"integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
|
"integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@@ -288,9 +288,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-loong64": {
|
"node_modules/@esbuild/linux-loong64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
|
||||||
"integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
|
"integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"loong64"
|
"loong64"
|
||||||
],
|
],
|
||||||
@@ -305,9 +305,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-mips64el": {
|
"node_modules/@esbuild/linux-mips64el": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
|
||||||
"integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
|
"integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"mips64el"
|
"mips64el"
|
||||||
],
|
],
|
||||||
@@ -322,9 +322,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-ppc64": {
|
"node_modules/@esbuild/linux-ppc64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
|
||||||
"integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
|
"integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ppc64"
|
"ppc64"
|
||||||
],
|
],
|
||||||
@@ -339,9 +339,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-riscv64": {
|
"node_modules/@esbuild/linux-riscv64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
|
||||||
"integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
|
"integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"riscv64"
|
"riscv64"
|
||||||
],
|
],
|
||||||
@@ -356,9 +356,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-s390x": {
|
"node_modules/@esbuild/linux-s390x": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
|
||||||
"integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
|
"integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"s390x"
|
"s390x"
|
||||||
],
|
],
|
||||||
@@ -373,9 +373,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-x64": {
|
"node_modules/@esbuild/linux-x64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
|
||||||
"integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
|
"integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -390,9 +390,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/netbsd-arm64": {
|
"node_modules/@esbuild/netbsd-arm64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
|
||||||
"integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
|
"integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -407,9 +407,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/netbsd-x64": {
|
"node_modules/@esbuild/netbsd-x64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
|
||||||
"integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
|
"integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -424,9 +424,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/openbsd-arm64": {
|
"node_modules/@esbuild/openbsd-arm64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
|
||||||
"integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
|
"integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -441,9 +441,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/openbsd-x64": {
|
"node_modules/@esbuild/openbsd-x64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
|
||||||
"integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
|
"integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -457,10 +457,27 @@
|
|||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@esbuild/openharmony-arm64": {
|
||||||
|
"version": "0.25.9",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
|
||||||
|
"integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"openharmony"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@esbuild/sunos-x64": {
|
"node_modules/@esbuild/sunos-x64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
|
||||||
"integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
|
"integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -475,9 +492,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-arm64": {
|
"node_modules/@esbuild/win32-arm64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
|
||||||
"integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
|
"integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -492,9 +509,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-ia32": {
|
"node_modules/@esbuild/win32-ia32": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
|
||||||
"integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
|
"integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@@ -509,9 +526,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-x64": {
|
"node_modules/@esbuild/win32-x64": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
|
||||||
"integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
|
"integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -2114,9 +2131,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild": {
|
"node_modules/esbuild": {
|
||||||
"version": "0.25.2",
|
"version": "0.25.9",
|
||||||
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.9.tgz",
|
||||||
"integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
|
"integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -2127,31 +2144,32 @@
|
|||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@esbuild/aix-ppc64": "0.25.2",
|
"@esbuild/aix-ppc64": "0.25.9",
|
||||||
"@esbuild/android-arm": "0.25.2",
|
"@esbuild/android-arm": "0.25.9",
|
||||||
"@esbuild/android-arm64": "0.25.2",
|
"@esbuild/android-arm64": "0.25.9",
|
||||||
"@esbuild/android-x64": "0.25.2",
|
"@esbuild/android-x64": "0.25.9",
|
||||||
"@esbuild/darwin-arm64": "0.25.2",
|
"@esbuild/darwin-arm64": "0.25.9",
|
||||||
"@esbuild/darwin-x64": "0.25.2",
|
"@esbuild/darwin-x64": "0.25.9",
|
||||||
"@esbuild/freebsd-arm64": "0.25.2",
|
"@esbuild/freebsd-arm64": "0.25.9",
|
||||||
"@esbuild/freebsd-x64": "0.25.2",
|
"@esbuild/freebsd-x64": "0.25.9",
|
||||||
"@esbuild/linux-arm": "0.25.2",
|
"@esbuild/linux-arm": "0.25.9",
|
||||||
"@esbuild/linux-arm64": "0.25.2",
|
"@esbuild/linux-arm64": "0.25.9",
|
||||||
"@esbuild/linux-ia32": "0.25.2",
|
"@esbuild/linux-ia32": "0.25.9",
|
||||||
"@esbuild/linux-loong64": "0.25.2",
|
"@esbuild/linux-loong64": "0.25.9",
|
||||||
"@esbuild/linux-mips64el": "0.25.2",
|
"@esbuild/linux-mips64el": "0.25.9",
|
||||||
"@esbuild/linux-ppc64": "0.25.2",
|
"@esbuild/linux-ppc64": "0.25.9",
|
||||||
"@esbuild/linux-riscv64": "0.25.2",
|
"@esbuild/linux-riscv64": "0.25.9",
|
||||||
"@esbuild/linux-s390x": "0.25.2",
|
"@esbuild/linux-s390x": "0.25.9",
|
||||||
"@esbuild/linux-x64": "0.25.2",
|
"@esbuild/linux-x64": "0.25.9",
|
||||||
"@esbuild/netbsd-arm64": "0.25.2",
|
"@esbuild/netbsd-arm64": "0.25.9",
|
||||||
"@esbuild/netbsd-x64": "0.25.2",
|
"@esbuild/netbsd-x64": "0.25.9",
|
||||||
"@esbuild/openbsd-arm64": "0.25.2",
|
"@esbuild/openbsd-arm64": "0.25.9",
|
||||||
"@esbuild/openbsd-x64": "0.25.2",
|
"@esbuild/openbsd-x64": "0.25.9",
|
||||||
"@esbuild/sunos-x64": "0.25.2",
|
"@esbuild/openharmony-arm64": "0.25.9",
|
||||||
"@esbuild/win32-arm64": "0.25.2",
|
"@esbuild/sunos-x64": "0.25.9",
|
||||||
"@esbuild/win32-ia32": "0.25.2",
|
"@esbuild/win32-arm64": "0.25.9",
|
||||||
"@esbuild/win32-x64": "0.25.2"
|
"@esbuild/win32-ia32": "0.25.9",
|
||||||
|
"@esbuild/win32-x64": "0.25.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/escape-html": {
|
"node_modules/escape-html": {
|
||||||
@@ -3800,11 +3818,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vite/node_modules/fdir": {
|
"node_modules/vite/node_modules/fdir": {
|
||||||
"version": "6.4.4",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.4.4.tgz",
|
"resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz",
|
||||||
"integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
|
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"picomatch": "^3 || ^4"
|
"picomatch": "^3 || ^4"
|
||||||
},
|
},
|
||||||
@@ -3815,9 +3836,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vite/node_modules/picomatch": {
|
"node_modules/vite/node_modules/picomatch": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz",
|
||||||
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
|
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
/assets/*
|
/assets/*
|
||||||
|
Cache-Control: public, max-age=31556952, immutable
|
||||||
/tinymce/*
|
/tinymce/*
|
||||||
Cache-Control: public, max-age=31556952, immutable
|
Cache-Control: public, max-age=31556952, immutable
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<div class="header-left" :style="'padding-left:' + actionLeft">
|
<div class="header-left" :style="'padding-left:' + actionLeft">
|
||||||
|
|
||||||
<slot name="first"></slot>
|
<slot name="first"></slot>
|
||||||
<Icon class="icon" icon="ion:reload" width="18" height="18" @click="refresh"/>
|
<Icon class="icon reload" icon="ion:reload" width="18" height="18" @click="refresh"/>
|
||||||
<Icon v-perm="'email:delete'" class="icon" icon="uiw:delete" width="16" height="16"
|
<Icon v-perm="'email:delete'" class="icon" icon="uiw:delete" width="16" height="16"
|
||||||
v-if="getSelectedMailsIds().length > 0"
|
v-if="getSelectedMailsIds().length > 0"
|
||||||
@click="handleDelete"/>
|
@click="handleDelete"/>
|
||||||
@@ -879,6 +879,7 @@ function loadData() {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
position: relative;
|
||||||
column-gap: 18px;
|
column-gap: 18px;
|
||||||
row-gap: 8px;
|
row-gap: 8px;
|
||||||
padding-left: 2px;
|
padding-left: 2px;
|
||||||
|
|||||||
@@ -281,7 +281,16 @@ const en = {
|
|||||||
noRecipientDesc: 'Emails can be received even without a registered email address.',
|
noRecipientDesc: 'Emails can be received even without a registered email address.',
|
||||||
preview: 'Preview',
|
preview: 'Preview',
|
||||||
help: 'Help',
|
help: 'Help',
|
||||||
document: 'Document'
|
document: 'Document',
|
||||||
|
clearEmail: 'Email Cleanup',
|
||||||
|
sendEmailAddress: 'From Email',
|
||||||
|
toEmail: 'To Email',
|
||||||
|
equal: 'Equal',
|
||||||
|
leading: 'Leading',
|
||||||
|
to: 'To',
|
||||||
|
clear: 'Clear',
|
||||||
|
include: 'Include',
|
||||||
|
delAllEmailConfirm: 'Do you really want to delete it?'
|
||||||
}
|
}
|
||||||
|
|
||||||
export default en
|
export default en
|
||||||
|
|||||||
@@ -281,7 +281,16 @@ const zh = {
|
|||||||
noRecipientDesc: '即使没有注册的邮箱也能收到邮件',
|
noRecipientDesc: '即使没有注册的邮箱也能收到邮件',
|
||||||
preview: '预览',
|
preview: '预览',
|
||||||
help: '帮助',
|
help: '帮助',
|
||||||
document: '项目文档'
|
document: '项目文档',
|
||||||
|
clearEmail: '邮件清除',
|
||||||
|
sendEmailAddress: '发件人邮箱',
|
||||||
|
toEmail: '收件人邮箱',
|
||||||
|
equal: '等值',
|
||||||
|
leading: '左匹配',
|
||||||
|
to: '至',
|
||||||
|
clear: '清除',
|
||||||
|
include: '包含',
|
||||||
|
delAllEmailConfirm: '确定要删除吗?'
|
||||||
|
|
||||||
}
|
}
|
||||||
export default zh
|
export default zh
|
||||||
|
|||||||
@@ -7,3 +7,7 @@ export function allEmailList(params) {
|
|||||||
export function allEmailDelete(emailIds) {
|
export function allEmailDelete(emailIds) {
|
||||||
return http.delete('/allEmail/delete?emailIds=' + emailIds)
|
return http.delete('/allEmail/delete?emailIds=' + emailIds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function allEmailBatchDelete(params) {
|
||||||
|
return http.delete('/allEmail/batchDelete', {params: params} )
|
||||||
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
<el-select v-model="params.type" placeholder="Select" class="status-select">
|
<el-select v-model="params.type" placeholder="Select" class="status-select" @change="typeSelectChange">
|
||||||
<el-option key="1" :label="$t('all')" value="all"/>
|
<el-option key="1" :label="$t('all')" value="all"/>
|
||||||
<el-option key="3" :label="$t('received')" value="receive"/>
|
<el-option key="3" :label="$t('received')" value="receive"/>
|
||||||
<el-option key="2" :label="$t('sent')" value="send"/>
|
<el-option key="2" :label="$t('sent')" value="send"/>
|
||||||
@@ -53,8 +53,34 @@
|
|||||||
v-if="params.timeSort === 0" width="28" height="28"/>
|
v-if="params.timeSort === 0" width="28" height="28"/>
|
||||||
<Icon class="icon" @click="changeTimeSort" icon="material-symbols-light:timer-arrow-up-outline" v-else
|
<Icon class="icon" @click="changeTimeSort" icon="material-symbols-light:timer-arrow-up-outline" v-else
|
||||||
width="28" height="28"/>
|
width="28" height="28"/>
|
||||||
|
<Icon class="icon clear" icon="fluent:broom-sparkle-16-regular" width="22" height="22" @click="openBathDelete"/>
|
||||||
</template>
|
</template>
|
||||||
</emailScroll>
|
</emailScroll>
|
||||||
|
<el-dialog v-model="showBathDelete" :title="$t('clearEmail')" width="335"
|
||||||
|
@closed="closedClear">
|
||||||
|
<div class="clear-email">
|
||||||
|
<el-input v-model="clearParams.sendName" :placeholder="$t('sender')"/>
|
||||||
|
<el-input v-model="clearParams.subject" :placeholder="$t('subject')"/>
|
||||||
|
<el-input v-model="clearParams.sendEmail" :placeholder="$t('sendEmailAddress')"/>
|
||||||
|
<el-input v-model="clearParams.toEmail" :placeholder="$t('toEmail')"/>
|
||||||
|
<el-date-picker popper-class="my-date-picker"
|
||||||
|
v-model="clearTime"
|
||||||
|
type="daterange"
|
||||||
|
:teleported="false"
|
||||||
|
unlink-panels
|
||||||
|
:range-separator="t('to')"
|
||||||
|
size="default"
|
||||||
|
/>
|
||||||
|
<div class="clear-button">
|
||||||
|
<el-select v-model="clearParams.type" style="width: 200px">
|
||||||
|
<el-option key="eq" :label="t('equal')" value="eq"/>
|
||||||
|
<el-option key="left" :label="t('leading')" value="left"/>
|
||||||
|
<el-option key="include" :label="t('include')" value="include"/>
|
||||||
|
</el-select>
|
||||||
|
<el-button :loading="clearLoading" type="primary" @click="batchDelete">{{ t('clear') }}</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -65,21 +91,26 @@ import {computed, defineOptions, reactive, ref, watch} from "vue";
|
|||||||
import {useEmailStore} from "@/store/email.js";
|
import {useEmailStore} from "@/store/email.js";
|
||||||
import {
|
import {
|
||||||
allEmailList,
|
allEmailList,
|
||||||
allEmailDelete
|
allEmailDelete,
|
||||||
|
allEmailBatchDelete
|
||||||
} from "@/request/all-email.js";
|
} from "@/request/all-email.js";
|
||||||
import {Icon} from "@iconify/vue";
|
import {Icon} from "@iconify/vue";
|
||||||
import router from "@/router/index.js";
|
import router from "@/router/index.js";
|
||||||
import { useI18n } from 'vue-i18n';
|
import {useI18n} from 'vue-i18n';
|
||||||
|
import {toUtc} from "@/utils/day.js";
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'all-email'
|
name: 'all-email'
|
||||||
})
|
})
|
||||||
|
|
||||||
const { t } = useI18n();
|
const {t} = useI18n();
|
||||||
const emailStore = useEmailStore();
|
const emailStore = useEmailStore();
|
||||||
|
const clearTime = ref('')
|
||||||
const sysEmailScroll = ref({})
|
const sysEmailScroll = ref({})
|
||||||
const searchValue = ref('')
|
const searchValue = ref('')
|
||||||
const mySelect = ref()
|
const mySelect = ref()
|
||||||
|
const showBathDelete = ref(false)
|
||||||
|
const clearLoading = ref(false)
|
||||||
|
|
||||||
const openSelect = () => {
|
const openSelect = () => {
|
||||||
mySelect.value.toggleMenu()
|
mySelect.value.toggleMenu()
|
||||||
@@ -95,6 +126,31 @@ const params = reactive({
|
|||||||
searchType: 'name'
|
searchType: 'name'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const clearParams = reactive({
|
||||||
|
subject: '',
|
||||||
|
sendEmail: '',
|
||||||
|
sendName: '',
|
||||||
|
startTime: '',
|
||||||
|
toEmail: '',
|
||||||
|
endTime: '',
|
||||||
|
type: 'eq',
|
||||||
|
})
|
||||||
|
|
||||||
|
function resetClearParams() {
|
||||||
|
clearParams.subject = ''
|
||||||
|
clearParams.sendEmail = ''
|
||||||
|
clearParams.sendName = ''
|
||||||
|
clearParams.startTime = ''
|
||||||
|
clearParams.toEmail = ''
|
||||||
|
clearParams.endTime = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
function closedClear() {
|
||||||
|
resetClearParams()
|
||||||
|
clearParams.type = 'eq'
|
||||||
|
clearParams.endTime = ''
|
||||||
|
clearTime.value = null
|
||||||
|
}
|
||||||
|
|
||||||
const selectTitle = computed(() => {
|
const selectTitle = computed(() => {
|
||||||
if (params.searchType === 'user') return t('user')
|
if (params.searchType === 'user') return t('user')
|
||||||
@@ -113,11 +169,51 @@ if (paramsStar) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
watch(() => params, () => {
|
watch(() => params, () => {
|
||||||
localStorage.setItem('all-email-params',JSON.stringify(params))
|
localStorage.setItem('all-email-params', JSON.stringify(params))
|
||||||
}, {
|
}, {
|
||||||
deep: true
|
deep: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function openBathDelete() {
|
||||||
|
showBathDelete.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function batchDelete() {
|
||||||
|
|
||||||
|
if (clearTime.value) {
|
||||||
|
clearParams.startTime = toUtc(clearTime.value[0]).format("YYYY-MM-DD HH:mm:ss")
|
||||||
|
clearParams.endTime = toUtc(clearTime.value[1]).add(1, 'day').format("YYYY-MM-DD HH:mm:ss")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!clearParams.sendEmail && !clearParams.sendName && !clearParams.subject && !clearParams.toEmail && !clearTime.value) {
|
||||||
|
showBathDelete.value = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
t('delAllEmailConfirm'),
|
||||||
|
{
|
||||||
|
confirmButtonText: t('confirm'),
|
||||||
|
cancelButtonText: t('cancel'),
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
).then(() => {
|
||||||
|
clearLoading.value = true
|
||||||
|
|
||||||
|
allEmailBatchDelete(clearParams).then(() => {
|
||||||
|
ElMessage({
|
||||||
|
message: t('clearSuccess'),
|
||||||
|
type: "success",
|
||||||
|
plain: true
|
||||||
|
})
|
||||||
|
resetClearParams()
|
||||||
|
sysEmailScroll.value.refreshList();
|
||||||
|
}).finally(() => {
|
||||||
|
clearLoading.value = false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function refreshBefore() {
|
function refreshBefore() {
|
||||||
searchValue.value = null
|
searchValue.value = null
|
||||||
params.timeSort = 0
|
params.timeSort = 0
|
||||||
@@ -157,7 +253,11 @@ function search() {
|
|||||||
|
|
||||||
function changeTimeSort() {
|
function changeTimeSort() {
|
||||||
params.timeSort = params.timeSort ? 0 : 1
|
params.timeSort = params.timeSort ? 0 : 1
|
||||||
sysEmailScroll.value.refreshList();
|
search()
|
||||||
|
}
|
||||||
|
|
||||||
|
function typeSelectChange() {
|
||||||
|
search()
|
||||||
}
|
}
|
||||||
|
|
||||||
function jumpContent(email) {
|
function jumpContent(email) {
|
||||||
@@ -173,7 +273,41 @@ function getEmailList(emailId, size) {
|
|||||||
return allEmailList({emailId, size, ...params})
|
return allEmailList({emailId, size, ...params})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.el-date-range-picker .el-picker-panel__body {
|
||||||
|
min-width: auto;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.my-date-picker::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute; /* 脱离文档流,不会撑开 */
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 20px;
|
||||||
|
background: transparent; /* 方便看效果 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-date-range-picker__content {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-date-range-picker {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tooltip .el-picker_popper {
|
||||||
|
padding-bottom: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-date-range-picker__content.is-left {
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.email-list-box {
|
.email-list-box {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -208,15 +342,33 @@ function getEmailList(emailId, size) {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 280px;
|
max-width: 280px;
|
||||||
height: 28px;
|
height: 28px;
|
||||||
|
|
||||||
.setting-icon {
|
.setting-icon {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 3px;
|
top: 3px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.clear-email {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clear-button {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 15px;
|
||||||
|
|
||||||
|
.el-button {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.status-select {
|
.status-select {
|
||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
width: 100px;
|
width: 102px;
|
||||||
|
|
||||||
:deep(.el-select__wrapper) {
|
:deep(.el-select__wrapper) {
|
||||||
min-height: 28px;
|
min-height: 28px;
|
||||||
}
|
}
|
||||||
@@ -236,7 +388,27 @@ function getEmailList(emailId, size) {
|
|||||||
min-height: 28px;
|
min-height: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.el-date-editor.el-input__wrapper) {
|
||||||
|
width: 303px;
|
||||||
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
</style>
|
|
||||||
|
.clear {
|
||||||
|
@media (max-width: 407px) {
|
||||||
|
position: absolute;
|
||||||
|
top: 41px;
|
||||||
|
left: 242px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.reload) {
|
||||||
|
@media (max-width: 407px) {
|
||||||
|
position: absolute;
|
||||||
|
top: 42px;
|
||||||
|
left: 208px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -11,3 +11,8 @@ app.delete('/allEmail/delete',async (c) => {
|
|||||||
const list = await emailService.physicsDelete(c, c.req.query());
|
const list = await emailService.physicsDelete(c, c.req.query());
|
||||||
return c.json(result.ok(list));
|
return c.json(result.ok(list));
|
||||||
})
|
})
|
||||||
|
|
||||||
|
app.delete('/allEmail/batchDelete',async (c) => {
|
||||||
|
await emailService.batchDelete(c, c.req.query());
|
||||||
|
return c.json(result.ok());
|
||||||
|
})
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ const premKey = {
|
|||||||
'user:set-type': ['/user/setType'],
|
'user:set-type': ['/user/setType'],
|
||||||
'user:delete': ['/user/delete'],
|
'user:delete': ['/user/delete'],
|
||||||
'all-email:query': ['/allEmail/list'],
|
'all-email:query': ['/allEmail/list'],
|
||||||
'all-email:delete': ['/allEmail/delete'],
|
'all-email:delete': ['/allEmail/delete','/allEmail/batchDelete'],
|
||||||
'setting:query': ['/setting/query'],
|
'setting:query': ['/setting/query'],
|
||||||
'setting:set': ['/setting/set', '/setting/setBackground'],
|
'setting:set': ['/setting/set', '/setting/setBackground'],
|
||||||
'setting:clean': ['/setting/physicsDeleteAll'],
|
'setting:clean': ['/setting/physicsDeleteAll'],
|
||||||
|
|||||||
@@ -160,6 +160,33 @@ const attService = {
|
|||||||
eq(att.type, attConst.type.ATT)
|
eq(att.type, attConst.type.ATT)
|
||||||
))
|
))
|
||||||
.all();
|
.all();
|
||||||
|
},
|
||||||
|
|
||||||
|
async deleteByEmailIds(c, emailIds) {
|
||||||
|
|
||||||
|
const queryAttSql = emailIds.map(emailId => c.env.db.prepare(`SELECT key,att_id FROM attachments WHERE email_id = ${emailId} GROUP BY key HAVING COUNT(*) = 1;`))
|
||||||
|
const attListResult = await c.env.db.batch(queryAttSql);
|
||||||
|
|
||||||
|
const delKeyList = attListResult.flatMap(r => r.results.map(row => row.key));
|
||||||
|
|
||||||
|
if (delKeyList.length > 0) {
|
||||||
|
await this.batchDelete(c, delKeyList)
|
||||||
|
}
|
||||||
|
|
||||||
|
const delAttSql = emailIds.map(emailId => c.env.db.prepare(`DELETE FROM attachments WHERE email_id = ${emailId}`))
|
||||||
|
await c.env.db.batch(delAttSql);
|
||||||
|
},
|
||||||
|
|
||||||
|
async batchDelete(c, keys) {
|
||||||
|
if (!keys.length) return;
|
||||||
|
|
||||||
|
const BATCH_SIZE = 1000;
|
||||||
|
|
||||||
|
for (let i = 0; i < keys.length; i += BATCH_SIZE) {
|
||||||
|
const batch = keys.slice(i, i + BATCH_SIZE);
|
||||||
|
await r2Service.delete(c, batch);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import orm from '../entity/orm';
|
import orm from '../entity/orm';
|
||||||
import email from '../entity/email';
|
import email from '../entity/email';
|
||||||
import { attConst, emailConst, isDel, settingConst } from '../const/entity-const';
|
import { attConst, emailConst, isDel, settingConst } from '../const/entity-const';
|
||||||
import { and, desc, eq, gt, inArray, lt, count, asc, sql, ne, or } from 'drizzle-orm';
|
import { and, desc, eq, gt, inArray, lt, count, asc, sql, ne, or, like, lte, gte } from 'drizzle-orm';
|
||||||
import { star } from '../entity/star';
|
import { star } from '../entity/star';
|
||||||
import settingService from './setting-service';
|
import settingService from './setting-service';
|
||||||
import accountService from './account-service';
|
import accountService from './account-service';
|
||||||
@@ -614,6 +614,52 @@ const emailService = {
|
|||||||
isDel: isDel.NORMAL,
|
isDel: isDel.NORMAL,
|
||||||
status: status
|
status: status
|
||||||
}).where(eq(email.emailId, emailId)).returning().get();
|
}).where(eq(email.emailId, emailId)).returning().get();
|
||||||
|
},
|
||||||
|
|
||||||
|
async batchDelete(c, params) {
|
||||||
|
let { sendName, sendEmail, toEmail, subject, startTime, endTime, type } = params
|
||||||
|
|
||||||
|
let right = type === 'left' || type === 'include'
|
||||||
|
let left = type === 'include'
|
||||||
|
|
||||||
|
const conditions = []
|
||||||
|
|
||||||
|
if (sendName) {
|
||||||
|
conditions.push(like(email.name,`${left ? '%' : ''}${sendName}${right ? '%' : ''}`))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subject) {
|
||||||
|
conditions.push(like(email.subject,`${left ? '%' : ''}${subject}${right ? '%' : ''}`))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sendEmail) {
|
||||||
|
conditions.push(like(email.sendEmail,`${left ? '%' : ''}${sendEmail}${right ? '%' : ''}`))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toEmail) {
|
||||||
|
conditions.push(like(email.toEmail,`${left ? '%' : ''}${toEmail}${right ? '%' : ''}`))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startTime && endTime) {
|
||||||
|
conditions.push(gte(email.createTime,`${startTime}`))
|
||||||
|
conditions.push(lte(email.createTime,`${endTime}`))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (conditions.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const emailIdsRow = await orm(c).select({emailId: email.emailId}).from(email).where(conditions.length > 1 ? and(...conditions) : conditions[0]).all();
|
||||||
|
|
||||||
|
const emailIds = emailIdsRow.map(row => row.emailId);
|
||||||
|
|
||||||
|
if (emailIds.length === 0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await attService.deleteByEmailIds(c, emailIds);
|
||||||
|
|
||||||
|
await orm(c).delete(email).where(conditions.length > 1 ? and(...conditions) : conditions[0]).run();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user