提交代码
This commit is contained in:
parent
07307b7391
commit
02f3e48a1f
|
|
@ -208,7 +208,8 @@
|
||||||
<div class="loader-section section-right"></div>
|
<div class="loader-section section-right"></div>
|
||||||
<div class="load_title">正在加载系统资源,请耐心等待</div>
|
<div class="load_title">正在加载系统资源,请耐心等待</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script src="/config.js"></script>
|
||||||
<script type="module" src="/src/main.js"></script>
|
<script type="module" src="/src/main.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|
|
||||||
6
public/config.js
Normal file
6
public/config.js
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
window._CONFIG = {
|
||||||
|
// 高德api配置
|
||||||
|
apiKey: 'f5b170e2332903225896a7290b90793a',
|
||||||
|
// 密钥
|
||||||
|
secretKey: 'a157b9d8963b598f40023f5469d3e73c'
|
||||||
|
}
|
||||||
102
src/api/mediaLibrary.js
Normal file
102
src/api/mediaLibrary.js
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取媒体分页列表
|
||||||
|
export function mediaPageList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/pageList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 保存媒体信息
|
||||||
|
export function addMedia(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/save',
|
||||||
|
method: 'post',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 编辑媒体信息
|
||||||
|
export function updateMedia(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/update',
|
||||||
|
method: 'post',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查看单条媒体信息
|
||||||
|
export function mediaDetail(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/detail',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 删除单条媒体信息
|
||||||
|
export function deleteMedia(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/deleteMedia',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 废除媒体信息
|
||||||
|
export function mediaCancel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/cancel',
|
||||||
|
method: 'post',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 媒体日志信息
|
||||||
|
export function mediaOptionLog(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/getOperateLog',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取导出Excel字段
|
||||||
|
export function mediaExcelField(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/excel/field',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 动态导出Excel
|
||||||
|
export function exportMediaExcel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/export/dynamic/excel',
|
||||||
|
method: 'post',
|
||||||
|
data: query,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取导出PPT字段
|
||||||
|
export function mediaPPTField(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/ppt/field',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 动态导出PPT
|
||||||
|
export function exportMediaPPT(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/export/dynamic/ppt',
|
||||||
|
method: 'post',
|
||||||
|
data: query,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取媒体历史报价
|
||||||
|
export function mediaPrice(query) {
|
||||||
|
return request({
|
||||||
|
url: '/media/getPrice',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -71,7 +71,8 @@ const emit = defineEmits(['setFormFile'])
|
||||||
// 文件列表初始化
|
// 文件列表初始化
|
||||||
const fileList = ref([])
|
const fileList = ref([])
|
||||||
const cardfileList = ref([])
|
const cardfileList = ref([])
|
||||||
// 文件类型 1-营业执照 2-媒体权属 9-其它附件
|
// 文件类型 1-营业执照 2-媒体权属 9-其它附件
|
||||||
|
// 批文文件-1,独家授权文件-2,媒体行业授权文件-3,媒体归属附件-4,曾经媒体照片-5,图片上传-6,视频上传-7,盖章刊例-8, 资质文件-9, 媒体链条-10, 刊例照片-11,MR和制作要求-12
|
||||||
const _fileType = ref('1')
|
const _fileType = ref('1')
|
||||||
const _accept = ref('*/*')
|
const _accept = ref('*/*')
|
||||||
const baseUrl = import.meta.env.VITE_APP_BASE_API
|
const baseUrl = import.meta.env.VITE_APP_BASE_API
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { createApp } from 'vue'
|
import { createApp } from 'vue'
|
||||||
|
|
||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
|
|
||||||
|
|
|
||||||
278
src/views/mediaLibrary/components/accessControlPrice.vue
Normal file
278
src/views/mediaLibrary/components/accessControlPrice.vue
Normal file
|
|
@ -0,0 +1,278 @@
|
||||||
|
<!-- 门禁报价 -->
|
||||||
|
<template>
|
||||||
|
<el-button type="primary" class="submitBtn" v-show="showOptionColumn" style="margin-bottom: 10px;" @click="handleAddPrice">添加报价信息</el-button>
|
||||||
|
<el-table v-loading="loading" :data="quotationList" height="362px">
|
||||||
|
<el-table-column label="序号" align="center" width="80">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="城市" align="left" prop="cityName" width="150" />
|
||||||
|
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200" />
|
||||||
|
<el-table-column label="频次" align="left" prop="frequency" width="150" />
|
||||||
|
<el-table-column label="刊例价" align="left" prop="listPrice" width="180" />
|
||||||
|
<el-table-column label="刊例价单位" align="left" prop="listPriceUnit" width="150" />
|
||||||
|
<el-table-column label="实际购买频次" align="left" prop="actualBuyFrequency" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价" align="left" prop="actualBuyListPrice" width="150" />
|
||||||
|
<el-table-column label="投放数量" align="left" prop="putTotal" width="150" />
|
||||||
|
<el-table-column label="起购周期" align="left" prop="buyCycle" width="150" />
|
||||||
|
<el-table-column label="折扣" align="left" prop="discount" width="150" />
|
||||||
|
<el-table-column label="媒体总净价" align="center" prop="mediaRegularPrice" width="230" />
|
||||||
|
<el-table-column label="首次制作安装费" align="center" prop="firstInstallFee" width="230" />
|
||||||
|
<el-table-column label="总制作费" align="center" prop="totalMakeFee" width="160" />
|
||||||
|
<el-table-column label="单价" align="center" prop="unitPrice" width="160" />
|
||||||
|
<el-table-column label="发布总净价" align="center" prop="totalRegularPrice" width="130" />
|
||||||
|
<el-table-column label="发布总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
|
||||||
|
<el-table-column label="媒体费总价" align="center" 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="150" />
|
||||||
|
<el-table-column label="CPM" align="center" prop="cpm" width="150" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<el-table-column label="AB面划分" align="center" prop="ab" width="150" />
|
||||||
|
<!-- <el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="录入时间" align="center" prop="postCode" width="150" /> -->
|
||||||
|
<el-table-column label="操作" width="56" align="center" fixed="right" v-show="showOptionColumn">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-popover popper-class="my_popover" placement="left-start">
|
||||||
|
<div class="popBtns" @click="handleUpdate(scope.$index, scope.row)">修改</div>
|
||||||
|
<div class="popBtns" @click="handleDelete(scope.$index)">删除</div>
|
||||||
|
<template #reference>
|
||||||
|
<img style="cursor: pointer;" :src="scope.row.currentImageSrc"
|
||||||
|
@mouseenter="scope.row.currentImageSrc = hoverImageSrc"
|
||||||
|
@mouseleave="scope.row.currentImageSrc = defaultImageSrc" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 报价表单 -->
|
||||||
|
<el-dialog :title="_title" v-model="open" width="1350px" class="my_dialog" align-center :destroy-on-close="true"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="150px" label-position="top"
|
||||||
|
class="myInsertForm">
|
||||||
|
<el-row :gutter="30" class="my_form_row">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="城市" prop="cityName">
|
||||||
|
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体名称" prop="mediaName">
|
||||||
|
<el-input v-model="form.mediaName" placeholder="请输入媒体名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="频次" prop="frequency">
|
||||||
|
<el-input v-model="form.frequency" placeholder="请输入频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价" prop="listPrice">
|
||||||
|
<el-input v-model="form.listPrice" placeholder="请输入刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价单位" prop="listPriceUnit">
|
||||||
|
<el-input v-model="form.listPriceUnit" placeholder="请输入刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买频次" prop="actualBuyFrequency">
|
||||||
|
<el-input v-model="form.actualBuyFrequency" placeholder="请输入实际购买频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价" prop="actualBuyListPrice">
|
||||||
|
<el-input v-model="form.actualBuyListPrice" placeholder="请输入实际购买刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="投放数量" prop="putTotal">
|
||||||
|
<el-input-number v-model="form.putTotal" placeholder="请输入投放数量" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="起购周期" prop="buyCycle">
|
||||||
|
<el-input-number v-model="form.buyCycle" placeholder="请输入起购周期" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="折扣" prop="discount">
|
||||||
|
<el-input v-model="form.discount" placeholder="请输入折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价" prop="mediaRegularPrice">
|
||||||
|
<el-input v-model="form.mediaRegularPrice" placeholder="请输入媒体总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="首次制作安装费" prop="firstInstallFee">
|
||||||
|
<el-input v-model="form.firstInstallFee" placeholder="请输入首次制作安装费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总制作费" prop="totalMakeFee">
|
||||||
|
<el-input v-model="form.totalMakeFee" placeholder="请输入总制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单价" prop="unitPrice">
|
||||||
|
<el-input v-model="form.unitPrice" placeholder="请输入单价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发布总净价" prop="totalRegularPrice">
|
||||||
|
<el-input v-model="form.totalRegularPrice" placeholder="请输入发布总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发布总净价单位" prop="totalRegularPriceUnit">
|
||||||
|
<el-input v-model="form.totalRegularPriceUnit" placeholder="请输入发布总净价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体费总价" prop="mediaFeeTotalPrice">
|
||||||
|
<el-input v-model="form.mediaFeeTotalPrice" placeholder="请输入媒体费总价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单日覆盖人流量" prop="dailyAvgPeopleFlow">
|
||||||
|
<el-input v-model="form.dailyAvgPeopleFlow" placeholder="请输入单日覆盖人流量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总曝光/人次" prop="totalExposure">
|
||||||
|
<el-input v-model="form.totalExposure" placeholder="请输入总曝光/人次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="SOV" prop="sov">
|
||||||
|
<el-input v-model="form.sov" placeholder="请输入SOV" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="CPM" prop="cpm">
|
||||||
|
<el-input v-model="form.cpm" placeholder="请输入CPM" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="AB面划分" prop="ab">
|
||||||
|
<el-input v-model="form.ab" placeholder="请输入AB面划分" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" :rows="5" type="textarea" placeholder="请输入备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button class="my-cancel-btn" @click="open = false">取 消</el-button>
|
||||||
|
<el-button class="my-confirm-btn" type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, nextTick, defineEmits, ref } from 'vue'
|
||||||
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
|
import { mediaPrice } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
const emit = defineEmits(['setCompetOfferMediaPrice']);
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
|
||||||
|
const editRowIndex = ref(null)
|
||||||
|
const showOptionColumn = ref(true)
|
||||||
|
// 报价表格操作图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
const _title = ref(null)
|
||||||
|
const open = ref(false)
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
rules: {
|
||||||
|
cityName: [{ required: true, message: "请输入城市", trigger: "blur" }],
|
||||||
|
mediaName: [{ required: true, message: "请输入媒体名称", trigger: "blur" }],
|
||||||
|
frequency: [{ required: true, message: "请输入频次", trigger: "blur" }],
|
||||||
|
listPrice: [{ required: true, message: "请输入刊例价", trigger: "blur" }],
|
||||||
|
listPriceUnit: [{ required: true, message: "请输入刊例价单位", trigger: "blur" }],
|
||||||
|
actualBuyFrequency: [{ required: true, message: "请输入实际购买频次", trigger: "blur" }],
|
||||||
|
actualBuyListPrice: [{ required: true, message: "请输入实际购买刊例价", trigger: "blur" }],
|
||||||
|
putTotal: [{ required: true, message: "请输入投放数量", trigger: "change" }],
|
||||||
|
buyCycle: [{ required: true, message: "请输入起购周期", trigger: "change" }],
|
||||||
|
discount: [{ required: true, message: "请输入折扣", trigger: "blur" }],
|
||||||
|
mediaRegularPrice: [{ required: true, message: "请输入媒体总净价", trigger: "blur" }],
|
||||||
|
firstInstallFee: [{ required: true, message: "请输入首次制作安装费", trigger: "blur" }],
|
||||||
|
totalMakeFee: [{ required: true, message: "请输入总制作费", trigger: "blur" }],
|
||||||
|
unitPrice: [{ required: true, message: "请输入单价", trigger: "blur" }],
|
||||||
|
totalRegularPrice: [{ required: true, message: "请输入发布总净价", trigger: "blur" }],
|
||||||
|
totalRegularPriceUnit: [{ required: true, message: "请输入发布总净价单位", trigger: "blur" }],
|
||||||
|
mediaFeeTotalPrice: [{ required: true, message: "请输入媒体费总价", trigger: "blur" }],
|
||||||
|
dailyAvgPeopleFlow: [{ required: true, message: "请输入单日覆盖人流量", trigger: "blur" }],
|
||||||
|
totalExposure: [{ required: true, message: "请输入总曝光/人次", trigger: "blur" }],
|
||||||
|
sov: [{ required: true, message: "请输入SOV", trigger: "blur" }],
|
||||||
|
cpm: [{ required: true, message: "请输入CPM", trigger: "blur" }],
|
||||||
|
ab: [{ required: true, message: "请输入AB面划分", trigger: "blur" }],
|
||||||
|
remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { form, rules } = toRefs(data)
|
||||||
|
// 报价信息列表
|
||||||
|
const loading = ref(false)
|
||||||
|
const quotationList = ref([])
|
||||||
|
const handleAddPrice = () => {
|
||||||
|
_title.value = '添加报价信息'
|
||||||
|
form.value.mediaType = 1
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleUpdate = (index, row) => {
|
||||||
|
_title.value = '编辑报价信息'
|
||||||
|
editRowIndex.value = index
|
||||||
|
form.value = row
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
proxy.$modal.confirm('是否确认删除这条报价信息吗?').then(() => {
|
||||||
|
quotationList.value.splice(index, 1)
|
||||||
|
emit('setCompetOfferMediaPrice', 1, quotationList.value)
|
||||||
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
|
}).catch(() => { })
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleSubmit = () => {
|
||||||
|
proxy.$refs["ruleFormRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.currentImageSrc = defaultImageSrc.value
|
||||||
|
if (editRowIndex.value !== null && editRowIndex.value !== undefined) {
|
||||||
|
quotationList.value[editRowIndex.value] = form.value
|
||||||
|
} else {
|
||||||
|
quotationList.value.push(form.value)
|
||||||
|
}
|
||||||
|
form.value = {}
|
||||||
|
open.value = false
|
||||||
|
emit('setCompetOfferMediaPrice', 1, quotationList.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取历史报价
|
||||||
|
const getMediaPrice = (_mediaId, _showOptionColumn) => {
|
||||||
|
showOptionColumn.value = _showOptionColumn
|
||||||
|
if (_mediaId) {
|
||||||
|
mediaPrice({ mediaId: _mediaId }).then(res => {
|
||||||
|
console.log('历史报价', res)
|
||||||
|
quotationList.value = res.data.filter(item => item.fileType == 1)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 暴露方法\属性给父组件
|
||||||
|
defineExpose({
|
||||||
|
getMediaPrice
|
||||||
|
});
|
||||||
|
</script>
|
||||||
257
src/views/mediaLibrary/components/barrierGatePrice.vue
Normal file
257
src/views/mediaLibrary/components/barrierGatePrice.vue
Normal file
|
|
@ -0,0 +1,257 @@
|
||||||
|
<!-- 道闸报价 -->
|
||||||
|
<template>
|
||||||
|
<el-button type="primary" class="submitBtn" v-show="showOptionColumn" style="margin-bottom: 10px;" @click="handleAddPrice">添加报价信息</el-button>
|
||||||
|
<el-table v-loading="loading" :data="quotationList" height="362px">
|
||||||
|
<el-table-column label="序号" align="center" width="80">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="城市" align="left" prop="cityName" width="150" />
|
||||||
|
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200" />
|
||||||
|
<el-table-column label="频次" align="left" prop="frequency" width="150" />
|
||||||
|
<el-table-column label="发布总量" align="left" prop="releaseTotal" width="150" />
|
||||||
|
<el-table-column label="刊例价" align="left" prop="listPrice" width="180" />
|
||||||
|
<el-table-column label="刊例价单位" align="left" prop="listPriceUnit" width="150" />
|
||||||
|
<el-table-column label="最短购买周期" align="left" prop="buyCycle" width="150" />
|
||||||
|
<el-table-column label="折扣" align="left" prop="discount" width="150" />
|
||||||
|
<el-table-column label="媒体总净价" align="center" prop="mediaRegularPrice" width="230" />
|
||||||
|
<el-table-column label="首次制作安装费" align="center" prop="firstInstallFee" width="230" />
|
||||||
|
<el-table-column label="总制作费" align="center" prop="totalMakeFee" width="160" />
|
||||||
|
<el-table-column label="总净价" align="center" prop="totalRegularPrice" width="130" />
|
||||||
|
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
|
||||||
|
<el-table-column label="4周/面" align="center" prop="allAroundFace" width="130" />
|
||||||
|
<el-table-column label="媒体费总价" align="center" 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="150" />
|
||||||
|
<el-table-column label="CPM" align="center" prop="cpm" width="150" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<!-- <el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="录入时间" align="center" prop="postCode" width="150" /> -->
|
||||||
|
<el-table-column label="操作" width="56" align="center" fixed="right" v-show="showOptionColumn">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-popover popper-class="my_popover" placement="left-start">
|
||||||
|
<div class="popBtns" @click="handleUpdate(scope.$index, scope.row)">修改</div>
|
||||||
|
<div class="popBtns" @click="handleDelete(scope.$index)">删除</div>
|
||||||
|
<template #reference>
|
||||||
|
<img style="cursor: pointer;" :src="scope.row.currentImageSrc"
|
||||||
|
@mouseenter="scope.row.currentImageSrc = hoverImageSrc"
|
||||||
|
@mouseleave="scope.row.currentImageSrc = defaultImageSrc" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 报价表单 -->
|
||||||
|
<el-dialog :title="_title" v-model="open" width="1350px" class="my_dialog" align-center :destroy-on-close="true"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="150px" label-position="top"
|
||||||
|
class="myInsertForm">
|
||||||
|
<el-row :gutter="30" class="my_form_row">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="城市" prop="cityName">
|
||||||
|
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体名称" prop="mediaName">
|
||||||
|
<el-input v-model="form.mediaName" placeholder="请输入媒体名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="频次" prop="frequency">
|
||||||
|
<el-input v-model="form.frequency" placeholder="请输入频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发布总量" prop="releaseTotal">
|
||||||
|
<el-input v-model="form.releaseTotal" placeholder="请输入发布总量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价" prop="listPrice">
|
||||||
|
<el-input v-model="form.listPrice" placeholder="请输入刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价单位" prop="listPriceUnit">
|
||||||
|
<el-input v-model="form.listPriceUnit" placeholder="请输入刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="最短购买周期" prop="buyCycle">
|
||||||
|
<el-input-number v-model="form.buyCycle" placeholder="请输入最短购买周期" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="折扣" prop="discount">
|
||||||
|
<el-input v-model="form.discount" placeholder="请输入折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价" prop="mediaRegularPrice">
|
||||||
|
<el-input v-model="form.mediaRegularPrice" placeholder="请输入媒体总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="首次制作安装费" prop="firstInstallFee">
|
||||||
|
<el-input v-model="form.firstInstallFee" placeholder="请输入首次制作安装费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总制作费" prop="totalMakeFee">
|
||||||
|
<el-input v-model="form.totalMakeFee" placeholder="请输入总制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价" prop="totalRegularPrice">
|
||||||
|
<el-input v-model="form.totalRegularPrice" placeholder="请输入总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价单位" prop="totalRegularPriceUnit">
|
||||||
|
<el-input v-model="form.totalRegularPriceUnit" placeholder="请输入总净价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="4周/面" prop="allAroundFace">
|
||||||
|
<el-input v-model="form.allAroundFace" placeholder="请输入4周/面" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体费总价" prop="mediaFeeTotalPrice">
|
||||||
|
<el-input v-model="form.mediaFeeTotalPrice" placeholder="请输入媒体费总价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单日覆盖人流量" prop="dailyAvgPeopleFlow">
|
||||||
|
<el-input v-model="form.dailyAvgPeopleFlow" placeholder="请输入单日覆盖人流量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总曝光/人次" prop="totalExposure">
|
||||||
|
<el-input v-model="form.totalExposure" placeholder="请输入总曝光/人次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="SOV" prop="sov">
|
||||||
|
<el-input v-model="form.sov" placeholder="请输入SOV" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="CPM" prop="cpm">
|
||||||
|
<el-input v-model="form.cpm" placeholder="请输入CPM" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" :rows="5" type="textarea" placeholder="请输入备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button class="my-cancel-btn" @click="open = false">取 消</el-button>
|
||||||
|
<el-button class="my-confirm-btn" type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, nextTick, defineEmits, ref } from 'vue'
|
||||||
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
|
import { mediaPrice } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
const emit = defineEmits(['setCompetOfferMediaPrice']);
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const editRowIndex = ref(null)
|
||||||
|
const showOptionColumn = ref(true)
|
||||||
|
// 报价表格操作图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
const _title = ref(null)
|
||||||
|
const open = ref(false)
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
rules: {
|
||||||
|
cityName: [{ required: true, message: "请输入城市", trigger: "blur" }],
|
||||||
|
mediaName: [{ required: true, message: "请输入媒体名称", trigger: "blur" }],
|
||||||
|
frequency: [{ required: true, message: "请输入频次", trigger: "blur" }],
|
||||||
|
releaseTotal: [{ required: true, message: "请输入发布总量", trigger: "blur" }],
|
||||||
|
listPrice: [{ required: true, message: "请输入刊例价", trigger: "blur" }],
|
||||||
|
listPriceUnit: [{ required: true, message: "请输入刊例价单位", trigger: "blur" }],
|
||||||
|
buyCycle: [{ required: true, message: "请输入最短购买周期", trigger: "change" }],
|
||||||
|
discount: [{ required: true, message: "请输入折扣", trigger: "blur" }],
|
||||||
|
mediaRegularPrice: [{ required: true, message: "请输入媒体总净价", trigger: "blur" }],
|
||||||
|
firstInstallFee: [{ required: true, message: "请输入首次制作安装费", trigger: "blur" }],
|
||||||
|
totalMakeFee: [{ required: true, message: "请输入总制作费", trigger: "blur" }],
|
||||||
|
unitPrice: [{ required: true, message: "请输入单价", trigger: "blur" }],
|
||||||
|
totalRegularPrice: [{ required: true, message: "请输入总净价", trigger: "blur" }],
|
||||||
|
totalRegularPriceUnit: [{ required: true, message: "请输入总净价单位", trigger: "blur" }],
|
||||||
|
allAroundFace: [{ required: true, message: "请输入4周/面", trigger: "blur" }],
|
||||||
|
mediaFeeTotalPrice: [{ required: true, message: "请输入媒体费总价", trigger: "blur" }],
|
||||||
|
dailyAvgPeopleFlow: [{ required: true, message: "请输入单日覆盖人流量", trigger: "blur" }],
|
||||||
|
totalExposure: [{ required: true, message: "请输入总曝光/人次", trigger: "blur" }],
|
||||||
|
sov: [{ required: true, message: "请输入SOV", trigger: "blur" }],
|
||||||
|
cpm: [{ required: true, message: "请输入CPM", trigger: "blur" }],
|
||||||
|
remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { form, rules } = toRefs(data)
|
||||||
|
// 报价信息列表
|
||||||
|
const loading = ref(false)
|
||||||
|
const quotationList = ref([])
|
||||||
|
const handleAddPrice = () => {
|
||||||
|
_title.value = '添加报价信息'
|
||||||
|
form.value.mediaType = 3
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleUpdate = (index, row) => {
|
||||||
|
_title.value = '编辑报价信息'
|
||||||
|
editRowIndex.value = index
|
||||||
|
form.value = row
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
proxy.$modal.confirm('是否确认删除这条报价信息吗?').then(() => {
|
||||||
|
quotationList.value.splice(index, 1)
|
||||||
|
emit('setCompetOfferMediaPrice', 3, quotationList.value)
|
||||||
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
|
}).catch(() => { })
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleSubmit = () => {
|
||||||
|
proxy.$refs["ruleFormRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.currentImageSrc = defaultImageSrc.value
|
||||||
|
if (editRowIndex.value !== null && editRowIndex.value !== undefined) {
|
||||||
|
quotationList.value[editRowIndex.value] = form.value
|
||||||
|
} else {
|
||||||
|
quotationList.value.push(form.value)
|
||||||
|
}
|
||||||
|
form.value = {}
|
||||||
|
open.value = false
|
||||||
|
emit('setCompetOfferMediaPrice', 3, quotationList.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取历史报价
|
||||||
|
const getMediaPrice = (_mediaId, _showOptionColumn) => {
|
||||||
|
showOptionColumn.value = _showOptionColumn
|
||||||
|
if (_mediaId) {
|
||||||
|
mediaPrice({ mediaId: _mediaId }).then(res => {
|
||||||
|
console.log('历史报价', res)
|
||||||
|
quotationList.value = res.data.filter(item => item.fileType == 3)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 暴露方法\属性给父组件
|
||||||
|
defineExpose({
|
||||||
|
getMediaPrice
|
||||||
|
});
|
||||||
|
</script>
|
||||||
291
src/views/mediaLibrary/components/competitiveOffer.vue
Normal file
291
src/views/mediaLibrary/components/competitiveOffer.vue
Normal file
|
|
@ -0,0 +1,291 @@
|
||||||
|
<!-- 优势媒体报价 -->
|
||||||
|
<template>
|
||||||
|
<el-button type="primary" class="submitBtn" v-show="showOptionColumn" style="margin-bottom: 10px;" @click="handleAddPrice">添加报价信息</el-button>
|
||||||
|
<el-table v-loading="loading" :data="quotationList" height="362px">
|
||||||
|
<el-table-column label="序号" align="center" width="60">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="年度" align="left" prop="mediaYear" width="100" />
|
||||||
|
<el-table-column label="城市/市场" align="left" prop="cityName" width="150" />
|
||||||
|
<el-table-column label="媒体大类" align="left" prop="mediaCategory" width="150" />
|
||||||
|
<el-table-column label="媒体形式/名称" align="left" prop="mediaName" width="200" />
|
||||||
|
<el-table-column label="频次" align="left" prop="frequency" width="150" />
|
||||||
|
<el-table-column label="统一对外刊例价" align="left" prop="listPrice" width="160" />
|
||||||
|
<el-table-column label="单位" align="left" prop="listPriceUnit" width="150" />
|
||||||
|
<el-table-column label="实际购买频次" align="left" prop="actualBuyFrequency" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价" align="left" prop="actualBuyListPrice" width="150" />
|
||||||
|
<el-table-column label="购买周期" align="left" prop="buyCycle" width="150" />
|
||||||
|
<el-table-column label="折扣" align="left" prop="discount" width="150" />
|
||||||
|
<el-table-column label="媒体总净价" align="center" prop="mediaRegularPrice" width="230" />
|
||||||
|
<el-table-column label="总制作费" align="center" prop="totalMakeFee" width="160" />
|
||||||
|
<el-table-column label="总净价" align="center" prop="totalRegularPrice" width="130" />
|
||||||
|
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
|
||||||
|
<el-table-column label="SOV" align="center" prop="sov" width="150" />
|
||||||
|
<el-table-column label="CPM" align="center" prop="cpm" width="150" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<el-table-column label="是否框内" align="center" prop="hasInBox" width="150">
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.hasInBox == 0">否</span>
|
||||||
|
<span v-if="scope.row.hasInBox == 1">是</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="成本" align="center" prop="cost" width="150" />
|
||||||
|
<el-table-column label="制作成本" align="center" prop="makeCost" width="150" />
|
||||||
|
<el-table-column label="供应商" align="center" prop="supplier" width="150" />
|
||||||
|
<el-table-column label="项目名称" align="left" prop="projectName" width="150" />
|
||||||
|
<!-- <el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="录入时间" align="center" prop="postCode" width="150" /> -->
|
||||||
|
<el-table-column label="操作" width="56" align="center" fixed="right" v-show="showOptionColumn">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-popover popper-class="my_popover" placement="left-start">
|
||||||
|
<div class="popBtns" @click="handleUpdate(scope.$index, scope.row)">修改</div>
|
||||||
|
<div class="popBtns" @click="handleDelete(scope.$index)">删除</div>
|
||||||
|
<template #reference>
|
||||||
|
<img style="cursor: pointer;" :src="scope.row.currentImageSrc"
|
||||||
|
@mouseenter="scope.row.currentImageSrc = hoverImageSrc"
|
||||||
|
@mouseleave="scope.row.currentImageSrc = defaultImageSrc" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 报价表单 -->
|
||||||
|
<el-dialog :title="_title" v-model="open" width="1350px" class="my_dialog" align-center :destroy-on-close="true"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="150px" label-position="top"
|
||||||
|
class="myInsertForm">
|
||||||
|
<el-row :gutter="30" class="my_form_row">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="年度" prop="mediaYear">
|
||||||
|
<el-date-picker v-model="form.mediaYear" type="year" format="YYYY" value-format="YYYY"
|
||||||
|
placeholder="请选择年度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="城市/市场" prop="cityName">
|
||||||
|
<el-input v-model="form.cityName" placeholder="请输入城市/市场" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体大类" prop="mediaCategory">
|
||||||
|
<el-input v-model="form.mediaCategory" placeholder="请输入媒体大类" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体形式/名称" prop="mediaName">
|
||||||
|
<el-input v-model="form.mediaName" placeholder="请输入媒体形式/名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="频次" prop="frequency">
|
||||||
|
<el-input v-model="form.frequency" placeholder="请输入频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="统一对外刊例价" prop="listPrice">
|
||||||
|
<el-input v-model="form.listPrice" placeholder="请输入统一对外刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单位" prop="listPriceUnit">
|
||||||
|
<el-input v-model="form.listPriceUnit" placeholder="请输入单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买频次" prop="actualBuyFrequency">
|
||||||
|
<el-input v-model="form.actualBuyFrequency" placeholder="请输入实际购买频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价" prop="actualBuyListPrice">
|
||||||
|
<el-input v-model="form.actualBuyListPrice" placeholder="请输入实际购买刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="购买周期(天)" prop="buyCycle">
|
||||||
|
<el-input-number v-model="form.buyCycle" placeholder="请输入购买周期(天)" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="折扣" prop="discount">
|
||||||
|
<el-input v-model="form.discount" placeholder="请输入折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价(元/购买周期)" prop="mediaRegularPrice">
|
||||||
|
<el-input v-model="form.mediaRegularPrice" placeholder="请输入媒体总净价(元/购买周期)" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总制作费(元/次)" prop="totalMakeFee">
|
||||||
|
<el-input v-model="form.totalMakeFee" placeholder="请输入总制作费(元/次)" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价" prop="totalRegularPrice">
|
||||||
|
<el-input v-model="form.totalRegularPrice" placeholder="请输入总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单日覆盖人流量" prop="dailyAvgPeopleFlow">
|
||||||
|
<el-input v-model="form.dailyAvgPeopleFlow" placeholder="请输入单日覆盖人流量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="SOV" prop="sov">
|
||||||
|
<el-input v-model="form.sov" placeholder="请输入SOV" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="CPM" prop="cpm">
|
||||||
|
<el-input v-model="form.cpm" placeholder="请输入CPM" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="是否框内" prop="hasInBox">
|
||||||
|
<el-select v-model="form.hasInBox" placeholder="请选择是否框内" clearable>
|
||||||
|
<el-option v-for="item in hasInBoxList" :key="item.value" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="成本" prop="cost">
|
||||||
|
<el-input v-model="form.cost" placeholder="请输入成本" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="制作成本" prop="makeCost">
|
||||||
|
<el-input v-model="form.makeCost" placeholder="请输入制作成本" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="供应商" prop="supplier">
|
||||||
|
<el-input v-model="form.supplier" placeholder="请输入供应商" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
|
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" :rows="5" type="textarea" placeholder="请输入备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button class="my-cancel-btn" @click="open = false">取 消</el-button>
|
||||||
|
<el-button class="my-confirm-btn" type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, nextTick, defineEmits, ref } from 'vue'
|
||||||
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
|
import { mediaPrice } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
const emit = defineEmits(['setCompetOfferMediaPrice']);
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
|
||||||
|
const editRowIndex = ref(null)
|
||||||
|
const showOptionColumn = ref(true)
|
||||||
|
// 报价表格操作图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
const _title = ref(null)
|
||||||
|
const open = ref(false)
|
||||||
|
const hasInBoxList = ref([
|
||||||
|
{ value: 0, label: '否' },
|
||||||
|
{ value: 1, label: '是' },
|
||||||
|
])
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
rules: {
|
||||||
|
mediaYear: [{ required: true, message: "请输入年度", trigger: "change" }],
|
||||||
|
cityName: [{ required: true, message: "请输入城市/市场", trigger: "blur" }],
|
||||||
|
mediaCategory: [{ required: true, message: "请输入媒体大类", trigger: "blur" }],
|
||||||
|
mediaName: [{ required: true, message: "请输入媒体形式/名称", trigger: "blur" }],
|
||||||
|
frequency: [{ required: true, message: "请输入频次", trigger: "blur" }],
|
||||||
|
listPrice: [{ required: true, message: "请输入统一对外刊例价", trigger: "blur" }],
|
||||||
|
listPriceUnit: [{ required: true, message: "请输入单位", trigger: "blur" }],
|
||||||
|
actualBuyFrequency: [{ required: true, message: "请输入实际购买频次", trigger: "blur" }],
|
||||||
|
actualBuyListPrice: [{ required: true, message: "请输入实际购买刊例价", trigger: "blur" }],
|
||||||
|
buyCycle: [{ required: true, message: "请输入购买周期(天)", trigger: "change" }],
|
||||||
|
discount: [{ required: true, message: "请输入折扣", trigger: "blur" }],
|
||||||
|
mediaRegularPrice: [{ required: true, message: "请输入媒体总净价(元/购买周期)", trigger: "blur" }],
|
||||||
|
totalMakeFee: [{ required: true, message: "请输入总制作费(元/次)", trigger: "blur" }],
|
||||||
|
totalRegularPrice: [{ required: true, message: "请输入总净价", trigger: "blur" }],
|
||||||
|
dailyAvgPeopleFlow: [{ required: true, message: "请输入单日覆盖人流量", trigger: "blur" }],
|
||||||
|
sov: [{ required: true, message: "请输入SOV", trigger: "blur" }],
|
||||||
|
cpm: [{ required: true, message: "请输入CPM", trigger: "blur" }],
|
||||||
|
hasInBox: [{ required: true, message: "请输入是否框内", trigger: "change" }],
|
||||||
|
cost: [{ required: true, message: "请输入成本", trigger: "blur" }],
|
||||||
|
makeCost: [{ required: true, message: "请输入制作成本", trigger: "blur" }],
|
||||||
|
supplier: [{ required: true, message: "请输入供应商", trigger: "blur" }],
|
||||||
|
projectName: [{ required: true, message: "请输入项目名称", trigger: "blur" }],
|
||||||
|
remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { form, rules } = toRefs(data)
|
||||||
|
// 报价信息列表
|
||||||
|
const loading = ref(false)
|
||||||
|
const quotationList = ref([])
|
||||||
|
const handleAddPrice = () => {
|
||||||
|
_title.value = '添加报价信息'
|
||||||
|
form.value.mediaType = 0
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleUpdate = (index, row) => {
|
||||||
|
_title.value = '编辑报价信息'
|
||||||
|
editRowIndex.value = index
|
||||||
|
form.value = row
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
proxy.$modal.confirm('是否确认删除这条报价信息吗?').then(() => {
|
||||||
|
quotationList.value.splice(index, 1)
|
||||||
|
emit('setCompetOfferMediaPrice', 0, quotationList.value)
|
||||||
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
|
}).catch(() => { })
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleSubmit = () => {
|
||||||
|
proxy.$refs["ruleFormRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.currentImageSrc = defaultImageSrc.value
|
||||||
|
if (editRowIndex.value !== null && editRowIndex.value !== undefined) {
|
||||||
|
quotationList.value[editRowIndex.value] = form.value
|
||||||
|
} else {
|
||||||
|
quotationList.value.push(form.value)
|
||||||
|
}
|
||||||
|
form.value = {}
|
||||||
|
open.value = false
|
||||||
|
emit('setCompetOfferMediaPrice', 0, quotationList.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取历史报价
|
||||||
|
const getMediaPrice = (_mediaId, _showOptionColumn) => {
|
||||||
|
showOptionColumn.value = _showOptionColumn
|
||||||
|
if (_mediaId) {
|
||||||
|
mediaPrice({ mediaId: _mediaId }).then(res => {
|
||||||
|
console.log('历史报价', res)
|
||||||
|
quotationList.value = res.data.filter(item => item.fileType == 0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 暴露方法\属性给父组件
|
||||||
|
defineExpose({
|
||||||
|
getMediaPrice
|
||||||
|
});
|
||||||
|
</script>
|
||||||
270
src/views/mediaLibrary/components/garageLightBox.vue
Normal file
270
src/views/mediaLibrary/components/garageLightBox.vue
Normal file
|
|
@ -0,0 +1,270 @@
|
||||||
|
<!-- 车库灯箱 -->
|
||||||
|
<template>
|
||||||
|
<el-button type="primary" class="submitBtn" v-show="showOptionColumn" style="margin-bottom: 10px;" @click="handleAddPrice">添加报价信息</el-button>
|
||||||
|
<el-table v-loading="loading" :data="quotationList" height="362px">
|
||||||
|
<el-table-column label="序号" align="center" width="80">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="城市" align="left" prop="cityName" width="150" />
|
||||||
|
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200" />
|
||||||
|
<el-table-column label="频次" align="left" prop="frequency" width="150" />
|
||||||
|
<el-table-column label="发布总量" align="left" prop="releaseTotal" width="150" />
|
||||||
|
<el-table-column label="刊例价" align="left" prop="listPrice" width="180" />
|
||||||
|
<el-table-column label="刊例价单位" align="left" prop="listPriceUnit" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价" align="left" prop="actualBuyListPrice" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价单位" align="left" prop="actualBuyListPriceUnit" width="150" />
|
||||||
|
<el-table-column label="购买周期" align="left" prop="buyCycle" width="150" />
|
||||||
|
<el-table-column label="折扣" align="left" prop="discount" width="150" />
|
||||||
|
<el-table-column label="媒体总净价" align="center" prop="mediaRegularPrice" width="230" />
|
||||||
|
<el-table-column label="首次制作安装费" align="center" prop="firstInstallFee" width="230" />
|
||||||
|
<el-table-column label="总制作费" align="center" prop="totalMakeFee" width="160" />
|
||||||
|
<el-table-column label="总净价" align="center" prop="totalRegularPrice" width="130" />
|
||||||
|
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
|
||||||
|
<el-table-column label="媒体费总价" align="center" 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="150" />
|
||||||
|
<el-table-column label="CPM" align="center" prop="cpm" width="150" />
|
||||||
|
<el-table-column label="成本折扣" align="center" prop="costDiscount" width="150" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<!-- <el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="录入时间" align="center" prop="postCode" width="150" /> -->
|
||||||
|
<el-table-column label="操作" width="56" align="center" fixed="right" v-show="showOptionColumn">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-popover popper-class="my_popover" placement="left-start">
|
||||||
|
<div class="popBtns" @click="handleUpdate(scope.$index, scope.row)">修改</div>
|
||||||
|
<div class="popBtns" @click="handleDelete(scope.$index)">删除</div>
|
||||||
|
<template #reference>
|
||||||
|
<img style="cursor: pointer;" :src="scope.row.currentImageSrc"
|
||||||
|
@mouseenter="scope.row.currentImageSrc = hoverImageSrc"
|
||||||
|
@mouseleave="scope.row.currentImageSrc = defaultImageSrc" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 报价表单 -->
|
||||||
|
<el-dialog :title="_title" v-model="open" width="1350px" class="my_dialog" align-center :destroy-on-close="true"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="150px" label-position="top"
|
||||||
|
class="myInsertForm">
|
||||||
|
<el-row :gutter="30" class="my_form_row">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="城市" prop="cityName">
|
||||||
|
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体名称" prop="mediaName">
|
||||||
|
<el-input v-model="form.mediaName" placeholder="请输入媒体名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="频次" prop="frequency">
|
||||||
|
<el-input v-model="form.frequency" placeholder="请输入频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发布总量" prop="releaseTotal">
|
||||||
|
<el-input v-model="form.releaseTotal" placeholder="请输入发布总量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价" prop="listPrice">
|
||||||
|
<el-input v-model="form.listPrice" placeholder="请输入刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价单位" prop="listPriceUnit">
|
||||||
|
<el-input v-model="form.listPriceUnit" placeholder="请输入刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价" prop="actualBuyListPrice">
|
||||||
|
<el-input v-model="form.actualBuyListPrice" placeholder="请输入实际购买刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价单位" prop="actualBuyListPriceUnit">
|
||||||
|
<el-input v-model="form.actualBuyListPriceUnit" placeholder="请输入实际购买刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="购买周期" prop="buyCycle">
|
||||||
|
<el-input-number v-model="form.buyCycle" placeholder="请输入购买周期" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="折扣" prop="discount">
|
||||||
|
<el-input v-model="form.discount" placeholder="请输入折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价" prop="mediaRegularPrice">
|
||||||
|
<el-input v-model="form.mediaRegularPrice" placeholder="请输入媒体总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="首次制作安装费" prop="firstInstallFee">
|
||||||
|
<el-input v-model="form.firstInstallFee" placeholder="请输入首次制作安装费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总制作费" prop="totalMakeFee">
|
||||||
|
<el-input v-model="form.totalMakeFee" placeholder="请输入总制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价" prop="totalRegularPrice">
|
||||||
|
<el-input v-model="form.totalRegularPrice" placeholder="请输入总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价单位" prop="totalRegularPriceUnit">
|
||||||
|
<el-input v-model="form.totalRegularPriceUnit" placeholder="请输入总净价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体费总价" prop="mediaFeeTotalPrice">
|
||||||
|
<el-input v-model="form.mediaFeeTotalPrice" placeholder="请输入媒体费总价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单日覆盖人流量" prop="dailyAvgPeopleFlow">
|
||||||
|
<el-input v-model="form.dailyAvgPeopleFlow" placeholder="请输入单日覆盖人流量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总曝光/人次" prop="totalExposure">
|
||||||
|
<el-input v-model="form.totalExposure" placeholder="请输入总曝光/人次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="SOV" prop="sov">
|
||||||
|
<el-input v-model="form.sov" placeholder="请输入SOV" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="CPM" prop="cpm">
|
||||||
|
<el-input v-model="form.cpm" placeholder="请输入CPM" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="成本折扣" prop="costDiscount">
|
||||||
|
<el-input v-model="form.costDiscount" placeholder="请输入成本折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" :rows="5" type="textarea" placeholder="请输入备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button class="my-cancel-btn" @click="open = false">取 消</el-button>
|
||||||
|
<el-button class="my-confirm-btn" type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, nextTick, defineEmits, ref } from 'vue'
|
||||||
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
|
import { mediaPrice } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
const emit = defineEmits(['setCompetOfferMediaPrice']);
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const editRowIndex = ref(null)
|
||||||
|
const showOptionColumn = ref(true)
|
||||||
|
// 报价表格操作图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
const _title = ref(null)
|
||||||
|
const open = ref(false)
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
rules: {
|
||||||
|
cityName: [{ required: true, message: "请输入城市", trigger: "blur" }],
|
||||||
|
mediaName: [{ required: true, message: "请输入媒体名称", trigger: "blur" }],
|
||||||
|
frequency: [{ required: true, message: "请输入频次", trigger: "blur" }],
|
||||||
|
releaseTotal: [{ required: true, message: "请输入发布总量", trigger: "blur" }],
|
||||||
|
listPrice: [{ required: true, message: "请输入刊例价", trigger: "blur" }],
|
||||||
|
listPriceUnit: [{ required: true, message: "请输入刊例价单位", trigger: "blur" }],
|
||||||
|
actualBuyListPrice: [{ required: true, message: "请输入实际购买刊例价", trigger: "blur" }],
|
||||||
|
actualBuyListPriceUnit: [{ required: true, message: "请输入实际购买刊例价单位", trigger: "blur" }],
|
||||||
|
buyCycle: [{ required: true, message: "请输入购买周期", trigger: "change" }],
|
||||||
|
discount: [{ required: true, message: "请输入折扣", trigger: "blur" }],
|
||||||
|
mediaRegularPrice: [{ required: true, message: "请输入媒体总净价", trigger: "blur" }],
|
||||||
|
firstInstallFee: [{ required: true, message: "请输入首次制作安装费", trigger: "blur" }],
|
||||||
|
totalMakeFee: [{ required: true, message: "请输入总制作费", trigger: "blur" }],
|
||||||
|
totalRegularPrice: [{ required: true, message: "请输入总净价", trigger: "blur" }],
|
||||||
|
totalRegularPriceUnit: [{ required: true, message: "请输入总净价单位", trigger: "blur" }],
|
||||||
|
mediaFeeTotalPrice: [{ required: true, message: "请输入媒体费总价", trigger: "blur" }],
|
||||||
|
dailyAvgPeopleFlow: [{ required: true, message: "请输入单日覆盖人流量", trigger: "blur" }],
|
||||||
|
totalExposure: [{ required: true, message: "请输入总曝光/人次", trigger: "blur" }],
|
||||||
|
sov: [{ required: true, message: "请输入SOV", trigger: "blur" }],
|
||||||
|
cpm: [{ required: true, message: "请输入CPM", trigger: "blur" }],
|
||||||
|
costDiscount: [{ required: true, message: "请输入成本折扣", trigger: "blur" }],
|
||||||
|
remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { form, rules } = toRefs(data)
|
||||||
|
// 报价信息列表
|
||||||
|
const loading = ref(false)
|
||||||
|
const quotationList = ref([])
|
||||||
|
const handleAddPrice = () => {
|
||||||
|
_title.value = '添加报价信息'
|
||||||
|
form.value.mediaType = 7
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleUpdate = (index, row) => {
|
||||||
|
_title.value = '编辑报价信息'
|
||||||
|
editRowIndex.value = index
|
||||||
|
form.value = row
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
proxy.$modal.confirm('是否确认删除这条报价信息吗?').then(() => {
|
||||||
|
quotationList.value.splice(index, 1)
|
||||||
|
emit('setCompetOfferMediaPrice', 7, quotationList.value)
|
||||||
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
|
}).catch(() => { })
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleSubmit = () => {
|
||||||
|
proxy.$refs["ruleFormRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.currentImageSrc = defaultImageSrc.value
|
||||||
|
if (editRowIndex.value !== null && editRowIndex.value !== undefined) {
|
||||||
|
quotationList.value[editRowIndex.value] = form.value
|
||||||
|
} else {
|
||||||
|
quotationList.value.push(form.value)
|
||||||
|
}
|
||||||
|
form.value = {}
|
||||||
|
open.value = false
|
||||||
|
emit('setCompetOfferMediaPrice', 7, quotationList.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取历史报价
|
||||||
|
const getMediaPrice = (_mediaId, _showOptionColumn) => {
|
||||||
|
showOptionColumn.value = _showOptionColumn
|
||||||
|
if (_mediaId) {
|
||||||
|
mediaPrice({ mediaId: _mediaId }).then(res => {
|
||||||
|
console.log('历史报价', res)
|
||||||
|
quotationList.value = res.data.filter(item => item.fileType == 7)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 暴露方法\属性给父组件
|
||||||
|
defineExpose({
|
||||||
|
getMediaPrice
|
||||||
|
});
|
||||||
|
</script>
|
||||||
264
src/views/mediaLibrary/components/highSpeedRailway.vue
Normal file
264
src/views/mediaLibrary/components/highSpeedRailway.vue
Normal file
|
|
@ -0,0 +1,264 @@
|
||||||
|
<!-- 高铁 -->
|
||||||
|
<template>
|
||||||
|
<el-button type="primary" class="submitBtn" v-show="showOptionColumn" style="margin-bottom: 10px;" @click="handleAddPrice">添加报价信息</el-button>
|
||||||
|
<el-table v-loading="loading" :data="quotationList" height="362px">
|
||||||
|
<el-table-column label="序号" align="center" width="80">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="城市" align="left" prop="cityName" width="150" />
|
||||||
|
<el-table-column label="场站" align="left" prop="station" width="150" />
|
||||||
|
<el-table-column label="媒体位置" align="left" prop="mediaName" width="200" />
|
||||||
|
<el-table-column label="频次" align="left" prop="frequency" width="150" />
|
||||||
|
<el-table-column label="发布总量" align="left" prop="releaseTotal" width="150" />
|
||||||
|
<el-table-column label="刊例价" align="left" prop="listPrice" width="180" />
|
||||||
|
<el-table-column label="刊例价单位" align="left" prop="listPriceUnit" width="150" />
|
||||||
|
<el-table-column label="购买周期" align="left" prop="buyCycle" width="150" />
|
||||||
|
<el-table-column label="折扣" align="left" prop="discount" width="150" />
|
||||||
|
<el-table-column label="媒体总净价" align="center" prop="mediaRegularPrice" width="230" />
|
||||||
|
<el-table-column label="首次制作安装费" align="center" prop="firstInstallFee" width="230" />
|
||||||
|
<el-table-column label="总制作费" align="center" prop="totalMakeFee" width="160" />
|
||||||
|
<el-table-column label="总净价" align="center" prop="totalRegularPrice" width="130" />
|
||||||
|
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" 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="150" />
|
||||||
|
<el-table-column label="CPM" align="center" prop="cpm" width="150" />
|
||||||
|
<el-table-column label="成本折扣" align="center" prop="costDiscount" width="150" />
|
||||||
|
<el-table-column label="成本" align="center" prop="cost" width="150" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<!-- <el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="录入时间" align="center" prop="postCode" width="150" /> -->
|
||||||
|
<el-table-column label="操作" width="56" align="center" fixed="right" v-show="showOptionColumn">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-popover popper-class="my_popover" placement="left-start">
|
||||||
|
<div class="popBtns" @click="handleUpdate(scope.$index, scope.row)">修改</div>
|
||||||
|
<div class="popBtns" @click="handleDelete(scope.$index)">删除</div>
|
||||||
|
<template #reference>
|
||||||
|
<img style="cursor: pointer;" :src="scope.row.currentImageSrc"
|
||||||
|
@mouseenter="scope.row.currentImageSrc = hoverImageSrc"
|
||||||
|
@mouseleave="scope.row.currentImageSrc = defaultImageSrc" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 报价表单 -->
|
||||||
|
<el-dialog :title="_title" v-model="open" width="1350px" class="my_dialog" align-center :destroy-on-close="true"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="150px" label-position="top"
|
||||||
|
class="myInsertForm">
|
||||||
|
<el-row :gutter="30" class="my_form_row">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="城市" prop="cityName">
|
||||||
|
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="场站" prop="station">
|
||||||
|
<el-input v-model="form.station" placeholder="请输入场站" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体位置" prop="mediaName">
|
||||||
|
<el-input v-model="form.mediaName" placeholder="请输入媒体位置" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="频次" prop="frequency">
|
||||||
|
<el-input v-model="form.frequency" placeholder="请输入频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发布总量" prop="releaseTotal">
|
||||||
|
<el-input v-model="form.releaseTotal" placeholder="请输入发布总量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价" prop="listPrice">
|
||||||
|
<el-input v-model="form.listPrice" placeholder="请输入刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价单位" prop="listPriceUnit">
|
||||||
|
<el-input v-model="form.listPriceUnit" placeholder="请输入刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="购买周期" prop="buyCycle">
|
||||||
|
<el-input-number v-model="form.buyCycle" placeholder="请输入购买周期" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="折扣" prop="discount">
|
||||||
|
<el-input v-model="form.discount" placeholder="请输入折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价" prop="mediaRegularPrice">
|
||||||
|
<el-input v-model="form.mediaRegularPrice" placeholder="请输入媒体总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="首次制作安装费" prop="firstInstallFee">
|
||||||
|
<el-input v-model="form.firstInstallFee" placeholder="请输入首次制作安装费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总制作费" prop="totalMakeFee">
|
||||||
|
<el-input v-model="form.totalMakeFee" placeholder="请输入总制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价" prop="totalRegularPrice">
|
||||||
|
<el-input v-model="form.totalRegularPrice" placeholder="请输入总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价单位" prop="totalRegularPriceUnit">
|
||||||
|
<el-input v-model="form.totalRegularPriceUnit" placeholder="请输入总净价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="客流量/人次" prop="dailyAvgPeopleFlow">
|
||||||
|
<el-input v-model="form.dailyAvgPeopleFlow" placeholder="请输入客流量/人次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总曝光/人次" prop="totalExposure">
|
||||||
|
<el-input v-model="form.totalExposure" placeholder="请输入总曝光/人次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="SOV" prop="sov">
|
||||||
|
<el-input v-model="form.sov" placeholder="请输入SOV" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="CPM" prop="cpm">
|
||||||
|
<el-input v-model="form.cpm" placeholder="请输入CPM" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="成本折扣" prop="costDiscount">
|
||||||
|
<el-input v-model="form.costDiscount" placeholder="请输入成本折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="成本" prop="cost">
|
||||||
|
<el-input v-model="form.cost" placeholder="请输入成本" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" :rows="5" type="textarea" placeholder="请输入备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button class="my-cancel-btn" @click="open = false">取 消</el-button>
|
||||||
|
<el-button class="my-confirm-btn" type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, nextTick, defineEmits, ref } from 'vue'
|
||||||
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
|
import { mediaPrice } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
const emit = defineEmits(['setCompetOfferMediaPrice']);
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const editRowIndex = ref(null)
|
||||||
|
const showOptionColumn = ref(true)
|
||||||
|
// 报价表格操作图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
const _title = ref(null)
|
||||||
|
const open = ref(false)
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
rules: {
|
||||||
|
cityName: [{ required: true, message: "请输入城市", trigger: "blur" }],
|
||||||
|
station: [{ required: true, message: "请输入场站", trigger: "blur" }],
|
||||||
|
mediaName: [{ required: true, message: "请输入媒体位置", trigger: "blur" }],
|
||||||
|
frequency: [{ required: true, message: "请输入频次", trigger: "blur" }],
|
||||||
|
releaseTotal: [{ required: true, message: "请输入发布总量", trigger: "blur" }],
|
||||||
|
listPrice: [{ required: true, message: "请输入刊例价", trigger: "blur" }],
|
||||||
|
listPriceUnit: [{ required: true, message: "请输入刊例价单位", trigger: "blur" }],
|
||||||
|
buyCycle: [{ required: true, message: "请输入购买周期", trigger: "change" }],
|
||||||
|
discount: [{ required: true, message: "请输入折扣", trigger: "blur" }],
|
||||||
|
mediaRegularPrice: [{ required: true, message: "请输入媒体总净价", trigger: "blur" }],
|
||||||
|
firstInstallFee: [{ required: true, message: "请输入首次制作安装费", trigger: "blur" }],
|
||||||
|
totalMakeFee: [{ required: true, message: "请输入总制作费", trigger: "blur" }],
|
||||||
|
totalRegularPrice: [{ required: true, message: "请输入总净价", trigger: "blur" }],
|
||||||
|
totalRegularPriceUnit: [{ required: true, message: "请输入总净价单位", trigger: "blur" }],
|
||||||
|
dailyAvgPeopleFlow: [{ required: true, message: "请输入客流量/人次", trigger: "blur" }],
|
||||||
|
totalExposure: [{ required: true, message: "请输入总曝光/人次", trigger: "blur" }],
|
||||||
|
sameSiteMediaNum: [{ required: true, message: "请输入同站内同类媒体数量或列车总量", trigger: "blur" }],
|
||||||
|
sov: [{ required: true, message: "请输入SOV", trigger: "blur" }],
|
||||||
|
cpm: [{ required: true, message: "请输入CPM", trigger: "blur" }],
|
||||||
|
costDiscount: [{ required: true, message: "请输入成本折扣", trigger: "blur" }],
|
||||||
|
cost: [{ required: true, message: "请输入成本", trigger: "blur" }],
|
||||||
|
remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { form, rules } = toRefs(data)
|
||||||
|
// 报价信息列表
|
||||||
|
const loading = ref(false)
|
||||||
|
const quotationList = ref([])
|
||||||
|
const handleAddPrice = () => {
|
||||||
|
_title.value = '添加报价信息'
|
||||||
|
form.value.mediaType = 5
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleUpdate = (index, row) => {
|
||||||
|
_title.value = '编辑报价信息'
|
||||||
|
editRowIndex.value = index
|
||||||
|
form.value = row
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
proxy.$modal.confirm('是否确认删除这条报价信息吗?').then(() => {
|
||||||
|
quotationList.value.splice(index, 1)
|
||||||
|
emit('setCompetOfferMediaPrice', 5, quotationList.value)
|
||||||
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
|
}).catch(() => { })
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleSubmit = () => {
|
||||||
|
proxy.$refs["ruleFormRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.currentImageSrc = defaultImageSrc.value
|
||||||
|
if (editRowIndex.value !== null && editRowIndex.value !== undefined) {
|
||||||
|
quotationList.value[editRowIndex.value] = form.value
|
||||||
|
} else {
|
||||||
|
quotationList.value.push(form.value)
|
||||||
|
}
|
||||||
|
form.value = {}
|
||||||
|
open.value = false
|
||||||
|
emit('setCompetOfferMediaPrice', 5, quotationList.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取历史报价
|
||||||
|
const getMediaPrice = (_mediaId, _showOptionColumn) => {
|
||||||
|
showOptionColumn.value = _showOptionColumn
|
||||||
|
if (_mediaId) {
|
||||||
|
mediaPrice({ mediaId: _mediaId }).then(res => {
|
||||||
|
console.log('历史报价', res)
|
||||||
|
quotationList.value = res.data.filter(item => item.fileType == 5)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 暴露方法\属性给父组件
|
||||||
|
defineExpose({
|
||||||
|
getMediaPrice
|
||||||
|
});
|
||||||
|
</script>
|
||||||
270
src/views/mediaLibrary/components/officeBuilding.vue
Normal file
270
src/views/mediaLibrary/components/officeBuilding.vue
Normal file
|
|
@ -0,0 +1,270 @@
|
||||||
|
<!-- 写字楼 -->
|
||||||
|
<template>
|
||||||
|
<el-button type="primary" class="submitBtn" v-show="showOptionColumn" style="margin-bottom: 10px;" @click="handleAddPrice">添加报价信息</el-button>
|
||||||
|
<el-table v-loading="loading" :data="quotationList" height="362px">
|
||||||
|
<el-table-column label="序号" align="center" width="80">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="城市" align="left" prop="cityName" width="150" />
|
||||||
|
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200" />
|
||||||
|
<el-table-column label="频次" align="left" prop="frequency" width="150" />
|
||||||
|
<el-table-column label="发布总量" align="left" prop="releaseTotal" width="150" />
|
||||||
|
<el-table-column label="刊例价" align="left" prop="listPrice" width="180" />
|
||||||
|
<el-table-column label="刊例价单位" align="left" prop="listPriceUnit" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价" align="left" prop="actualBuyListPrice" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价单位" align="left" prop="actualBuyListPriceUnit" width="150" />
|
||||||
|
<el-table-column label="购买周期" align="left" prop="buyCycle" width="150" />
|
||||||
|
<el-table-column label="折扣" align="left" prop="discount" width="150" />
|
||||||
|
<el-table-column label="媒体总净价" align="center" prop="mediaRegularPrice" width="230" />
|
||||||
|
<el-table-column label="首次制作安装费" align="center" prop="firstInstallFee" width="230" />
|
||||||
|
<el-table-column label="总制作费" align="center" prop="totalMakeFee" width="160" />
|
||||||
|
<el-table-column label="总净价" align="center" prop="totalRegularPrice" width="130" />
|
||||||
|
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
|
||||||
|
<el-table-column label="媒体费总价" align="center" 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="150" />
|
||||||
|
<el-table-column label="CPM" align="center" prop="cpm" width="150" />
|
||||||
|
<el-table-column label="成本折扣" align="center" prop="costDiscount" width="150" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<!-- <el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="录入时间" align="center" prop="postCode" width="150" /> -->
|
||||||
|
<el-table-column label="操作" width="56" align="center" fixed="right" v-show="showOptionColumn">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-popover popper-class="my_popover" placement="left-start">
|
||||||
|
<div class="popBtns" @click="handleUpdate(scope.$index, scope.row)">修改</div>
|
||||||
|
<div class="popBtns" @click="handleDelete(scope.$index)">删除</div>
|
||||||
|
<template #reference>
|
||||||
|
<img style="cursor: pointer;" :src="scope.row.currentImageSrc"
|
||||||
|
@mouseenter="scope.row.currentImageSrc = hoverImageSrc"
|
||||||
|
@mouseleave="scope.row.currentImageSrc = defaultImageSrc" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 报价表单 -->
|
||||||
|
<el-dialog :title="_title" v-model="open" width="1350px" class="my_dialog" align-center :destroy-on-close="true"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="150px" label-position="top"
|
||||||
|
class="myInsertForm">
|
||||||
|
<el-row :gutter="30" class="my_form_row">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="城市" prop="cityName">
|
||||||
|
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体名称" prop="mediaName">
|
||||||
|
<el-input v-model="form.mediaName" placeholder="请输入媒体名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="频次" prop="frequency">
|
||||||
|
<el-input v-model="form.frequency" placeholder="请输入频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发布总量" prop="releaseTotal">
|
||||||
|
<el-input v-model="form.releaseTotal" placeholder="请输入发布总量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价" prop="listPrice">
|
||||||
|
<el-input v-model="form.listPrice" placeholder="请输入刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价单位" prop="listPriceUnit">
|
||||||
|
<el-input v-model="form.listPriceUnit" placeholder="请输入刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价" prop="actualBuyListPrice">
|
||||||
|
<el-input v-model="form.actualBuyListPrice" placeholder="请输入实际购买刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价单位" prop="actualBuyListPriceUnit">
|
||||||
|
<el-input v-model="form.actualBuyListPriceUnit" placeholder="请输入实际购买刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="购买周期" prop="buyCycle">
|
||||||
|
<el-input-number v-model="form.buyCycle" placeholder="请输入购买周期" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="折扣" prop="discount">
|
||||||
|
<el-input v-model="form.discount" placeholder="请输入折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价" prop="mediaRegularPrice">
|
||||||
|
<el-input v-model="form.mediaRegularPrice" placeholder="请输入媒体总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="首次制作安装费" prop="firstInstallFee">
|
||||||
|
<el-input v-model="form.firstInstallFee" placeholder="请输入首次制作安装费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总制作费" prop="totalMakeFee">
|
||||||
|
<el-input v-model="form.totalMakeFee" placeholder="请输入总制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价" prop="totalRegularPrice">
|
||||||
|
<el-input v-model="form.totalRegularPrice" placeholder="请输入总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价单位" prop="totalRegularPriceUnit">
|
||||||
|
<el-input v-model="form.totalRegularPriceUnit" placeholder="请输入总净价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体费总价" prop="mediaFeeTotalPrice">
|
||||||
|
<el-input v-model="form.mediaFeeTotalPrice" placeholder="请输入媒体费总价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单日覆盖人流量" prop="dailyAvgPeopleFlow">
|
||||||
|
<el-input v-model="form.dailyAvgPeopleFlow" placeholder="请输入单日覆盖人流量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总曝光/人次" prop="totalExposure">
|
||||||
|
<el-input v-model="form.totalExposure" placeholder="请输入总曝光/人次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="SOV" prop="sov">
|
||||||
|
<el-input v-model="form.sov" placeholder="请输入SOV" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="CPM" prop="cpm">
|
||||||
|
<el-input v-model="form.cpm" placeholder="请输入CPM" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="成本折扣" prop="costDiscount">
|
||||||
|
<el-input v-model="form.costDiscount" placeholder="请输入成本折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" :rows="5" type="textarea" placeholder="请输入备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button class="my-cancel-btn" @click="open = false">取 消</el-button>
|
||||||
|
<el-button class="my-confirm-btn" type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, nextTick, defineEmits, ref } from 'vue'
|
||||||
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
|
import { mediaPrice } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
const emit = defineEmits(['setCompetOfferMediaPrice']);
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const editRowIndex = ref(null)
|
||||||
|
const showOptionColumn = ref(true)
|
||||||
|
// 报价表格操作图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
const _title = ref(null)
|
||||||
|
const open = ref(false)
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
rules: {
|
||||||
|
cityName: [{ required: true, message: "请输入城市", trigger: "blur" }],
|
||||||
|
mediaName: [{ required: true, message: "请输入媒体名称", trigger: "blur" }],
|
||||||
|
frequency: [{ required: true, message: "请输入频次", trigger: "blur" }],
|
||||||
|
releaseTotal: [{ required: true, message: "请输入发布总量", trigger: "blur" }],
|
||||||
|
listPrice: [{ required: true, message: "请输入刊例价", trigger: "blur" }],
|
||||||
|
listPriceUnit: [{ required: true, message: "请输入刊例价单位", trigger: "blur" }],
|
||||||
|
actualBuyListPrice: [{ required: true, message: "请输入实际购买刊例价", trigger: "blur" }],
|
||||||
|
actualBuyListPriceUnit: [{ required: true, message: "请输入实际购买刊例价单位", trigger: "blur" }],
|
||||||
|
buyCycle: [{ required: true, message: "请输入购买周期", trigger: "change" }],
|
||||||
|
discount: [{ required: true, message: "请输入折扣", trigger: "blur" }],
|
||||||
|
mediaRegularPrice: [{ required: true, message: "请输入媒体总净价", trigger: "blur" }],
|
||||||
|
firstInstallFee: [{ required: true, message: "请输入首次制作安装费", trigger: "blur" }],
|
||||||
|
totalMakeFee: [{ required: true, message: "请输入总制作费", trigger: "blur" }],
|
||||||
|
totalRegularPrice: [{ required: true, message: "请输入总净价", trigger: "blur" }],
|
||||||
|
totalRegularPriceUnit: [{ required: true, message: "请输入总净价单位", trigger: "blur" }],
|
||||||
|
mediaFeeTotalPrice: [{ required: true, message: "请输入媒体费总价", trigger: "blur" }],
|
||||||
|
dailyAvgPeopleFlow: [{ required: true, message: "请输入单日覆盖人流量", trigger: "blur" }],
|
||||||
|
totalExposure: [{ required: true, message: "请输入总曝光/人次", trigger: "blur" }],
|
||||||
|
sov: [{ required: true, message: "请输入SOV", trigger: "blur" }],
|
||||||
|
cpm: [{ required: true, message: "请输入CPM", trigger: "blur" }],
|
||||||
|
costDiscount: [{ required: true, message: "请输入成本折扣", trigger: "blur" }],
|
||||||
|
remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { form, rules } = toRefs(data)
|
||||||
|
// 报价信息列表
|
||||||
|
const loading = ref(false)
|
||||||
|
const quotationList = ref([])
|
||||||
|
const handleAddPrice = () => {
|
||||||
|
_title.value = '添加报价信息'
|
||||||
|
form.value.mediaType = 6
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleUpdate = (index, row) => {
|
||||||
|
_title.value = '编辑报价信息'
|
||||||
|
editRowIndex.value = index
|
||||||
|
form.value = row
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
proxy.$modal.confirm('是否确认删除这条报价信息吗?').then(() => {
|
||||||
|
quotationList.value.splice(index, 1)
|
||||||
|
emit('setCompetOfferMediaPrice', 6, quotationList.value)
|
||||||
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
|
}).catch(() => { })
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleSubmit = () => {
|
||||||
|
proxy.$refs["ruleFormRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.currentImageSrc = defaultImageSrc.value
|
||||||
|
if (editRowIndex.value !== null && editRowIndex.value !== undefined) {
|
||||||
|
quotationList.value[editRowIndex.value] = form.value
|
||||||
|
} else {
|
||||||
|
quotationList.value.push(form.value)
|
||||||
|
}
|
||||||
|
form.value = {}
|
||||||
|
open.value = false
|
||||||
|
emit('setCompetOfferMediaPrice', 6, quotationList.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取历史报价
|
||||||
|
const getMediaPrice = (_mediaId, _showOptionColumn) => {
|
||||||
|
showOptionColumn.value = _showOptionColumn
|
||||||
|
if (_mediaId) {
|
||||||
|
mediaPrice({ mediaId: _mediaId }).then(res => {
|
||||||
|
console.log('历史报价', res)
|
||||||
|
quotationList.value = res.data.filter(item => item.fileType == 6)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 暴露方法\属性给父组件
|
||||||
|
defineExpose({
|
||||||
|
getMediaPrice
|
||||||
|
});
|
||||||
|
</script>
|
||||||
369
src/views/mediaLibrary/components/subwayPrice.vue
Normal file
369
src/views/mediaLibrary/components/subwayPrice.vue
Normal file
|
|
@ -0,0 +1,369 @@
|
||||||
|
<!-- 地铁报价 -->
|
||||||
|
<template>
|
||||||
|
<el-button type="primary" class="submitBtn" v-show="showOptionColumn" style="margin-bottom: 10px;" @click="handleAddPrice">添加报价信息</el-button>
|
||||||
|
<el-table v-loading="loading" :data="quotationList" height="362px">
|
||||||
|
<el-table-column label="序号" align="center" width="80">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="城市" align="left" prop="cityName" width="150" />
|
||||||
|
<el-table-column label="线路" align="left" prop="subwayLine" width="150" />
|
||||||
|
<el-table-column label="站点" align="left" prop="station" width="150" />
|
||||||
|
<el-table-column label="级别" align="left" prop="level" width="150" />
|
||||||
|
<el-table-column label="媒体形式" align="left" prop="mediaFormat" width="150" />
|
||||||
|
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200" />
|
||||||
|
<el-table-column label="频次" align="left" prop="frequency" width="150" />
|
||||||
|
<el-table-column label="刊例价" align="left" prop="listPrice" width="180" />
|
||||||
|
<el-table-column label="刊例价单位" align="left" prop="listPriceUnit" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价" align="left" prop="actualBuyListPrice" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价单位" align="left" prop="actualBuyListPriceUnit" width="150" />
|
||||||
|
<el-table-column label="短期附加费" align="left" prop="shortTermExtraCharge" width="150" />
|
||||||
|
<el-table-column label="创意附加费" align="left" prop="ideaExtraCharge" width="150" />
|
||||||
|
<el-table-column label="起投周期" align="left" prop="buyCycle" width="150" />
|
||||||
|
<el-table-column label="投放周期" align="left" prop="deliverCycle" width="150" />
|
||||||
|
<el-table-column label="购买数量" align="left" prop="buyTotal" width="150" />
|
||||||
|
<el-table-column label="购买数量单位" align="left" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="折扣" align="left" prop="discount" width="150" />
|
||||||
|
<el-table-column label="媒体总净价" align="center" prop="mediaRegularPrice" width="230" />
|
||||||
|
<el-table-column label="媒体总净价单位" align="center" prop="mediaRegularPriceUnit" width="230" />
|
||||||
|
<el-table-column label="常规制作费" align="center" prop="commonMakeFee" width="230" />
|
||||||
|
<el-table-column label="创意制作费" align="center" prop="cataloguePhoto" width="230" />
|
||||||
|
<el-table-column label="总制作费" align="center" prop="totalMakeFee" width="160" />
|
||||||
|
<el-table-column label="总净价" align="center" prop="totalRegularPrice" width="130" />
|
||||||
|
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
|
||||||
|
<el-table-column label="底价" align="center" prop="floorPrice" width="130" />
|
||||||
|
<el-table-column label="低价总" align="center" prop="minPrice" width="130" />
|
||||||
|
<el-table-column label="制作费" align="center" prop="makeFee" width="130" />
|
||||||
|
<el-table-column label="媒体费总价" align="center" 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="230" />
|
||||||
|
<el-table-column label="SOV" align="center" prop="sov" width="150" />
|
||||||
|
<el-table-column label="CPM" align="center" prop="cpm" width="150" />
|
||||||
|
<el-table-column label="覆盖热区" align="center" prop="coverHotZone" width="150" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<!-- <el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="录入时间" align="center" prop="postCode" width="150" /> -->
|
||||||
|
<el-table-column label="操作" width="56" align="center" fixed="right" v-show="showOptionColumn">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-popover popper-class="my_popover" placement="left-start">
|
||||||
|
<div class="popBtns" @click="handleUpdate(scope.$index, scope.row)">修改</div>
|
||||||
|
<div class="popBtns" @click="handleDelete(scope.$index)">删除</div>
|
||||||
|
<template #reference>
|
||||||
|
<img style="cursor: pointer;" :src="scope.row.currentImageSrc"
|
||||||
|
@mouseenter="scope.row.currentImageSrc = hoverImageSrc"
|
||||||
|
@mouseleave="scope.row.currentImageSrc = defaultImageSrc" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 报价表单 -->
|
||||||
|
<el-dialog :title="_title" v-model="open" width="1350px" class="my_dialog" align-center :destroy-on-close="true"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="150px" label-position="top"
|
||||||
|
class="myInsertForm">
|
||||||
|
<el-row :gutter="30" class="my_form_row">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="城市" prop="cityName">
|
||||||
|
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="线路" prop="subwayLine">
|
||||||
|
<el-input v-model="form.subwayLine" placeholder="请输入线路" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="站点" prop="station">
|
||||||
|
<el-input v-model="form.station" placeholder="请输入站点" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="级别" prop="level">
|
||||||
|
<el-input v-model="form.level" placeholder="请输入级别" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体形式" prop="mediaFormat">
|
||||||
|
<el-input v-model="form.mediaFormat" placeholder="请输入媒体形式" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体名称" prop="mediaName">
|
||||||
|
<el-input v-model="form.mediaName" placeholder="请输入媒体名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="频次" prop="frequency">
|
||||||
|
<el-input v-model="form.frequency" placeholder="请输入频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价" prop="listPrice">
|
||||||
|
<el-input v-model="form.listPrice" placeholder="请输入刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价单位" prop="listPriceUnit">
|
||||||
|
<el-input v-model="form.listPriceUnit" placeholder="请输入刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价" prop="actualBuyListPrice">
|
||||||
|
<el-input v-model="form.actualBuyListPrice" placeholder="请输入实际购买刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价单位" prop="actualBuyListPriceUnit">
|
||||||
|
<el-input v-model="form.actualBuyListPriceUnit" placeholder="请输入实际购买刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="短期附加费" prop="shortTermExtraCharge">
|
||||||
|
<el-input v-model="form.shortTermExtraCharge" placeholder="请输入短期附加费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="创意附加费" prop="ideaExtraCharge">
|
||||||
|
<el-input v-model="form.ideaExtraCharge" placeholder="请输入创意附加费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="起投周期" prop="buyCycle">
|
||||||
|
<el-input-number v-model="form.buyCycle" placeholder="请输入起投周期" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="投放周期" prop="deliverCycle">
|
||||||
|
<el-input-number v-model="form.deliverCycle" placeholder="请输入投放周期" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="购买数量" prop="buyTotal">
|
||||||
|
<el-input-number v-model="form.buyTotal" placeholder="请输入购买数量" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="购买数量单位" prop="buyTotalUnit">
|
||||||
|
<el-input v-model="form.buyTotalUnit" placeholder="请输入购买数量单位" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="折扣" prop="discount">
|
||||||
|
<el-input v-model="form.discount" placeholder="请输入折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价" prop="mediaRegularPrice">
|
||||||
|
<el-input v-model="form.mediaRegularPrice" placeholder="请输入媒体总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价单位" prop="mediaRegularPriceUnit">
|
||||||
|
<el-input v-model="form.mediaRegularPriceUnit" placeholder="请输入媒体总净价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="常规制作费" prop="commonMakeFee">
|
||||||
|
<el-input v-model="form.commonMakeFee" placeholder="请输入常规制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="创意制作费" prop="ideaMakeFee">
|
||||||
|
<el-input v-model="form.ideaMakeFee" placeholder="请输入创意制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总制作费" prop="totalMakeFee">
|
||||||
|
<el-input v-model="form.totalMakeFee" placeholder="请输入总制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价" prop="totalRegularPrice">
|
||||||
|
<el-input v-model="form.totalRegularPrice" placeholder="请输入总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价单位" prop="totalRegularPriceUnit">
|
||||||
|
<el-input v-model="form.totalRegularPriceUnit" placeholder="请输入总净价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="底价" prop="floorPrice">
|
||||||
|
<el-input v-model="form.floorPrice" placeholder="请输入底价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="低价总" prop="minPrice">
|
||||||
|
<el-input v-model="form.minPrice" placeholder="请输入低价总" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="制作费" prop="makeFee">
|
||||||
|
<el-input v-model="form.makeFee" placeholder="请输入制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体费总价" prop="mediaFeeTotalPrice">
|
||||||
|
<el-input v-model="form.mediaFeeTotalPrice" placeholder="请输入媒体费总价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单日覆盖人流量" prop="dailyAvgPeopleFlow">
|
||||||
|
<el-input v-model="form.dailyAvgPeopleFlow" placeholder="请输入单日覆盖人流量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发布期内总曝光人次" prop="totalExposure">
|
||||||
|
<el-input v-model="form.totalExposure" placeholder="请输入发布期内总曝光人次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="同站内同类媒体数量或列车总量" prop="sameSiteMediaNum">
|
||||||
|
<el-input v-model="form.sameSiteMediaNum" placeholder="请输入同站内同类媒体数量或列车总量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="SOV" prop="sov">
|
||||||
|
<el-input v-model="form.sov" placeholder="请输入SOV" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="CPM" prop="cpm">
|
||||||
|
<el-input v-model="form.cpm" placeholder="请输入CPM" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="覆盖热区" prop="coverHotZone">
|
||||||
|
<el-input v-model="form.coverHotZone" placeholder="请输入覆盖热区" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" :rows="5" type="textarea" placeholder="请输入备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button class="my-cancel-btn" @click="open = false">取 消</el-button>
|
||||||
|
<el-button class="my-confirm-btn" type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, nextTick, defineEmits, ref } from 'vue'
|
||||||
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
|
import { mediaPrice } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
const emit = defineEmits(['setCompetOfferMediaPrice']);
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const editRowIndex = ref(null)
|
||||||
|
const showOptionColumn = ref(true)
|
||||||
|
// 报价表格操作图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
const _title = ref(null)
|
||||||
|
const open = ref(false)
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
rules: {
|
||||||
|
cityName: [{ required: true, message: "请输入城市", trigger: "blur" }],
|
||||||
|
subwayLine: [{ required: true, message: "请输入线路", trigger: "blur" }],
|
||||||
|
station: [{ required: true, message: "请输入站点", trigger: "blur" }],
|
||||||
|
level: [{ required: true, message: "请输入级别", trigger: "blur" }],
|
||||||
|
mediaFormat: [{ required: true, message: "请输入媒体形式", trigger: "blur" }],
|
||||||
|
mediaName: [{ required: true, message: "请输入媒体名称", trigger: "blur" }],
|
||||||
|
frequency: [{ required: true, message: "请输入频次", trigger: "blur" }],
|
||||||
|
listPrice: [{ required: true, message: "请输入刊例价", trigger: "blur" }],
|
||||||
|
listPriceUnit: [{ required: true, message: "请输入刊例价单位", trigger: "blur" }],
|
||||||
|
actualBuyListPrice: [{ required: true, message: "请输入实际购买刊例价", trigger: "blur" }],
|
||||||
|
actualBuyListPriceUnit: [{ required: true, message: "请输入实际购买刊例价单位", trigger: "blur" }],
|
||||||
|
shortTermExtraCharge: [{ required: true, message: "请输入短期附加费", trigger: "blur" }],
|
||||||
|
ideaExtraCharge: [{ required: true, message: "请输入创意附加费", trigger: "blur" }],
|
||||||
|
buyCycle: [{ required: true, message: "请输入起投周期", trigger: "change" }],
|
||||||
|
deliverCycle: [{ required: true, message: "请输入投放周期", trigger: "change" }],
|
||||||
|
buyTotal: [{ required: true, message: "请输入购买数量", trigger: "change" }],
|
||||||
|
buyTotalUnit: [{ required: true, message: "请输入购买数量单位", trigger: "blur" }],
|
||||||
|
discount: [{ required: true, message: "请输入折扣", trigger: "blur" }],
|
||||||
|
mediaRegularPrice: [{ required: true, message: "请输入媒体总净价", trigger: "blur" }],
|
||||||
|
mediaRegularPriceUnit: [{ required: true, message: "请输入媒体总净价单位", trigger: "blur" }],
|
||||||
|
commonMakeFee: [{ required: true, message: "请输入常规制作费", trigger: "blur" }],
|
||||||
|
ideaMakeFee: [{ required: true, message: "请输入创意制作费", trigger: "blur" }],
|
||||||
|
totalMakeFee: [{ required: true, message: "请输入总制作费", trigger: "blur" }],
|
||||||
|
totalRegularPrice: [{ required: true, message: "请输入总净价", trigger: "blur" }],
|
||||||
|
totalRegularPriceUnit: [{ required: true, message: "请输入总净价单位", trigger: "blur" }],
|
||||||
|
floorPrice: [{ required: true, message: "请输入底价", trigger: "blur" }],
|
||||||
|
minPrice: [{ required: true, message: "请输入低价总", trigger: "blur" }],
|
||||||
|
makeFee: [{ required: true, message: "请输入制作费", trigger: "blur" }],
|
||||||
|
mediaFeeTotalPrice: [{ required: true, message: "请输入媒体费总价", trigger: "blur" }],
|
||||||
|
dailyAvgPeopleFlow: [{ required: true, message: "请输入单日覆盖人流量", trigger: "blur" }],
|
||||||
|
totalExposure: [{ required: true, message: "请输入发布期内总曝光人次", trigger: "blur" }],
|
||||||
|
sameSiteMediaNum: [{ required: true, message: "请输入同站内同类媒体数量或列车总量", trigger: "blur" }],
|
||||||
|
sov: [{ required: true, message: "请输入SOV", trigger: "blur" }],
|
||||||
|
cpm: [{ required: true, message: "请输入CPM", trigger: "blur" }],
|
||||||
|
coverHotZone: [{ required: true, message: "请输入覆盖热区", trigger: "blur" }],
|
||||||
|
remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { form, rules } = toRefs(data)
|
||||||
|
// 报价信息列表
|
||||||
|
const loading = ref(false)
|
||||||
|
const quotationList = ref([])
|
||||||
|
const handleAddPrice = () => {
|
||||||
|
_title.value = '添加报价信息'
|
||||||
|
form.value.mediaType = 4
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleUpdate = (index, row) => {
|
||||||
|
_title.value = '编辑报价信息'
|
||||||
|
editRowIndex.value = index
|
||||||
|
form.value = row
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
proxy.$modal.confirm('是否确认删除这条报价信息吗?').then(() => {
|
||||||
|
quotationList.value.splice(index, 1)
|
||||||
|
emit('setCompetOfferMediaPrice', 4, quotationList.value)
|
||||||
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
|
}).catch(() => { })
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleSubmit = () => {
|
||||||
|
proxy.$refs["ruleFormRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.currentImageSrc = defaultImageSrc.value
|
||||||
|
if (editRowIndex.value !== null && editRowIndex.value !== undefined) {
|
||||||
|
quotationList.value[editRowIndex.value] = form.value
|
||||||
|
} else {
|
||||||
|
quotationList.value.push(form.value)
|
||||||
|
}
|
||||||
|
form.value = {}
|
||||||
|
open.value = false
|
||||||
|
emit('setCompetOfferMediaPrice', 4, quotationList.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取历史报价
|
||||||
|
const getMediaPrice = (_mediaId, _showOptionColumn) => {
|
||||||
|
showOptionColumn.value = _showOptionColumn
|
||||||
|
if (_mediaId) {
|
||||||
|
mediaPrice({ mediaId: _mediaId }).then(res => {
|
||||||
|
console.log('历史报价', res)
|
||||||
|
quotationList.value = res.data.filter(item => item.fileType == 4)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 暴露方法\属性给父组件
|
||||||
|
defineExpose({
|
||||||
|
getMediaPrice
|
||||||
|
});
|
||||||
|
</script>
|
||||||
330
src/views/mediaLibrary/components/waitingHallPrice.vue
Normal file
330
src/views/mediaLibrary/components/waitingHallPrice.vue
Normal file
|
|
@ -0,0 +1,330 @@
|
||||||
|
<!-- 候车厅报价 -->
|
||||||
|
<template>
|
||||||
|
<el-button type="primary" class="submitBtn" v-show="showOptionColumn" style="margin-bottom: 10px;" @click="handleAddPrice">添加报价信息</el-button>
|
||||||
|
<el-table v-loading="loading" :data="quotationList" height="362px">
|
||||||
|
<el-table-column label="序号" align="center" width="80">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.$index + 1 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="城市" align="left" prop="cityName" width="150" />
|
||||||
|
<el-table-column label="资源描述" align="left" prop="resourceRemark" width="150" />
|
||||||
|
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200" />
|
||||||
|
<el-table-column label="频次" align="left" prop="frequency" width="150" />
|
||||||
|
<el-table-column label="发布总量" align="left" prop="releaseTotal" width="150" />
|
||||||
|
<el-table-column label="刊例价" align="left" prop="listPrice" width="180" />
|
||||||
|
<el-table-column label="刊例价单位" align="left" prop="listPriceUnit" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价" align="left" prop="actualBuyListPrice" width="150" />
|
||||||
|
<el-table-column label="实际购买刊例价单位" align="left" prop="actualBuyListPriceUnit" width="150" />
|
||||||
|
<el-table-column label="购买周期" align="left" prop="buyCycle" width="150" />
|
||||||
|
<el-table-column label="折扣" align="left" prop="discount" width="150" />
|
||||||
|
<el-table-column label="媒体总净价" align="center" prop="mediaRegularPrice" width="230" />
|
||||||
|
<el-table-column label="首次制作安装费" align="center" prop="firstInstallFee" width="230" />
|
||||||
|
<el-table-column label="总制作费" align="center" prop="totalMakeFee" width="160" />
|
||||||
|
<el-table-column label="总净价" align="center" prop="totalRegularPrice" width="130" />
|
||||||
|
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
|
||||||
|
<el-table-column label="媒体费单价" align="center" prop="mediaFeeUnitPrice" width="130" />
|
||||||
|
<el-table-column label="制作费" align="center" prop="makeFee" width="160" />
|
||||||
|
<el-table-column label="媒体费总价" align="center" prop="mediaFeeTotalPrice" width="130" />
|
||||||
|
<el-table-column label="最终媒体费优惠价" align="center" prop="finalMediaFeeDiscountPrice" 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="150" />
|
||||||
|
<el-table-column label="CPM" align="center" prop="cpm" width="150" />
|
||||||
|
<el-table-column label="是否亮灯" align="center" prop="hasLighting" width="150">
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.hasLighting == 0">否</span>
|
||||||
|
<span v-if="scope.row.hasLighting == 1">是</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="单面/双面" align="center" prop="oddEven" width="150" />
|
||||||
|
<el-table-column label="中途换画制作费" align="center" prop="changeDrawMakeFee" width="150" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<!-- <el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
||||||
|
<el-table-column label="录入时间" align="center" prop="postCode" width="150" /> -->
|
||||||
|
<el-table-column label="操作" width="56" align="center" fixed="right" v-show="showOptionColumn">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-popover popper-class="my_popover" placement="left-start">
|
||||||
|
<div class="popBtns" @click="handleUpdate(scope.$index, scope.row)">修改</div>
|
||||||
|
<div class="popBtns" @click="handleDelete(scope.$index)">删除</div>
|
||||||
|
<template #reference>
|
||||||
|
<img style="cursor: pointer;" :src="scope.row.currentImageSrc"
|
||||||
|
@mouseenter="scope.row.currentImageSrc = hoverImageSrc"
|
||||||
|
@mouseleave="scope.row.currentImageSrc = defaultImageSrc" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 报价表单 -->
|
||||||
|
<el-dialog :title="_title" v-model="open" width="1350px" class="my_dialog" align-center :destroy-on-close="true"
|
||||||
|
:close-on-click-modal="false">
|
||||||
|
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="150px" label-position="top"
|
||||||
|
class="myInsertForm">
|
||||||
|
<el-row :gutter="30" class="my_form_row">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="城市" prop="cityName">
|
||||||
|
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="资源描述" prop="resourceRemark">
|
||||||
|
<el-input v-model="form.resourceRemark" placeholder="请输入资源描述" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体名称" prop="mediaName">
|
||||||
|
<el-input v-model="form.mediaName" placeholder="请输入媒体名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="频次" prop="frequency">
|
||||||
|
<el-input v-model="form.frequency" placeholder="请输入频次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发布总量" prop="releaseTotal">
|
||||||
|
<el-input v-model="form.releaseTotal" placeholder="请输入发布总量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价" prop="listPrice">
|
||||||
|
<el-input v-model="form.listPrice" placeholder="请输入刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="刊例价单位" prop="listPriceUnit">
|
||||||
|
<el-input v-model="form.listPriceUnit" placeholder="请输入刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价" prop="actualBuyListPrice">
|
||||||
|
<el-input v-model="form.actualBuyListPrice" placeholder="请输入实际购买刊例价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="实际购买刊例价单位" prop="actualBuyListPriceUnit">
|
||||||
|
<el-input v-model="form.actualBuyListPriceUnit" placeholder="请输入实际购买刊例价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="购买周期" prop="buyCycle">
|
||||||
|
<el-input-number v-model="form.buyCycle" placeholder="请输入购买周期" style="width: 100%;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="折扣" prop="discount">
|
||||||
|
<el-input v-model="form.discount" placeholder="请输入折扣" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体总净价" prop="mediaRegularPrice">
|
||||||
|
<el-input v-model="form.mediaRegularPrice" placeholder="请输入媒体总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="首次制作安装费" prop="firstInstallFee">
|
||||||
|
<el-input v-model="form.firstInstallFee" placeholder="请输入首次制作安装费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总制作费" prop="totalMakeFee">
|
||||||
|
<el-input v-model="form.totalMakeFee" placeholder="请输入总制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单价" prop="unitPrice">
|
||||||
|
<el-input v-model="form.unitPrice" placeholder="请输入单价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价" prop="totalRegularPrice">
|
||||||
|
<el-input v-model="form.totalRegularPrice" placeholder="请输入总净价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总净价单位" prop="totalRegularPriceUnit">
|
||||||
|
<el-input v-model="form.totalRegularPriceUnit" placeholder="请输入总净价单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体费单价" prop="mediaFeeUnitPrice">
|
||||||
|
<el-input v-model="form.mediaFeeUnitPrice" placeholder="请输入媒体费单价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="制作费" prop="makeFee">
|
||||||
|
<el-input v-model="form.makeFee" placeholder="请输入制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="媒体费总价" prop="mediaFeeTotalPrice">
|
||||||
|
<el-input v-model="form.mediaFeeTotalPrice" placeholder="请输入媒体费总价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="最终媒体费优惠价" prop="finalMediaFeeDiscountPrice">
|
||||||
|
<el-input v-model="form.finalMediaFeeDiscountPrice" placeholder="请输入最终媒体费优惠价" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单日覆盖人流量" prop="dailyAvgPeopleFlow">
|
||||||
|
<el-input v-model="form.dailyAvgPeopleFlow" placeholder="请输入单日覆盖人流量" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总曝光/人次" prop="totalExposure">
|
||||||
|
<el-input v-model="form.totalExposure" placeholder="请输入总曝光/人次" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="SOV" prop="sov">
|
||||||
|
<el-input v-model="form.sov" placeholder="请输入SOV" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="CPM" prop="cpm">
|
||||||
|
<el-input v-model="form.cpm" placeholder="请输入CPM" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="是否亮灯" prop="hasLighting">
|
||||||
|
<el-select v-model="form.hasLighting" placeholder="请选择是否亮灯" clearable>
|
||||||
|
<el-option v-for="item in hasLightingList" :key="item.value" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="单面/双面" prop="oddEven">
|
||||||
|
<el-input v-model="form.oddEven" placeholder="请输入单面/双面" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="中途换画制作费" prop="changeDrawMakeFee">
|
||||||
|
<el-input v-model="form.changeDrawMakeFee" placeholder="请输入中途换画制作费" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" :rows="5" type="textarea" placeholder="请输入备注"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button class="my-cancel-btn" @click="open = false">取 消</el-button>
|
||||||
|
<el-button class="my-confirm-btn" type="primary" @click="handleSubmit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, nextTick, defineEmits, ref } from 'vue'
|
||||||
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
|
import { mediaPrice } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
const emit = defineEmits(['setCompetOfferMediaPrice']);
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const hasLightingList = ref([
|
||||||
|
{ value: 0, label: '否' },
|
||||||
|
{ value: 1, label: '是' },
|
||||||
|
])
|
||||||
|
const editRowIndex = ref(null)
|
||||||
|
const showOptionColumn = ref(true)
|
||||||
|
// 报价表格操作图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
const _title = ref(null)
|
||||||
|
const open = ref(false)
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
rules: {
|
||||||
|
cityName: [{ required: true, message: "请输入城市", trigger: "blur" }],
|
||||||
|
resourceRemark: [{ required: true, message: "请输入资源描述", trigger: "blur" }],
|
||||||
|
mediaName: [{ required: true, message: "请输入媒体名称", trigger: "blur" }],
|
||||||
|
frequency: [{ required: true, message: "请输入频次", trigger: "blur" }],
|
||||||
|
releaseTotal: [{ required: true, message: "请输入发布总量", trigger: "blur" }],
|
||||||
|
listPrice: [{ required: true, message: "请输入刊例价", trigger: "blur" }],
|
||||||
|
listPriceUnit: [{ required: true, message: "请输入刊例价单位", trigger: "blur" }],
|
||||||
|
actualBuyListPrice: [{ required: true, message: "请输入实际购买刊例价", trigger: "blur" }],
|
||||||
|
actualBuyListPriceUnit: [{ required: true, message: "请输入实际购买刊例价单位", trigger: "blur" }],
|
||||||
|
buyCycle: [{ required: true, message: "请输入购买周期", trigger: "change" }],
|
||||||
|
discount: [{ required: true, message: "请输入折扣", trigger: "blur" }],
|
||||||
|
mediaRegularPrice: [{ required: true, message: "请输入媒体总净价", trigger: "blur" }],
|
||||||
|
firstInstallFee: [{ required: true, message: "请输入首次制作安装费", trigger: "blur" }],
|
||||||
|
totalMakeFee: [{ required: true, message: "请输入总制作费", trigger: "blur" }],
|
||||||
|
unitPrice: [{ required: true, message: "请输入单价", trigger: "blur" }],
|
||||||
|
totalRegularPrice: [{ required: true, message: "请输入总净价", trigger: "blur" }],
|
||||||
|
totalRegularPriceUnit: [{ required: true, message: "请输入总净价单位", trigger: "blur" }],
|
||||||
|
mediaFeeUnitPrice: [{ required: true, message: "请输入媒体费单价", trigger: "blur" }],
|
||||||
|
makeFee: [{ required: true, message: "请输入制作费", trigger: "blur" }],
|
||||||
|
mediaFeeTotalPrice: [{ required: true, message: "请输入媒体费总价", trigger: "blur" }],
|
||||||
|
finalMediaFeeDiscountPrice: [{ required: true, message: "请输入最终媒体费优惠价", trigger: "blur" }],
|
||||||
|
dailyAvgPeopleFlow: [{ required: true, message: "请输入单日覆盖人流量", trigger: "blur" }],
|
||||||
|
totalExposure: [{ required: true, message: "请输入总曝光/人次", trigger: "blur" }],
|
||||||
|
sov: [{ required: true, message: "请输入SOV", trigger: "blur" }],
|
||||||
|
cpm: [{ required: true, message: "请输入CPM", trigger: "blur" }],
|
||||||
|
hasLighting: [{ required: true, message: "请选择是否亮灯", trigger: "change" }],
|
||||||
|
oddEven: [{ required: true, message: "请输入单面/双面", trigger: "blur" }],
|
||||||
|
changeDrawMakeFee: [{ required: true, message: "请输入中途换画制作费", trigger: "blur" }],
|
||||||
|
remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { form, rules } = toRefs(data)
|
||||||
|
// 报价信息列表
|
||||||
|
const loading = ref(false)
|
||||||
|
const quotationList = ref([])
|
||||||
|
const handleAddPrice = () => {
|
||||||
|
_title.value = '添加报价信息'
|
||||||
|
form.value.mediaType = 2
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleUpdate = (index, row) => {
|
||||||
|
_title.value = '编辑报价信息'
|
||||||
|
editRowIndex.value = index
|
||||||
|
form.value = row
|
||||||
|
open.value = true
|
||||||
|
}
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
proxy.$modal.confirm('是否确认删除这条报价信息吗?').then(() => {
|
||||||
|
quotationList.value.splice(index, 1)
|
||||||
|
emit('setCompetOfferMediaPrice', 2, quotationList.value)
|
||||||
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
|
}).catch(() => { })
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleSubmit = () => {
|
||||||
|
proxy.$refs["ruleFormRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
form.value.currentImageSrc = defaultImageSrc.value
|
||||||
|
if (editRowIndex.value !== null && editRowIndex.value !== undefined) {
|
||||||
|
quotationList.value[editRowIndex.value] = form.value
|
||||||
|
} else {
|
||||||
|
quotationList.value.push(form.value)
|
||||||
|
}
|
||||||
|
form.value = {}
|
||||||
|
open.value = false
|
||||||
|
emit('setCompetOfferMediaPrice', 2, quotationList.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取历史报价
|
||||||
|
const getMediaPrice = (_mediaId, _showOptionColumn) => {
|
||||||
|
showOptionColumn.value = _showOptionColumn
|
||||||
|
if (_mediaId) {
|
||||||
|
mediaPrice({ mediaId: _mediaId }).then(res => {
|
||||||
|
console.log('历史报价', res)
|
||||||
|
quotationList.value = res.data.filter(item => item.fileType == 2)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 暴露方法\属性给父组件
|
||||||
|
defineExpose({
|
||||||
|
getMediaPrice
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
@ -4,44 +4,45 @@
|
||||||
<div class="searchPanel">
|
<div class="searchPanel">
|
||||||
<div class="more-search-pane">
|
<div class="more-search-pane">
|
||||||
<div class="search-where-container">
|
<div class="search-where-container">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" class="searchPanelForm">
|
<el-form :model="queryParams" :inline="true" class="searchPanelForm">
|
||||||
<el-form-item label="媒体类型:">
|
<el-form-item label="媒体类型:">
|
||||||
<el-select v-model="queryParams.mediaTypeOne" placeholder="请选择"
|
<el-select v-model="queryParams.mediaType" placeholder="请选择" @change="getMediaTypeTwo"
|
||||||
@change="getMediaTypeTwo" clearable style="min-width: 30px">
|
clearable style="min-width: 30px">
|
||||||
<el-option v-for="item in mediaTypeOne" :key="item.id" :label="item.name"
|
<el-option v-for="item in mediaTypeOne" :key="item.id" :label="item.name"
|
||||||
:value="item.id" />
|
:value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="媒体大类:">
|
<el-form-item label="媒体大类:">
|
||||||
<el-select v-model="queryParams.mediaTypeTwo" placeholder="请选择"
|
<el-select v-model="queryParams.mediaCategory" placeholder="请选择"
|
||||||
@change="getMediaTypeThree" clearable style="min-width: 30px">
|
@change="getMediaTypeThree" clearable style="min-width: 30px">
|
||||||
<el-option v-for="item in mediaTypeTwo" :key="item.id" :label="item.name"
|
<el-option v-for="item in mediaTypeTwo" :key="item.id" :label="item.name"
|
||||||
:value="item.id" />
|
:value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="展示形式:">
|
<el-form-item label="展示形式:">
|
||||||
<el-select v-model="queryParams.mediaTypeThree" placeholder="请选择" clearable
|
<el-select v-model="queryParams.displayForm" placeholder="请选择" clearable
|
||||||
style="min-width: 30px">
|
style="min-width: 30px">
|
||||||
<el-option v-for="item in mediaTypeThree" :key="item.id" :label="item.name"
|
<el-option v-for="item in mediaTypeThree" :key="item.id" :label="item.name"
|
||||||
:value="item.id" />
|
:value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="归属:">
|
<el-form-item label="归属:">
|
||||||
<el-select v-model="queryParams.supplier" placeholder="请选择" style="min-width: 30px;"
|
<el-select class="filterSelect" v-model="queryParams.belongSupplierId" filterable remote
|
||||||
clearable>
|
reserve-keyword :remote-method="getSupplierList" :loading="selectLoading"
|
||||||
<el-option v-for="dict in supplierList" :key="dict.value" :label="dict.label"
|
placeholder="请输入" remote-show-suffix clearable style="min-width: 70px;">
|
||||||
:value="dict.value" />
|
<el-option v-for="item in supplierList" :key="item.supplierId"
|
||||||
|
:label="item.supplierName" :value="item.supplierId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="业务:">
|
<el-form-item label="业务部门:">
|
||||||
<el-select v-model="queryParams.business" placeholder="请选择" clearable
|
<el-select v-model="queryParams.businessType" placeholder="请选择" clearable
|
||||||
style="min-width: 30px;">
|
style="min-width: 30px;">
|
||||||
<el-option v-for="dict in business" :key="dict.value" :label="dict.label"
|
<el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName"
|
||||||
:value="dict.value" />
|
:value="item.deptName" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态:">
|
<el-form-item label="状态:">
|
||||||
<el-select v-model="queryParams.media_status" placeholder="请选择" style="min-width: 30px;"
|
<el-select v-model="queryParams.state" placeholder="请选择" style="min-width: 30px;"
|
||||||
clearable>
|
clearable>
|
||||||
<el-option v-for="dict in media_status" :key="dict.value" :label="dict.label"
|
<el-option v-for="dict in media_status" :key="dict.value" :label="dict.label"
|
||||||
:value="dict.value" />
|
:value="dict.value" />
|
||||||
|
|
@ -60,35 +61,36 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="searchSmallPanel" v-show="unfoldFlag">
|
<div class="searchSmallPanel" v-show="unfoldFlag">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" class="searchSmallPanelForm">
|
<el-form :model="queryParams" :inline="true" class="searchSmallPanelForm">
|
||||||
<el-form-item label="城市:">
|
<el-form-item label="城市:">
|
||||||
<el-select v-model="queryParams.provinceId" placeholder="请选择" @change="getCityList" clearable
|
<el-select v-model="queryParams.provinceCode" placeholder="请选择" @change="getCityList" clearable
|
||||||
style="min-width: 30px">
|
style="min-width: 30px">
|
||||||
<el-option v-for="item in province" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in province" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="">
|
<el-form-item label="">
|
||||||
<el-select v-model="queryParams.cityId" placeholder="请选择" @change="getCountyList" clearable
|
<el-select v-model="queryParams.cityCode" placeholder="请选择" @change="getCountyList" clearable
|
||||||
style="min-width: 30px">
|
style="min-width: 30px">
|
||||||
<el-option v-for="item in city" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in city" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="">
|
<el-form-item label="">
|
||||||
<el-select v-model="queryParams.countyId" placeholder="请选择" @change="getTownList" clearable
|
<el-select v-model="queryParams.areaCode" placeholder="请选择" @change="getTownList" clearable
|
||||||
style="min-width: 30px">
|
style="min-width: 30px">
|
||||||
<el-option v-for="item in county" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in county" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="">
|
<el-form-item label="">
|
||||||
<el-select v-model="queryParams.townId" placeholder="请选择" clearable style="min-width: 30px">
|
<el-select v-model="queryParams.townCode" placeholder="请选择" @change="getbusinessAreaList"
|
||||||
|
clearable style="min-width: 30px">
|
||||||
<el-option v-for="item in town" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in town" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="商圈:">
|
<el-form-item label="商圈:">
|
||||||
<el-select v-model="queryParams.approval_document_status" placeholder="请选择" clearable
|
<el-select v-model="queryParams.businessDistrictId" placeholder="请选择" clearable
|
||||||
style="min-width: 30px;">
|
style="min-width: 30px;">
|
||||||
<el-option v-for="dict in approval_document_status" :key="dict.value" :label="dict.label"
|
<el-option v-for="item in businessAreaList" :key="item.id" :label="item.name"
|
||||||
:value="dict.value" />
|
:value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
@ -109,10 +111,10 @@
|
||||||
|
|
||||||
<el-card class="mt10">
|
<el-card class="mt10">
|
||||||
<el-row :gutter="10" class="my_row"><el-col :span="8">
|
<el-row :gutter="10" class="my_row"><el-col :span="8">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" class="searchInputForm">
|
<el-form :model="queryParams" :inline="true" class="searchInputForm">
|
||||||
<el-form-item label="">
|
<el-form-item label="">
|
||||||
<el-input v-model="form.postCode" placeholder="请输入媒体名称/媒体编号" :prefix-icon="Search"
|
<el-input v-model="queryParams.mediaName" placeholder="请输入媒体名称/媒体编号"
|
||||||
style="width: 400px;" />
|
:prefix-icon="Search" style="width: 400px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -148,7 +150,6 @@
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
<el-button type="primary" class="primaryBtn" @click="handleExportExcel">导出excel</el-button>
|
<el-button type="primary" class="primaryBtn" @click="handleExportExcel">导出excel</el-button>
|
||||||
<el-button type="primary" class="primaryBtn" @click="handleGoMediaMap">媒体可视化地图</el-button>
|
<el-button type="primary" class="primaryBtn" @click="handleGoMediaMap">媒体可视化地图</el-button>
|
||||||
|
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
@ -160,7 +161,7 @@
|
||||||
<el-popover popper-class="myImg_popover" placement="right-start">
|
<el-popover popper-class="myImg_popover" placement="right-start">
|
||||||
<img :src="otherbg" />
|
<img :src="otherbg" />
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<span class="mediaNameLabel" @click="handleOpenDetail">{{ scope.row.mediaName
|
<span class="mediaNameLabel" @click="handleOpenDetail(scope.row.id)">{{ scope.row.mediaName
|
||||||
}}</span>
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
|
|
@ -231,7 +232,7 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
|
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
|
||||||
@pagination="getList" />
|
@pagination="getMediaPageList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
<media-form ref="mediaFormRef" v-if="showForm" @handleShowList="handleShowList" />
|
<media-form ref="mediaFormRef" v-if="showForm" @handleShowList="handleShowList" />
|
||||||
|
|
@ -325,15 +326,18 @@
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { Search } from '@element-plus/icons-vue'
|
import { Search } from '@element-plus/icons-vue'
|
||||||
import { sysRegionListByPid } from "@/api/system/administrativeRegion"
|
|
||||||
import { sysMediaTypeListByPid } from "@/api/system/mediaType"
|
|
||||||
import optionIcon from '@/assets/images/optionIcon.png'
|
import optionIcon from '@/assets/images/optionIcon.png'
|
||||||
import optionIconHover from '@/assets/images/optionIconHover.png'
|
import optionIconHover from '@/assets/images/optionIconHover.png'
|
||||||
import viewFile from '@/assets/images/viewFile.png'
|
import viewFile from '@/assets/images/viewFile.png'
|
||||||
import viewFileHover from '@/assets/images/viewFileHover.png'
|
import viewFileHover from '@/assets/images/viewFileHover.png'
|
||||||
import { useBackgroundStore } from '@/store/modules/background'
|
|
||||||
import otherbg from '@/assets/images/otherbg.png'
|
import otherbg from '@/assets/images/otherbg.png'
|
||||||
|
import { listBusSupplier } from "@/api/supplier"
|
||||||
|
import { sysRegionListByPid } from "@/api/system/administrativeRegion"
|
||||||
|
import { sysMediaTypeListByPid } from "@/api/system/mediaType"
|
||||||
|
import { busTradingAreaPage } from "@/api/system/businessArea"
|
||||||
|
import { mediaPageList, mediaCancel } from "@/api/mediaLibrary"
|
||||||
|
import { listDept } from "@/api/system/dept"
|
||||||
|
// 注入组件
|
||||||
import mediaForm from "./mediaForm.vue";
|
import mediaForm from "./mediaForm.vue";
|
||||||
import mediaDetail from "./mediaDetail.vue";
|
import mediaDetail from "./mediaDetail.vue";
|
||||||
import mediaLogs from "./mediaLogs.vue";
|
import mediaLogs from "./mediaLogs.vue";
|
||||||
|
|
@ -341,28 +345,79 @@ import historyData from "./historyData.vue"
|
||||||
import downFiles from './downFiles.vue';
|
import downFiles from './downFiles.vue';
|
||||||
import viewFileDialog from '@/components/ViewFile/index.vue'
|
import viewFileDialog from '@/components/ViewFile/index.vue'
|
||||||
import exportDialog from './exportDialog.vue';
|
import exportDialog from './exportDialog.vue';
|
||||||
|
import { useBackgroundStore } from '@/store/modules/background'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const bgStore = useBackgroundStore()
|
const bgStore = useBackgroundStore()
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
const { media_form, display_form, key_words, media_schedule, media_format, sales_method, business, media_status, approval_document_status } = proxy.useDict("media_form", "display_form", "key_words", "media_schedule", "media_format", "sales_method", "business", "media_status", "approval_document_status")
|
const { media_status } = proxy.useDict("media_status")
|
||||||
|
|
||||||
// 省、市、县、镇数据
|
// 省、市、县、镇数据
|
||||||
const province = ref([])
|
const province = ref([])
|
||||||
const city = ref([])
|
const city = ref([])
|
||||||
const county = ref([])
|
const county = ref([])
|
||||||
const town = ref([])
|
const town = ref([])
|
||||||
|
// 商圈信息列表
|
||||||
|
const businessAreaList = ref([])
|
||||||
// 媒体类型数据
|
// 媒体类型数据
|
||||||
const mediaTypeOne = ref([])
|
const mediaTypeOne = ref([])
|
||||||
const mediaTypeTwo = ref([])
|
const mediaTypeTwo = ref([])
|
||||||
const mediaTypeThree = ref([])
|
const mediaTypeThree = ref([])
|
||||||
const uploadOpen = ref(false)
|
// 归属选项
|
||||||
const docUploadList = ref([])
|
const supplierList = ref([])
|
||||||
|
const selectLoading = ref(false)
|
||||||
|
// 业务部门
|
||||||
|
const deptList = ref([])
|
||||||
|
// 操作列图标
|
||||||
|
const defaultImageSrc = ref(optionIcon);
|
||||||
|
const hoverImageSrc = ref(optionIconHover);
|
||||||
|
// 列表文件缩略图标
|
||||||
|
const defaultViewFileSrc = ref(viewFile);
|
||||||
|
const hoverViewFileSrc = ref(viewFileHover);
|
||||||
|
// 媒体列表
|
||||||
|
const mediaList = ref([])
|
||||||
|
// 媒体信息查询条件
|
||||||
|
const loading = ref(true)
|
||||||
|
const total = ref(0)
|
||||||
|
const data = reactive({
|
||||||
|
abolishForm: {},
|
||||||
|
form: {},
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
mediaType: undefined,
|
||||||
|
mediaCategory: undefined,
|
||||||
|
displayForm: undefined,
|
||||||
|
belongSupplierId: undefined,
|
||||||
|
businessType: undefined,
|
||||||
|
state: undefined,
|
||||||
|
mediaType: undefined,
|
||||||
|
mediaCategory: undefined,
|
||||||
|
|
||||||
|
provinceCode: undefined,
|
||||||
|
cityCode: undefined,
|
||||||
|
areaCode: undefined,
|
||||||
|
townCode: undefined,
|
||||||
|
businessDistrictId: undefined
|
||||||
|
},
|
||||||
|
abolishRules: {
|
||||||
|
content: [{ required: true, message: "请输入废除原因", trigger: "blur" }],
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const { queryParams, form, abolishForm, abolishRules } = toRefs(data)
|
||||||
|
// 表单
|
||||||
const showForm = ref(false)
|
const showForm = ref(false)
|
||||||
const mediaFormRef = ref(null)
|
const mediaFormRef = ref(null)
|
||||||
|
// 详情
|
||||||
const showDetail = ref(false)
|
const showDetail = ref(false)
|
||||||
const mediaDetailRef = ref(null)
|
const mediaDetailRef = ref(null)
|
||||||
|
// 日志
|
||||||
const showLogs = ref(false)
|
const showLogs = ref(false)
|
||||||
const mediaLogsRef = ref(null)
|
const mediaLogsRef = ref(null)
|
||||||
|
|
||||||
|
|
||||||
|
const uploadOpen = ref(false)
|
||||||
|
const docUploadList = ref([])
|
||||||
const abolishOpen = ref(false)
|
const abolishOpen = ref(false)
|
||||||
const historyDataRef = ref(null)
|
const historyDataRef = ref(null)
|
||||||
const downFileRef = ref(null)
|
const downFileRef = ref(null)
|
||||||
|
|
@ -392,58 +447,15 @@ const cities = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
// 归属选项
|
|
||||||
const supplierList = ref([])
|
|
||||||
// 多选数据
|
// 多选数据
|
||||||
const multipleChoseArr = ref([])
|
const multipleChoseArr = ref([])
|
||||||
// 媒体库操作图标
|
|
||||||
const defaultImageSrc = ref(optionIcon);
|
|
||||||
const hoverImageSrc = ref(optionIconHover);
|
|
||||||
// 文件查看
|
|
||||||
const defaultViewFileSrc = ref(viewFile);
|
|
||||||
const hoverViewFileSrc = ref(viewFileHover);
|
|
||||||
const mediaList = ref([
|
|
||||||
{ id: 1, mediaName: '遵义市海风井铁路桥', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 2, mediaName: '遵义市海风井铁路桥跨街大牌', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 3, mediaName: '遵义市海风井铁路桥跨街大牌2', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 4, mediaName: '遵义市海风井铁路桥跨街大牌3', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 5, mediaName: '遵义市海风井铁路桥(华南大酒店旁)跨街大牌', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 6, mediaName: '遵义市海风井铁路桥', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 7, mediaName: '遵义市海风井铁路桥跨街大牌', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 8, mediaName: '遵义市海风井铁路桥跨街大牌2', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 9, mediaName: '遵义市海风井铁路桥跨街大牌3', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 10, mediaName: '遵义市海风井铁路桥(华南大酒店旁)跨街大牌', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 11, mediaName: '遵义市海风井铁路桥', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 12, mediaName: '遵义市海风井铁路桥跨街大牌', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 13, mediaName: '遵义市海风井铁路桥跨街大牌2', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 14, mediaName: '遵义市海风井铁路桥跨街大牌3', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 15, mediaName: '遵义市海风井铁路桥(华南大酒店旁)跨街大牌', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 16, mediaName: '遵义市海风井铁路桥', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 17, mediaName: '遵义市海风井铁路桥跨街大牌', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 18, mediaName: '遵义市海风井铁路桥跨街大牌2', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 19, mediaName: '遵义市海风井铁路桥跨街大牌3', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value },
|
|
||||||
{ id: 20, mediaName: '遵义市海风井铁路桥(华南大酒店旁)跨街大牌', currentImageSrc: defaultImageSrc.value, currentCataloguePhotoSrc: defaultViewFileSrc.value, currentMediaChainSrc: defaultViewFileSrc.value, currentQualificationFileSrc: defaultViewFileSrc.value, currentStampedPublicationSrc: defaultViewFileSrc.value }
|
|
||||||
])
|
|
||||||
// 导出PPT模板参数
|
// 导出PPT模板参数
|
||||||
const exportPPT = reactive({
|
const exportPPT = reactive({
|
||||||
open: false,
|
open: false,
|
||||||
title: "",
|
title: "",
|
||||||
})
|
})
|
||||||
const loading = ref(true)
|
|
||||||
const total = ref(0)
|
|
||||||
const data = reactive({
|
|
||||||
abolishForm: {},
|
|
||||||
form: {},
|
|
||||||
queryParams: {
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
},
|
|
||||||
abolishRules: {
|
|
||||||
content: [{ required: true, message: "请输入废除原因", trigger: "blur" }],
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const { queryParams, form, abolishForm, abolishRules } = toRefs(data)
|
|
||||||
|
|
||||||
// 获取一级媒体类型
|
// 获取一级媒体类型
|
||||||
const getMediaTypeOne = () => {
|
const getMediaTypeOne = () => {
|
||||||
|
|
@ -466,6 +478,25 @@ const getMediaTypeThree = (value) => {
|
||||||
mediaTypeThree.value = res.data
|
mediaTypeThree.value = res.data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 查询条件获取供应商
|
||||||
|
const getSupplierList = (queryText) => {
|
||||||
|
if (queryText) {
|
||||||
|
selectLoading.value = true
|
||||||
|
listBusSupplier({ keyword: queryText }).then(res => {
|
||||||
|
supplierList.value = res.data
|
||||||
|
selectLoading.value = false
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
selectLoading.value = false
|
||||||
|
supplierList.value = []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 获取业务部门
|
||||||
|
const getDepList = () => {
|
||||||
|
listDept({ businessFlag: 1 }).then(response => {
|
||||||
|
deptList.value = response.data
|
||||||
|
})
|
||||||
|
}
|
||||||
// 获取省/直辖市数据
|
// 获取省/直辖市数据
|
||||||
const getProvinceList = () => {
|
const getProvinceList = () => {
|
||||||
sysRegionListByPid({ parentId: '0' }).then(res => {
|
sysRegionListByPid({ parentId: '0' }).then(res => {
|
||||||
|
|
@ -480,6 +511,7 @@ const getCityList = (value) => {
|
||||||
queryParams.value.townId = undefined
|
queryParams.value.townId = undefined
|
||||||
city.value = res.data
|
city.value = res.data
|
||||||
})
|
})
|
||||||
|
getbusinessAreaList()
|
||||||
}
|
}
|
||||||
// 获取区/县数据
|
// 获取区/县数据
|
||||||
const getCountyList = (value) => {
|
const getCountyList = (value) => {
|
||||||
|
|
@ -488,6 +520,7 @@ const getCountyList = (value) => {
|
||||||
queryParams.value.townId = undefined
|
queryParams.value.townId = undefined
|
||||||
county.value = res.data
|
county.value = res.data
|
||||||
})
|
})
|
||||||
|
getbusinessAreaList()
|
||||||
}
|
}
|
||||||
// 获取镇数据
|
// 获取镇数据
|
||||||
const getTownList = (value) => {
|
const getTownList = (value) => {
|
||||||
|
|
@ -495,13 +528,59 @@ const getTownList = (value) => {
|
||||||
queryParams.value.townId = undefined
|
queryParams.value.townId = undefined
|
||||||
town.value = res.data
|
town.value = res.data
|
||||||
})
|
})
|
||||||
|
getbusinessAreaList()
|
||||||
|
}
|
||||||
|
// 依据省市县镇查询商圈
|
||||||
|
const getbusinessAreaList = (val) => {
|
||||||
|
const _params = {
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 200,
|
||||||
|
provinceId: queryParams.value.provinceCode,
|
||||||
|
cityId: queryParams.value.cityCode,
|
||||||
|
countyId: queryParams.value.areaCode,
|
||||||
|
townId: queryParams.value.townCode,
|
||||||
|
}
|
||||||
|
busTradingAreaPage(_params).then(res => {
|
||||||
|
if (res.code == 200) {
|
||||||
|
businessAreaList.value = res.data.list
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 折叠展开
|
// 折叠展开
|
||||||
const unfoldFlag = ref(false)
|
const unfoldFlag = ref(false)
|
||||||
const handleFlod = () => {
|
const handleFlod = () => {
|
||||||
unfoldFlag.value = !unfoldFlag.value
|
unfoldFlag.value = !unfoldFlag.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 查询媒体信息列表 */
|
||||||
|
const getMediaPageList = () => {
|
||||||
|
loading.value = false
|
||||||
|
mediaPageList(queryParams.value).then(res => {
|
||||||
|
res.data.rows.forEach(element => {
|
||||||
|
element.currentImageSrc = defaultImageSrc.value;
|
||||||
|
element.currentCataloguePhotoSrc = defaultViewFileSrc.value;
|
||||||
|
element.currentMediaChainSrc = defaultViewFileSrc.value;
|
||||||
|
element.currentQualificationFileSrc = defaultViewFileSrc.value;
|
||||||
|
element.currentStampedPublicationSrc = defaultViewFileSrc.value;
|
||||||
|
});
|
||||||
|
mediaList.value = res.data.rows
|
||||||
|
total.value = res.data.total
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.value.pageNum = 1
|
||||||
|
getMediaPageList()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
const resetQuery = () => {
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 多选事件
|
// 多选事件
|
||||||
const handleSelectionChange = (selection) => {
|
const handleSelectionChange = (selection) => {
|
||||||
multipleChoseArr.value = selection
|
multipleChoseArr.value = selection
|
||||||
|
|
@ -509,32 +588,12 @@ const handleSelectionChange = (selection) => {
|
||||||
// 移除选择项
|
// 移除选择项
|
||||||
const handleCloseTag = (tag) => {
|
const handleCloseTag = (tag) => {
|
||||||
|
|
||||||
}
|
|
||||||
/** 查询岗位列表 */
|
|
||||||
const getList = () => {
|
|
||||||
loading.value = false
|
|
||||||
// listPost(proxy.addDateRange(queryParams.value, dateRange.value)).then(response => {
|
|
||||||
// postList.value = response.rows
|
|
||||||
// total.value = response.total
|
|
||||||
// loading.value = false
|
|
||||||
// })
|
|
||||||
}
|
|
||||||
/** 搜索按钮操作 */
|
|
||||||
const handleQuery = () => {
|
|
||||||
queryParams.value.pageNum = 1
|
|
||||||
getList()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 重置按钮操作 */
|
|
||||||
const resetQuery = () => {
|
|
||||||
proxy.resetForm("queryRef")
|
|
||||||
handleQuery()
|
|
||||||
}
|
}
|
||||||
// 新增
|
// 新增
|
||||||
const handleOpenAddForm = () => {
|
const handleOpenAddForm = () => {
|
||||||
showForm.value = true
|
showForm.value = true
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
mediaFormRef.value.initForm('新建媒体信息', { supplierId: null })
|
mediaFormRef.value.initForm('新建媒体信息', { id: null })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 修改
|
// 修改
|
||||||
|
|
@ -545,16 +604,17 @@ const handleUpdate = (row) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 详情
|
// 详情
|
||||||
const handleOpenDetail = () => {
|
const handleOpenDetail = (_mediaId) => {
|
||||||
showDetail.value = true
|
showDetail.value = true
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
// mediaDetailRef.value.formTitle = '编辑供应商'
|
mediaDetailRef.value.getMediaInfo(_mediaId)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 关闭表单
|
// 关闭表单
|
||||||
const handleShowList = () => {
|
const handleShowList = () => {
|
||||||
console.log('触发')
|
console.log('触发')
|
||||||
showForm.value = false
|
showForm.value = false
|
||||||
|
getMediaPageList()
|
||||||
}
|
}
|
||||||
// 关闭详情
|
// 关闭详情
|
||||||
const handleCloseDetail = () => {
|
const handleCloseDetail = () => {
|
||||||
|
|
@ -710,7 +770,8 @@ const handleGoMediaMap = () => {
|
||||||
// 初始化
|
// 初始化
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
bgStore.setBgImage(otherbg)
|
bgStore.setBgImage(otherbg)
|
||||||
getList()
|
getMediaPageList()
|
||||||
|
getDepList()
|
||||||
getMediaTypeOne()
|
getMediaTypeOne()
|
||||||
getProvinceList()
|
getProvinceList()
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -12,14 +12,14 @@
|
||||||
<el-form ref="ruleFormRef" :model="detailForm" label-width="200px" class="myDetailForm">
|
<el-form ref="ruleFormRef" :model="detailForm" label-width="200px" class="myDetailForm">
|
||||||
<div class="supplierTitleContainer">
|
<div class="supplierTitleContainer">
|
||||||
<div class="supplierNameIcon" />
|
<div class="supplierNameIcon" />
|
||||||
<div class="supplierNameTitle">银川金凤区新华联广场门口上方LED</div>
|
<div class="supplierNameTitle">{{ detailForm.mediaName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<el-collapse class="my-collapse" v-model="activeNames" @change="handleChange">
|
<el-collapse class="my-collapse" v-model="activeNames" @change="handleChange">
|
||||||
<el-collapse-item title="业务部门" name="1">
|
<el-collapse-item title="业务部门" name="1">
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="业务部门" prop="business">
|
<el-form-item label="业务部门" prop="business">
|
||||||
优势媒体部门
|
{{ detailForm.businessType }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -28,17 +28,17 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="状态" prop="business_department">
|
<el-form-item label="状态" prop="business_department">
|
||||||
生效中
|
{{ detailForm.state }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体编号" prop="business_department">
|
<el-form-item label="媒体编号" prop="business_department">
|
||||||
MT2023101100009
|
{{ detailForm.mediaCode }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="媒体形式/名称" prop="business_department">
|
<el-form-item label="媒体形式/名称" prop="business_department">
|
||||||
银川金凤区新华联广场门口上方LED
|
{{ detailForm.mediaName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -46,22 +46,22 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体类型" prop="business_department">
|
<el-form-item label="媒体类型" prop="business_department">
|
||||||
待定
|
{{ detailForm.mediaType }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体大类" prop="business_department">
|
<el-form-item label="媒体大类" prop="business_department">
|
||||||
待定
|
{{ detailForm.mediaCategory }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="展示形式" prop="business_department">
|
<el-form-item label="展示形式" prop="business_department">
|
||||||
待定
|
{{ detailForm.displayForm }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" v-if="detailForm.business == '优势媒体部门'">
|
<el-col :span="6" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-form-item label="是否有照明" prop="business_department">
|
<el-form-item label="是否有照明" prop="business_department">
|
||||||
待定
|
{{ detailForm.hasLighting }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -69,22 +69,22 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="播放时间" prop="business_department">
|
<el-form-item label="播放时间" prop="business_department">
|
||||||
待定
|
{{ detailForm.playbackTime }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体尺寸" prop="business_department">
|
<el-form-item label="媒体尺寸" prop="business_department">
|
||||||
待定
|
{{ detailForm.mediaSize }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="MR" prop="business_department">
|
<el-form-item label="MR" prop="business_department">
|
||||||
待定
|
{{ detailForm.mr }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="日均车流量" prop="business_department">
|
<el-form-item label="日均车流量" prop="business_department">
|
||||||
待定
|
{{ detailForm.dailyAvgVehicleFlow }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -92,7 +92,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="媒体朝向" prop="business_department">
|
<el-form-item label="媒体朝向" prop="business_department">
|
||||||
待定
|
{{ detailForm.mediaOrientation }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -100,12 +100,12 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="18">
|
<el-col :span="18">
|
||||||
<el-form-item label="城市" prop="business_department">
|
<el-form-item label="城市" prop="business_department">
|
||||||
待定
|
{{ detailForm.provinceName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="商圈" prop="business_department">
|
<el-form-item label="商圈" prop="business_department">
|
||||||
待定
|
{{ detailForm.businessDistrictName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -113,7 +113,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="地址" prop="business_department">
|
<el-form-item label="地址" prop="business_department">
|
||||||
待定
|
{{ detailForm.address }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -121,7 +121,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="地理位置">
|
<el-form-item label="地理位置">
|
||||||
待定
|
{{ detailForm.mapX }},{{ detailForm.mapY }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -129,369 +129,47 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="最小购买周期">
|
<el-form-item label="最小购买周期">
|
||||||
待定
|
{{ detailForm.minPurchaseCycle }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="首次制作安装费">
|
<el-form-item label="首次制作安装费">
|
||||||
待定
|
{{ detailForm.firstInstallFee }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="换刊制作安装费">
|
<el-form-item label="换刊制作安装费">
|
||||||
待定
|
{{ detailForm.changeInstallFee }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
<el-collapse-item title="媒体报价信息" name="3">
|
<el-collapse-item title="媒体报价信息" name="3">
|
||||||
<div v-if="detailForm.business == '优势媒体部门'">
|
<div v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-table v-loading="loading" :data="quotationList" height="382px">
|
<competitiveOffer ref="competitiveOfferRef" />
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="年度" align="left" prop="year" width="100" />
|
|
||||||
<el-table-column label="城市/市场" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体大类" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体形式/名称" align="left" prop="mediaName" width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<span class="mediaNameLabel">{{ scope.row.mediaName }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="统一对外刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="购买周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="折扣" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体总净价" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="总制作费" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="总净价" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="单日覆盖人流量" align="center" prop="stampedPublication" width="150" />
|
|
||||||
<el-table-column label="SOV" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="CPM" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="备注" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="是否框内" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="成本" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="制作成本" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="供应商" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="项目名称" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入时间" align="center" prop="postCode" width="150" />
|
|
||||||
</el-table>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-if="detailForm.business == '网络媒体部门'">
|
<div v-if="detailForm.business == '网络媒体部门'">
|
||||||
<el-tabs v-model="activePriceType" @tab-click="handlePriceTypeClick">
|
<el-tabs v-model="activePriceType" @tab-click="handlePriceTypeClick">
|
||||||
<el-tab-pane label="门禁" name="门禁">
|
<el-tab-pane label="门禁" name="门禁">
|
||||||
<el-table v-loading="loading" :data="quotationList" height="382px">
|
<accessControlPrice ref="accessControlPriceRef" />
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="城市" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<span class="mediaNameLabel">{{ scope.row.mediaName }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="投放数量" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="起购周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="折扣" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体总净价" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="首次制作安装费" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="总制作费" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="单价" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="发布总净价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="发布总净价单位" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="媒体费总价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="单日覆盖人流量" align="center" prop="stampedPublication"
|
|
||||||
width="150" />
|
|
||||||
<el-table-column label="总曝光/人次" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="SOV" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="CPM" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="备注" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="AB面划分" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入时间" align="center" prop="postCode" width="150" />
|
|
||||||
</el-table>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="候车厅" name="候车厅">
|
<el-tab-pane label="候车厅" name="候车厅">
|
||||||
<el-table v-loading="loading" :data="quotationList" height="382px">
|
<waitingHallPrice ref="waitingHallPriceRef" />
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="城市" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="资源描述" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<span class="mediaNameLabel">{{ scope.row.mediaName }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="发布总量" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="购买周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="折扣" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体总净价" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="首次制作安装费" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="总制作费" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="总净价" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="总净价单位" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="媒体费单价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="制作费" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="媒体费总价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="最终媒体费优惠价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="单日覆盖人流量" align="center" prop="stampedPublication"
|
|
||||||
width="150" />
|
|
||||||
<el-table-column label="总曝光/人次" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="SOV" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="CPM" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="是否亮灯" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="单面/双面" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="中途换画制作费" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="备注" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入时间" align="center" prop="postCode" width="150" />
|
|
||||||
</el-table>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="道闸" name="道闸">
|
<el-tab-pane label="道闸" name="道闸">
|
||||||
<el-table v-loading="loading" :data="quotationList" height="382px">
|
<barrierGatePrice ref="barrierGatePriceRef" />
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="城市" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<span class="mediaNameLabel">{{ scope.row.mediaName }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="发布总量" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="最短购买周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="折扣" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体总净价" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="首次制作安装费" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="总制作费" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="总净价" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="总净价单位" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="4周/面" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="媒体费总价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="单日覆盖人流量" align="center" prop="stampedPublication"
|
|
||||||
width="150" />
|
|
||||||
<el-table-column label="总曝光/人次" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="SOV" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="CPM" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="备注" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入时间" align="center" prop="postCode" width="150" />
|
|
||||||
</el-table>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="地铁" name="地铁">
|
<el-tab-pane label="地铁" name="地铁">
|
||||||
<el-table v-loading="loading" :data="quotationList" height="382px">
|
<subwayPrice ref="subwayPriceRef" />
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="城市" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="线路" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="站点" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="级别" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体形式" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<span class="mediaNameLabel">{{ scope.row.mediaName }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="短期附加费" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="创意附加费" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="起投周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="投放周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="购买数量" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="购买数量单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="折扣" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体总净价" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="媒体总净价单位" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="常规制作费" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="创意制作费" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="总制作费" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="总净价" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="总净价单位" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="底价" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="低价总" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="制作费" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="媒体费总价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="单日覆盖人流量" align="center" prop="stampedPublication"
|
|
||||||
width="150" />
|
|
||||||
<el-table-column label="发布期内总曝光人次" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="同站内同类媒体数量或列车总量" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="SOV" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="CPM" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="覆盖热区" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="备注" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入时间" align="center" prop="postCode" width="150" />
|
|
||||||
</el-table>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="高铁" name="高铁">
|
<el-tab-pane label="高铁" name="高铁">
|
||||||
<el-table v-loading="loading" :data="quotationList" height="382px">
|
<highSpeedRailway ref="highSpeedRailwayRef" />
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="城市" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="场站" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体位置" align="left" prop="mediaName" width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<span class="mediaNameLabel">{{ scope.row.mediaName }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="发布总量" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="购买周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="折扣" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体总净价" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="首次制作安装费" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="总制作费" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="总净价" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="总净价单位" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="客流量/人次" align="center" prop="stampedPublication"
|
|
||||||
width="150" />
|
|
||||||
<el-table-column label="总曝光/人次" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="SOV" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="CPM" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="成本折扣" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="成本" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="备注" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入时间" align="center" prop="postCode" width="150" />
|
|
||||||
</el-table>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="写字楼" name="写字楼">
|
<el-tab-pane label="写字楼" name="写字楼">
|
||||||
<el-table v-loading="loading" :data="quotationList" height="382px">
|
<officeBuilding ref="officeBuildingRef" />
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="城市" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<span class="mediaNameLabel">{{ scope.row.mediaName }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="发布总量" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="实际购买刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="购买周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="折扣" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体总净价" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="首次制作安装费" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="总制作费" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="总净价" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="总净价单位" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="媒体费总价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="单日覆盖人流量" align="center" prop="stampedPublication"
|
|
||||||
width="150" />
|
|
||||||
<el-table-column label="总曝光/人次" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="SOV" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="CPM" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="成本折扣" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="备注" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入时间" align="center" prop="postCode" width="150" />
|
|
||||||
</el-table>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="车库灯箱" name="车库灯箱">
|
<el-tab-pane label="车库灯箱" name="车库灯箱">
|
||||||
<el-table v-loading="loading" :data="quotationList" height="382px">
|
<garageLightBox ref="garageLightBoxRef" />
|
||||||
<el-table-column label="序号" align="center" width="80">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ scope.$index + 1 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="城市" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体名称" align="left" prop="mediaName" width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<span class="mediaNameLabel">{{ scope.row.mediaName }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="频次" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="发布总量" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="实际购买刊例价" align="left" prop="postCode" width="180" />
|
|
||||||
<el-table-column label="实际购买刊例价单位" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="购买周期" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="折扣" align="left" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="媒体总净价" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="首次制作安装费" align="center" prop="cataloguePhoto" width="230" />
|
|
||||||
<el-table-column label="总制作费" align="center" prop="mediaChain" width="160" />
|
|
||||||
<el-table-column label="总净价" align="center" prop="qualificationFile" width="130" />
|
|
||||||
<el-table-column label="总净价单位" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="媒体费总价" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="单日覆盖人流量" align="center" prop="stampedPublication"
|
|
||||||
width="150" />
|
|
||||||
<el-table-column label="总曝光/人次" align="center" prop="qualificationFile"
|
|
||||||
width="130" />
|
|
||||||
<el-table-column label="SOV" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="CPM" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="成本折扣" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="备注" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入人员" align="center" prop="postCode" width="150" />
|
|
||||||
<el-table-column label="录入时间" align="center" prop="postCode" width="150" />
|
|
||||||
</el-table>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -500,22 +178,22 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体归属名称">
|
<el-form-item label="媒体归属名称">
|
||||||
待定
|
{{ detailForm.belongSupplierName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="联系人">
|
<el-form-item label="联系人">
|
||||||
待定
|
{{ detailForm.contactUserName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="联系电话" prop="business">
|
<el-form-item label="联系电话" prop="business">
|
||||||
13746577654
|
{{ detailForm.contactUserPhone }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体是否有改造" prop="business">
|
<el-form-item label="媒体是否有改造" prop="business">
|
||||||
无
|
{{ detailForm.hasReform }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -523,22 +201,22 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="发票类型">
|
<el-form-item label="发票类型">
|
||||||
待定
|
{{ detailForm.invoiceType }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="税点">
|
<el-form-item label="税点">
|
||||||
待定
|
{{ detailForm.taxRate }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="付款要求">
|
<el-form-item label="付款要求">
|
||||||
待定
|
{{ detailForm.paymentRequirements }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体公司名称" prop="business">
|
<el-form-item label="媒体公司名称" prop="business">
|
||||||
待定
|
{{ detailForm.mediaCompanyName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -546,22 +224,22 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="物业公司名称" prop="business">
|
<el-form-item label="物业公司名称" prop="business">
|
||||||
待定
|
{{ detailForm.propertyCompanyName }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="审批部门" prop="business">
|
<el-form-item label="审批部门" prop="business">
|
||||||
待定
|
{{ detailForm.approvalDept }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="批文情况">
|
<el-form-item label="批文情况">
|
||||||
待定
|
{{ detailForm.approvalSituation }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="批文发布时间">
|
<el-form-item label="批文发布时间">
|
||||||
待定
|
{{ detailForm.approvalReleaseTime }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -569,22 +247,22 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体独家授权" prop="business">
|
<el-form-item label="媒体独家授权" prop="business">
|
||||||
待定
|
{{ detailForm.soleAgentAuth }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="独家授权时间">
|
<el-form-item label="独家授权时间">
|
||||||
待定
|
{{ detailForm.soleAgentAuthTime }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体行业授权" prop="business">
|
<el-form-item label="媒体行业授权" prop="business">
|
||||||
待定
|
{{ detailForm.industryAuth }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="媒体行业授权时间">
|
<el-form-item label="媒体行业授权时间">
|
||||||
待定
|
{{ detailForm.industryAuthTime }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -592,7 +270,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="行业限制" prop="business">
|
<el-form-item label="行业限制" prop="business">
|
||||||
待定
|
{{ detailForm.industryLimit }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -600,7 +278,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="媒体曾经经营公司" prop="business">
|
<el-form-item label="媒体曾经经营公司" prop="business">
|
||||||
待定
|
{{ detailForm.everManagerCompany }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -608,7 +286,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="媒体时间线" prop="business">
|
<el-form-item label="媒体时间线" prop="business">
|
||||||
待定
|
{{ detailForm.mediaTimeline }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -616,7 +294,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="曾经媒体情况" prop="business">
|
<el-form-item label="曾经媒体情况" prop="business">
|
||||||
待定
|
{{ detailForm.everMediaSituation }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -624,7 +302,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="媒体历史事件" prop="business">
|
<el-form-item label="媒体历史事件" prop="business">
|
||||||
待定
|
{{ detailForm.mediaHistory }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -632,7 +310,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '网络媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '网络媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="同类媒体公司" prop="business">
|
<el-form-item label="同类媒体公司" prop="business">
|
||||||
待定
|
{{ detailForm.equalsMediaCompany }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -640,7 +318,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="其他" prop="business">
|
<el-form-item label="其他" prop="business">
|
||||||
待定
|
{{ detailForm.other }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -648,7 +326,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="批文文件" class="filesItemContent">
|
<el-form-item label="批文文件" class="filesItemContent">
|
||||||
|
<supplierDetailFile ref="approvalDocumentRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -656,7 +334,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="独家授权文件" class="filesItemContent">
|
<el-form-item label="独家授权文件" class="filesItemContent">
|
||||||
|
<supplierDetailFile ref="exclusiveLicenseFileRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -664,7 +342,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="媒体行业授权文件" class="filesItemContent">
|
<el-form-item label="媒体行业授权文件" class="filesItemContent">
|
||||||
|
<supplierDetailFile ref="mediaLicenseFileRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -672,7 +350,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '网络媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '网络媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="媒体归属附件" class="filesItemContent">
|
<el-form-item label="媒体归属附件" class="filesItemContent">
|
||||||
|
<supplierDetailFile ref="mediaOwnershipRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -680,7 +358,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="曾经媒体照片" prop="business" class="filesItemContent">
|
<el-form-item label="曾经媒体照片" prop="business" class="filesItemContent">
|
||||||
|
<supplierDetailFile ref="onceMediaPhotoRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -689,7 +367,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="优势" prop="business">
|
<el-form-item label="优势" prop="business">
|
||||||
|
{{ detailForm.advantages }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -697,7 +375,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="备注" prop="business">
|
<el-form-item label="备注" prop="business">
|
||||||
|
{{ detailForm.remark }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -705,7 +383,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="图片上传" class="filesItemContent" prop="business_department">
|
<el-form-item label="图片上传" class="filesItemContent" prop="business_department">
|
||||||
|
<supplierDetailFile ref="mediaPicRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -713,7 +391,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row">
|
<el-row :gutter="30" class="my_form_row">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="视频上传" class="filesItemContent" prop="business_department">
|
<el-form-item label="视频上传" class="filesItemContent" prop="business_department">
|
||||||
|
<supplierDetailFile ref="mediaVideoRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -721,7 +399,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="盖章刊例" class="filesItemContent" prop="business">
|
<el-form-item label="盖章刊例" class="filesItemContent" prop="business">
|
||||||
|
<supplierDetailFile ref="stampedPublicationRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -729,7 +407,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="资质文件" class="filesItemContent" prop="business">
|
<el-form-item label="资质文件" class="filesItemContent" prop="business">
|
||||||
|
<supplierDetailFile ref="qualificationFileRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -737,7 +415,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="媒体链条" class="filesItemContent" prop="business">
|
<el-form-item label="媒体链条" class="filesItemContent" prop="business">
|
||||||
|
<supplierDetailFile ref="mediaChainRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -745,7 +423,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '优势媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="刊例照片" class="filesItemContent" prop="business">
|
<el-form-item label="刊例照片" class="filesItemContent" prop="business">
|
||||||
|
<supplierDetailFile ref="journalCataloguePhotoRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -753,7 +431,7 @@
|
||||||
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '网络媒体部门'">
|
<el-row :gutter="30" class="my_form_row" v-if="detailForm.business == '网络媒体部门'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="MR和制作要求" class="filesItemContent" prop="business">
|
<el-form-item label="MR和制作要求" class="filesItemContent" prop="business">
|
||||||
|
<supplierDetailFile ref="mRProductionRequirementsRef" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -765,34 +443,150 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { onMounted, defineEmits, ref } from 'vue'
|
import { onMounted, defineEmits, ref } from 'vue'
|
||||||
import { Close } from '@element-plus/icons-vue'
|
import { Close } from '@element-plus/icons-vue'
|
||||||
|
import { mediaDetail } from "@/api/mediaLibrary"
|
||||||
|
|
||||||
|
import competitiveOffer from './components/competitiveOffer.vue'
|
||||||
|
import accessControlPrice from './components/accessControlPrice.vue'
|
||||||
|
import waitingHallPrice from './components/waitingHallPrice.vue'
|
||||||
|
import barrierGatePrice from './components/barrierGatePrice.vue'
|
||||||
|
import subwayPrice from './components/subwayPrice.vue'
|
||||||
|
import highSpeedRailway from './components/highSpeedRailway.vue'
|
||||||
|
import officeBuilding from './components/officeBuilding.vue'
|
||||||
|
import garageLightBox from './components/garageLightBox.vue'
|
||||||
|
import supplierDetailFile from '../../components/FileUpload/supplierDetailFile.vue';
|
||||||
import { useBackgroundStore } from '@/store/modules/background'
|
import { useBackgroundStore } from '@/store/modules/background'
|
||||||
import otherbg from '@/assets/images/otherbg.png'
|
import otherbg from '@/assets/images/otherbg.png'
|
||||||
const bgStore = useBackgroundStore()
|
const bgStore = useBackgroundStore()
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
const emit = defineEmits(['handleShowList']);
|
const emit = defineEmits(['handleShowList']);
|
||||||
const detailForm = ref({
|
// 详情参数
|
||||||
business: '优势媒体部门',
|
const detailForm = ref({})
|
||||||
supplierList: [
|
|
||||||
{ medioName: '银川金凤区新华联广场门口上方LED', medioCode: 'MT2023101100009', medioType: 'LED', medioClass: '电子广告', medioStatus: 1 },
|
|
||||||
{ medioName: '银川金凤区新华联广场门口上方LED', medioCode: 'MT2023101100009', medioType: 'LED', medioClass: '电子广告', medioStatus: 1 }
|
|
||||||
]
|
|
||||||
})
|
|
||||||
const activePriceType = ref('门禁')
|
const activePriceType = ref('门禁')
|
||||||
const quotationList = ref([
|
|
||||||
{ year: 2025 }
|
|
||||||
])
|
|
||||||
const activeNames = ref(['1', '2', '3', '4'])
|
const activeNames = ref(['1', '2', '3', '4'])
|
||||||
|
|
||||||
|
// 优势媒体报价组件
|
||||||
|
const competitiveOfferRef = ref(null)
|
||||||
|
// 网络媒体门禁报价组件
|
||||||
|
const accessControlPriceRef = ref(null)
|
||||||
|
// 网络媒体门候车厅报价组件
|
||||||
|
const waitingHallPriceRef = ref(null)
|
||||||
|
// 网络媒体道闸报价组件
|
||||||
|
const barrierGatePriceRef = ref(null)
|
||||||
|
// 网络媒体地铁报价组件
|
||||||
|
const subwayPriceRef = ref(null)
|
||||||
|
// 网络媒体高铁报价组件
|
||||||
|
const highSpeedRailwayRef = ref(null)
|
||||||
|
// 网络媒体写字楼报价组件
|
||||||
|
const officeBuildingRef = ref(null)
|
||||||
|
// 网络媒体车库灯箱报价组件
|
||||||
|
const garageLightBoxRef = ref(null)
|
||||||
|
|
||||||
|
// 批文文件组件
|
||||||
|
const approvalDocumentRef = ref(null)
|
||||||
|
// 独家授权文件
|
||||||
|
const exclusiveLicenseFileRef = ref(null)
|
||||||
|
// 媒体行业授权文件
|
||||||
|
const mediaLicenseFileRef = ref(null)
|
||||||
|
// 媒体归属附件
|
||||||
|
const mediaOwnershipRef = ref(null)
|
||||||
|
// 曾经媒体照片
|
||||||
|
const onceMediaPhotoRef = ref(null)
|
||||||
|
// 图片上传
|
||||||
|
const mediaPicRef = ref(null)
|
||||||
|
// 视频上传
|
||||||
|
const mediaVideoRef = ref(null)
|
||||||
|
// 盖章刊例
|
||||||
|
const stampedPublicationRef = ref(null)
|
||||||
|
// 资质文件
|
||||||
|
const qualificationFileRef = ref(null)
|
||||||
|
// 媒体链条
|
||||||
|
const mediaChainRef = ref(null)
|
||||||
|
// 刊例照片
|
||||||
|
const journalCataloguePhotoRef = ref(null)
|
||||||
|
// MR和制作要求
|
||||||
|
const mRProductionRequirementsRef = ref(null)
|
||||||
|
|
||||||
|
// 返回
|
||||||
const handleClose = () => {
|
const handleClose = () => {
|
||||||
emit('handleShowList')
|
emit('handleShowList')
|
||||||
}
|
}
|
||||||
|
// 折叠面板点击
|
||||||
const handleChange = (val) => {
|
const handleChange = (val) => {
|
||||||
console.log(val)
|
console.log(val)
|
||||||
activeNames.value = val
|
activeNames.value = val
|
||||||
}
|
}
|
||||||
const handleOpenMedio = () => {
|
// 初始化
|
||||||
|
const businessTypeName = ref('优势媒体部')
|
||||||
|
const handleChangeDept = (val) => {
|
||||||
|
const choseDep = deptList.value.filter(item => item.deptId == val)[0]
|
||||||
|
businessTypeName.value = choseDep?.deptName
|
||||||
|
nextTick(() => {
|
||||||
|
if (businessTypeName.value == '优势媒体部' && competitiveOfferRef.value) competitiveOfferRef.value.getMediaPrice(detailForm.value.id, false)
|
||||||
|
if (businessTypeName.value == '网络媒体部' && activePriceType.value == '门禁') accessControlPriceRef.value.getMediaPrice(detailForm.value.id, false)
|
||||||
|
if (businessTypeName.value == '网络媒体部' && activePriceType.value == '候车厅') waitingHallPriceRef.value.getMediaPrice(detailForm.value.id, false)
|
||||||
|
if (businessTypeName.value == '网络媒体部' && activePriceType.value == '道闸') barrierGatePriceRef.value.getMediaPrice(detailForm.value.id, false)
|
||||||
|
if (businessTypeName.value == '网络媒体部' && activePriceType.value == '地铁') subwayPriceRef.value.getMediaPrice(detailForm.value.id, false)
|
||||||
|
if (businessTypeName.value == '网络媒体部' && activePriceType.value == '高铁') highSpeedRailwayRef.value.getMediaPrice(detailForm.value.id, false)
|
||||||
|
if (businessTypeName.value == '网络媒体部' && activePriceType.value == '写字楼') officeBuildingRef.value.getMediaPrice(detailForm.value.id, false)
|
||||||
|
if (businessTypeName.value == '网络媒体部' && activePriceType.value == '车库灯箱') garageLightBoxRef.value.getMediaPrice(detailForm.value.id, false)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const getMediaInfo = (mediaId) => {
|
||||||
|
mediaDetail(mediaId).then(res => {
|
||||||
|
detailForm.value = res.data
|
||||||
|
handleChangeDept(res.data.businessType)
|
||||||
|
if (detailForm.value.mediaFile && detailForm.value.mediaFile.length > 0) {
|
||||||
|
if (approvalDocumentRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 1)
|
||||||
|
approvalDocumentRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (exclusiveLicenseFileRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 2)
|
||||||
|
exclusiveLicenseFileRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (mediaLicenseFileRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 3)
|
||||||
|
mediaLicenseFileRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (mediaOwnershipRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 4)
|
||||||
|
mediaOwnershipRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (onceMediaPhotoRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 5)
|
||||||
|
onceMediaPhotoRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (mediaPicRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 6)
|
||||||
|
mediaPicRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (mediaVideoRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 7)
|
||||||
|
mediaVideoRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (stampedPublicationRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 8)
|
||||||
|
stampedPublicationRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (qualificationFileRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 9)
|
||||||
|
qualificationFileRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (mediaChainRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 10)
|
||||||
|
mediaChainRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (journalCataloguePhotoRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 11)
|
||||||
|
journalCataloguePhotoRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
if (mRProductionRequirementsRef.value) {
|
||||||
|
const fileList = ruleForm.value.mediaFile.filter(item => item.fileType == 12)
|
||||||
|
mRProductionRequirementsRef.value.setFileInfo(fileList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// 初始化
|
// 初始化
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|
@ -800,7 +594,7 @@ onMounted(() => {
|
||||||
});
|
});
|
||||||
// 暴露方法\属性给父组件
|
// 暴露方法\属性给父组件
|
||||||
defineExpose({
|
defineExpose({
|
||||||
|
getMediaInfo
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style lang='scss'>
|
<style lang='scss'>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -12,7 +12,7 @@
|
||||||
}}</span>
|
}}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<div v-if="pickLatLableValue" class="pickLatLabel">拾取的经纬度:{{ pickLatLableValue.lng }}, {{ pickLatLableValue.lat }}</div>
|
<div v-if="pickLatLableValue" class="pickLatLabel">拾取的经纬度:{{ pickLatLableValue.lat }}, {{ pickLatLableValue.lng }}</div>
|
||||||
<div id="mapContainer" class="pickMapContainer"></div>
|
<div id="mapContainer" class="pickMapContainer"></div>
|
||||||
<!-- <template #footer>
|
<!-- <template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
|
|
@ -29,7 +29,7 @@ import AMapLoader from "@amap/amap-jsapi-loader"; // 引入地图服务
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
const emit = defineEmits(['closePickLat']);
|
const emit = defineEmits(['closePickLat']);
|
||||||
|
const { apiKey, secretKey } = window._CONFIG
|
||||||
// 拾取的经纬度
|
// 拾取的经纬度
|
||||||
const pickLatLableValue = ref(null)
|
const pickLatLableValue = ref(null)
|
||||||
const pickLatOpen = ref(false)
|
const pickLatOpen = ref(false)
|
||||||
|
|
@ -83,11 +83,11 @@ const loadMap = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
// 设置安全密钥
|
// 设置安全密钥
|
||||||
window._AMapSecurityConfig = {
|
window._AMapSecurityConfig = {
|
||||||
securityJsCode: 'a157b9d8963b598f40023f5469d3e73c'
|
securityJsCode: secretKey
|
||||||
};
|
};
|
||||||
|
|
||||||
AMapLoader.load({
|
AMapLoader.load({
|
||||||
key: "f5b170e2332903225896a7290b90793a",
|
key: apiKey,
|
||||||
plugins: ["AMap.PlaceSearch"],
|
plugins: ["AMap.PlaceSearch"],
|
||||||
AMapUI: {
|
AMapUI: {
|
||||||
plugins: []
|
plugins: []
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" class="searchInputForm">
|
<el-form :model="queryParams" ref="queryRef" :inline="true" class="searchInputForm">
|
||||||
<el-form-item label="" prop="templateName">
|
<el-form-item label="" prop="templateName">
|
||||||
<el-input v-model="queryParams.keyword" placeholder="请输入媒体名称/媒体编号/关键字"
|
<el-input v-model="queryParams.keyword" placeholder="请输入媒体名称/媒体编号/关键字" :prefix-icon="Search"
|
||||||
:prefix-icon="Search" style="width: 400px;" />
|
style="width: 400px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -43,6 +43,8 @@ import otherbg from '@/assets/images/otherbg.png'
|
||||||
const bgStore = useBackgroundStore()
|
const bgStore = useBackgroundStore()
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
|
|
||||||
|
const { apiKey, secretKey } = window._CONFIG
|
||||||
|
|
||||||
// 距离显示文本
|
// 距离显示文本
|
||||||
const distanceLable = ref('请选择')
|
const distanceLable = ref('请选择')
|
||||||
const distanceLableArray = ref([
|
const distanceLableArray = ref([
|
||||||
|
|
@ -90,13 +92,13 @@ const loadMap = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
// 设置安全密钥
|
// 设置安全密钥
|
||||||
window._AMapSecurityConfig = {
|
window._AMapSecurityConfig = {
|
||||||
securityJsCode: 'a157b9d8963b598f40023f5469d3e73c'
|
securityJsCode: secretKey
|
||||||
};
|
};
|
||||||
|
|
||||||
AMapLoader.load({
|
AMapLoader.load({
|
||||||
key: "f5b170e2332903225896a7290b90793a",
|
key: apiKey,
|
||||||
plugins: [],
|
plugins: [],
|
||||||
AMapUI: {
|
AMapUI: {
|
||||||
plugins: []
|
plugins: []
|
||||||
}
|
}
|
||||||
}).then(AMap => {
|
}).then(AMap => {
|
||||||
|
|
@ -368,7 +370,7 @@ const hideAmapLogo = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
mapInstance.value?.destroy()
|
mapInstance.value?.destroy()
|
||||||
})
|
})
|
||||||
// 初始化
|
// 初始化
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|
@ -457,13 +459,14 @@ onMounted(() => {
|
||||||
color: #87898E;
|
color: #87898E;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.clearBtn::before {
|
.clearBtn::before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0px;
|
left: 0px;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
width: 14px;
|
width: 14px;
|
||||||
height: 14px;
|
height: 14px;
|
||||||
background-image: url('../../assets/images/iconClearWhere.png');
|
background-image: url('../../assets/images/iconClearWhere.png');
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ import otherbg from '@/assets/images/otherbg.png'
|
||||||
const bgStore = useBackgroundStore()
|
const bgStore = useBackgroundStore()
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
const { approval_document_status } = proxy.useDict("approval_document_status")
|
const { approval_document_status } = proxy.useDict("approval_document_status")
|
||||||
|
const { apiKey, secretKey } = window._CONFIG
|
||||||
// 省、市、县、镇数据
|
// 省、市、县、镇数据
|
||||||
const province = ref([])
|
const province = ref([])
|
||||||
const city = ref([])
|
const city = ref([])
|
||||||
|
|
@ -310,11 +310,11 @@ const loadMap = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
// 设置安全密钥
|
// 设置安全密钥
|
||||||
window._AMapSecurityConfig = {
|
window._AMapSecurityConfig = {
|
||||||
securityJsCode: 'a157b9d8963b598f40023f5469d3e73c'
|
securityJsCode: secretKey
|
||||||
};
|
};
|
||||||
|
|
||||||
AMapLoader.load({
|
AMapLoader.load({
|
||||||
key: "f5b170e2332903225896a7290b90793a",
|
key: apiKey,
|
||||||
plugins: [],
|
plugins: [],
|
||||||
AMapUI: {
|
AMapUI: {
|
||||||
plugins: []
|
plugins: []
|
||||||
|
|
|
||||||
|
|
@ -249,7 +249,7 @@ import supplierLogs from "./supplierLogs.vue";
|
||||||
|
|
||||||
const bgStore = useBackgroundStore()
|
const bgStore = useBackgroundStore()
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
const { invoice_type, media_ownership, personnel_size, main_media_types, media_quality, history_cooperation, supplier_level, supplier_cooperation_degree, main_business, business_department } = proxy.useDict("invoice_type", "media_ownership", "personnel_size", "main_media_types", "media_quality", "history_cooperation", "supplier_level", "supplier_cooperation_degree", "main_business", "business_department")
|
const { invoice_type, media_ownership, personnel_size, main_media_types, media_quality, history_cooperation, supplier_level, supplier_cooperation_degree, main_business } = proxy.useDict("invoice_type", "media_ownership", "personnel_size", "main_media_types", "media_quality", "history_cooperation", "supplier_level", "supplier_cooperation_degree", "main_business")
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const showForm = ref(false)
|
const showForm = ref(false)
|
||||||
const supplierFormRef = ref(null)
|
const supplierFormRef = ref(null)
|
||||||
|
|
|
||||||
|
|
@ -399,6 +399,7 @@ const getProvinceList = () => {
|
||||||
const getCityList = (value) => {
|
const getCityList = (value) => {
|
||||||
var choseProvince = province.value.filter(item => item.id == value)[0]
|
var choseProvince = province.value.filter(item => item.id == value)[0]
|
||||||
if (choseProvince) ruleForm.value.supplierCity = choseProvince.name
|
if (choseProvince) ruleForm.value.supplierCity = choseProvince.name
|
||||||
|
else ruleForm.value.supplierCity = undefined
|
||||||
sysRegionListByPid({ parentId: value }).then(res => {
|
sysRegionListByPid({ parentId: value }).then(res => {
|
||||||
ruleForm.value.cityId = undefined
|
ruleForm.value.cityId = undefined
|
||||||
ruleForm.value.countyId = undefined
|
ruleForm.value.countyId = undefined
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ const data = reactive({
|
||||||
const { queryParams, form, rules } = toRefs(data)
|
const { queryParams, form, rules } = toRefs(data)
|
||||||
|
|
||||||
|
|
||||||
/** 查询PPT模板列表 */
|
/** 查询商圈列表 */
|
||||||
const getbusinessAreaList = () => {
|
const getbusinessAreaList = () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
busTradingAreaPage(queryParams.value).then(res => {
|
busTradingAreaPage(queryParams.value).then(res => {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ export default defineConfig(({ mode, command }) => {
|
||||||
// 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
|
// 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
|
||||||
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
|
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
|
||||||
base: VITE_APP_ENV === 'production' ? '/' : '/',
|
base: VITE_APP_ENV === 'production' ? '/' : '/',
|
||||||
plugins: createVitePlugins(env, command === 'build'),
|
plugins: createVitePlugins(env, command === 'build'),
|
||||||
resolve: {
|
resolve: {
|
||||||
// https://cn.vitejs.dev/config/#resolve-alias
|
// https://cn.vitejs.dev/config/#resolve-alias
|
||||||
alias: {
|
alias: {
|
||||||
|
|
@ -52,8 +52,8 @@ export default defineConfig(({ mode, command }) => {
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: (p) => p.replace(/^\/dev-api/, '')
|
rewrite: (p) => p.replace(/^\/dev-api/, '')
|
||||||
},
|
},
|
||||||
// springdoc proxy
|
// springdoc proxy
|
||||||
'^/v3/api-docs/(.*)': {
|
'^/v3/api-docs/(.*)': {
|
||||||
target: baseUrl,
|
target: baseUrl,
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user