gaoluyang
6 小时以前 07f9f8657d057a38792c3822acc9b08d83478967
src/views/customerService/afterSalesHandling/index.vue
@@ -1,6 +1,6 @@
<template>
   <div class="app-container">
      <div class="search-wrapper">
      <div class="search-wrapper mb20">
      <el-form
          :model="searchForm"
          class="demo-form-inline"
@@ -102,33 +102,19 @@
         ></PIMTable>
      </div>
      <form-dia ref="formDia" @close="handleQuery"></form-dia>
      <FileListDialog
         ref="fileListRef"
         v-model="fileListDialogVisible"
         title="售后附件"
         :show-upload-button="true"
         :show-delete-button="true"
         :upload-method="handleFileUpload"
         :delete-method="handleFileDelete"
      />
   </div>
    <FileList v-if="fileDialogVisible"  v-model:visible="fileDialogVisible" record-type="after_sales_service" :record-id="recordId"  />
  </div>
</template>
<script setup>
import { onMounted, ref, reactive, toRefs, getCurrentInstance, nextTick } from "vue";
import {onMounted, ref, reactive, toRefs, getCurrentInstance, nextTick, defineAsyncComponent} from "vue";
import FormDia from "@/views/customerService/afterSalesHandling/components/formDia.vue";
import FileListDialog from "@/components/Dialog/FileListDialog.vue";
import { ElMessageBox } from "element-plus";
import request from "@/utils/request";
import { getToken } from "@/utils/auth";
import {
   afterSalesServiceListPage,
   afterSalesServiceFileListPage,
   afterSalesServiceFileDel,
} from "@/api/customerService/index.js";
import useUserStore from "@/store/modules/user.js";
const { proxy } = getCurrentInstance();
const userStore = useUserStore()
const FileList = defineAsyncComponent(() => import("@/components/Dialog/FileList.vue"));
const data = reactive({
   searchForm: {
@@ -303,144 +289,15 @@
  })
}
// 打开附件弹窗
const recordId =ref(0)
const fileDialogVisible = ref(false)
// 打开附件弹框
const openFilesFormDia = async (row) => {
   currentFileRow.value = row
   try {
      const res = await afterSalesServiceFileListPage({
         afterSalesServiceId: row.id,
         current: 1,
         size: 100,
      })
      if (res.code === 200 && fileListRef.value) {
         const fileList = (res.data?.records || []).map((item) => ({
            name: item.name || item.fileName,
            url: item.url || item.fileUrl,
            id: item.id,
            ...item,
         }))
         fileListRef.value.open(fileList)
         fileListDialogVisible.value = true
      } else {
         fileListRef.value?.open([])
         fileListDialogVisible.value = true
      }
   } catch (error) {
      proxy.$modal.msgError("获取附件列表失败")
      fileListRef.value?.open([])
      fileListDialogVisible.value = true
   }
}
// 上传附件
const handleFileUpload = async () => {
   if (!currentFileRow.value) {
      proxy.$modal.msgWarning("请先选择数据")
      return
   }
   return new Promise((resolve) => {
      const input = document.createElement("input")
      input.type = "file"
      input.style.display = "none"
      input.onchange = async (e) => {
         const file = e.target.files[0]
         if (!file) {
            resolve(null)
            return
         }
         try {
            const formData = new FormData()
            formData.append("file", file)
            formData.append("id", currentFileRow.value.id)
            const uploadRes = await request({
               url: "/afterSalesService/file/upload",
               method: "post",
               data: formData,
               headers: {
                  "Content-Type": "multipart/form-data",
                  Authorization: `Bearer ${getToken()}`,
               },
            })
            if (uploadRes.code === 200) {
               proxy.$modal.msgSuccess("文件上传成功")
               // 重新获取文件列表
               const listRes = await afterSalesServiceFileListPage({
                  afterSalesServiceId: currentFileRow.value.id,
                  current: 1,
                  size: 100,
               })
               if (listRes.code === 200 && fileListRef.value) {
                  const fileList = (listRes.data?.records || []).map((item) => ({
                     name: item.fileName,
                     url: item.fileUrl,
                     id: item.id,
                     ...item,
                  }))
                  fileListRef.value.setList(fileList)
               }
               resolve({ name: file.name, url: "", id: null })
            } else {
               proxy.$modal.msgError(uploadRes.msg || "文件上传失败")
               resolve(null)
            }
         } catch (err) {
            proxy.$modal.msgError("文件上传失败")
            resolve(null)
         } finally {
            document.body.removeChild(input)
         }
      }
      document.body.appendChild(input)
      input.click()
   })
}
// 删除附件
const handleFileDelete = async (row) => {
   try {
      // 添加确认对话框
      const confirmResult = await ElMessageBox.confirm(
         '确定要删除这个附件吗?',
         '删除确认',
         {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
         }
      )
      if (confirmResult === 'confirm') {
         const res = await afterSalesServiceFileDel(row.id)
         if (res.code === 200) {
            proxy.$modal.msgSuccess("删除成功")
            if (currentFileRow.value && fileListRef.value) {
               const listRes = await afterSalesServiceFileListPage({
                  afterSalesServiceId: currentFileRow.value.id,
                  current: 1,
                  size: 100,
               })
               if (listRes.code === 200) {
                  const fileList = (listRes.data?.records || []).map((item) => ({
                     name: item.fileName,
                     url: item.fileUrl,
                     id: item.id,
                     ...item,
                  }))
                  fileListRef.value.setList(fileList)
               }
            }
         } else {
            proxy.$modal.msgError(res.msg || "删除失败")
            return false
         }
      }
   } catch (error) {
      // 如果用户取消删除,不显示错误信息
      if (error !== 'cancel') {
         proxy.$modal.msgError("删除失败")
      }
      return false
   }
  recordId.value = row.id
  fileDialogVisible.value = true
}
// 查询列表