From f6b907eff09b59206c1c3c399feae95cc5c1fbc4 Mon Sep 17 00:00:00 2001 From: wangchengming <15110151257@163.com> Date: Mon, 15 Sep 2025 16:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E5=AA=92=E4=BD=93=E6=8A=A5?= =?UTF-8?q?=E4=BB=B7=E5=AF=BC=E5=85=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/优势媒体报价导入模板.xlsx | Bin 0 -> 10143 bytes src/api/mediaLibrary.js | 14 +- src/components/FileUpload/PdfPreview.vue | 26 +++- src/views/mediaLibrary/importPrice.vue | 162 +++++++++++++++++++++++ src/views/mediaLibrary/index.vue | 131 ++++-------------- src/views/mediaLibrary/mediaForm.vue | 2 +- 6 files changed, 221 insertions(+), 114 deletions(-) create mode 100644 public/优势媒体报价导入模板.xlsx create mode 100644 src/views/mediaLibrary/importPrice.vue diff --git a/public/优势媒体报价导入模板.xlsx b/public/优势媒体报价导入模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7ff1a2f3d6651ec757644f09471af30ca6ba76e8 GIT binary patch literal 10143 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 literal 0 HcmV?d00001 diff --git a/src/api/mediaLibrary.js b/src/api/mediaLibrary.js index 7595fd3..2d2c4f5 100644 --- a/src/api/mediaLibrary.js +++ b/src/api/mediaLibrary.js @@ -23,7 +23,7 @@ export function updateMedia(query) { method: 'post', data: query }) -} +} // 查看单条媒体信息 export function mediaDetail(query) { return request({ @@ -143,4 +143,16 @@ export function outMediaPageList(query) { method: 'get', params: query }) +} + +// 导入媒体报价 +export function importPriceByExcel(query) { + return request({ + url: '/media/import/price/Excel', + method: 'post', + data: query, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) } \ No newline at end of file diff --git a/src/components/FileUpload/PdfPreview.vue b/src/components/FileUpload/PdfPreview.vue index 3d19083..8e2002c 100644 --- a/src/components/FileUpload/PdfPreview.vue +++ b/src/components/FileUpload/PdfPreview.vue @@ -1,7 +1,7 @@ @@ -318,6 +294,7 @@ import viewFileDialog from '@/components/ViewFile/index.vue' import exportDialog from './exportDialog.vue'; import abolishDialog from './abolishDialog.vue'; import exportPPTDialog from './exportPPTDialog.vue'; +import importPrice from './importPrice.vue'; import { useBackgroundStore } from '@/store/modules/background' @@ -385,11 +362,10 @@ const mediaLogsRef = ref(null) // ppt模板数据 const templateList = ref([]) // 媒体多选数据 -const multipleChoseArr = ref([]) - - -const uploadOpen = ref(false) -const docUploadList = ref([]) +const multipleChoseArr = ref([]) +const unfoldFlag = ref(false) + +const importPriceRef = ref(null) const abolishRef = ref(null) const historyDataRef = ref(null) const downFileRef = ref(null) @@ -397,8 +373,6 @@ const viewFileRef = ref(null) const exportDialogRef = ref(null) const exportPPTDialogRef = ref(null) - - // 获取PPT模板 const getpptTemplatePageList = () => { pptTemplatePage(queryParams.value).then(res => { @@ -495,11 +469,9 @@ const getbusinessAreaList = (val) => { }) } // 折叠展开 -const unfoldFlag = ref(false) const handleFlod = () => { unfoldFlag.value = !unfoldFlag.value -} - +} /** 查询媒体信息列表 */ const getMediaPageList = () => { loading.value = true @@ -520,8 +492,7 @@ const getMediaPageList = () => { const handleQuery = () => { queryParams.value.pageNum = 1 getMediaPageList() -} - +} /** 重置按钮操作 */ const resetQuery = () => { queryParams.value = { @@ -541,8 +512,7 @@ const resetQuery = () => { businessDistrictId: undefined } handleQuery() -} - +} // 选择媒体事件 const handleSelectionChange = (selection) => { multipleChoseArr.value = selection @@ -608,13 +578,11 @@ const handleHistoryChart = (row) => { // 打开文件下载 const handleDownFiles = (row) => { downFileRef.value.initFileList(true, row.id) -} - +} // 查看文件 const handleViewPhoto = (_fileType, row) => { viewFileRef.value.initFileList(_fileType, row.id) -} - +} /** 导出Excel按钮操作 */ const handleExportExcel = () => { if (multipleChoseArr.value.length == 0) { @@ -632,64 +600,11 @@ const handleExportPPT = (tempId) => { } const mediaIds = multipleChoseArr.value.map(item => item.id); exportPPTDialogRef.value.initExportPPT(tempId, mediaIds, multipleChoseArr.value) -} - +} /** 导入按钮操作 */ const handleImport = (val) => { - uploadOpen.value = true -} - -// 自定义上传文件资料 -const requestDocUpload = (options) => { - proxy.$modal.loading('正在上传文件,请耐心等待...') - const { file } = options - var formData = new FormData(); - formData.append('file', file); - importSupplier(formData).then(res => { - if (res.code == 200) { - proxy.$modal.msgSuccess("导入成功") - proxy.$modal.closeLoading() - uploadOpen.value = false - getSupplierPageList() - } else { - proxy.$modal.closeLoading() - proxy.$modal.msgError(res.msg); - } - }) -} -//自定义上传文件资料校验 -const beforeDocUpload = (file) => { - const type = [ - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'application/vnd.ms-excel' - ]; - const isXlsx = type.includes(file.type); - // 检验文件格式 - if (!isXlsx) { - proxy.$modal.msgError("文件格式错误,请上传.xls;.xlsx后缀的文件。"); - return false; - } -} -// 移除已上传文件列表 -const removeDocUpload = (file, fileList) => { - docUploadList.value = docUploadList.value.filter( - item => item.name != file.name - ); -} -// 下载导入模板操作 -const importTemplate = () => { - // exportTemplate().then(res => { - // // 通过a标签打开新页面下载文件 - // const a = document.createElement('a') - // a.href = URL.createObjectURL(res) - // // a标签里有download属性可以自定义文件名 - // const downLoadName = '供应商导入模板_' + Date.now() + '.xlsx' - // a.setAttribute('download', downLoadName) - // document.body.appendChild(a) - // a.click() - // document.body.removeChild(a) - // }) -} + importPriceRef.value.initImportPriceExcel(val) +} // 打开媒体地图 const handleGoMediaMap = () => { router.push('/mediaMap') diff --git a/src/views/mediaLibrary/mediaForm.vue b/src/views/mediaLibrary/mediaForm.vue index 62af316..7a28e2c 100644 --- a/src/views/mediaLibrary/mediaForm.vue +++ b/src/views/mediaLibrary/mediaForm.vue @@ -629,7 +629,7 @@ const data = reactive({ mediaSize: [{ required: true, message: "媒体尺寸不能为空", trigger: "blur" }], mediaOrientation: [{ required: true, message: "媒体朝向不能为空", trigger: "blur" }], mediaCity: [{ required: true, message: "城市不能为空", trigger: "change" }], - businessDistrictId: [{ required: true, message: "商圈不能为空", trigger: "change" }], + // businessDistrictId: [{ required: true, message: "商圈不能为空", trigger: "change" }], firstInstallFee: [{ required: true, message: "首次制作安装费不能为空", trigger: "blur" }], changeInstallFee: [{ required: true, message: "换刊制作安装费不能为空", trigger: "blur" }], },