提交代码

This commit is contained in:
wangchengming 2025-11-20 14:34:54 +08:00
parent 063312b5a6
commit 7ba3f01f4c
7 changed files with 407 additions and 464 deletions

View File

@ -26,7 +26,7 @@
<div class="bennian" style="margin-left: 10px;"> </div>
</div>
<div class="flexEndCenter" style="margin-top: 11px;">
<div class="shangyinianMoney" style="margin-left: 10px;">{{ formatValue(yingshouObj.lastReceivablesDate) }}</div>
<div class="shangyinianMoney" style="margin-left: 10px;">{{ formatValue(yingshouObj.LastReceivablesDate) }}</div>
<div class="shangyinian" style="margin-left: 10px;">上一年</div>
</div>
</div>
@ -181,6 +181,7 @@ import { getAction } from '@/api/manage'
//
async zongzhichu() {
const res = await getAction(`/contract/bigscreen/expenditureSum`)
console.log('总支出', res)
this.zongzhichuObj = res.data
},
//

View File

@ -12,9 +12,9 @@ export const typeUrls = {
export const searchItems = [
{ label: "", prop: "keyword", placeholder: "媒体位置/乙方名称/订单编号/项目名称/甲方名称", isExtend: false },
{ label: "客户名称", prop: "clientId", placeholder: "请选择", type: 'selector', isExtend: true, available: false },
{ label: "媒体类型", prop: "mediaId", placeholder: "请选择", type: 'selector', isExtend: true, available: false},
{ label: "媒体类型", prop: "mediaId", placeholder: "请选择", type: 'selector', isExtend: true, available: false },
{ label: "甲方", prop: "firstId", placeholder: "请选择", isExtend: true, available: false },
{ label: "城市", prop: "cityId", placeholder: "请选择", type: 'multiSelector', isExtend: true, available: false},
{ label: "城市", prop: "cityId", placeholder: "请选择", type: 'multiSelector', isExtend: true, available: false },
{ label: "是否逾期", prop: "isOverdue", placeholder: "请选择", type: 'selector', isExtend: true, available: false },
{ label: "是否比稿", prop: "isCompet", placeholder: "请选择", type: 'selector', isExtend: true, available: false },
{ label: "时间范围", prop: "timesRange", placeholder: "请选择", isExtend: true, available: false },
@ -236,7 +236,7 @@ export const tableColumns = [
width: [190, 210],
},
{
title: "其他返点",
title: "其他返点1",
dataIndex: "otherReverPoit",
dataIndexType: "media",
align: "right",
@ -244,13 +244,29 @@ export const tableColumns = [
width: [102, 135],
},
{
title: "其他返点金额",
title: "其他返点2",
dataIndex: "otherReverPoit2",
dataIndexType: "media",
align: "right",
isCheck: false,
width: [102, 135],
},
{
title: "其他返点金额1",
dataIndex: "otherReverMoney",
dataIndexType: "media",
align: "right",
isCheck: false,
width: [190, 210],
},
{
title: "其他返点金额2",
dataIndex: "otherReverMoney2",
dataIndexType: "media",
align: "right",
isCheck: false,
width: [190, 210],
},
// {
// title: "合同盖章时间",
// dataIndex: "contrantSealTime",

View File

@ -138,7 +138,7 @@
</template>
<!-- 比稿返点结束 -->
<!-- 其他返点 -->
<!-- 其他返点1 -->
<template #otherReverPoit="{ record, isEdit }">
<div
style="
@ -153,7 +153,24 @@
></el-input>
</div>
</template>
<!-- 其他返点结束 -->
<!-- 其他返点1结束 -->
<!-- 其他返点金额2 -->
<template #otherReverPoit2="{ record, isEdit }">
<div
style="
display: flex;
gap: 5px;
align-items: center;
text-align: right;
"
>
<el-input
v-model="record.otherReverPoit2"
></el-input>
</div>
</template>
<!-- 其他返点2结束 -->
</el-edit-table>
</template>
<!-- 媒体信息结束 -->
@ -463,7 +480,7 @@ export default {
const sums = [];
columns.forEach((column, index) => {
let total = "N/A";
if (![8, 11, 12, 15, 17].includes(index)) {
if (![8, 11, 12, 15, 17, 19].includes(index)) {
return;
}
const values = data.map((item) => Number(item[column.property]));

View File

@ -1,62 +1,37 @@
<template>
<div class="procurement-contract">
<el-group-form
ref="formRef"
:rules="AEform.rules"
:formModel="AEform.formModel"
:formGroup="formGroup"
>
<el-group-form ref="formRef" :rules="AEform.rules" :formModel="AEform.formModel" :formGroup="formGroup">
<!-- 发票类型开始 -->
<template #invoiceId>
<el-custom-select
v-model="AEform.formModel.invoiceId"
:dataSource="getinvoiceList"
:remoteAdd="handleAddInvoice"
@change="(v, t) => (AEform.formModel.invoiceName = t)"
/>
<el-custom-select v-model="AEform.formModel.invoiceId" :dataSource="getinvoiceList"
:remoteAdd="handleAddInvoice" @change="(v, t) => (AEform.formModel.invoiceName = t)" />
<!-- {{ AEform.formModel.invoiceId }} -->
</template>
<!-- 发票类型结束 -->
<!-- 媒介部门开始 -->
<template #mediaDeptId>
<el-custom-select
v-model="AEform.formModel.mediaDeptId"
:dataSource="getMediaDepartment"
:remoteAdd="handleAddMediaDepartment"
@change="(v, t) => (AEform.formModel.mediaDeptName = t)"
/>
<el-custom-select v-model="AEform.formModel.mediaDeptId" :dataSource="getMediaDepartment"
:remoteAdd="handleAddMediaDepartment" @change="(v, t) => (AEform.formModel.mediaDeptName = t)" />
</template>
<!-- 媒介部门结束 -->
<!-- 客户名称开始 -->
<template #clientId>
<el-custom-select
v-model="AEform.formModel.clientId"
:dataSource="getclientList"
:remoteAdd="handleAddClient"
@change="(v, t) => (AEform.formModel.clientName = t)"
/>
<el-custom-select v-model="AEform.formModel.clientId" :dataSource="getclientList" :remoteAdd="handleAddClient"
@change="(v, t) => (AEform.formModel.clientName = t)" />
</template>
<!-- 客户名称结束 -->
<!-- 甲方名称开始 -->
<template #firstId>
<el-custom-select
v-model="AEform.formModel.firstId"
:dataSource="getFirstPartyList"
:remoteAdd="handleAddFirstParty"
@change="(v, t) => (AEform.formModel.firstName = t)"
/>
<el-custom-select v-model="AEform.formModel.firstId" :dataSource="getFirstPartyList"
:remoteAdd="handleAddFirstParty" @change="(v, t) => (AEform.formModel.firstName = t)" />
</template>
<!-- 甲方名称结束 -->
<!-- 签订时间开始 -->
<template #signTime>
<el-date-picker
v-model="AEform.formModel.signTime"
value-format="yyyy-MM-dd"
style="width: 100%"
/>
<el-date-picker v-model="AEform.formModel.signTime" value-format="yyyy-MM-dd" style="width: 100%" />
</template>
<!-- 签订时间结束 -->
@ -68,48 +43,31 @@
<!-- 媒体信息开始 -->
<template #purchaseMediaBoList>
<el-edit-table
:columns="mediaListColumns"
v-model="AEform.formModel.purchaseMediaBoList"
show-summary
:summary-method="mediaTypeSummary"
@update-items="updateItemsPurchaseMediaBoList"
>
<el-edit-table :columns="mediaListColumns" v-model="AEform.formModel.purchaseMediaBoList" show-summary
:summary-method="mediaTypeSummary" @update-items="updateItemsPurchaseMediaBoList">
<!-- 城市选择开始 -->
<template #cityId="{ record, isEdit }">
<el-custom-cascader v-model="record.cityIds" :dataSource="cityList" :cascaderStyle="{ width: '100%' }" @change="(v, t) => (record.cityId = v, record.cityName = t)" />
<el-custom-cascader v-model="record.cityIds" :dataSource="cityList" :cascaderStyle="{ width: '100%' }"
@change="(v, t) => (record.cityId = v, record.cityName = t)" />
</template>
<!-- 城市选择结束 -->
<!-- 媒体类型开始 -->
<template #mediaId="{ record, isEdit }">
<el-custom-select
v-model="record.mediaId"
:dataSource="mediaTypeList"
:remoteAdd="handleAddMediaTypeParty"
@change="(v, t) => (record.mediaName = t)"
/>
<el-custom-select v-model="record.mediaId" :dataSource="mediaTypeList" :remoteAdd="handleAddMediaTypeParty"
@change="(v, t) => (record.mediaName = t)" />
</template>
<!-- 媒体类型结束 -->
<!-- 上刊时间开始 -->
<template #upTime="{ record, isEdit }">
<el-date-picker
v-model="record.upTime"
value-format="yyyy-MM-dd"
style="width: 100%"
/>
<el-date-picker v-model="record.upTime" value-format="yyyy-MM-dd" style="width: 100%" />
</template>
<!-- 上刊时间结束 -->
<!-- 下刊时间开始 -->
<template #downTime="{ record, isEdit }">
<el-date-picker
v-model="record.downTime"
value-format="yyyy-MM-dd"
style="width: 100%"
/>
<el-date-picker v-model="record.downTime" value-format="yyyy-MM-dd" style="width: 100%" />
</template>
<!-- 下刊时间结束 -->
@ -122,10 +80,7 @@
<!-- 折扣开始 -->
<template #discount="{ record, isEdit }">
<div class="flexRowCenter">
<el-input
v-model="record.discount"
@change="handleNumberChange(record.discount, $event)"
></el-input>
<el-input v-model="record.discount" @change="handleNumberChange(record.discount, $event)"></el-input>
</div>
</template>
<!-- 折扣结束 -->
@ -135,13 +90,8 @@
<!-- 付款管理开始 -->
<template #purchasePaymentBoList>
<el-edit-table
:columns="contranctPayListColumns"
v-model="AEform.formModel.purchasePaymentBoList"
show-summary
:summary-method="paymentSummary"
@update-items="updateItemsPurchasePaymentBoList"
>
<el-edit-table :columns="contranctPayListColumns" v-model="AEform.formModel.purchasePaymentBoList" show-summary
:summary-method="paymentSummary" @update-items="updateItemsPurchasePaymentBoList">
<!-- 笔数开始 -->
<template #transactionsNumber="{ record, isEdit }">
<el-select v-model="record.transactionsNumber" style="width: 100%;">
@ -155,21 +105,13 @@
<!-- 笔数结束 -->
<!-- 约定付款时间开始 -->
<template #payTime="{ record, isEdit }">
<el-date-picker
v-model="record.payTime"
value-format="yyyy-MM-dd"
style="width: 100%"
/>
<el-date-picker v-model="record.payTime" value-format="yyyy-MM-dd" style="width: 100%" />
</template>
<!-- 约定付款时间结束 -->
<!-- 实际付款时间开始 -->
<template #arrivalTime="{ record, isEdit }">
<el-date-picker
v-model="record.arrivalTime"
value-format="yyyy-MM-dd"
style="width: 100%"
/>
<el-date-picker v-model="record.arrivalTime" value-format="yyyy-MM-dd" style="width: 100%" />
</template>
<!-- 实际付款时间结束 -->
@ -203,6 +145,12 @@
</template>
<!-- 合同附件结束 -->
<!-- 检测照片开始 -->
<template #detectPicAttr>
<el-file-upload ref="detectPicAttr" />
</template>
<!-- 检测照片结束 -->
<!-- 监测报告附件开始 -->
<template #reportAttachment>
<div class="report-attachment">
@ -298,24 +246,24 @@ export default {
const list = this.AEform.formModel.purchaseMediaBoList;
return list
? list.reduce(
(prev, { mediaFee, productFee }) =>
new BigNumber(prev).plus(mediaFee).plus(productFee).toNumber(),
0
)
(prev, { mediaFee, productFee }) =>
new BigNumber(prev).plus(mediaFee).plus(productFee).toNumber(),
0
)
: 0;
},
},
methods: {
//
async getDetailData () {
async getDetailData() {
const res = await getAction(`/system/purchase/${this.$route.query.id}`)
console.log('%c [ res ]-213', 'font-size:13px; background:pink; color:#bf2c9f;', res)
console.log('采购合同详情', res)
if (res.data.purchaseMediaVoList) {
res.data.purchaseMediaBoList = res.data.purchaseMediaVoList
console.log(this.cityList, 'this.cityList')
// cityIds
res.data.purchaseMediaBoList = res.data.purchaseMediaBoList.map(item => {
return { ...item, cityIds: item.cityIds ? item.cityIds.split(',').map((item) => Number(item)) : item.cityIds };
return { ...item, cityIds: item.cityIds ? item.cityIds.split(',').map((item) => Number(item)) : item.cityIds };
});
}
if (res.data.conPurchasePaymentVo) {
@ -325,6 +273,9 @@ export default {
if (res.data.contractAccessList) {
this.$refs.contractAccess.setFileList(res.data.contractAccessList)
}
if (res.data.detectPicAttrList) {
this.$refs.detectPicAttr.setFileList(res.data.detectPicAttrList)
}
if (res.data.upPrintList) {
this.$refs.upPrint.setFileList(res.data.upPrintList)
}
@ -353,7 +304,7 @@ export default {
this.AEform.formModel.purchaseMediaBoList = newItems
},
updateItemsPurchasePaymentBoList (newItems) {
updateItemsPurchasePaymentBoList(newItems) {
this.AEform.formModel.purchasePaymentBoList = newItems
},
@ -540,7 +491,7 @@ export default {
const sums = [];
columns.forEach((column, index) => {
let total = "N/A";
if (![11,12].includes(index)) {
if (![11, 12].includes(index)) {
return;
}
const values = data.map((item) => Number(item[column.property]));
@ -574,7 +525,7 @@ export default {
const sums = [];
columns.forEach((column, index) => {
let total = "N/A";
if (![2,4].includes(index)) {
if (![2, 4].includes(index)) {
return;
}
const values = data.map((item) => Number(item[column.property]));
@ -603,18 +554,18 @@ export default {
return sums;
},
formatNumber(num) {
if (num) {
//
let [integer, decimal] = num.toFixed(2).split(".");
if (num) {
//
let [integer, decimal] = num.toFixed(2).split(".");
//
integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
//
integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return `${integer}.${decimal}`;
} else {
return '0.00'
}
},
return `${integer}.${decimal}`;
} else {
return '0.00'
}
},
//
delayDate(record) {
@ -633,101 +584,117 @@ export default {
return "";
}
const diff = dayjs(downTime || new Date()).diff(upTime, "d");
return diff <= 0 ? "" : diff + 1 + "天";
return diff <= 0 ? "" : diff + 1 + "天";
},
//
removeLeadingAndTrailingCommas(str) {
//
if (str.charAt(0) === ',') {
str = str.substring(1);
}
//
if (str.charAt(0) === ',') {
str = str.substring(1);
}
//
if (str.charAt(str.length - 1) === ',') {
str = str.substring(0, str.length - 1);
}
//
if (str.charAt(str.length - 1) === ',') {
str = str.substring(0, str.length - 1);
}
return str;
return str;
},
//
annexFunc() {
//
var contractAccess = []
for (const i in this.$refs.contractAccess.getFileList()) {
contractAccess.push(this.$refs.contractAccess.getFileList()[i].md5)
var contractAccess = []
for (const i in this.$refs.contractAccess.getFileList()) {
contractAccess.push(this.$refs.contractAccess.getFileList()[i].md5)
}
var contractAccess2 = []
if (this.AEform.formModel.contractAccessList && this.AEform.formModel.contractAccessList.length) {
for (const i in this.AEform.formModel.contractAccessList) {
contractAccess2.push(this.AEform.formModel.contractAccessList[i].identifier)
}
var contractAccess2 = []
if (this.AEform.formModel.contractAccessList && this.AEform.formModel.contractAccessList.length) {
for (const i in this.AEform.formModel.contractAccessList) {
contractAccess2.push(this.AEform.formModel.contractAccessList[i].identifier)
}
}
var contractAccess3 = [...contractAccess, ...contractAccess2]
contractAccess3 = Array.from(new Set(contractAccess3))
this.AEform.formModel.contractAccess = contractAccess3.toString()
this.AEform.formModel.contractAccess = this.removeLeadingAndTrailingCommas(this.AEform.formModel.contractAccess)
}
var contractAccess3 = [...contractAccess, ...contractAccess2]
contractAccess3 = Array.from(new Set(contractAccess3))
this.AEform.formModel.contractAccess = contractAccess3.toString()
this.AEform.formModel.contractAccess = this.removeLeadingAndTrailingCommas(this.AEform.formModel.contractAccess)
//
var upPrint = []
for (const i in this.$refs.upPrint.getFileList()) {
upPrint.push(this.$refs.upPrint.getFileList()[i].md5)
//
var detectPicAttr = []
for (const i in this.$refs.detectPicAttr.getFileList()) {
detectPicAttr.push(this.$refs.detectPicAttr.getFileList()[i].md5)
}
var detectPicAttr2 = []
if (this.AEform.formModel.detectPicAttrList && this.AEform.formModel.detectPicAttrList.length) {
for (const i in this.AEform.formModel.detectPicAttrList) {
detectPicAttr2.push(this.AEform.formModel.detectPicAttrList[i].identifier)
}
var upPrint2 = []
if (this.AEform.formModel.upPrintList && this.AEform.formModel.upPrintList.length) {
for (const i in this.AEform.formModel.upPrintList) {
upPrint2.push(this.AEform.formModel.upPrintList[i].identifier)
}
}
var detectPicAttr3 = [...detectPicAttr, ...detectPicAttr2]
detectPicAttr3 = Array.from(new Set(detectPicAttr3))
this.AEform.formModel.detectPicAttr = detectPicAttr3.toString()
this.AEform.formModel.detectPicAttr = this.removeLeadingAndTrailingCommas(this.AEform.formModel.detectPicAttr)
//
var upPrint = []
for (const i in this.$refs.upPrint.getFileList()) {
upPrint.push(this.$refs.upPrint.getFileList()[i].md5)
}
var upPrint2 = []
if (this.AEform.formModel.upPrintList && this.AEform.formModel.upPrintList.length) {
for (const i in this.AEform.formModel.upPrintList) {
upPrint2.push(this.AEform.formModel.upPrintList[i].identifier)
}
var upPrint3 = [...upPrint, ...upPrint2]
upPrint3 = Array.from(new Set(upPrint3))
this.AEform.formModel.upPrint = upPrint3.toString()
this.AEform.formModel.upPrint = this.removeLeadingAndTrailingCommas(this.AEform.formModel.upPrint)
//
var nextPrint = []
for (const i in this.$refs.nextPrint.getFileList()) {
nextPrint.push(this.$refs.nextPrint.getFileList()[i].md5)
}
var upPrint3 = [...upPrint, ...upPrint2]
upPrint3 = Array.from(new Set(upPrint3))
this.AEform.formModel.upPrint = upPrint3.toString()
this.AEform.formModel.upPrint = this.removeLeadingAndTrailingCommas(this.AEform.formModel.upPrint)
//
var nextPrint = []
for (const i in this.$refs.nextPrint.getFileList()) {
nextPrint.push(this.$refs.nextPrint.getFileList()[i].md5)
}
var nextPrint2 = []
if (this.AEform.formModel.nextPrintList && this.AEform.formModel.nextPrintList.length) {
for (const i in this.AEform.formModel.nextPrintList) {
nextPrint2.push(this.AEform.formModel.nextPrintList[i].identifier)
}
var nextPrint2 = []
if (this.AEform.formModel.nextPrintList && this.AEform.formModel.nextPrintList.length) {
for (const i in this.AEform.formModel.nextPrintList) {
nextPrint2.push(this.AEform.formModel.nextPrintList[i].identifier)
}
}
var nextPrint3 = [...nextPrint, ...nextPrint2]
nextPrint3 = Array.from(new Set(nextPrint3))
this.AEform.formModel.nextPrint = nextPrint3.toString()
this.AEform.formModel.nextPrint = this.removeLeadingAndTrailingCommas(this.AEform.formModel.nextPrint)
//
var exchangePrint = []
for (const i in this.$refs.exchangePrint.getFileList()) {
exchangePrint.push(this.$refs.exchangePrint.getFileList()[i].md5)
}
var exchangePrint2 = []
if (this.AEform.formModel.exchangePrintList && this.AEform.formModel.exchangePrintList.length) {
for (const i in this.AEform.formModel.exchangePrintList) {
exchangePrint2.push(this.AEform.formModel.exchangePrintList[i].identifier)
}
var nextPrint3 = [...nextPrint, ...nextPrint2]
nextPrint3 = Array.from(new Set(nextPrint3))
this.AEform.formModel.nextPrint = nextPrint3.toString()
this.AEform.formModel.nextPrint = this.removeLeadingAndTrailingCommas(this.AEform.formModel.nextPrint)
//
var exchangePrint = []
for (const i in this.$refs.exchangePrint.getFileList()) {
exchangePrint.push(this.$refs.exchangePrint.getFileList()[i].md5)
}
var exchangePrint3 = [...exchangePrint, ...exchangePrint2]
exchangePrint3 = Array.from(new Set(exchangePrint3))
this.AEform.formModel.exchangePrint = exchangePrint3.toString()
this.AEform.formModel.exchangePrint = this.removeLeadingAndTrailingCommas(this.AEform.formModel.exchangePrint)
//
var mediaLink = []
for (const i in this.$refs.mediaLink.getFileList()) {
mediaLink.push(this.$refs.mediaLink.getFileList()[i].md5)
}
var mediaLink2 = []
if (this.AEform.formModel.mediaLinkList && this.AEform.formModel.mediaLinkList.length) {
for (const i in this.AEform.formModel.mediaLinkList) {
mediaLink2.push(this.AEform.formModel.mediaLinkList[i].identifier)
}
var exchangePrint2 = []
if (this.AEform.formModel.exchangePrintList && this.AEform.formModel.exchangePrintList.length) {
for (const i in this.AEform.formModel.exchangePrintList) {
exchangePrint2.push(this.AEform.formModel.exchangePrintList[i].identifier)
}
}
var exchangePrint3 = [...exchangePrint, ...exchangePrint2]
exchangePrint3 = Array.from(new Set(exchangePrint3))
this.AEform.formModel.exchangePrint = exchangePrint3.toString()
this.AEform.formModel.exchangePrint = this.removeLeadingAndTrailingCommas(this.AEform.formModel.exchangePrint)
//
var mediaLink = []
for (const i in this.$refs.mediaLink.getFileList()) {
mediaLink.push(this.$refs.mediaLink.getFileList()[i].md5)
}
var mediaLink2 = []
if (this.AEform.formModel.mediaLinkList && this.AEform.formModel.mediaLinkList.length) {
for (const i in this.AEform.formModel.mediaLinkList) {
mediaLink2.push(this.AEform.formModel.mediaLinkList[i].identifier)
}
}
var mediaLink3 = [...mediaLink, ...mediaLink2]
mediaLink3 = Array.from(new Set(mediaLink3))
this.AEform.formModel.mediaLink = mediaLink3.toString()
this.AEform.formModel.mediaLink = this.removeLeadingAndTrailingCommas(this.AEform.formModel.mediaLink)
}
var mediaLink3 = [...mediaLink, ...mediaLink2]
mediaLink3 = Array.from(new Set(mediaLink3))
this.AEform.formModel.mediaLink = mediaLink3.toString()
this.AEform.formModel.mediaLink = this.removeLeadingAndTrailingCommas(this.AEform.formModel.mediaLink)
},
verification(tableList, columns) {
@ -783,6 +750,7 @@ export default {
});
}
await this.$refs.formRef.validate();
console.log('this.AEform.formModel', this.AEform.formModel)
if (this.AEform.formModel.id) {
const res = await putAction(`/system/purchase/edit`, { ...this.AEform.formModel })
console.log('%c [ res ]-361', 'font-size:13px; background:pink; color:#bf2c9f;', res)
@ -829,7 +797,8 @@ export default {
.el-group-form {
::v-deep {
> .el-card {
>.el-card {
&:nth-child(3),
&:nth-child(4) {
.el-card__body {
@ -847,6 +816,7 @@ export default {
::v-deep {
.media-summary {
&-title,
&-value {
font-family: Microsoft YaHei;

View File

@ -35,13 +35,17 @@ export const formGroup = [
title: "合同附件",
items: [{ slot: true, prop: "contractAccess", span: 24 }],
},
{
title: "检测照片",
items: [{ slot: true, prop: "detectPicAttr", span: 25 }],
},
{
title: "监测报告附件",
items: [{ slot: true, prop: "reportAttachment", span: 24 }],
items: [{ slot: true, prop: "reportAttachment", span: 26 }],
},
{
title: "媒体链条附件",
items: [{ slot: true, prop: "mediaLink", span: 24 }],
items: [{ slot: true, prop: "mediaLink", span: 27 }],
},
];
// 采购合同媒体信息表格配置
@ -421,7 +425,7 @@ export const SalesContractMediaColumns = [
required: true,
},
{
title: "其他返点",
title: "其他返点1",
dataIndex: "otherReverPoit",
width: 120,
attrs: { min: 0 },
@ -429,7 +433,7 @@ export const SalesContractMediaColumns = [
required: true,
},
{
title: "其他返点金额",
title: "其他返点金额1",
dataIndex: "otherReverMoney",
width: 220,
attrs: { min: 0 },
@ -437,6 +441,23 @@ export const SalesContractMediaColumns = [
type: "number",
required: true,
},
{
title: "其他返点2",
dataIndex: "otherReverPoit2",
width: 120,
attrs: { min: 0 },
align: "center",
required: true,
},
{
title: "其他返点金额2",
dataIndex: "otherReverMoney2",
width: 220,
attrs: { min: 0 },
align: "right",
type: "number",
required: true,
},
{
title: "备注",
dataIndex: "remark",

View File

@ -1,33 +1,16 @@
<template>
<div class="app-container">
<ElQueryTable
ref="tableRef"
:searchItems="searchItems"
:tableConfig="tableConfig"
:isExtendAction="false"
:selectedRowKeys.sync="selectedRowKeys"
:isRowCheck="showColumnBtn"
:showCheckFlag="showCheckFlag"
@showExtendAction="showExtendAction"
@hiddenExtendActionColumn="hiddenExtendActionColumn"
@returnTableColumn="returnTableColumn"
@update:selectedRowKeys="updateSelectedRowKeys"
@search="handleCancelExport"
@reset="handleCancelExport"
autoresize
:class="showCheckFlag? 'is-check-flag-show': ''"
>
<ElQueryTable ref="tableRef" :searchItems="searchItems" :tableConfig="tableConfig" :isExtendAction="false"
:selectedRowKeys.sync="selectedRowKeys" :isRowCheck="showColumnBtn" :showCheckFlag="showCheckFlag"
@showExtendAction="showExtendAction" @hiddenExtendActionColumn="hiddenExtendActionColumn"
@returnTableColumn="returnTableColumn" @update:selectedRowKeys="updateSelectedRowKeys"
@search="handleCancelExport" @reset="handleCancelExport" autoresize
:class="showCheckFlag ? 'is-check-flag-show' : ''">
<!-- keyword -->
<template #query-keyword="{ queryParams }">
<div style="width: 1200px">
<el-input
v-model="queryParams.keyword"
type="search"
clearable
placeholder="媒体位置/乙方姓名/项目编号/项目名称"
style="width: 547px"
@change="handleSearch"
>
<el-input v-model="queryParams.keyword" type="search" clearable placeholder="媒体位置/乙方姓名/项目编号/项目名称"
style="width: 547px" @change="handleSearch">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
</div>
@ -35,110 +18,70 @@
<!-- 客户名称 -->
<template #query-clientId="{ queryParams }">
<el-select
v-model="queryParams.clientId"
style="width: 200px"
placeholder="请选择"
clearable
@change="handleSearch"
>
<el-option
v-for="item in clientList"
:key="item.id"
:label="item.clientName"
:value="item.id"
>
<el-select v-model="queryParams.clientId" style="width: 200px" placeholder="请选择" clearable
@change="handleSearch">
<el-option v-for="item in clientList" :key="item.id" :label="item.clientName" :value="item.id">
</el-option>
<template #prefix>
<span style="position: absolute;left: 150px;color: #3B588A;cursor: pointer;" v-if="queryParams.clientId"
@click="() => $refs.tableRef.queryParams.clientId = undefined"></span>
@click="() => $refs.tableRef.queryParams.clientId = undefined"></span>
</template>
</el-select>
</template>
<!-- 媒体类型 -->
<template #query-mediaId="{ queryParams }">
<el-select
v-model="queryParams.mediaId"
style="width: 200px"
placeholder="请选择"
clearable
@change="handleSearch"
>
<el-option
v-for="item in mediaTypeList"
:key="item.id"
:label="item.mediaType"
:value="item.id"
>
<el-select v-model="queryParams.mediaId" style="width: 200px" placeholder="请选择" clearable
@change="handleSearch">
<el-option v-for="item in mediaTypeList" :key="item.id" :label="item.mediaType" :value="item.id">
</el-option>
<template #prefix>
<span style="position: absolute;left: 150px;color: #3B588A;cursor: pointer;" v-if="queryParams.mediaId"
@click="() => $refs.tableRef.queryParams.mediaId = undefined"></span>
@click="() => $refs.tableRef.queryParams.mediaId = undefined"></span>
</template>
</el-select>
</template>
<!-- 城市 -->
<template #query-cityId="{ queryParams }">
<el-custom-cascader v-model="queryParams.cityIds" :cascaderStyle="{ width: '200px' }" :dataSource="cityList"
@click="() => $refs.tableRef.queryParams.cityIds = undefined"/>
@click="() => $refs.tableRef.queryParams.cityIds = undefined" />
</template>
<!-- 时间段 -->
<template #query-timesRange="{ queryParams }">
<el-custom-date-range-picker v-model="queryParams.timesRange" @change="handleSearch" style="width: 421px"/>
<el-custom-date-range-picker v-model="queryParams.timesRange" @change="handleSearch" style="width: 421px" />
</template>
<!-- 甲方 乙方 -->
<template #query-firstId="{ queryParams }">
<el-select
v-model="queryParams.firstId"
style="width: 200px"
placeholder="请选择"
clearable
@change="handleSearch"
>
<el-option
v-for="item in firstList"
:key="item.id"
:label="item.firstName"
:value="item.id"
>
<el-select v-model="queryParams.firstId" style="width: 200px" placeholder="请选择" clearable
@change="handleSearch">
<el-option v-for="item in firstList" :key="item.id" :label="item.firstName" :value="item.id">
</el-option>
<template #prefix>
<span style="position: absolute;left: 150px;color: #3B588A;cursor: pointer;" v-if="queryParams.firstId"
@click="() => $refs.tableRef.queryParams.firstId = undefined"></span>
@click="() => $refs.tableRef.queryParams.firstId = undefined"></span>
</template>
</el-select>
</template>
<!-- 是否逾期 -->
<template #query-isOverdue="{ queryParams }">
<el-select v-model="queryParams.isOverdue" placeholder="请选择" style="width: 200px" clearable
@change="handleSearch">
<el-option
v-for="item in isOverdueList"
:key="item.id"
:label="item.label"
:value="item.id"
>
@change="handleSearch">
<el-option v-for="item in isOverdueList" :key="item.id" :label="item.label" :value="item.id">
</el-option>
<template #prefix>
<span style="position: absolute;left: 150px;color: #3B588A;cursor: pointer;" v-if="queryParams.isOverdue"
@click="() => $refs.tableRef.queryParams.isOverdue = undefined"></span>
@click="() => $refs.tableRef.queryParams.isOverdue = undefined"></span>
</template>
</el-select>
</template>
<!-- 是否比稿 -->
<template #query-isCompet="{ queryParams }">
<el-select v-model="queryParams.isCompet" placeholder="请选择" style="width: 200px" clearable
@change="handleSearch">
<el-option
v-for="item in isCompetList"
:key="item.id"
:label="item.label"
:value="item.id"
>
@change="handleSearch">
<el-option v-for="item in isCompetList" :key="item.id" :label="item.label" :value="item.id">
</el-option>
<template #prefix>
<span style="position: absolute;left: 150px;color: #3B588A;cursor: pointer;" v-if="queryParams.isCompet"
@click="() => $refs.tableRef.queryParams.isCompet = undefined"></span>
@click="() => $refs.tableRef.queryParams.isCompet = undefined"></span>
</template>
</el-select>
</template>
@ -162,19 +105,14 @@
</el-col> -->
<el-col :span="1.5">
<div class="flexRowCenter">
<el-upload
class="flexCenterCenter pubBtn"
:action="importUrl"
:headers="importHeaders"
:on-success="handleUploadSuccess"
:show-file-list="false"
:file-list="fileList">
<el-upload class="flexCenterCenter pubBtn" :action="importUrl" :headers="importHeaders"
:on-success="handleUploadSuccess" :show-file-list="false" :file-list="fileList">
<el-button size="small" style="font-size: 16px" type="primary">导入</el-button>
</el-upload>
<div class="flexCenterCenter pubBtn" style="width:120px;" @click="downloadTemplate">下载导入模板</div>
<div class="flexCenterCenter pubBtn" @click="handleExport" v-if="!showColumnBtn">导出</div>
<div class="flexCenterCenter pubBtn" style="margin-right: 10px;" @click="handleCancelExport"
v-if="showColumnBtn">取消
v-if="showColumnBtn">取消
</div>
<div class="flexCenterCenter pubBtn" @click="handleSureExport" v-if="showColumnBtn">确认导出</div>
<div class="flexCenterCenter pubBtn" @click="handleShowDownList">下载记录</div>
@ -187,22 +125,13 @@
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="tableConfig.query"></right-toolbar> -->
</template>
<template #extendSearch>
<div
v-if="!tableConfig.showExtendSearch"
@click="ocClickShowExtendSearch(true)"
>
<div v-if="!tableConfig.showExtendSearch" @click="ocClickShowExtendSearch(true)">
展开
<i
class="el-icon-arrow-down"
style="color: #00a026; margin-left: 10px"
/>
<i class="el-icon-arrow-down" style="color: #00a026; margin-left: 10px" />
</div>
<div v-else @click="ocClickShowExtendSearch(false)">
折叠
<i
class="el-icon-arrow-up"
style="color: #00a026; margin-left: 10px"
/>
<i class="el-icon-arrow-up" style="color: #00a026; margin-left: 10px" />
</div>
</template>
@ -234,7 +163,7 @@
<template #table-cityId="{ text, record, index, align }">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''">
<span :title="item.cityName">{{ item.cityName }}</span>
</div>
</div>
@ -242,27 +171,21 @@
<template #table-mediaId="{ text, record, index, align }">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''">
<span :title="item.mediaName">{{ item.mediaName }}</span>
</div>
</div>
</template>
<template #table-mediaPosition="{ text, record, index, align }">
<div class="table-column-child">
<div
v-for="item in record.conSaleMediaVoList"
:key="index + item.id"
:style="
align == 'right'
? 'text-align: right;'
: align == 'left'
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id" :style="align == 'right'
? 'text-align: right;'
: align == 'left'
? 'text-align: left;'
: align == 'center'
? 'text-align: center;'
: ''
"
:title="item.mediaPosition"
>
? 'text-align: center;'
: ''
" :title="item.mediaPosition">
{{ item.mediaPosition }}
</div>
</div>
@ -272,8 +195,8 @@
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.accountNumber">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.accountNumber">
{{ item.accountNumber }}
</div>
</div>
@ -286,8 +209,8 @@
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
{{ item.releaseFrequency }}
</div>
</div>
@ -302,8 +225,8 @@
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
<!-- {{ item.compet }} -->
<span v-if="item.compet == 1" title="是"></span>
<span v-if="item.compet == 2" title="否"></span>
@ -324,8 +247,8 @@
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
{{ item.competReverPoit }}
</div>
</div>
@ -341,8 +264,8 @@
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
{{ formatNumber(item.competReverMoney) }}
</div>
</div>
@ -354,13 +277,13 @@
<!-- 比稿返点金额结束 -->
<!-- 其他返点开始 -->
<!-- 其他返点开始1 -->
<template #table-otherReverPoit="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
{{ item.otherReverPoit }}
</div>
</div>
@ -369,15 +292,15 @@
<span :title="record.otherReverPoit">{{ record.otherReverPoit }}</span>
</template>
</template>
<!-- 其他返点结束 -->
<!-- 其他返点结束1 -->
<!-- 其他返点金额开始 -->
<!-- 其他返点金额开始1 -->
<template #table-otherReverMoney="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
{{ formatNumber(item.otherReverMoney) }}
</div>
</div>
@ -386,63 +309,80 @@
<span :title="record.otherReverMoney">{{ record.otherReverMoney }}</span>
</template>
</template>
<!-- 其他返点金额结束 -->
<!-- 其他返点金额结束1 -->
<!-- 其他返点开始2 -->
<template #table-otherReverPoit2="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
{{ item.otherReverPoit2 }}
</div>
</div>
</template>
<template v-else>
<span :title="record.otherReverPoit2">{{ record.otherReverPoit2 }}</span>
</template>
</template>
<!-- 其他返点结束2 -->
<!-- 其他返点金额开始2 -->
<template #table-otherReverMoney2="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''"
:title="item.releaseFrequency">
{{ formatNumber(item.otherReverMoney2) }}
</div>
</div>
</template>
<template v-else>
<span :title="record.otherReverMoney2">{{ record.otherReverMoney2 }}</span>
</template>
</template>
<!-- 其他返点金额结束2 -->
<template #table-upTime="{ text, record, index, align }">
<div class="table-column-child">
<div
v-for="item in record.conSaleMediaVoList"
:key="index + item.id"
:style="
align == 'right'
? 'text-align: right;'
: align == 'left'
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id" :style="align == 'right'
? 'text-align: right;'
: align == 'left'
? 'text-align: left;'
: align == 'center'
? 'text-align: center;'
: ''
"
:title="item.upTime"
>
? 'text-align: center;'
: ''
" :title="item.upTime">
{{ item.upTime }}
</div>
</div>
</template>
<template #table-downTime="{ text, record, index, align }">
<div class="table-column-child">
<div
v-for="item in record.conSaleMediaVoList"
:key="index + item.id"
:style="
align == 'right'
? 'text-align: right;'
: align == 'left'
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id" :style="align == 'right'
? 'text-align: right;'
: align == 'left'
? 'text-align: left;'
: align == 'center'
? 'text-align: center;'
: ''
"
:title="item.downTime"
>
? 'text-align: center;'
: ''
" :title="item.downTime">
{{ item.downTime }}
</div>
</div>
</template>
<template #table-period="{ text, record, index, align }">
<div class="table-column-child">
<div
v-for="item in record.conSaleMediaVoList"
:key="index + item.id"
:style="
align == 'right'
? 'text-align: right;'
: align == 'left'
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id" :style="align == 'right'
? 'text-align: right;'
: align == 'left'
? 'text-align: left;'
: align == 'center'
? 'text-align: center;'
: ''
"
:title="item.period"
>
? 'text-align: center;'
: ''
" :title="item.period">
{{ item.period }}
</div>
</div>
@ -450,7 +390,7 @@
<template #table-printPrice="{ text, record, index, align }">
<div class="table-column-child">
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id" :title="formatNumber(item.mediaFee)"
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''">
:style="align == 'right' ? 'text-align: right;' : align == 'left' ? 'text-align: left;' : align == 'center' ? 'text-align: center;' : ''">
{{ formatNumber(item.printPrice) }}
</div>
</div>
@ -458,20 +398,14 @@
<template #table-discount="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div
v-for="item in record.conSaleMediaVoList"
:key="index + item.id"
:style="
align == 'right'
? 'text-align: right;'
: align == 'left'
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id" :style="align == 'right'
? 'text-align: right;'
: align == 'left'
? 'text-align: left;'
: align == 'center'
? 'text-align: center;'
: ''
"
:title="item.discount"
>
? 'text-align: center;'
: ''
" :title="item.discount">
{{
item.discount
}}
@ -485,19 +419,14 @@
<template #table-mediaFee="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div
v-for="item in record.conSaleMediaVoList"
:key="index + item.id"
:style="
align == 'right'
? 'text-align: right;'
: align == 'left'
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id" :style="align == 'right'
? 'text-align: right;'
: align == 'left'
? 'text-align: left;'
: align == 'center'
? 'text-align: center;'
: ''
"
:title="formatNumber(item.mediaFee)">
? 'text-align: center;'
: ''
" :title="formatNumber(item.mediaFee)">
{{ formatNumber(item.mediaFee) }}
</div>
</div>
@ -509,19 +438,14 @@
<template #table-productFee="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<div class="table-column-child">
<div
v-for="item in record.conSaleMediaVoList"
:key="index + item.id"
:style="
align == 'right'
? 'text-align: right;'
: align == 'left'
<div v-for="item in record.conSaleMediaVoList" :key="index + item.id" :style="align == 'right'
? 'text-align: right;'
: align == 'left'
? 'text-align: left;'
: align == 'center'
? 'text-align: center;'
: ''
"
:title="formatNumber(item.productFee)">
? 'text-align: center;'
: ''
" :title="formatNumber(item.productFee)">
{{ formatNumber(item.productFee) }}
</div>
</div>
@ -538,41 +462,41 @@
<template #table-contractAccess="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<img src="@/assets/images/file-type/file2.png" alt=""
:title="record.contractAccessList.map(item => item.realName).join('\n')"
v-if="record.contractAccessList && record.contractAccessList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;"/>
:title="record.contractAccessList.map(item => item.realName).join('\n')"
v-if="record.contractAccessList && record.contractAccessList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;" />
</template>
</template>
<template #table-upPrint="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<img src="@/assets/images/file-type/file2.png" alt=""
:title="record.upPrintList.map(item => item.realName).join('\n')"
v-if="record.upPrintList && record.upPrintList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;"/>
:title="record.upPrintList.map(item => item.realName).join('\n')"
v-if="record.upPrintList && record.upPrintList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;" />
</template>
</template>
<template #table-exchangePrint="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<img src="@/assets/images/file-type/file2.png" alt=""
:title="record.exchangePrintList.map(item => item.realName).join('\n')"
v-if="record.exchangePrintList && record.exchangePrintList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;"/>
:title="record.exchangePrintList.map(item => item.realName).join('\n')"
v-if="record.exchangePrintList && record.exchangePrintList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;" />
</template>
</template>
<template #table-nextPrint="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<img src="@/assets/images/file-type/file2.png" alt=""
:title="record.nextPrintList.map(item => item.realName).join('\n')"
v-if="record.nextPrintList && record.nextPrintList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;"/>
:title="record.nextPrintList.map(item => item.realName).join('\n')"
v-if="record.nextPrintList && record.nextPrintList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;" />
</template>
</template>
<template #table-mediaLink="{ text, record, index, align }">
<template v-if="record.serial != '合计'">
<img src="@/assets/images/file-type/file2.png" alt=""
:title="record.mediaLinkList.map(item => item.realName).join('\n')"
v-if="record.mediaLinkList && record.mediaLinkList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;"/>
:title="record.mediaLinkList.map(item => item.realName).join('\n')"
v-if="record.mediaLinkList && record.mediaLinkList.length > 0" @click="handleDown(record)"
style="width: 22px; height: 27px;" />
</template>
</template>
<!-- 附件止 -->
@ -583,18 +507,12 @@
</template>
<template #table-action="{ record }">
<template v-if="!tableConfig.isExtendAction">
<img
src="@/assets/images/icon-option.png"
alt=""
style="width: 18px; height: 18px"
@click="showOrCloseActionExtend(true)"
/>
<img src="@/assets/images/icon-option.png" alt="" style="width: 18px; height: 18px"
@click="showOrCloseActionExtend(true)" />
</template>
<template v-else>
<template v-if="record.serial != '合计'">
<div
style="white-space: nowrap; vertical-align: middle; color: #00a026"
>
<div style="white-space: nowrap; vertical-align: middle; color: #00a026">
<template v-if="record.state != 2">
<a @click="handleView(record)">查看</a>
<span style="margin-left: 5px; margin-right: 5px">|</span>
@ -603,11 +521,7 @@
<a @click="handleCollectManage(record)">回款管理</a>
<span style="margin-left: 5px; margin-right: 5px">|</span>
<a @click="handleDown(record)">下载</a>
<span
style="margin-left: 5px; margin-right: 5px"
v-if="record.state == 1 || record.state == 2"
>|</span
>
<span style="margin-left: 5px; margin-right: 5px" v-if="record.state == 1 || record.state == 2">|</span>
</template>
<a @click="handleNullify(record)" v-if="record.state == 1">作废</a>
<a @click="handleRecovery(record)" v-if="record.state == 2">恢复</a>
@ -619,20 +533,16 @@
<!-- 下载附件的弹窗 -->
<el-dialog-copy
class="el-custom-form"
:visible.sync="enclosureObj.visible"
title="附件下载"
@close="closeModal"
>
<el-dialog-copy class="el-custom-form" :visible.sync="enclosureObj.visible" title="附件下载" @close="closeModal">
<template #bo>
<div class="flexEndCenter" style="margin-bottom: 10px;">
<div class="pubBtn flexCenterCenter" @click="downloadAll">全部下载</div>
</div>
<Enclosure :fileList="enclosureObj.formModel.contractAccessList" title="合同附件"
v-if="enclosureObj.formModel.contractAccessList && enclosureObj.formModel.contractAccessList.length"></Enclosure>
v-if="enclosureObj.formModel.contractAccessList && enclosureObj.formModel.contractAccessList.length">
</Enclosure>
<Enclosure :fileList="enclosureObj.formModel.mediaLinkList" title="其他附件"
v-if="enclosureObj.formModel.mediaLinkList && enclosureObj.formModel.mediaLinkList.length"></Enclosure>
v-if="enclosureObj.formModel.mediaLinkList && enclosureObj.formModel.mediaLinkList.length"></Enclosure>
</template>
</el-dialog-copy>
<DownloadList ref="downloadList"></DownloadList>
@ -642,7 +552,7 @@
</template>
<script>
import {getAction, exportAction, postAction, exportAction2} from "@/api/manage";
import { getAction, exportAction, postAction, exportAction2 } from "@/api/manage";
import moment from "moment";
import { mapMutations } from 'vuex';
import { cityDataCache } from "@/utils/cityDataCache";
@ -661,7 +571,7 @@ import ElCustomDateRangePicker from '@/components/ElForm/ElCustomDateRangePicker
import ChildRows from '@/components/ElTable/ChildRows.vue'
import DownloadList from '@/components/ElTable/DownloadList.vue';
import store from '@/store'
import {getToken} from "@/utils/auth";
import { getToken } from "@/utils/auth";
import ImportList from "@/components/ElTable/ImportList.vue";
export default {
@ -669,9 +579,9 @@ export default {
data() {
return {
importData: [],
importUrl: process.env.VUE_APP_BASE_API+'/contract/sale/import',
importUrl: process.env.VUE_APP_BASE_API + '/contract/sale/import',
fileList: [],
importHeaders: {Authorization: "Bearer " + getToken()},
importHeaders: { Authorization: "Bearer " + getToken() },
searchItems,
selectedRowKeys: [],
showColumnBtn: false,
@ -708,12 +618,12 @@ export default {
firstList: [],
secondList: [],
isOverdueList: [
{id: 1, label: '是'},
{id: 0, label: '否'},
{ id: 1, label: '是' },
{ id: 0, label: '否' },
],
isCompetList: [
{id: 1, label: '是'},
{id: 2, label: '否'},
{ id: 1, label: '是' },
{ id: 2, label: '否' },
],
AEModal: {
visible: false,
@ -798,7 +708,7 @@ export default {
},
async costSummarizing() {
this.selectedRowKeys = this.selectedRowKeys.filter(element => element !== undefined);
const {code, data, msg} = await postAction(`/contract/sale/getSaleTatol`, {
const { code, data, msg } = await postAction(`/contract/sale/getSaleTatol`, {
...this.$refs.tableRef.queryParams,
...this.$refs.tableRef.pageParams,
signTimeStar: this.$refs.tableRef.queryParams.timesRange && this.$refs.tableRef.queryParams.timesRange.length ? moment(this.$refs.tableRef.queryParams.timesRange[0]).format('YYYY-MM-DD') : undefined,
@ -811,6 +721,7 @@ export default {
})
if (code == 200) {
this.summarys = data
console.log('summarys', this.summarys)
} else {
this.$message.error(msg)
}
@ -830,7 +741,8 @@ export default {
productFeeTotal, //
contractMoneyTotal, //
competReverMoneySum, // 稿
otherReverMoneySum, //
otherReverMoneySum, // 1
otherReverMoneySum2, // 2
} = this.summarys
const totalEle = this.getSummaryElement('总计', total, '条')
@ -839,7 +751,8 @@ export default {
const productFeeEle = this.getSummaryElement('制作费金额', productFeeTotal, '元', '¥')
const contractMoneySumEle = this.getSummaryElement('合同总金额', contractMoneyTotal, '元', '¥')
const competReverMoneySumEle = this.getSummaryElement('比稿返点金额', competReverMoneySum, '元', '¥')
const otherReverMoneySumEle = this.getSummaryElement('其他返点金额', otherReverMoneySum, '元', '¥')
const otherReverMoneySumEle = this.getSummaryElement('其他返点金额1', otherReverMoneySum, '元', '¥')
const otherReverMoneySumEle2 = this.getSummaryElement('其他返点金额2', otherReverMoneySum2, '元', '¥')
//
if (this.showCheckFlag) {
@ -851,6 +764,7 @@ export default {
sums[18] = contractMoneySumEle
sums[21] = competReverMoneySumEle
sums[23] = otherReverMoneySumEle
sums[25] = otherReverMoneySumEle2
} else {
sums[0] = '合计'
sums[1] = totalEle
@ -860,6 +774,7 @@ export default {
sums[17] = contractMoneySumEle
sums[20] = competReverMoneySumEle
sums[22] = otherReverMoneySumEle
sums[24] = otherReverMoneySumEle2
}
return sums;
@ -925,16 +840,16 @@ export default {
handleAdd() {
this.showColumnBtn = false
this.showCheckFlag = false
this.$router.push({path: `/contract/sale/AddSalesContract`})
this.$router.push({ path: `/contract/sale/AddSalesContract` })
},
//
handleUpdate(record) {
console.log('%c [ record ]-475', 'font-size:13px; background:pink; color:#bf2c9f;', record)
this.$router.push({path: `/contract/sale/EditSalesContract`, query: {id: record.id}})
this.$router.push({ path: `/contract/sale/EditSalesContract`, query: { id: record.id } })
},
//
handleCollectManage(record) {
this.$router.push({path: `/contract/sale/SalesCollectManageList`, query: {id: record.id}})
this.$router.push({ path: `/contract/sale/SalesCollectManageList`, query: { id: record.id } })
},
//
handleDown(record) {
@ -980,10 +895,10 @@ export default {
this.handleShowDownList()
for (const item of this.downTaskList) {
try {
this.updateDownloadTask({id: item.taskId, status: 'downloading'});
this.updateDownloadTask({ id: item.taskId, status: 'downloading' });
await exportAction2(`/fileupload/api/download/${item.identifier}/${item.name}`);
this.updateDownloadTask({id: item.taskId, status: 'complete'});
this.$notification.success({message: '下载成功'})
this.updateDownloadTask({ id: item.taskId, status: 'complete' });
this.$notification.success({ message: '下载成功' })
} catch (error) {
console.log(`全部下载:${error}`)
}
@ -998,11 +913,11 @@ export default {
},
//
handleView(record) {
this.$router.push({path: `/contract/sale/DetailSalesContract`, query: {id: record.id}})
this.$router.push({ path: `/contract/sale/DetailSalesContract`, query: { id: record.id } })
},
//
handleNullify(record) {
this.$confirm('确定作废吗?', '提示', {type: 'warning'}).then(async (result) => {
this.$confirm('确定作废吗?', '提示', { type: 'warning' }).then(async (result) => {
const res = await getAction(`/contract/sale/editAblish/${record.id}`)
if (res.code == 200) {
this.$message.success('作废成功')
@ -1012,7 +927,7 @@ export default {
},
//
handleRecovery(record) {
this.$confirm('确定恢复吗?', '提示', {type: 'warning'}).then(async (result) => {
this.$confirm('确定恢复吗?', '提示', { type: 'warning' }).then(async (result) => {
const res = await getAction(`/contract/sale/editRenew/${record.id}`)
if (res.code == 200) {
this.$message.success('恢复成功')
@ -1065,7 +980,7 @@ export default {
return false
}
const res = await exportAction(`/contract/sale/dynamicexport`, params)
this.$notification.success({message: '下载成功'})
this.$notification.success({ message: '下载成功' })
} catch (error) {
console.error('Error downloading the file:', error)
}
@ -1141,9 +1056,13 @@ export default {
line-height: 45px;
text-align: center;
border-bottom: 1px solid #e8e8e8;
white-space: nowrap; /* 确保文本在一行内显示 */
overflow: hidden; /* 超出容器部分隐藏 */
text-overflow: ellipsis; /* 超出部分显示为... */
white-space: nowrap;
/* 确保文本在一行内显示 */
overflow: hidden;
/* 超出容器部分隐藏 */
text-overflow: ellipsis;
/* 超出部分显示为... */
&:last-child {
border-bottom: none;
}
@ -1210,7 +1129,7 @@ export default {
display: flex;
flex-direction: column;
> div {
>div {
flex: 1;
&:first-child {
@ -1256,4 +1175,3 @@ export default {
}
}
</style>

View File

@ -35,7 +35,7 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://192.168.1.17:9077`,
target: `http://43.143.229.145:9077`,
// target: `http://182.40.36.180:9077`,
changeOrigin: true,
pathRewrite: {