web-zk-admin/src/views/statistics/underDirectAddNew.vue

706 lines
20 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="page">
<topBar
v-if="topList.length > 0"
:topList="topList"
:moren="moren"
></topBar>
<div class="main">
<div class="form_all">
<el-form ref="select" :model="select" label-width="auto">
<el-row :gutter="10">
<el-col :span="4">
<el-form-item :label="'会员编号'">
<el-input clearable v-model="select.memberCode"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="4">
<el-form-item :label="'会员姓名'">
<el-input clearable v-model="select.memberName"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="'订单类型'" prop="orderType">
<el-select
clearable
v-model="select.orderType"
:placeholder="'请选择'"
>
<el-option
v-for="(item, index) in orderTypeList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col> -->
<el-col :span="4">
<el-form-item :label="'荣誉奖衔'">
<el-select
clearable
:placeholder="'请选择'"
v-model="select.pkAwards"
>
<el-option
v-for="item in awardsList"
:key="item.pkId"
:label="item.awardsName"
:value="item.pkId"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="'隶属体系'">
<el-select
clearable
:placeholder="'请选择'"
v-model="select.pkVertex"
>
<el-option
v-for="item in vertexList"
:key="item.pkId"
:label="item.vertexName"
:value="item.pkId"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="'隶属团队'">
<el-select
clearable
:placeholder="'请选择'"
v-model="select.pkTeamCode"
>
<el-option
v-for="item in teamList"
:key="item.pkId"
:label="item.teamName"
:value="item.pkId"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="'国家'">
<el-select
v-model="select.pkCountry"
size="medium"
filterable
:placeholder="'请选择'"
>
<el-option
v-for="item in countryList"
:key="item.pkCountry"
:label="item.name"
:value="item.pkCountry"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="订单日期">
<el-date-picker
v-model="creationTime"
@change="changeTime"
value-format="yyyy-MM-dd"
type="daterange"
:range-separator="'至'"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-button type="primary" @click="getDataList">
{{ '搜索' }}</el-button
>
<el-button type="" @click="reset"> {{ '重置' }}</el-button>
<el-button type="primary" @click="getNewData">统计</el-button>
</el-col>
</el-row>
</el-form>
</div>
<div class="maintop">
<div class="mainbtn">
<!-- <el-button
size="small"
@click="handleExport"
style="background-color: #ffad41"
class="thebtn1"
>
{{ '导出' }}</el-button
> -->
<el-button
size="small"
v-hasButtons="['memberDown']"
@click="importTemplate"
style="background-color: #009b58; color: #fff; margin-left: 15px"
class="thebtn2"
>
{{ '下载模板' }}</el-button
>
<el-button
size="small"
class="thebtn2"
v-hasButtons="['memberImport']"
style="background-color: #ff6723; color: #fff"
@click="handleImport"
>
{{ '导入' }}</el-button
>
</div>
</div>
<div class="maintable">
<el-table
:data="tableData"
v-loading="loading"
style="width: 100%"
height="700px"
:header-cell-style="{ background: '#EEEEEE' }"
:row-class-name="tableRowClassName"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column align="center" prop="picture" label="国旗">
<template slot-scope="scope">
<div class="tem">
<img :src="scope.row.nationalFlag1" alt="" />
</div>
</template>
</el-table-column>
<el-table-column
align="center"
prop="shortName"
:label="'国家'"
>
</el-table-column>
<el-table-column
align="center"
prop="memberCode"
:label="'会员编号'"
>
</el-table-column>
<el-table-column
align="center"
prop="memberName"
:label="'会员姓名'"
>
</el-table-column>
<el-table-column align="center" prop="phone" :label="'联系方式'">
</el-table-column>
<!-- <el-table-column
align="center"
prop="orderTypeVal"
:label="'订单类型'"
>
</el-table-column> -->
<el-table-column
align="center"
prop="awardsName"
:label="'荣誉奖衔'"
>
</el-table-column>
<el-table-column
align="center"
prop="vertexName"
:label="'隶属体系'"
>
</el-table-column>
<el-table-column
align="center"
prop="pkTeamCode"
:label="'隶属团队'"
>
</el-table-column>
<el-table-column
align="center"
prop="orderAmount"
width="130"
label="新增金额(¥)"
>
</el-table-column>
<el-table-column
align="center"
prop="orderAchieve"
width="130"
:label="'新增业绩' + '(PV)'"
>
</el-table-column>
<el-table-column
align="center"
prop="bigArealPv"
:label="$t('大区业绩')"
>
<template slot-scope="scope">
<el-link @click="details(scope.row)" type="primary">{{
scope.row.bigArealPv
}}</el-link>
</template>
</el-table-column>
<el-table-column
align="center"
prop="smallAreaPv"
:label="$t('小区业绩')"
>
<template slot-scope="scope">
<el-link @click="details(scope.row)" type="primary">{{
scope.row.smallAreaPv
}}</el-link>
</template>
</el-table-column>
<el-table-column
align="center"
prop="bigArealAm"
:label="$t('大区金额')"
>
<template slot-scope="scope">
<el-link @click="details(scope.row)" type="primary">{{
scope.row.bigArealAm
}}</el-link>
</template>
</el-table-column>
<el-table-column
align="center"
prop="smallAreaAm"
:label="$t('小区金额')"
>
<template slot-scope="scope">
<el-link @click="details(scope.row)" type="primary">{{
scope.row.smallAreaAm
}}</el-link>
</template>
</el-table-column>
<el-table-column
align="center"
prop="regAmount"
width="130"
label="注册金额(¥)"
>
</el-table-column>
<el-table-column
align="center"
prop="regAchieve"
width="130"
:label="$t('注册业绩') + '(PV)'"
>
</el-table-column>
<el-table-column
align="center"
prop="upgAmount"
width="130"
label="升级金额(¥)"
>
</el-table-column>
<el-table-column
align="center"
prop="upgAchieve"
width="130"
:label="$t('升级业绩') + '(PV)'"
>
</el-table-column>
<el-table-column
align="center"
prop="repAmount"
width="130"
label="复购金额(¥)"
>
</el-table-column>
<el-table-column
align="center"
prop="repAchieve"
width="130"
:label="$t('复购业绩') + '(PV)'"
>
</el-table-column>
<el-table-column
align="center"
prop="conAmount"
width="130"
label="重消金额(¥)"
>
</el-table-column>
<el-table-column
align="center"
prop="conAchieve"
width="130"
:label="$t('重消业绩') + '(PV)'"
>
</el-table-column>
<!-- <el-table-column align="center"
prop="payTime"
label="订单日期">
</el-table-column> -->
</el-table>
</div>
</div>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getDataList"
/>
<el-dialog
:title="upload.title"
:close-on-click-modal="false"
:visible.sync="upload.open"
width="600px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:on-exceed="handleExceed"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
{{ '将文件拖到此处,或' }}
<em>{{ '点击上传' }}</em>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
{{ '提示仅允许导入“xls”或“xlsx”格式文件' }}
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">{{
'确认'
}}</el-button>
<el-button @click="upload.open = false">{{
'取消'
}}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import topBar from "@/components/topBar";
import * as api from "@/api/business.js";
import * as log from "@/api/logistics";
import { getToken } from "@/utils/auth";
import { getAwardsListChiose } from "@/api/level";
import { getvertexValue } from "@/api/financialCase";
import { userCountryList } from "@/api/site.js";
export default {
name: "UnderDirectAddNew",
components: {
topBar,
},
data() {
return {
creationTime: [],
select: {
orderType: 1,
},
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 50,
},
total: 0,
tableData: [],
loading: false,
awardsList: [],
vertexList: [],
teamList: [],
countryList: [],
orderTypeList: [],
moren: "underDirectAddNew",
topList: [
{
name: "伞下直推新增业绩(新)",
path: "underDirectAddNew",
},
],
monthFirstday: "",
monthLastday: "",
upload: {
// 是否显示弹出层(物流导入)
open: false,
// 弹出层标题(物流导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的物流数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url:
process.env.VUE_APP_BASE_API +
"/report/manager/member-report/batch-importData",
},
};
},
mounted() {
var s1 = this.getStartTime();
var s2 = this.getEndTime();
this.select.startPayTime = s1;
this.select.endPayTime = s2;
this.creationTime = [s1, s2];
// 获取列表
this.getDataList();
this.getData();
},
methods: {
getNewData() {
this.loading = true;
this.select.staDate = this.select.startPayTime;
this.select.endDate = this.select.endPayTime;
api
.getstaAmountBox(Object.assign({}, this.queryParams, this.select))
.then((res) => {
this.getDataList();
});
},
details(row) {
this.$router.push({
path: "UnderDirectAddNewDetil",
query: {
data: JSON.stringify(row),
search: JSON.stringify(this.creationTime),
},
});
},
handleImport() {
this.upload.title = "导入";
this.upload.open = true;
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
var fileName = response.fileName;
if (fileName != undefined && fileName != "") {
}
if (response.code == 200) {
let queryString = `/report/manager/member-report/export-direct-push-new-up?memberCodeStr=${encodeURIComponent(
response.data.memberCodeStr
)}&startPayTime=${encodeURIComponent(
response.data.startPayTime
)}&endPayTime=${encodeURIComponent(response.data.endPayTime)}`;
this.download(
queryString,
{},
`${this.$t("伞下直推新增业绩")}${new Date().getTime()}.xlsx`
);
}
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
let str = "";
this.$alert("", '上传成功', {
dangerouslyUseHTMLString: true,
});
},
// 上传文件数量超出后的动作
handleExceed() {
this.upload.isUploading = false;
this.msgInfo('仅可上传一个文件哦');
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
importTemplate() {
this.download(
"/report/manager/member-report/download",
{},
`${this.$t("伞下直推新增业绩")}${new Date().getTime()}.xlsx`
);
},
getStartTime() {
const date = new Date();
date.setDate(1); // 将当前时间的日期设置成第一天
const year = date.getFullYear(); // 得到当前年份
let month = date.getMonth() + 1; // 得到当前月份0-11月份+1是当前月份
month = month >= 10 ? month : "0" + month; // 补零
let day = date.getDate(); // 得到当前天数实际是本月第一天因为前面setDate(1) 设置过了
day = day >= 10 ? day : "0" + day; // 补零
return year + "-" + month + "-" + day;
},
getEndTime() {
let date = new Date();
let year = date.getFullYear(); // 得到当前年份
let month = date.getMonth() + 1; // 得到当前月份0-11月份+1是当前月份
month = month >= 10 ? month : "0" + month; // 补零
let day = date.getDate(); // 得到当前天数实际是本月第一天因为前面setDate(1) 设置过了
day = day >= 10 ? day : "0" + day; // 补零
return year + "-" + month + "-" + day + " ";
},
//荣誉奖衔下拉选
getData() {
getAwardsListChiose().then((res) => {
this.awardsList = res.rows;
});
getvertexValue().then((res) => {
this.vertexList = res.data;
});
api.teamList().then((res) => {
this.teamList = res.data;
});
userCountryList().then((res) => {
this.countryList = res.data;
});
log.getUnderAddOrderTypeNew().then((res) => {
this.orderTypeList = res.data;
});
},
reset() {
this.select = {
orderType: 1,
};
this.creationTime = [];
this.getDataList();
},
changeTime(val) {
this.select.startPayTime = val ? val[0] : "";
this.select.endPayTime = val ? val[1] : "";
},
getDataList() {
this.loading = true;
api
.directAddNewList(Object.assign({}, this.queryParams, this.select))
.then((res) => {
this.tableData = res.rows;
this.total = res.total;
this.loading = false;
});
},
handleSelectionChange(val) {},
/** 导出按钮操作 */
handleExport() {
this.$confirm('是否确认导出所有数据项?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: "warning",
}).then((_) => {
this.download(
"/report/manager/member-report/export-direct-push-new-up",
Object.assign({}, this.queryParams, this.select),
`伞下直推新增业绩(新)${new Date().getTime()}.xlsx`
);
});
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
} else if (rowIndex % 2 == 0) {
return "success-row";
}
return "";
},
},
};
</script>
<style scoped lang="scss">
::v-deep .el-table .warning-row {
background: #f9f9f9;
}
::v-deep .el-table .success-row {
background: #ffffff;
}
::v-deep .el-table thead {
color: #000000;
}
::v-deep .el-select {
width: 100%;
}
.uploadIcon ::v-deep .el-upload--picture-card {
display: none !important; /* 上传按钮隐藏 */
}
.page {
padding: 20px;
background: #f9f9f9;
font-size: 14px;
.main {
background: #ffffff;
border-radius: 8px;
box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5);
.form_all {
padding: 0px 20px 0 20px;
// margin-bottom: 20px;
background: #fff;
border-radius: 8px;
}
.maintop {
display: flex;
padding: 0px 0px;
justify-content: space-between;
align-items: center;
background: #f8f8f8;
.mainbtn {
.thebtn1 {
background: #3181e5;
color: #ffffff;
}
.thebtn2 {
background: #ffad41;
color: #ffffff;
}
}
.maintitle {
font-size: 10px;
font-family: MicrosoftYaHei;
color: #999999;
}
}
}
.tem {
display: flex;
align-items: center;
justify-content: center;
img {
width: 30px;
height: 30px;
margin-right: 3px;
}
}
.isRed {
color: #ed1d25;
}
.isGreen {
color: #1ab62b;
}
.bgImg {
width: 48px;
height: 48px;
}
}
.openClose {
text-align: right;
margin-right: 10px;
color: #3181e5;
}
.dizhi {
::v-deep .el-cascader {
width: 100%;
}
}
::v-deep .el-date-editor.el-input,
.el-date-editor.el-input__inner {
width: 100%;
}
</style>