|
@@ -43,33 +43,48 @@ const router = useRouter();
|
|
|
const message = ref("");
|
|
|
const fileList = ref([]);
|
|
|
const loading = ref(false);
|
|
|
+const uploading = ref(false); // 标记是否正在上传
|
|
|
|
|
|
-// 按钮禁用:没有文字 && 没有文件 时禁用
|
|
|
+// 按钮禁用:没有文字 && 没有文件 时禁用;或者正在上传时禁用
|
|
|
const isDisabled = computed(() => {
|
|
|
- return !(message.value.trim() || fileList.value.length > 0);
|
|
|
+ return uploading.value || !(message.value.trim() || fileList.value.length > 0);
|
|
|
});
|
|
|
|
|
|
-// 选中文件后的处理逻辑(支持多选上传)
|
|
|
+// 选中文件后的处理逻辑(支持多选上传)——逐个上传
|
|
|
const afterRead = async (file) => {
|
|
|
- const files = Array.isArray(file) ? file : [file]; // 兼容单选和多选
|
|
|
+ const files = Array.isArray(file) ? file : [file];
|
|
|
+ uploading.value = true;
|
|
|
+
|
|
|
for (const f of files) {
|
|
|
const rawFile = f.file;
|
|
|
const formData = new FormData();
|
|
|
formData.append("image", rawFile);
|
|
|
|
|
|
+ // 先标记状态
|
|
|
+ f.status = "uploading";
|
|
|
+
|
|
|
try {
|
|
|
const res = await hostUploadImg(formData);
|
|
|
f.url = res.data.all_url;
|
|
|
+ f.status = "done";
|
|
|
} catch (err) {
|
|
|
console.error("上传失败:", err);
|
|
|
f.status = "failed";
|
|
|
f.message = "上传失败";
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ uploading.value = false;
|
|
|
};
|
|
|
|
|
|
// 发布按钮逻辑
|
|
|
const confirm = async () => {
|
|
|
+ // 检查是否有图片没上传完
|
|
|
+ if (fileList.value.some((item) => item.status === "uploading")) {
|
|
|
+ showToast("请等待图片上传完成");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
let params = {
|
|
|
content: message.value,
|
|
|
type: "0", // 图片
|
|
@@ -77,7 +92,9 @@ const confirm = async () => {
|
|
|
};
|
|
|
|
|
|
if (fileList.value.length > 0) {
|
|
|
- params.images = fileList.value.map((item) => item.url);
|
|
|
+ params.images = fileList.value
|
|
|
+ .filter((item) => item.status === "done") // 只取成功的
|
|
|
+ .map((item) => item.url);
|
|
|
}
|
|
|
|
|
|
loading.value = true;
|