对接校准平台导出接口

This commit is contained in:
wangchengming 2025-09-20 16:36:50 +08:00
parent d47b29ad26
commit ab440226c7
2 changed files with 284 additions and 27 deletions

View File

@ -20,7 +20,7 @@ export function calibraTionImport(data) {
'Content-Type': 'multipart/form-data'
}
})
}
}
// 获取校准结果
export function calibraTionResult(query) {
@ -31,8 +31,8 @@ export function calibraTionResult(query) {
})
}
// 删除校准任务
export function deleteCalibraTionTask(query) {
// 删除单条校准结果
export function deleteCalibraTionResult(query) {
return request({
url: '/media/align/result/remove',
method: 'get',
@ -49,4 +49,13 @@ export function saveHistoryPrice(query) {
})
}
// 导出校准结果
export function exportCalibraTionResult(query) {
return request({
url: '/media/align/export/excel',
method: 'post',
data: query,
responseType: 'blob'
})
}

View File

@ -65,7 +65,7 @@
</div>
</el-card>
<!-- 比对结果查看对话框 -->
<el-dialog title="比对结果" v-model="open" width="1450px" class="my_dialog" align-center :destroy-on-close="true"
<el-dialog title="比对结果" v-model="open" width="1650px" class="my_dialog" align-center :destroy-on-close="true"
:close-on-click-modal="false">
<el-table v-loading="loading" :data="resultRecords" height="calc(100% - 422px)">
<el-table-column label="序号" align="center" width="80">
@ -73,25 +73,215 @@
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column label="类型" align="center" prop="optionTime" width="100" />
<el-table-column label="供应商" align="left" prop="fileName" min-width="180"
:show-overflow-tooltip="true" />
<el-table-column label="城市" align="center" prop="optionTime" width="100" />
<el-table-column label="媒体名称" align="center" prop="optionTime" width="100" />
<el-table-column label="购买周期" align="center" prop="optionTime" width="100" />
<el-table-column label="刊例价" align="center" prop="optionTime" width="100" />
<el-table-column label="折扣" align="center" prop="optionTime" width="100" />
<el-table-column label="单日覆盖人流量/人次" align="center" prop="optionTime" width="100" />
<el-table-column label="SOV" align="center" prop="optionTime" width="100" />
<el-table-column label="比对结果" align="center" prop="optionTime" width="100">
<template v-if="mediaType == 1">
<el-table-column label="城市" align="center" prop="cityName" width="90" />
<el-table-column label="媒体名称" align="left" prop="mediaName" width="150" />
<el-table-column label="频次" align="center" prop="frequency" width="100" />
<el-table-column label="刊例价" align="right" prop="listPrice" width="120" />
<el-table-column label="刊例价单位" align="center" prop="listPriceUnit" width="120" />
<el-table-column label="实际购买刊例价" align="right" prop="actualBuyListPrice" width="140" />
<el-table-column label="实际购买刊例价单位" align="center" prop="actualBuyListPriceUnit" width="170" />
<el-table-column label="投放数量" align="right" prop="putTotal" width="100" />
<el-table-column label="起购周期" align="right" prop="buyCycle" width="120" />
<el-table-column label="折扣" align="center" prop="discount" width="100" />
<el-table-column label="媒体总净价" align="right" prop="mediaRegularPrice" width="120" />
<el-table-column label="首次制作安装费" align="right" prop="firstInstallFee" width="150" />
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="单价" align="right" prop="unitPrice" width="100" />
<el-table-column label="发布总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="发布总净价单位" align="center" prop="totalRegularPriceUnit" width="140" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="120" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
<el-table-column label="总曝光/人次" align="center" prop="totalExposure" width="130" />
<el-table-column label="SOV" align="center" prop="sov" width="100" />
<el-table-column label="CPM" align="center" prop="cpm" width="100" />
<el-table-column label="备注" align="left" prop="remark" width="230" :show-overflow-tooltip="true" />
<el-table-column label="AB面划分" align="left" prop="ab" width="150" />
</template>
<template v-if="mediaType == 2">
<el-table-column label="城市" align="center" prop="cityName" width="90" />
<el-table-column label="资源描述" align="left" prop="resourceRemark" width="150" />
<el-table-column label="媒体名称" align="left" prop="mediaName" width="150" />
<el-table-column label="频次" align="center" prop="frequency" width="100" />
<el-table-column label="发布总量" align="right" prop="releaseTotal" width="120" />
<el-table-column label="刊例价" align="right" prop="listPrice" width="120" />
<el-table-column label="刊例价单位" align="center" prop="listPriceUnit" width="120" />
<el-table-column label="实际购买刊例价" align="right" prop="actualBuyListPrice" width="140" />
<el-table-column label="实际购买刊例价单位" align="center" prop="actualBuyListPriceUnit" width="170" />
<el-table-column label="购买周期" align="right" prop="buyCycle" width="120" />
<el-table-column label="折扣" align="center" prop="discount" width="100" />
<el-table-column label="媒体总净价" align="right" prop="mediaRegularPrice" width="120" />
<el-table-column label="首次制作安装费" align="right" prop="firstInstallFee" width="150" />
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="媒体费单价" align="right" prop="mediaFeeUnitPrice" width="130" />
<el-table-column label="制作费" align="right" prop="makeFee" width="130" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="130" />
<el-table-column label="最终媒体费优惠价" align="right" prop="finalMediaFeeDiscountPrice" width="170" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
<el-table-column label="总曝光/人次" align="center" prop="totalExposure" width="130" />
<el-table-column label="SOV" align="center" prop="sov" width="100" />
<el-table-column label="CPM" align="center" prop="cpm" width="100" />
<el-table-column label="是否亮灯" align="left" prop="hasLighting" width="130" />
<el-table-column label="单面/双面" align="left" prop="oddEven" width="130" />
<el-table-column label="中途换画制作费" align="right" prop="changeDrawMakeFee" width="150" />
<el-table-column label="备注" align="left" prop="remark" width="230" :show-overflow-tooltip="true" />
</template>
<template v-if="mediaType == 3">
<el-table-column label="城市" align="center" prop="cityName" width="90" />
<el-table-column label="媒体名称" align="left" prop="mediaName" width="150" />
<el-table-column label="频次" align="center" prop="frequency" width="100" />
<el-table-column label="发布总量" align="right" prop="releaseTotal" width="120" />
<el-table-column label="刊例价" align="right" prop="listPrice" width="120" />
<el-table-column label="刊例价单位" align="center" prop="listPriceUnit" width="120" />
<el-table-column label="最短购买周期" align="right" prop="buyCycle" width="130" />
<el-table-column label="折扣" align="center" prop="discount" width="100" />
<el-table-column label="媒体总净价" align="right" prop="mediaRegularPrice" width="120" />
<el-table-column label="首次制作安装费" align="right" prop="firstInstallFee" width="150" />
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="4周/面" align="center" prop="allAroundFace" width="120" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="130" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
<el-table-column label="总曝光/人次" align="center" prop="totalExposure" width="130" />
<el-table-column label="SOV" align="center" prop="sov" width="100" />
<el-table-column label="CPM" align="center" prop="cpm" width="100" />
<el-table-column label="备注" align="left" prop="remark" width="230" :show-overflow-tooltip="true" />
</template>
<template v-if="mediaType == 4">
<el-table-column label="城市" align="center" prop="cityName" width="90" />
<el-table-column label="线路" align="center" prop="subwayLine" width="150" />
<el-table-column label="站点" align="center" prop="station" width="130" />
<el-table-column label="级别" align="center" prop="level" width="100" />
<el-table-column label="媒体形式" align="center" prop="mediaFormat" width="120" />
<el-table-column label="媒体名称" align="left" prop="mediaName" width="150" />
<el-table-column label="频次" align="center" prop="frequency" width="100" />
<el-table-column label="刊例价" align="right" prop="listPrice" width="120" />
<el-table-column label="刊例价单位" align="center" prop="listPriceUnit" width="120" />
<el-table-column label="实际购买刊例价" align="right" prop="actualBuyListPrice" width="140" />
<el-table-column label="实际购买刊例价单位" align="center" prop="actualBuyListPriceUnit" width="170" />
<el-table-column label="短期附加费" align="right" prop="shortTermExtraCharge" width="120" />
<el-table-column label="创意附加费" align="right" prop="ideaExtraCharge" width="120" />
<el-table-column label="起投周期" align="right" prop="buyCycle" width="120" />
<el-table-column label="投放周期" align="right" prop="deliverCycle" width="120" />
<el-table-column label="购买数量" align="right" prop="buyTotal" width="120" />
<el-table-column label="购买数量单位" align="center" prop="buyTotalUnit" width="130" />
<el-table-column label="折扣" align="center" prop="discount" width="100" />
<el-table-column label="媒体总净价" align="right" prop="mediaRegularPrice" width="120" />
<el-table-column label="媒体总净价单位" align="center" prop="mediaRegularPriceUnit" width="140" />
<el-table-column label="常规制作费" align="right" prop="commonMakeFee" width="130" />
<el-table-column label="创意制作费" align="right" prop="ideaMakeFee" width="130" />
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="底价" align="right" prop="floorPrice" width="120" />
<el-table-column label="低价总" align="right" prop="minPrice" width="120" />
<el-table-column label="制作费" align="right" prop="makeFee" width="130" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="130" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
<el-table-column label="发布期内总曝光人次" align="center" prop="totalExposure" width="130" />
<el-table-column label="同站内同类媒体数量或列车总量" align="center" prop="sameSiteMediaNum" width="150" />
<el-table-column label="SOV" align="center" prop="sov" width="100" />
<el-table-column label="CPM" align="center" prop="cpm" width="100" />
<el-table-column label="覆盖热区" align="left" prop="coverHotZone" width="150" />
<el-table-column label="备注" align="left" prop="remark" width="230" :show-overflow-tooltip="true" />
</template>
<template v-if="mediaType == 5">
<el-table-column label="城市" align="center" prop="cityName" width="90" />
<el-table-column label="场站" align="center" prop="station" width="130" />
<el-table-column label="媒体位置" align="left" prop="mediaName" width="150" />
<el-table-column label="频次" align="center" prop="frequency" width="100" />
<el-table-column label="发布总量" align="right" prop="releaseTotal" width="120" />
<el-table-column label="刊例价" align="right" prop="listPrice" width="120" />
<el-table-column label="刊例价单位" align="center" prop="listPriceUnit" width="120" />
<el-table-column label="购买周期" align="right" prop="buyCycle" width="120" />
<el-table-column label="折扣" align="center" prop="discount" width="100" />
<el-table-column label="媒体总净价" align="right" prop="mediaRegularPrice" width="120" />
<el-table-column label="首次制作安装费" align="right" prop="firstInstallFee" width="150" />
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="客流量/人次" align="center" prop="dailyAvgPeopleFlow" width="130" />
<el-table-column label="总曝光/人次" align="center" prop="totalExposure" width="130" />
<el-table-column label="SOV" align="center" prop="sov" width="100" />
<el-table-column label="CPM" align="center" prop="cpm" width="100" />
<el-table-column label="成本折扣" align="center" prop="costDiscount" width="100" />
<el-table-column label="成本" align="right" prop="cost" width="120" />
<el-table-column label="备注" align="left" prop="remark" width="230" :show-overflow-tooltip="true" />
</template>
<template v-if="mediaType == 6">
<el-table-column label="城市" align="center" prop="cityName" width="90" />
<el-table-column label="媒体名称" align="left" prop="mediaName" width="150" />
<el-table-column label="频次" align="center" prop="frequency" width="100" />
<el-table-column label="发布总量" align="right" prop="releaseTotal" width="120" />
<el-table-column label="刊例价" align="right" prop="listPrice" width="120" />
<el-table-column label="刊例价单位" align="center" prop="listPriceUnit" width="120" />
<el-table-column label="实际购买刊例价" align="right" prop="actualBuyListPrice" width="140" />
<el-table-column label="实际购买刊例价单位" align="center" prop="actualBuyListPriceUnit" width="170" />
<el-table-column label="购买周期" align="right" prop="buyCycle" width="120" />
<el-table-column label="折扣" align="center" prop="discount" width="100" />
<el-table-column label="媒体总净价" align="right" prop="mediaRegularPrice" width="120" />
<el-table-column label="首次制作安装费" align="right" prop="firstInstallFee" width="150" />
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="130" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
<el-table-column label="总曝光/人次" align="center" prop="totalExposure" width="130" />
<el-table-column label="SOV" align="center" prop="sov" width="100" />
<el-table-column label="CPM" align="center" prop="cpm" width="100" />
<el-table-column label="成本折扣" align="center" prop="costDiscount" width="100" />
<el-table-column label="备注" align="left" prop="remark" width="230" :show-overflow-tooltip="true" />
</template>
<template v-if="mediaType == 7">
<el-table-column label="城市" align="center" prop="cityName" width="90" />
<el-table-column label="媒体名称" align="left" prop="mediaName" width="150" />
<el-table-column label="频次" align="center" prop="frequency" width="100" />
<el-table-column label="发布总量" align="right" prop="releaseTotal" width="120" />
<el-table-column label="刊例价" align="right" prop="listPrice" width="120" />
<el-table-column label="刊例价单位" align="center" prop="listPriceUnit" width="120" />
<el-table-column label="实际购买刊例价" align="right" prop="actualBuyListPrice" width="140" />
<el-table-column label="实际购买刊例价单位" align="center" prop="actualBuyListPriceUnit" width="170" />
<el-table-column label="购买周期" align="right" prop="buyCycle" width="120" />
<el-table-column label="折扣" align="center" prop="discount" width="100" />
<el-table-column label="媒体总净价" align="right" prop="mediaRegularPrice" width="120" />
<el-table-column label="首次制作安装费" align="right" prop="firstInstallFee" width="150" />
<el-table-column label="总制作费" align="right" prop="totalMakeFee" width="130" />
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="130" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
<el-table-column label="总曝光/人次" align="center" prop="totalExposure" width="130" />
<el-table-column label="SOV" align="center" prop="sov" width="100" />
<el-table-column label="CPM" align="center" prop="cpm" width="100" />
<el-table-column label="成本折扣" align="right" prop="costDiscount" width="100" />
<el-table-column label="备注" align="left" prop="remark" width="230" :show-overflow-tooltip="true" />
</template>
<el-table-column label=" 比对结果" align="center" width="90">
<template #default="scope">
<el-badge is-dot class="mybadge1"></el-badge>
<el-text class="myMedioStatus1">新增</el-text>
<template v-if="scope.row.compareResult == '新增' || scope.row.historyPriceCompareResult == '新增'">
<el-badge is-dot class="mybadge1"></el-badge>
<el-text class="myMedioStatus1">{{ scope.row.compareResult ||
scope.row.historyPriceCompareResult }}</el-text>
</template>
<template
v-else-if="scope.row.compareResult == '差异' || scope.row.historyPriceCompareResult == '差异'">
<el-badge is-dot class="mybadge2"></el-badge>
<el-text class="myMedioStatus2">{{ scope.row.compareResult ||
scope.row.historyPriceCompareResult }}</el-text>
</template>
<template v-else>
<el-badge is-dot class="mybadge3"></el-badge>
<el-text class="myMedioStatus3">{{ scope.row.compareResult ||
scope.row.historyPriceCompareResult }}</el-text>
</template>
</template>
</el-table-column>
<el-table-column label="操作" :width="160" align="center">
<el-table-column label="操作" :width="80" align="center">
<template #default="scope">
<el-button link type="primary" v-hasPermi="['system:pptTemplate:remove']">
<el-button link type="primary" @click="handleDeleteResult(scope.row)">
删除
</el-button>
</template>
@ -101,7 +291,8 @@
<div class="dialog-footer">
<el-button class="my-cancel-btn" @click="handleCloseModal"> </el-button>
<el-button class="my-confirm-btn" type="primary" @click="handleSaveHistoryPrice">存为历史报价</el-button>
<el-button class="my-confirm-btn" type="primary">导出Excel</el-button>
<el-button class="my-confirm-btn" type="primary"
@click="handleExportCalibraTionResult">导出Excel</el-button>
</div>
</template>
</el-dialog>
@ -111,7 +302,7 @@
<script setup>
import { onMounted, nextTick, defineEmits, ref } from 'vue'
import { Close } from '@element-plus/icons-vue'
import { calibraTionPage, calibraTionImport, calibraTionResult, deleteCalibraTionTask, saveHistoryPrice } from "@/api/calibration"
import { calibraTionPage, calibraTionImport, calibraTionResult, deleteCalibraTionResult, saveHistoryPrice, exportCalibraTionResult } from "@/api/calibration"
@ -134,6 +325,7 @@ const taskId = ref(null)
const taskList = ref([])
//
const resultRecords = ref([])
const mediaType = ref(1)
const total = ref(0)
const loading = ref(false)
const data = reactive({
@ -195,10 +387,22 @@ const removeDocUpload = (file, fileList) => {
const handleResultOption = (row) => {
calibraTionResult({ taskId: row.id }).then(res => {
taskId.value = row.id
resultRecords.value = res.data
if (res.data.length > 0) {
mediaType.value = res.data[0].mediaType
resultRecords.value = res.data
} else resultRecords.value = []
open.value = true
})
}
//
const reloadResult = () => {
calibraTionResult({ taskId: taskId.value }).then(res => {
if (res.data.length > 0) {
mediaType.value = res.data[0].mediaType
resultRecords.value = res.data
} else resultRecords.value = []
})
}
//
const handleCloseModal = () => {
taskId.value = null
@ -211,12 +415,42 @@ const handleSaveHistoryPrice = () => {
handleCloseModal()
})
}
//
const handleDeleteTask = (row) => {
proxy.$modal.confirm('是否确认该任务?').then(function () {
return deleteCalibraTionTask({ id: row.id })
//
const handleExportCalibraTionResult = () => {
exportCalibraTionResult({ taskId: taskId.value }).then(res => {
const downLoadName = '比对结果_' + getCurrentTime() + '.xlsx'
// a
const a = document.createElement('a')
a.href = URL.createObjectURL(res)
// adownload
a.setAttribute('download', downLoadName)
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
proxy.$modal.msgSuccess("导出成功")
handleCloseModal()
})
}
const getCurrentTime = () => {
//
var getTime = new Date().getTime(); //
var time = new Date(getTime); //
var year = time.getFullYear(); //
var month = (time.getMonth() + 1).toString().padStart(2, '0'); //
var date = time.getDate().toString().padStart(2, '0'); //
var hour = time.getHours().toString().padStart(2, '0'); //
var minute = time.getMinutes().toString().padStart(2, '0'); //
var second = time.getSeconds().toString().padStart(2, '0'); //
var gettime = year + month + date + hour + minute + second
return gettime
}
//
const handleDeleteResult = (row) => {
proxy.$modal.confirm('是否确认该结果?').then(function () {
return deleteCalibraTionResult({ id: row.id })
}).then(() => {
getTaskRecordPageList()
reloadResult()
proxy.$modal.msgSuccess("删除成功")
}).catch(() => { })
}
@ -333,4 +567,18 @@ defineExpose({
font-size: 16px;
color: #E12500;
}
.mybadge3 .el-badge__content.is-dot {
width: 6px;
height: 6px;
background-color: #67C23A;
margin-right: 10px;
}
.myMedioStatus3 {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 16px;
color: #67C23A;
}
</style>