From 07f9f8657d057a38792c3822acc9b08d83478967 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 07 五月 2026 14:23:10 +0800
Subject: [PATCH] 合并代码
---
src/views/customerService/afterSalesHandling/index.vue | 167 ++++---------------------------------------------------
1 files changed, 12 insertions(+), 155 deletions(-)
diff --git a/src/views/customerService/afterSalesHandling/index.vue b/src/views/customerService/afterSalesHandling/index.vue
index 57cc2eb..a42337d 100644
--- a/src/views/customerService/afterSalesHandling/index.vue
+++ b/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
}
// 鏌ヨ鍒楄〃
--
Gitblit v1.9.3