feat(performanceList): 拨比列表字段调整

This commit is contained in:
woody 2025-06-04 09:45:26 +08:00
parent 158525544e
commit b1ceb0c6e9
2 changed files with 528 additions and 556 deletions

View File

@ -8,9 +8,7 @@
<view class="content"> <view class="content">
<view class="header_a"> <view class="header_a">
<view class="header"> <view class="header">
<img @click="isTop=true" <img @click="isTop = true" src="@/assets/images/search.png" alt="" />
src="@/assets/images/search.png"
alt="">
<!-- <img @click="isFont=true" <!-- <img @click="isFont=true"
src="@/assets/images/change.png" src="@/assets/images/change.png"
alt=""> --> alt=""> -->
@ -18,52 +16,51 @@
</view> </view>
<view class="zhan"></view> <view class="zhan"></view>
<!-- table --> <!-- table -->
<view class="kuang" <view class="kuang" v-for="(item, index) in tableData" :key="item.id">
v-for="(item,index) in tableData" <table class="tftable" border="1">
:key="item.id"> <tr
<table class="tftable" v-for="(ctem, cndex) in menuList"
border="1">
<tr v-for="(ctem,cndex) in menuList"
:key="ctem.id" :key="ctem.id"
v-if="ctem.id!=0"> v-if="ctem.id != 0"
>
<td align="right">{{ ctem.text }}</td> <td align="right">{{ ctem.text }}</td>
<td align="left">{{ item[ctem.prop] }}</td> <td align="left">{{ item[ctem.prop] }}</td>
</tr> </tr>
</table> </table>
</view> </view>
<view class="kuang">小计</view> <view class="kuang">小计</view>
<view class="kuang" <view class="kuang" v-for="(item, index) in tableList" :key="item.id">
v-for="(item,index) in tableList" <table class="tftable" border="1">
:key="item.id"> <tr
<table class="tftable" v-for="(ctem, cndex) in menuList"
border="1">
<tr v-for="(ctem,cndex) in menuList"
:key="ctem.id" :key="ctem.id"
v-if="ctem.total!=undefined"> v-if="ctem.total != undefined"
>
<td align="right">{{ ctem.text }}</td> <td align="right">{{ ctem.text }}</td>
<td align="left">{{ item[ctem.total] }}</td> <td align="left">{{ item[ctem.total] }}</td>
</tr> </tr>
</table> </table>
</view> </view>
<!-- 顶部搜索 --> <!-- 顶部搜索 -->
<u-popup :show="isTop" <u-popup :show="isTop" mode="top" @close="isTop = false">
mode="top"
@close="isTop=false">
<view class="tt"> <view class="tt">
<u--form labelPosition="left" <u--form
labelPosition="left"
labelWidth="auto" labelWidth="auto"
:model="select" :model="select"
ref="uForm"> ref="uForm"
>
<u-row gutter="10"> <u-row gutter="10">
<u-col span="12"> <u-col span="12">
<u-form-item :label="'业绩时间'" <u-form-item :label="'业绩时间'" @click="isData = true">
@click="isData=true"> <u--input
<u--input disabled disabled
fontSize="12" fontSize="12"
disabledColor="#ffffff" disabledColor="#ffffff"
v-model="select.operationTimeVal" v-model="select.operationTimeVal"
suffixIcon="arrow-down" suffixIcon="arrow-down"
suffixIconStyle="font-size: 12px;"></u--input> suffixIconStyle="font-size: 12px;"
></u--input>
</u-form-item> </u-form-item>
</u-col> </u-col>
</u-row> </u-row>
@ -71,20 +68,28 @@
<u-col span="12"> <u-col span="12">
<u-form-item :label="'隶属体系'"> <u-form-item :label="'隶属体系'">
<u-checkbox-group v-model="select.pkBdVertexList"> <u-checkbox-group v-model="select.pkBdVertexList">
<view v-for="item in verList" <view
v-for="item in verList"
:key="item.pkId" :key="item.pkId"
class="disFlex"> class="disFlex"
<u-checkbox :name="item.pkId" >
@change="selAll($event,item)" <u-checkbox
:label="item.vertexName"> :name="item.pkId"
@change="selAll($event, item)"
:label="item.vertexName"
>
</u-checkbox> </u-checkbox>
<view class="disFlex1"> <view class="disFlex1">
<u-checkbox-group @change="selAngle(item)" <u-checkbox-group
v-model="item.pkBdVertexEd"> @change="selAngle(item)"
<u-checkbox v-for="ctem in item.childList" v-model="item.pkBdVertexEd"
>
<u-checkbox
v-for="ctem in item.childList"
:key="ctem.pkId" :key="ctem.pkId"
:name="ctem.pkId" :name="ctem.pkId"
:label="ctem.vertexName"> :label="ctem.vertexName"
>
</u-checkbox> </u-checkbox>
</u-checkbox-group> </u-checkbox-group>
</view> </view>
@ -108,15 +113,17 @@
</u-row> --> </u-row> -->
</u--form> </u--form>
<view class="footer"> <view class="footer">
<u-button @click="getList1" <u-button
@click="getList1"
color="#C8161D" color="#C8161D"
text="搜索" text="搜索"
class="btnn"></u-button> class="btnn"
<u-button @click="reset" ></u-button>
text="重置"></u-button> <u-button @click="reset" text="重置"></u-button>
</view> </view>
</view> </view>
<u-calendar @close="isData = false" <u-calendar
@close="isData = false"
:closeOnClickOverlay="true" :closeOnClickOverlay="true"
:show="isData" :show="isData"
:allowSameDay="true" :allowSameDay="true"
@ -124,22 +131,25 @@
:maxDate="calendar.maxDate" :maxDate="calendar.maxDate"
:minDate="calendar.minDate" :minDate="calendar.minDate"
:monthNum="calendar.monthNum" :monthNum="calendar.monthNum"
@confirm="confirm"></u-calendar> @confirm="confirm"
></u-calendar>
</u-popup> </u-popup>
<!-- 悬浮球 --> <!-- 悬浮球 -->
<drag-button /> <drag-button />
<export-ball ref="exportBall" <export-ball
ref="exportBall"
v-hasButtons="['performanceListExport']" v-hasButtons="['performanceListExport']"
@handleExport="handleExport" /> @handleExport="handleExport"
/>
</view> </view>
</template> </template>
<script> <script>
import * as api from '@/api/settle' import * as api from '@/api/settle';
import * as infor from '@/api/information' import * as infor from '@/api/information';
import { isLocals, isLocalSymbol, isOther } from '@/util/numberToCurrency' import { isLocals, isLocalSymbol, isOther } from '@/util/numberToCurrency';
export default { export default {
data() { data() {
return { return {
select: { select: {
@ -176,6 +186,26 @@ export default {
checked: true, checked: true,
prop: 'vertexName', prop: 'vertexName',
}, },
{
id: 'creationTime',
text: '业绩时间',
checked: true,
prop: 'creationTime',
},
{
id: 'mainBonusPvRate',
text: '首购PV拨比(%)',
checked: true,
prop: 'mainBonusPvRate',
total: 'mainBonusPvRateSum',
},
{
id: 'repurBonusPvRate',
text: '复购PV拨比(%)',
checked: true,
prop: 'repurBonusPvRate',
total: 'repurBonusPvRateSum',
},
{ {
id: 2, id: 2,
text: '隶属团队', text: '隶属团队',
@ -196,20 +226,7 @@ export default {
prop: 'mainUpAmount', prop: 'mainUpAmount',
total: 'mainUpAmountSum', total: 'mainUpAmountSum',
}, },
{
id: 5,
text: `${'云代注册'}(${isOther()})`,
checked: true,
prop: 'agentRegAmount',
total: 'agentRegAmountSum',
},
{
id: 6,
text: `${'云代升级'}(${isOther()})`,
checked: true,
prop: 'agentUpAmount',
total: 'agentUpAmountSum',
},
{ {
id: 7, id: 7,
text: `${'首购金额'}(${isOther()})`, text: `${'首购金额'}(${isOther()})`,
@ -238,13 +255,13 @@ export default {
prop: 'leaderBonus', prop: 'leaderBonus',
total: 'leaderBonusSum', total: 'leaderBonusSum',
}, },
{ // {
id: 11, // id: 11,
text: `${'分红收益'}(${isOther()})`, // text: `${''}(${isOther()})`,
checked: true, // checked: true,
prop: 'shareBonus', // prop: 'shareBonus',
total: 'shareBonusSum', // total: 'shareBonusSum',
}, // },
{ {
id: 12, id: 12,
text: `${'服务补贴'}(${isOther()})`, text: `${'服务补贴'}(${isOther()})`,
@ -252,27 +269,7 @@ export default {
prop: 'serviceBonus', prop: 'serviceBonus',
total: 'serviceBonusSum', total: 'serviceBonusSum',
}, },
{
id: 13,
text: `${'云代直推'}(${isOther()})`,
checked: true,
prop: 'agentIntroduceBonus',
total: 'agentIntroduceBonusSum',
},
{
id: 14,
text: `${'云代首购'}(${isOther()})`,
checked: true,
prop: 'agentFirstAmount',
total: 'agentFirstAmountSum',
},
{
id: 15,
text: `${'云代复购'}(${isOther()})`,
checked: true,
prop: 'agentRepurAmount',
total: 'agentRepurAmountSum',
},
{ {
id: 16, id: 16,
text: `${'复购专区'}(${isOther()})`, text: `${'复购专区'}(${isOther()})`,
@ -280,19 +277,7 @@ export default {
prop: 'mainRepurAmount', prop: 'mainRepurAmount',
total: 'mainRepurAmountSum', total: 'mainRepurAmountSum',
}, },
{
id: 17,
text: `${'海粉专区'}(${isOther()})`,
checked: true,
prop: 'hifansRegAmount',
total: 'hifansRegAmountSum',
},
// {
// id: 16,
// text: `${''}(${isOther()})`,
// checked: false,
// prop: 'agentRepurAmount',
// },
{ {
id: 18, id: 18,
text: `${'复购金额'}(${isOther()})`, text: `${'复购金额'}(${isOther()})`,
@ -356,118 +341,106 @@ export default {
prop: 'totalBonusRate', prop: 'totalBonusRate',
total: 'totalBonusRateSum', total: 'totalBonusRateSum',
}, },
{
id: 27,
text: '创建时间',
checked: false,
prop: 'creationTime',
},
// {
// id: 28,
// text: '',
// checked: false,
// prop: 'endDate',
// },
], ],
} };
}, },
onLoad(options) { onLoad(options) {
this.getData() this.getData();
this.chooseTimed() this.chooseTimed();
}, },
onShow() { onShow() {
this.getSearch() this.getSearch();
}, },
onPullDownRefresh() { onPullDownRefresh() {
this.getList1() this.getList1();
}, },
methods: { methods: {
isLocalSymbol, isLocalSymbol,
isLocals, isLocals,
// //
chooseTimed() { chooseTimed() {
let date = new Date() const date = new Date();
let year = date.getFullYear() const year = date.getFullYear();
let month = date.getMonth() + 1 let month = date.getMonth() + 1;
let day = date.getDate() let day = date.getDate();
if (month <= 9) { if (month <= 9) {
month = '0' + month month = '0' + month;
} }
if (day <= 9) { if (day <= 9) {
day = '0' + day day = '0' + day;
} }
let minyear = year - 1 const minyear = year - 1;
let maxyear = year + 1 const maxyear = year + 1;
this.calendar.minDate = minyear + '-' + month + '-' + day this.calendar.minDate = minyear + '-' + month + '-' + day;
this.calendar.maxDate = maxyear + '-' + month + '-' + day this.calendar.maxDate = maxyear + '-' + month + '-' + day;
}, },
getData() { getData() {
// //
infor.vertexChild().then((res) => { infor.vertexChild().then((res) => {
this.verList = res.data this.verList = res.data;
this.verList.forEach((item) => { this.verList.forEach((item) => {
item.pkBdVertexEd = [] item.pkBdVertexEd = [];
}) });
}) });
// //
infor.getmemberTeamList().then((res) => { infor.getmemberTeamList().then((res) => {
this.memberteamList = res.rows this.memberteamList = res.rows;
}) });
}, },
selAll(e, item) { selAll(e, item) {
if (e) { if (e) {
this.verList.forEach((ctem) => { this.verList.forEach((ctem) => {
if (item.pkId == ctem.pkId) { if (item.pkId == ctem.pkId) {
ctem.pkBdVertexEd = ctem.childList.map((stem) => stem.pkId) ctem.pkBdVertexEd = ctem.childList.map((stem) => stem.pkId);
} }
}) });
} else { } else {
this.verList.forEach((ctem) => { this.verList.forEach((ctem) => {
this.$set(ctem, 'pkBdVertexEd', []) this.$set(ctem, 'pkBdVertexEd', []);
}) });
} }
let arr = [] const arr = [];
this.verList.forEach((item) => { this.verList.forEach((item) => {
item.pkBdVertexEd.forEach((ctem) => { item.pkBdVertexEd.forEach((ctem) => {
arr.push(ctem) arr.push(ctem);
}) });
}) });
let pkBdVertexStr = arr.join(',') const pkBdVertexStr = arr.join(',');
this.$set(this.select, 'pkBdVertexStr', pkBdVertexStr) this.$set(this.select, 'pkBdVertexStr', pkBdVertexStr);
}, },
selAngle(item) { selAngle(item) {
this.$nextTick(() => { this.$nextTick(() => {
if (item.pkBdVertexEd.length == item.childList.length) { if (item.pkBdVertexEd.length == item.childList.length) {
this.select.pkBdVertexList.push(item.pkId) this.select.pkBdVertexList.push(item.pkId);
} else { } else {
this.select.pkBdVertexList = this.removeElement( this.select.pkBdVertexList = this.removeElement(
this.select.pkBdVertexList, this.select.pkBdVertexList,
item.pkId item.pkId
) );
} }
let arr = [] const arr = [];
this.verList.forEach((item) => { this.verList.forEach((item) => {
item.pkBdVertexEd.forEach((ctem) => { item.pkBdVertexEd.forEach((ctem) => {
arr.push(ctem) arr.push(ctem);
}) });
}) });
let pkBdVertexStr = arr.join(',') const pkBdVertexStr = arr.join(',');
this.$set(this.select, 'pkBdVertexStr', pkBdVertexStr) this.$set(this.select, 'pkBdVertexStr', pkBdVertexStr);
}) });
}, },
removeElement(arr, element) { removeElement(arr, element) {
return arr.filter(function (value) { return arr.filter(function (value) {
return value !== element return value !== element;
}) });
}, },
getSearch() { getSearch() {
api api
.bonusList(Object.assign({}, this.queryParams, this.select)) .bonusList(Object.assign({}, this.queryParams, this.select))
.then((res) => { .then((res) => {
uni.stopPullDownRefresh() uni.stopPullDownRefresh();
this.tableData = res.rows this.tableData = res.rows;
this.getTotal() this.getTotal();
}) });
}, },
getTotal() { getTotal() {
api api
@ -475,56 +448,56 @@ export default {
.then((res) => { .then((res) => {
if (res.code == 200) { if (res.code == 200) {
if (res.data) { if (res.data) {
this.tableList = [res.data] this.tableList = [res.data];
} else { } else {
this.tableList = [] this.tableList = [];
} }
} }
}) });
}, },
getList1() { getList1() {
this.tableData = [] this.tableData = [];
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1;
this.isTop = false this.isTop = false;
this.tableData = [] this.tableData = [];
this.getSearch() this.getSearch();
}, },
reset() { reset() {
this.select = {} this.select = {};
}, },
handleExport() { handleExport() {
let url = '/member/manage/bonus-statis/export' const url = '/member/manage/bonus-statis/export';
let obj = Object.assign({}, this.select, this.queryParams) const obj = Object.assign({}, this.select, this.queryParams);
this.$refs.exportBall.handleExport( this.$refs.exportBall.handleExport(
url, url,
obj, obj,
`拨比列表-${new Date().getTime()}` `拨比列表-${new Date().getTime()}`
) );
}, },
confirm(e) { confirm(e) {
this.$set(this.select, 'startDate', e[0]) this.$set(this.select, 'startDate', e[0]);
this.$set(this.select, 'endDate', e[e.length - 1]) this.$set(this.select, 'endDate', e[e.length - 1]);
this.$set( this.$set(
this.select, this.select,
'operationTimeVal', 'operationTimeVal',
e[0] + ' 至 ' + e[e.length - 1] e[0] + ' 至 ' + e[e.length - 1]
) );
this.isData = false this.isData = false;
}, },
}, },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content { .content {
background: #f9f9f9; background: #f9f9f9;
// padding: 20rpx; // padding: 20rpx;
} }
.header_a { .header_a {
position: fixed; position: fixed;
width: 100%; width: 100%;
z-index: 1; z-index: 1;
} }
.header { .header {
margin: 20rpx; margin: 20rpx;
background: #ffffff; background: #ffffff;
box-shadow: 0px 2px 10px 0px rgba(204, 204, 204, 0.4); box-shadow: 0px 2px 10px 0px rgba(204, 204, 204, 0.4);
@ -537,22 +510,22 @@ export default {
width: 24px; width: 24px;
height: 24px; height: 24px;
} }
} }
.zhan { .zhan {
height: 130rpx; height: 130rpx;
} }
.kuang { .kuang {
margin: 20rpx; margin: 20rpx;
background: #f9f9f9; background: #f9f9f9;
border-radius: 10px 10px 10px 10px; border-radius: 10px 10px 10px 10px;
} }
.table_f { .table_f {
display: flex; display: flex;
uni-button { uni-button {
margin: 20rpx 10rpx; margin: 20rpx 10rpx;
} }
} }
.tftable { .tftable {
table-layout: fixed; table-layout: fixed;
font-size: 12px; font-size: 12px;
border-collapse: collapse; border-collapse: collapse;
@ -580,41 +553,41 @@ export default {
tr :nth-child(2) { tr :nth-child(2) {
color: #333333; color: #333333;
} }
} }
.tt { .tt {
padding: 20rpx; padding: 20rpx;
margin-top: 40px; margin-top: 40px;
} }
.tt1 { .tt1 {
padding: 20rpx; padding: 20rpx;
margin-top: 40px; margin-top: 40px;
// width: 60%; // width: 60%;
} }
::v-deep .u-transition { ::v-deep .u-transition {
z-index: 998 !important; z-index: 998 !important;
} }
.footer { .footer {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 20rpx 60rpx; padding: 20rpx 60rpx;
.btnn { .btnn {
margin-right: 40rpx; margin-right: 40rpx;
} }
} }
::v-deep .u-input { ::v-deep .u-input {
padding: 0 9px !important; padding: 0 9px !important;
} }
::v-deep .u-form-item__body__left__content__label { ::v-deep .u-form-item__body__left__content__label {
font-size: 12px; font-size: 12px;
} }
::v-deep .u-form-item__body { ::v-deep .u-form-item__body {
padding: 5px 0; padding: 5px 0;
} }
::v-deep .u-checkbox-group--row { ::v-deep .u-checkbox-group--row {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
::v-deep .u-checkbox-group { ::v-deep .u-checkbox-group {
flex-wrap: wrap; flex-wrap: wrap;
flex-shrink: inherit; flex-shrink: inherit;
.u-checkbox { .u-checkbox {
@ -624,14 +597,14 @@ export default {
font-size: 12px !important; font-size: 12px !important;
// margin-right: 10rpx; // margin-right: 10rpx;
} }
} }
.disFlex { .disFlex {
display: flex; display: flex;
border-bottom: 2rpx dashed #ccc; border-bottom: 2rpx dashed #ccc;
margin-bottom: 8rpx; margin-bottom: 8rpx;
} }
.disFlex1 { .disFlex1 {
display: flex; display: flex;
margin-left: 10rpx; margin-left: 10rpx;
} }
</style> </style>

View File

@ -18,22 +18,21 @@ module.exports = {
// } // }
// }, // },
'/prod-api': { '/prod-api': {
target: 'http://t-mana.beida413.com', target: 'http://t-mana.beida666.com',
changeOrigin: true, changeOrigin: true,
// pathRewrite: { // pathRewrite: {
// '^/prod-api': '' // '^/prod-api': ''
// } // }
} },
} },
}, },
configureWebpack: { configureWebpack: {
externals: { externals: {
'zhCN':'zhCN', zhCN: 'zhCN',
'enUS':'enUS', enUS: 'enUS',
'zhTC':'zhTC', zhTC: 'zhTC',
'ruRU':'ruRU', ruRU: 'ruRU',
'frFR':'frFR', frFR: 'frFR',
} },
} },
};
}