|
|
@ -13,24 +13,18 @@ |
|
|
|
</CustomDropdown> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div v-if="dataRank == 1" style="margin-bottom: 20px;text-align: left"> |
|
|
|
<el-alert type="info" :closable="false" show-icon> |
|
|
|
<template #title> |
|
|
|
未计成本 |
|
|
|
</template> |
|
|
|
<div style="margin-top: 8px; line-height: 1.6; font-size: 14px; color: #606266;"> |
|
|
|
<template v-if="dataType == 'ver_type'"> |
|
|
|
1. AI(服务器成本)<span v-if="view == 'year'" style="color:red;">2025年(含)后计入成本</span><br /> |
|
|
|
2. Turnitin <span v-if="view == 'year'" style="color:red;">2025年(含)后计入成本</span><br /> |
|
|
|
3. 学术(知网PMLC,硕博VIP)<span v-if="view == 'year'" style="color:red;">2025年(含)后计入成本</span><br /> |
|
|
|
</template> |
|
|
|
<template v-if="dataType == 'check_type'"> |
|
|
|
1. AI(服务器成本)<br /> |
|
|
|
2. Turnitin国际版、TurnitinUK版、Turnitin国际版+AI<br /> |
|
|
|
3. 知网PMLC,硕博VIP <span v-if="view == 'year'" style="color:red;">2025年(含)后计入成本</span><br /> |
|
|
|
</template> |
|
|
|
<div v-if="dataRank == 1 && (dataType == 'ver_type' || dataType == 'check_type')" style="margin-bottom: 20px;text-align: left" class="beforeNotice"> |
|
|
|
<p class="noticeTop flex"><img src="@/assets/site/siteSemInfo_Icon.svg" alt=""> 未计成本</p> |
|
|
|
<div v-if="dataType == 'ver_type'" class="noticeBot column"> |
|
|
|
<p>1. AI(服务器成本)<span v-if="view == 'year'" style="color:red;">2025年(含)后计入成本</span></p> |
|
|
|
<p>2. Turnitin <span v-if="view == 'year'" style="color:red;">2025年(含)后计入成本</span></p> |
|
|
|
<p>3. 学术(知网PMLC,硕博VIP)<span v-if="view == 'year'" style="color:red;">2025年(含)后计入成本</span></p> |
|
|
|
</div> |
|
|
|
<div v-if="dataType == 'check_type'" class="noticeBot column"> |
|
|
|
<p>1. AI(服务器成本)</p> |
|
|
|
<p>2. Turnitin国际版、TurnitinUK版、Turnitin国际版+AI</p> |
|
|
|
<p>3. 知网PMLC,硕博VIP <span v-if="view == 'year'" style="color:red;">2025年(含)后计入成本</span></p> |
|
|
|
</div> |
|
|
|
</el-alert> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class=" flex-common"> |
|
|
@ -70,7 +64,14 @@ |
|
|
|
|
|
|
|
<el-table-column v-else prop="name" :label="type_desc[dataType]"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="rate" label="毛利占比" v-if="dataRank == 1 && dataType == 'check_type'"></el-table-column> |
|
|
|
<el-table-column prop="rate" label="毛利占比" v-if="dataRank == 1 && dataType == 'check_type'"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.rate }} % |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column v-if="dataRank == 1 && dataType == 'check_type'" prop="value_3" label="收入"></el-table-column> |
|
|
|
<el-table-column v-if="dataRank == 1 && dataType == 'check_type'" prop="value_4" label="成本"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="1" :label="rank_type_desc[dataRank]" sortable="custom"> |
|
|
|
<template v-slot="{ row, $index }"> |
|
|
@ -89,20 +90,27 @@ |
|
|
|
<div class="flex-between flex pop-top"> |
|
|
|
<h3> |
|
|
|
{{ text }} {{ row.name }} {{ rank_type_desc[dataRank] }} |
|
|
|
<span @click="goLookMoreData(row.id)">查看更多</span> |
|
|
|
<span @click="goLookAgentMoreRank(row.id)">查看更多</span> |
|
|
|
</h3> |
|
|
|
<span class="flex point" @click="closePop(row,'id')"> |
|
|
|
关闭<img src="@/assets/register/close.svg"> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
<el-table :data="tableData1" style="width: 100%"> |
|
|
|
<el-table-column prop="value_1" width="208" label="日期"></el-table-column> |
|
|
|
<el-table-column prop="value_2" width="208" :label="rank_type_desc[dataRank]"></el-table-column> |
|
|
|
<el-table-column prop="name" width="208" label="服务名称"></el-table-column> |
|
|
|
<el-table-column prop="rate" width="208" label="毛利占比"></el-table-column> |
|
|
|
<el-table-column prop="value_1" width="208" label="毛利润"></el-table-column> |
|
|
|
<el-table-column prop="value_2" width="208" label="订单数"></el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="flex" slot="reference"> |
|
|
|
{{ row.value_1 }} |
|
|
|
<!--代理商利润排行 展示查看代理商产品排行--> |
|
|
|
<HoverImage v-if="row.value_1 != 0 && dataRank == 1 && dataType == 'agent' && show_detail_index == row.sort" |
|
|
|
@click="handleClick3(row, $index, 'id')" |
|
|
|
:normal="require('@/assets/super/list-detail.svg')" |
|
|
|
:hover="require('@/assets/super/list-detail-hover.svg')"/> |
|
|
|
</div> |
|
|
|
|
|
|
|
</el-popover> |
|
|
@ -389,6 +397,17 @@ export default { |
|
|
|
query: query |
|
|
|
}).href, '_blank') |
|
|
|
}, |
|
|
|
goLookAgentMoreRank(id) { |
|
|
|
let query = {} |
|
|
|
query.date = this.text |
|
|
|
query.rank_type = this.dataRank |
|
|
|
query.type = 'check_type' |
|
|
|
query.aid = id |
|
|
|
window.open(this.$router.resolve({ |
|
|
|
path: '/super/ranking/list', |
|
|
|
query: query |
|
|
|
}).href, '_blank') |
|
|
|
}, |
|
|
|
closePop(row, type) { |
|
|
|
row[type + '_popover'] = false; |
|
|
|
row[type + '_popover_2'] = false; |
|
|
@ -439,6 +458,26 @@ export default { |
|
|
|
} |
|
|
|
this.getRankingDetail(obj); |
|
|
|
}, |
|
|
|
handleClick3(row, index, type) { |
|
|
|
// 关闭其他行的弹框 |
|
|
|
this.tableData.forEach((item, i) => { |
|
|
|
item[type + '_popover'] = false; |
|
|
|
if (i !== index) { |
|
|
|
item[type + '_popover_2'] = false; |
|
|
|
} |
|
|
|
}); |
|
|
|
// 打开当前行的弹框 |
|
|
|
row[type + '_popover_2'] = true; |
|
|
|
|
|
|
|
let obj = {} |
|
|
|
if (this.dataType == 'agent') { |
|
|
|
obj.aid = row.id |
|
|
|
} |
|
|
|
if (this.dataType == 'ver_type') { |
|
|
|
obj.ver_type = row.id |
|
|
|
} |
|
|
|
this.getAgentTypeRankingList(); |
|
|
|
}, |
|
|
|
popshow() { |
|
|
|
var ariaEls = document.querySelectorAll('.el-popover') |
|
|
|
ariaEls.forEach((item) => { |
|
|
@ -596,6 +635,23 @@ export default { |
|
|
|
console.error(error, 'error') |
|
|
|
}) |
|
|
|
}, |
|
|
|
getAgentTypeRankingList(obj) { |
|
|
|
const that = this |
|
|
|
that.tableData1 = [] |
|
|
|
this.$http('POST', '/supernew/ajax_get_type_rank_list', { |
|
|
|
date: that.text, |
|
|
|
rank_type: that.dataRank, |
|
|
|
cur_page: 1, |
|
|
|
page_size: 5, |
|
|
|
...obj |
|
|
|
}).then(response => { |
|
|
|
this.$nextTick(() => { |
|
|
|
that.tableData1 = response.data.list.slice(0, 5) |
|
|
|
}) |
|
|
|
}).catch(error => { |
|
|
|
console.error(error, 'error') |
|
|
|
}) |
|
|
|
}, |
|
|
|
getLossList() { |
|
|
|
const that = this |
|
|
|
that.tableData = [] |
|
|
@ -667,4 +723,25 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.beforeNotice { |
|
|
|
margin-top: 12px; |
|
|
|
border-radius: 4px; |
|
|
|
background: #F2F7FF; |
|
|
|
border: 1px solid #BFDAFF; |
|
|
|
padding: 20px 14px; |
|
|
|
color: #1E2226; |
|
|
|
letter-spacing: 0.08em; |
|
|
|
|
|
|
|
.noticeTop { |
|
|
|
gap: 8px; |
|
|
|
margin-bottom: 12px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.noticeBot { |
|
|
|
gap: 10px; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
</style> |