diff --git a/buyer/src/api/distribution.js b/buyer/src/api/distribution.js
new file mode 100644
index 00000000..34e4f379
--- /dev/null
+++ b/buyer/src/api/distribution.js
@@ -0,0 +1,110 @@
+import request, {Method} from '@/plugins/request.js';
+
+/**
+ * 获取当前会员分销信息
+ */
+export function distribution () {
+ return request({
+ url: `/buyer/distribution/distribution`,
+ method: Method.GET,
+ needToken: true
+ });
+}
+
+/**
+ * 申请成为分销员
+ * @param idNumber 身份证号
+ * @param name 名字
+ */
+export function applyDistribution (params) {
+ return request({
+ url: `/buyer/distribution/distribution`,
+ method: Method.POST,
+ needToken: true,
+ params
+ });
+}
+
+/**
+ * 获取分销员订单列表
+ */
+export function getDistOrderList (params) {
+ return request({
+ url: `/buyer/distribution/order`,
+ method: Method.GET,
+ needToken: true,
+ params
+ });
+}
+
+/**
+ * 获取分销员下级用户列表
+ */
+export function getDistMemberList (params) {
+ return request({
+ url: `/buyer/distribution/distribution/memberList`,
+ method: Method.GET,
+ needToken: true,
+ params
+ });
+}
+
+/**
+ * 获取分销商商品列表
+ */
+export function getDistGoodsList (params) {
+ return request({
+ url: `/buyer/distribution/goods`,
+ method: Method.GET,
+ needToken: true,
+ params
+ });
+}
+
+/**
+ * 分销员提现历史
+ */
+export function distCashHistory (params) {
+ return request({
+ url: `/buyer/distribution/cash`,
+ method: Method.GET,
+ needToken: true,
+ params
+ });
+}
+
+/**
+ * 分销员-团队列表
+ */
+export function getDistGroupList (params) {
+ return request({
+ url: `/buyer/distribution/distribution/groupList`,
+ method: Method.GET,
+ needToken: true,
+ params
+ });
+}
+
+/**
+ * 分销商提现
+ */
+export function distCash (params) {
+ return request({
+ url: `/buyer/distribution/cash`,
+ method: Method.POST,
+ needToken: true,
+ params
+ });
+}
+
+/**
+ * 绑定分销
+ * @param distributionId 商品分销ID
+ */
+export function getGoodsDistribution (distributionId) {
+ return request({
+ url: `/buyer/distribution/distribution/bindingDistribution/${distributionId}`,
+ method: Method.GET,
+ needToken: true
+ });
+}
diff --git a/buyer/src/api/member.js b/buyer/src/api/member.js
index eeb7de21..ed2da4bc 100644
--- a/buyer/src/api/member.js
+++ b/buyer/src/api/member.js
@@ -333,92 +333,7 @@ export function clearComplain (id) {
});
}
-/**
- * 获取当前会员分销信息
- */
-export function distribution () {
- return request({
- url: `/buyer/distribution/distribution`,
- method: Method.GET,
- needToken: true
- });
-}
-/**
- * 申请成为分销商
- * @param idNumber 身份证号
- * @param name 名字
- */
-export function applyDistribution (params) {
- return request({
- url: `/buyer/distribution/distribution`,
- method: Method.POST,
- needToken: true,
- params
- });
-}
-
-/**
- * 获取分销商订单列表
- */
-export function getDistOrderList (params) {
- return request({
- url: `/buyer/distribution/order`,
- method: Method.GET,
- needToken: true,
- params
- });
-}
-
-/**
- * 获取分销商商品列表
- */
-export function getDistGoodsList (params) {
- return request({
- url: `/buyer/distribution/goods`,
- method: Method.GET,
- needToken: true,
- params
- });
-}
-
-/**
- * 绑定、解绑分销商品
- * @param distributionGoodsId 分销商品id
- * @param checked 分销商品id,true为绑定,false为解绑
- */
-export function selectDistGoods (params) {
- return request({
- url: `/buyer/distribution/goods/checked/${params.distributionGoodsId}`,
- method: Method.GET,
- needToken: true,
- params
- });
-}
-
-/**
- * 分销商提现历史
- */
-export function distCashHistory (params) {
- return request({
- url: `/buyer/distribution/cash`,
- method: Method.GET,
- needToken: true,
- params
- });
-}
-
-/**
- * 分销商提现
- */
-export function distCash (params) {
- return request({
- url: `/buyer/distribution/cash`,
- method: Method.POST,
- needToken: true,
- params
- });
-}
/**
* 我的足迹
diff --git a/buyer/src/pages/home/memberCenter/Distribution.vue b/buyer/src/pages/home/memberCenter/Distribution.vue
index 1933950c..33aa7526 100644
--- a/buyer/src/pages/home/memberCenter/Distribution.vue
+++ b/buyer/src/pages/home/memberCenter/Distribution.vue
@@ -1,6 +1,6 @@
-
分销下线付款之后会生成分销订单。
-
- 冻结金额:用户提现金额即为冻结金额,审核通过后扣除冻结金额,审核拒绝之后冻结金额返回可提现金额。
-
-
可提现金额:分销订单佣金T+1解冻后可变为可提现金额。
-
+
交易完成后返佣可提现。
- 可提现金额:
- ¥{{ result.canRebate | unitPrice }}
- 冻结金额:
- ¥{{ result.commissionFrozen | unitPrice }}
- 返利总金额:
- ¥{{ result.rebateTotal | unitPrice }}
+ 可提现金额(元):
+ {{ result.canRebate | unitPrice }}
+ 待结算:
+ {{ result.commissionFrozen | unitPrice }}
+ 总收益(元):
+ {{ result.rebateTotal | unitPrice }}
+ @click="withdrawApplyModal = true">申请提现
+
-
+
+
+
+ {{ row.createTime }}
+
+
+ {{ row.goodsName }}
+
+
+ {{ row.num }}
+
+
+ {{ row.rebate }}
+
+
+ 未完成
+ 订单完成
+ 订单取消
+ 订单退款
+
+
+
+
+
+ ">
{{ row.goodsName }}
+ alt=""/> {{ row.goodsName }}
¥{{ row.price | unitPrice }}
+
+ {{ row.firstProportion }}%
+
¥{{ row.commission | unitPrice }}
@@ -101,15 +116,8 @@
type="success"
size="small"
style="margin-right: 5px"
- @click="fenxiao(row)"
- >分销商品
-
+ @click="fenxiao(row)">邀请好友
+
@@ -124,48 +132,30 @@
>
-
-
-
-
-
{{ row.goodsName }}
-
+
+
+
+ {{ row.nickName }}
-
- ¥{{ row.price | unitPrice }}
+
+ {{ row.orderPrice }}
-
- ¥{{ row.commission | unitPrice }}
+
+ {{ row.rebatePrice }}
-
-
+
+ {{ row.orderNum }}
+
+
+ {{ row.lastLoginDate }}
- +¥{{ row.price | unitPrice }}
+ ¥{{ row.price | unitPrice }}
- -¥{{ row.price | unitPrice }}
+ ¥{{ row.price | unitPrice }}
@@ -199,8 +187,7 @@
: row.distributionCashStatus == "VIA_AUDITING"
? "通过"
: "拒绝"
- }}
+ }}
@@ -215,6 +202,30 @@
>
+
+
+
+ {{ row.memberName }}
+
+
+ {{ row.distributionOrderPrice }}
+
+
+ {{ row.distributionOrderCount }}
+
+
+
+
@@ -222,7 +233,8 @@
分销功能暂未开启
提交认证申请后,工作人员将在三个工作日进行核对完成审核提交认证申请后,工作人员将在三个工作日进行核对完成审核
+
@@ -239,7 +251,8 @@
您提交的申诉正在审核
提交认证申请后,工作人员将在三个工作日进行核对完成审核提交认证申请后,工作人员将在三个工作日进行核对完成审核
+
@@ -250,29 +263,18 @@
元
+ >元
- 下载二维码或者复制链接分享商品
+ 下载二维码或者复制链接分享商品
@@ -304,92 +306,98 @@ import {
distCash,
distCashHistory,
getDistGoodsList,
- selectDistGoods,
-} from "@/api/member.js";
-import { IDCard } from "@/plugins/RegExp.js";
-import { checkBankno } from "@/plugins/Foundation";
+ getDistOrderList,
+ getDistMemberList,
+ getDistGroupList
+} from "@/api/distribution.js";
+import {IDCard} from "@/plugins/RegExp.js";
import vueQr from "vue-qr";
+
export default {
name: "Distribution",
- components: { vueQr },
+ components: {vueQr},
data() {
return {
- config:require('@/config'),
+ config: require('@/config'),
status: 0, // 申请状态,0为未申请 1 申请中 2 申请完成 3 功能暂未开启
applyForm: {}, // 申请表单
rules: {
// 验证规则
- name: [{ required: true, message: "请输入真实姓名" }],
+ name: [{required: true, message: "请输入真实姓名"}],
idNumber: [
- { required: true, message: "请输入身份证号" },
- { pattern: IDCard, message: "请输入正确的身份证号" },
- ],
- settlementBankBranchName: [
- {
- required: true,
- message: "请输入银行开户行",
- // 可以单个或者同时写两个触发验证方式
- trigger: "blur",
- },
- ],
- settlementBankAccountName: [
- {
- required: true,
- message: "请输入银行开户名",
- // 可以单个或者同时写两个触发验证方式
- trigger: "blur",
- },
- ],
- //银行账号
- settlementBankAccountNum: [
- {
- required: true,
- message: "银行账号不正确",
- // 可以单个或者同时写两个触发验证方式
- trigger: "blur",
- },
- {
- validator: (rule, value, callback) => {
- // 上面有说,返回true表示校验通过,返回false表示不通过
- // this.$u.test.mobile()就是返回true或者false的
- return checkBankno(value);
- },
- message: "银行账号不正确",
- },
+ {required: true, message: "请输入身份证号"},
+ {pattern: IDCard, message: "请输入正确的身份证号"},
],
},
- tabName: "goodsChecked", // 当前所在tab
+ tabName: "order", // 当前所在tab
result: {}, // 审核结果
applyLoading: false, // 申请加载状态
goodsLoading: false, // 列表加载状态
+ orderLoading: false, // 订单加载状态
withdrawApplyModal: false, // 提现表单显隐
withdrawPrice: 0, // 提现金额
goodsData: {}, // 商品数据
+ orderData:{}, //订单数据
+ memberData:{}, //订单数据
logData: {}, // 日志数据
+ groupData:{},//团队数据
+ orderColumns:[
+ //订单表头
+ {title: "下单时间", slot: "createTime", minWidth: 200},
+ {title: "商品名称", slot: "goodsName", minWidth: 200},
+ {title: "数量", slot: "num"},
+ {title: "佣金金额", slot: "rebate"},
+ {title: "状态", slot: "distributionOrderStatus"},
+ ],
+ memberColumns:[
+ //客户列表表头
+ {title: "客户昵称", slot: "nickName", minWidth: 150},
+ {title: "成交额", slot: "orderPrice"},
+ {title: "佣金总额", slot: "rebatePrice"},
+ {title: "订单数", slot: "orderNum"},
+ {title: "最近下单时间", slot: "lastLoginDate", minWidth: 150},
+ ],
goodsColumns: [
// 商品表头
- { title: "商品名称", slot: "name", width: 400 },
- { title: "商品价格", slot: "price" },
- { title: "佣金", slot: "commission" },
- { title: "操作", slot: "action", minWidth: 120 },
+ {title: "商品名称", slot: "name", width: 400},
+ {title: "商品价格", slot: "price"},
+ {title: "佣金比例", slot: "firstProportion"},
+ {title: "预计赚", slot: "commission"},
+ {title: "操作", slot: "action", minWidth: 120},
],
logColumns: [
// 日志表头
- { title: "编号", slot: "sn" },
- { title: "申请时间", slot: "time" },
- { title: "提现金额", slot: "price" },
- { title: "提现状态", slot: "status" },
+ {title: "编号", slot: "sn"},
+ {title: "申请时间", slot: "time"},
+ {title: "提现金额", slot: "price"},
+ {title: "提现状态", slot: "status"},
+ ],
+ groupColumns: [
+ // 团队表头
+ {title: "昵称", slot: "memberName"},
+ {title: "销售额", slot: "distributionOrderPrice"},
+ {title: "订单量", slot: "distributionOrderCount"},
],
params: {
// 商品请求参数
pageNumber: 1,
pageSize: 20,
- checked: true,
+ sort: "createTime",
+ order: "desc",
},
orderParams: {
// 订单商品请求参数
pageNumber: 1,
pageSize: 20,
+ sort: "createTime",
+ order: "desc",
+ },
+ memberParams: {
+ // 会员请求参数
+ pageNumber: 1,
+ pageSize: 20,
+ sort: "createTime",
+ order: "desc",
},
logParams: {
// 日志参数
@@ -398,8 +406,15 @@ export default {
sort: "createTime",
order: "desc",
},
+ groupParams: {
+ // 会员请求参数
+ pageNumber: 1,
+ pageSize: 20,
+ sort: "createTime",
+ order: "desc",
+ },
qrcode: "", // 二维码
- qrcodeH5:"",//H5二维码
+ qrcodeH5: "",//H5二维码
qrcodeShow: false, // 显示二维码
base64Img: "", // base64编码
base64ImgH5: "", // base64H5编码
@@ -427,7 +442,7 @@ export default {
},
withdraw() {
// 申请提现
- distCash({ price: this.withdrawPrice }).then((res) => {
+ distCash({price: this.withdrawPrice}).then((res) => {
this.withdrawApplyModal = false;
this.price = 0;
if (res.success) {
@@ -447,6 +462,15 @@ export default {
// 二维码H5端base64地址
this.base64ImgH5 = data64;
},
+ copyUrlLink(){
+ navigator.clipboard.writeText(this.qrcode)
+ .then(() => {
+ this.$Message.success("复制成功!");
+ })
+ .catch(err => {
+ this.$Message.error("复制失败!");
+ });
+ },
downloadQrcode() {
// 下载二维码
let a = document.createElement("a"); // 生成一个a元素
@@ -455,7 +479,7 @@ export default {
a.href = this.base64Img; // 将生成的URL设置为a.href属性
a.dispatchEvent(event); // 触发a的单击事件
},
- downloadQrcodeH5(){
+ downloadQrcodeH5() {
// 下载H5二维码
let a = document.createElement("a"); // 生成一个a元素
let event = new MouseEvent("click"); // 创建一个单击事件
@@ -465,18 +489,33 @@ export default {
},
tabPaneChange(tab) {
// tab栏切换
- if (tab === "goodsChecked") {
- this.params.checked = true;
- this.params.pageNUmber = 1;
- this.getGoodsData();
- } else if (tab === "goodsUncheck") {
+ if (tab === "goods") {
this.params.checked = false;
this.getGoodsData();
+ }else if (tab === "order") {
+ this.orderParams.checked = false;
+ this.getOrderData();
+ }else if (tab === "member") {
+ this.memberParams.checked = false;
+ this.getMemberData();
} else if (tab === "log") {
this.logParams.pageNumber = 1;
this.getLog();
+ }else if (tab === "group") {
+ this.groupParams.pageNumber = 1;
+ this.getGroupData();
}
},
+ changeOrderPage(val) {
+ // 修改页码
+ this.orderParams.pageNumber = val;
+ this.getOrderData();
+ },
+ changeMemberPage(val) {
+ // 修改页码
+ this.memberParams.pageNumber = val;
+ this.getMemberData();
+ },
changePage(val) {
// 修改页码
this.params.pageNumber = val;
@@ -487,19 +526,6 @@ export default {
this.logParams.pageNumber = val;
this.getLog();
},
- selectGoods(id, checked) {
- // 选择商品
- let params = {
- distributionGoodsId: id,
- checked: checked,
- };
- selectDistGoods(params).then((res) => {
- if (res.success) {
- this.$Message.success("操作成功!");
- this.getGoodsData();
- }
- });
- },
fenxiao(row) {
// 分销商品
this.qrcode = `${this.config.PC_DOMAIN}/goodsDetail?skuId=${row.skuId}&goodsId=${row.goodsId}&distributionId=${this.result.id}`;
@@ -507,6 +533,18 @@ export default {
this.goodsNameCurr = row.goodsName;
this.qrcodeShow = true;
},
+ getOrderData(){
+ // 订单数据
+ getDistOrderList(this.orderParams).then((res) => {
+ if (res.success) this.orderData = res.result;
+ });
+ },
+ getMemberData(){
+ // 订单数据
+ getDistMemberList(this.memberParams).then((res) => {
+ if (res.success) this.memberData = res.result;
+ });
+ },
getGoodsData() {
// 商品数据
getDistGoodsList(this.params).then((res) => {
@@ -519,8 +557,14 @@ export default {
if (res.success) this.logData = res.result;
});
},
+ getGroupData() {
+ // 团队列表
+ getDistGroupList(this.groupParams).then((res) => {
+ if (res.success) this.groupData = res.result;
+ });
+ },
//申诉
- repaying(){
+ repaying() {
applyDistribution().then((res) => {
this.applyLoading = false;
if (res.success) {
@@ -537,14 +581,14 @@ export default {
let type = res.result.distributionStatus;
if (type === "PASS") {
this.status = 2;
- this.getGoodsData();
- } else if ( type === "REFUSE") {
+ this.getOrderData();
+ } else if (type === "REFUSE") {
this.status = 0;
} else if (type === "RETREAT") {
this.status = 4;
- }else if (type === "APPEAL") {
+ } else if (type === "APPEAL") {
this.status = 5;
- }else {
+ } else {
this.status = 1;
}
} else if (!res.data.success && res.data.code === 22000) {
@@ -563,28 +607,35 @@ export default {
.box {
margin: 20px 0;
}
+
.page-size {
margin: 15px 0px;
text-align: right;
}
+
.account-price {
font-weight: bold;
}
+
.subTips {
margin-left: 10px;
}
+
.fontsize_48 {
font-size: 48px;
}
+
.goods-msg {
display: flex;
align-items: center;
padding: 3px;
+
&:hover {
color: $theme_color;
cursor: pointer;
}
}
+
.download-btn {
// position: relative;
// top: -200px;
@@ -592,26 +643,31 @@ export default {
margin-left: 25px;
margin-top: 5px
}
+
/deep/ .ivu-alert-message {
p {
margin: 4px 0;
}
}
-.tips{
- background:#f7f7f7;
+
+.tips {
+ background: #f7f7f7;
padding: 16px;
border-radius: .4em;
- >p{
+
+ > p {
margin: 6px 0;
}
}
-.qrcode{
+
+.qrcode {
display: flex;
justify-content: space-evenly;
padding-top: 10px
}
-.qrcode-platform{
+
+.qrcode-platform {
text-align: center;
font-size: 14px;
margin: 5px;
diff --git a/manager/src/api/distribution.js b/manager/src/api/distribution.js
index 15ab8a91..da3d7f01 100644
--- a/manager/src/api/distribution.js
+++ b/manager/src/api/distribution.js
@@ -53,6 +53,11 @@ export const getDistributionCash = (params) => {
export const auditDistributionCash = (id,params) => {
return postRequest(`/distribution/cash/audit/${id}`, params)
}
-
-
-
+//分销会员列表
+export const getDistributionMember = (id,params) => {
+ return getRequest(`/distribution/distribution/memberList/${id}`, params)
+}
+//查看分销团队列表
+export const getDistributionGroup = (id,params) => {
+ return getRequest(`/distribution/distribution/groupList/${id}`, params)
+}
diff --git a/manager/src/router/router.js b/manager/src/router/router.js
index 89e9b6a7..803414ce 100644
--- a/manager/src/router/router.js
+++ b/manager/src/router/router.js
@@ -276,7 +276,19 @@ export const otherRouter = {
title: "查看直播",
name: "live-detail",
component: () => import("@/views/promotions/live/live-detail.vue")
- }
+ },
+ {
+ path: "group-list",
+ title: "分销团队",
+ name: "group-list",
+ component: () => import("@/views/distribution/distributionGroup.vue")
+ },
+ {
+ path: "distribution-member",
+ title: "分销会员列表",
+ name: "distribution-member",
+ component: () => import("@/views/distribution/distributionMember.vue")
+ },
]
};
diff --git a/manager/src/views/distribution/distribution.vue b/manager/src/views/distribution/distribution.vue
index 62eac804..3f762f12 100644
--- a/manager/src/views/distribution/distribution.vue
+++ b/manager/src/views/distribution/distribution.vue
@@ -90,19 +90,23 @@ export default {
{
title: "会员名称",
key: "memberName",
- minWidth: 120,
+ minWidth: 200,
tooltip: true,
},
{
title: "推广单数",
key: "distributionOrderCount",
- minWidth: 120,
- width: 150,
+ minWidth: 200,
+ },
+ {
+ title: "推广人数",
+ key: "peopleNum",
+ minWidth: 200,
},
{
title: "分销金额",
key: "rebateTotal",
- width: 150,
+ minWidth: 200,
sortable: false,
render: (h, params) => {
return h("priceColorScheme", {props:{value:params.row.rebateTotal,color:this.$mainColor}} );
@@ -110,9 +114,9 @@ export default {
},
{
- title: "可用金额",
+ title: "可提现金额",
key: "canRebate",
- width: 150,
+ minWidth: 200,
sortable: false,
render: (h, params) => {
return h("priceColorScheme", {props:{value:params.row.canRebate,color:'green'}} );
@@ -121,7 +125,7 @@ export default {
{
title: "冻结金额",
key: "commissionFrozen",
- width: 150,
+ minWidth: 200,
sortable: false,
render: (h, params) => {
return h("priceColorScheme", {props:{value:params.row.commissionFrozen,color:'#347dda'}} );
@@ -130,7 +134,7 @@ export default {
{
title: "状态",
key: "distributionStatus",
- width: 150,
+ minWidth: 200,
sortable: false,
render: (h, params) => {
if (params.row.distributionStatus == "PASS") {
@@ -149,7 +153,7 @@ export default {
key: "action",
align: "center",
fixed: "right",
- width: 140,
+ minWidth: 200,
render: (h, params) => {
return h(
"div",
@@ -159,7 +163,42 @@ export default {
justifyContent: "center",
},
},
- [
+ [h(
+ "Button",
+ {
+ props: {
+ type: "success",
+ size: "small",
+ },
+ style: {
+ marginRight: "5px",
+ },
+ on: {
+ click: () => {
+ this.memberList(params.row);
+ },
+ },
+ },
+ "下级用户"
+ ),
+ h(
+ "Button",
+ {
+ props: {
+ type: "info",
+ size: "small",
+ },
+ style: {
+ marginRight: "5px",
+ },
+ on: {
+ click: () => {
+ this.groupList(params.row);
+ },
+ },
+ },
+ "团队列表"
+ ),
h(
"Button",
{
@@ -214,6 +253,14 @@ export default {
};
},
methods: {
+ //团队列表
+ groupList(row){
+ this.$router.push({ name: "group-list", query: { id: row.id } });
+ },
+ memberList(row){
+ this.$router.push({ name: "distribution-member", query: { id: row.id } });
+
+ },
// 初始化数据
init() {
this.getDataList();
diff --git a/manager/src/views/distribution/distributionGoods.vue b/manager/src/views/distribution/distributionGoods.vue
index 53dca285..33d9e5a2 100644
--- a/manager/src/views/distribution/distributionGoods.vue
+++ b/manager/src/views/distribution/distributionGoods.vue
@@ -102,11 +102,6 @@ export default {
},
},
- {
- title: "库存",
- key: "quantity",
- minWidth: 80,
- },
{
title: "添加时间",
key: "createTime",
diff --git a/manager/src/views/distribution/distributionGroup.vue b/manager/src/views/distribution/distributionGroup.vue
new file mode 100644
index 00000000..c82ee906
--- /dev/null
+++ b/manager/src/views/distribution/distributionGroup.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
diff --git a/manager/src/views/distribution/distributionMember.vue b/manager/src/views/distribution/distributionMember.vue
new file mode 100644
index 00000000..8943802c
--- /dev/null
+++ b/manager/src/views/distribution/distributionMember.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
diff --git a/manager/src/views/distribution/distributionOrder.vue b/manager/src/views/distribution/distributionOrder.vue
index 53a372f1..7c63d4b7 100644
--- a/manager/src/views/distribution/distributionOrder.vue
+++ b/manager/src/views/distribution/distributionOrder.vue
@@ -11,7 +11,7 @@
style="width: 200px"
/>
-
+