diff --git a/plugins/team-dividend/src/admin/TeamAgencyController.php b/plugins/team-dividend/src/admin/TeamAgencyController.php
index 16382e3d..3962960f 100644
--- a/plugins/team-dividend/src/admin/TeamAgencyController.php
+++ b/plugins/team-dividend/src/admin/TeamAgencyController.php
@@ -83,12 +83,22 @@ class TeamAgencyController extends BaseController
}
}
$level = TeamDividendLevelModel::getList()->get();
-
-
-
+ // 获取所有经销商的排名信息
+ $rankList = TeamDividendLevelModel::getRanking();
foreach ($list['data'] as $key => $item) {
$list['data'][$key]['total'] = count($item['has_many_member_children']);
+ $list['data'][$key]['rank_list'] = array_filter(array_map(function($rankInfo) use ($item){
+ $rankSort = (string)$rankInfo['up_log'][$item['uid']];
+ if($rankSort === '0' || $rankSort) {
+ return [
+ 'id' => $rankInfo['id'],
+ 'level_name' => $rankInfo['level_name'],
+ 'ranking' => ((int)$rankInfo['up_log'][$item['uid']] + 1),
+ ];
+ }
+ },$rankList));
}
+
return view('Yunshop\TeamDividend::admin.team-agency', [
'list' => $list,
'endtime' => $endtime,
diff --git a/plugins/team-dividend/src/models/TeamDividendLevelModel.php b/plugins/team-dividend/src/models/TeamDividendLevelModel.php
index d1240153..acd6aab7 100644
--- a/plugins/team-dividend/src/models/TeamDividendLevelModel.php
+++ b/plugins/team-dividend/src/models/TeamDividendLevelModel.php
@@ -220,7 +220,35 @@ class TeamDividendLevelModel extends BackendModel
return self::getList()->select($field)->get()->toArray();
}
-
+ public function upLog(){
+ return $this->hasMany(Uplog::class, 'after_level_id', 'id');
+ }
+ /**
+ * Common: 获取所有等级所有经销商排名信息
+ * Author: wu-hui
+ * Time: 2023/10/23 15:45
+ * @return array|false|null
+ */
+ public static function getRanking(){
+ // 获取全部经销商 以此来获取排名信息
+ $upRank = TeamDividendLevelModel::uniacid()
+ ->select(['id','level_name','level_weight'])
+ ->with(['upLog'=>function($query){
+ $query->select(['id','uid','after_level_id','created_at'])
+ ->orderBy('created_at','ASC')
+ ->groupBy('after_level_id')
+ ->groupBy('uid');
+ }])
+ ->get();
+ $allTeamDividend = $upRank->map(function($upItem){
+ return [
+ 'id' => $upItem->id,
+ 'level_name' => $upItem->level_name,
+ 'up_log' => array_flip($upItem->upLog->pluck('uid')->toArray()),
+ ];
+ })->toArray();
+ return array_column($allTeamDividend,null,'id');
+ }
}
\ No newline at end of file
diff --git a/plugins/team-dividend/views/admin/team-agency.blade.php b/plugins/team-dividend/views/admin/team-agency.blade.php
index e8c5b4d0..8ac312c4 100644
--- a/plugins/team-dividend/views/admin/team-agency.blade.php
+++ b/plugins/team-dividend/views/admin/team-agency.blade.php
@@ -112,6 +112,7 @@
成为经销商时间 升级时间 |
经销商 |
等级 |
+ 排名 |
直属总经销商人数 |
经销商比例 累计提成 |
已结算提成 未结算提成 |
@@ -159,7 +160,11 @@
-
+
+ @foreach($item['rank_list'] as $rankItem)
+ {{$rankItem['level_name']}}:{{$rankItem['ranking']}}
+ @endforeach
+ |
{{$item['total'] ?? 0}}人
diff --git a/plugins/weight-value/src/admin/IndexController.php b/plugins/weight-value/src/admin/IndexController.php
index 2e3c00d8..427f1fd8 100644
--- a/plugins/weight-value/src/admin/IndexController.php
+++ b/plugins/weight-value/src/admin/IndexController.php
@@ -3,6 +3,7 @@ namespace Yunshop\WeightValue\admin;
use app\common\components\BaseController;
use app\common\helpers\PaginationHelper;
+use app\common\models\Order;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
use Yunshop\WeightValue\models\WeightValue;
use Yunshop\WeightValue\models\WeightValueLog;
@@ -106,9 +107,7 @@ class IndexController extends BaseController{
public function test(){
// (new WeightValue())->upgradeGiveInit(1,1);
-
-
-
+ // (new WeightValue())->giveInit(Order::find(128));
}
diff --git a/plugins/weight-value/src/admin/widget/WeightValueWidget.php b/plugins/weight-value/src/admin/widget/WeightValueWidget.php
index 19931dce..c13f89db 100644
--- a/plugins/weight-value/src/admin/widget/WeightValueWidget.php
+++ b/plugins/weight-value/src/admin/widget/WeightValueWidget.php
@@ -17,7 +17,6 @@ class WeightValueWidget extends BaseGoodsWidget{
public function getData(){
return GoodsWeightValue::uniacid()
- ->select(['is_open','gift_type','lv_type','quantity','ladder'])
->where('goods_id', $this->goods->id)
->first();
}
diff --git a/plugins/weight-value/src/models/GoodsWeightValue.php b/plugins/weight-value/src/models/GoodsWeightValue.php
index 683ffc72..f2cd6df8 100644
--- a/plugins/weight-value/src/models/GoodsWeightValue.php
+++ b/plugins/weight-value/src/models/GoodsWeightValue.php
@@ -13,21 +13,40 @@ class GoodsWeightValue extends BaseModel{
public static function relationSave($goodsId, $data, $operate,$isTeamDividend = false){
if (!$goodsId) return false;
if (!$data) return false;
+
$info = self::getModel($goodsId, $operate, $isTeamDividend);
// 判断deleted
if ($operate == 'deleted') return $info->delete();
- // 其他
+ // 公共
$info->uniacid = \YunShop::app()->uniacid;
$info->goods_id = $isTeamDividend ? 0 : $goodsId;// 经销商设置true goods_id = 0;否则为goodsId
$info->team_dividend_level_id = $isTeamDividend ? $goodsId : 0;// 经销商设置true team_dividend_level_id = goodsId;否则为0
$info->is_open = $data['is_open'] ?? 0;// 是否开启购买商品赠送权重值:0=未开启,1=开启
+ // 经纪人
$info->gift_type = $data['gift_type'] ?? 0;// 赠送方式:0=赠送固定值,1=阶梯值赠送
$info->lv_type = $data['lv_type'] ?? 0;// 赠送方式:0=二级,1=三级
+ $info->calculation_type = $data['calculation_type'] ?? 0;// 计算类型:0=固定值,1=支付比例
$info->quantity = $data['quantity'] ?? 0;// 固定值赠送数量
foreach($data['ladder'] as $ladderIndex => $ladderItem){
if((float)$ladderItem['where'] <= 0 || (float)$ladderItem['num'] <= 0) unset($data['ladder'][$ladderIndex]);
}
$info->ladder = json_encode($data['ladder'] ?? []);// 阶梯赠送信息
+ // 代理商
+ $info->agent_gift_type = $data['agent_gift_type'] ?? 0;// 赠送方式:0=赠送固定值,1=阶梯值赠送
+ $info->agent_calculation_type = $data['agent_calculation_type'] ?? 0;// 计算类型:0=固定值,1=支付比例
+ $info->agent_quantity = $data['agent_quantity'] ?? 0;// 固定值赠送数量
+ foreach($data['agent_ladder'] as $ladderIndex => $ladderItem){
+ if((float)$ladderItem['where'] <= 0 || (float)$ladderItem['num'] <= 0) unset($data['agent_ladder'][$ladderIndex]);
+ }
+ $info->agent_ladder = json_encode($data['agent_ladder'] ?? []);// 阶梯赠送信息
+ // 省公司
+ $info->province_gift_type = $data['province_gift_type'] ?? 0;// 赠送方式:0=赠送固定值,1=阶梯值赠送
+ $info->province_calculation_type = $data['province_calculation_type'] ?? 0;// 计算类型:0=固定值,1=支付比例
+ $info->province_quantity = $data['province_quantity'] ?? 0;// 固定值赠送数量
+ foreach($data['province_ladder'] as $ladderIndex => $ladderItem){
+ if((float)$ladderItem['where'] <= 0 || (float)$ladderItem['num'] <= 0) unset($data['province_ladder'][$ladderIndex]);
+ }
+ $info->province_ladder = json_encode($data['province_ladder'] ?? []);// 阶梯赠送信息
return $info->save();
}
diff --git a/plugins/weight-value/src/models/WeightValue.php b/plugins/weight-value/src/models/WeightValue.php
index 0c63e1c5..f65c9bba 100644
--- a/plugins/weight-value/src/models/WeightValue.php
+++ b/plugins/weight-value/src/models/WeightValue.php
@@ -13,6 +13,7 @@ use Yunshop\ShareholderDividend\models\ShareholderDividendModel;
use Yunshop\TeamDividend\models\TeamDividendAgencyModel;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
use Yunshop\TeamDividend\models\TeamDividendModel;
+use Yunshop\TeamDividend\models\Uplog;
class WeightValue extends BaseModel{
@@ -39,17 +40,19 @@ class WeightValue extends BaseModel{
// 循环处理每个商品
$changeRecord = [];// 变更记录
foreach($goodsList as $goodsInfo){
- // 由于涉及到删除 使用的经销商列表重新赋值给新的变量 方便操作
- $useAgentList = $agents;
- // 判断:赠送等级为二级时,删除第三个用户 赠送等级:0=二级,1=三级
- if($goodsInfo['lv_type'] == 1 && count($useAgentList) >= 3) unset($useAgentList[2]);
+ $useAgentList = [];
+ $mergeAgentList = array_merge($agents['parents'],$agents['agents']);// 默认上级信息
+ // 判断:是否开启自购
+ if((int)$goodsInfo['is_self_purchase'] == 1) $mergeAgentList = array_merge($agents['current_user'],$agents['parents'],$agents['agents']);
+ foreach($mergeAgentList as $useAgentItem){
+ $useAgentList[$useAgentItem['uid']] = $useAgentItem;
+ }
// 循环上级信息 处理每一个用户、每一个商品的赠送情况
foreach($useAgentList as $agentKey => $agentInfo){
// 用户当前的权重值
$currentAgentHasWeightValue = (float)$agents[$agentKey]['weight_value']['quantity'] ?? 0;
// 符合条件 获取当前用户应得的权重值
- $weightValue = $this->getWeightValue($goodsInfo,$agentInfo);// 应得权重值
- $totalWeightValue = (float)sprintf("%.2f",$goodsInfo['total'] * $weightValue);// 总数量 * 应得权重值 = 总应得权重值
+ $totalWeightValue = $this->getWeightValue($goodsInfo,$agentInfo);// 应得权重值
// 应得权重值大于0 记录改变信息并且修改持有权重值
if((float)$totalWeightValue > 0){
$changeAfter = sprintf("%.2f",($currentAgentHasWeightValue + $totalWeightValue));
@@ -80,6 +83,7 @@ class WeightValue extends BaseModel{
DB::commit();
}catch(\Exception $e){
+
\Log::debug('------购买商品赠送权重值 - 错误抛出------',$e->getMessage());
DB::rollBack();
}
@@ -103,11 +107,22 @@ class WeightValue extends BaseModel{
'yz_order_goods.goods_id',
'yz_order_goods.total',
'yz_order_goods.title',
+ 'yz_order_goods.payment_amount',
'yz_goods_weight_value.is_open',
+ 'yz_goods_weight_value.is_self_purchase',
'yz_goods_weight_value.gift_type',
'yz_goods_weight_value.lv_type',
+ 'yz_goods_weight_value.calculation_type',
'yz_goods_weight_value.quantity',
- 'yz_goods_weight_value.ladder'
+ 'yz_goods_weight_value.ladder',
+ 'yz_goods_weight_value.agent_gift_type',
+ 'yz_goods_weight_value.agent_calculation_type',
+ 'yz_goods_weight_value.agent_quantity',
+ 'yz_goods_weight_value.agent_ladder',
+ 'yz_goods_weight_value.province_gift_type',
+ 'yz_goods_weight_value.province_calculation_type',
+ 'yz_goods_weight_value.province_quantity',
+ 'yz_goods_weight_value.province_ladder',
])
->get()
->makeHidden(['order','after_sales','buttons']);
@@ -115,10 +130,10 @@ class WeightValue extends BaseModel{
return $list ? $list->toArray() : [];
}
/**
- * Common: 购买商品赠送权重值 - 获取上级信息
+ * Common: 赠送权重值 - 获取上级信息
* Author: wu-hui
- * Time: 2023/10/12 11:06
- * @param $uid
+ * Time: 2023/10/23 14:51
+ * @param $uid
* @return array
*/
private function getParent($uid){
@@ -127,7 +142,6 @@ class WeightValue extends BaseModel{
->where('member_id', $uid)
->select(['parent_id','level'])
->orderBy('level', 'asc')
- ->limit(2)// 由于最多只分三层,这里只获取直推上级及其上级
->get()
->toArray();
// 包含购买人
@@ -135,7 +149,13 @@ class WeightValue extends BaseModel{
$uidS = array_column($parents,'parent_id');
// 获取经销商信息
$teamDividend = TeamDividendAgencyModel::uniacid()
- ->select(['uid','level','is_black'])
+ ->join('yz_team_dividend_level', 'yz_team_dividend_level.id', '=', 'yz_team_dividend_agency.level')
+ ->select([
+ 'yz_team_dividend_agency.uid',
+ 'yz_team_dividend_agency.level',
+ 'yz_team_dividend_agency.is_black',
+ 'yz_team_dividend_level.identity_type',
+ ])
->whereIn('uid',$uidS)
->get();
$teamDividend = $teamDividend ? $teamDividend->keyBy('uid')->toArray() : [];
@@ -150,63 +170,108 @@ class WeightValue extends BaseModel{
$weightValueGroup[$weightValueItem['member_id']][$weightValueItem['team_dividend_agency_level_id']] = $weightValueItem;
}
// 获取全部经销商 以此来获取排名信息
- $allTeamDividend = TeamDividendAgencyModel::uniacid()->pluck('uid')->toArray();
- $allTeamDividend = array_flip($allTeamDividend);
+ $allTeamDividend = TeamDividendLevelModel::getRanking();
$agents = [];
foreach($parents as $memberInfo){
$teamDividendInfo = $teamDividend[$memberInfo['parent_id']] ?? [];
- // 判断:仅经销商 且 不是黑名单的用户才会赠送
- $isBlack = (int)$teamDividendInfo['is_black'] ?? 0;// 是否为黑名单
- if($teamDividendInfo && $isBlack != 1) {
- $teamDividendInfo['ranking'] = ((int)$allTeamDividend[$memberInfo['parent_id']] + 1);
+ if($teamDividendInfo) {
+ $currentRank = $allTeamDividend[(int)$teamDividendInfo['level']]['up_log'] ?? [];
+ $teamDividendInfo['ranking'] = ($currentRank[$memberInfo['parent_id']] + 1);
$weightValue = $weightValueGroup[$memberInfo['parent_id']][(int)$teamDividendInfo['level']] ?? [
'uniacid' => \YunShop::app()->uniacid,
'member_id' => $memberInfo['parent_id'],
'team_dividend_agency_level_id' => (int)$teamDividendInfo['level'],
'quantity' => 0,
];
- $agents[] = [
+ $agents[$memberInfo['parent_id']] = [
'uid' => $memberInfo['parent_id'],
'level' => $memberInfo['level'],
+ 'is_black' => (int)$teamDividendInfo['is_black'] ?? 0,// 是否为黑名单
'team_dividend_agency_level_id' => (int)$teamDividendInfo['level'],
+ 'identity_type' => (int)$teamDividendInfo['identity_type'],
'weight_value' => $weightValue,
'teamDividend' => $teamDividendInfo
];
}
}
+ // 处理上级列表 取前二
+ $parentList = $agents;
+ // unset($parentList[$uid]);
+ $sort = array_column($parentList,'level');
+ array_multisort($parentList,SORT_ASC,$sort);
+ array_column($parentList,null,'uid');
+ $parentList = array_splice($parentList,0,2);
+ // 获取代理商信息 这里只取第一个代理商
+ $agentInfo = collect($agents)
+ ->where('identity_type',2)
+ ->where('uid','!=',$uid)
+ ->first();
- return $agents;
+ return [
+ // 当前用户
+ 'current_user' => [$uid => $agents[$uid]],
+ // 上级列表
+ 'parents' => array_column($parentList,null,'uid'),
+ // 代理商
+ 'agents' => [$agentInfo['uid'] => $agentInfo],
+ ];
}
/**
* Common: 购买商品赠送权重值 - 获取应得权重值
* Author: wu-hui
- * Time: 2023/10/12 14:03
+ * Time: 2023/10/23 15:28
* @param $currentSale
* @param $agentInfo
- * @return float|int
+ * @return float
*/
private function getWeightValue($currentSale,$agentInfo){
- if((int)$currentSale['gift_type'] == 0){
- // 赠送固定值
- return $currentSale['quantity'];
- }else if($agentInfo['teamDividend']){
- // 阶梯赠送 阶梯判断条件必须按照从大到小排序
- $ladderList = json_decode($currentSale['ladder'],true);
- array_multisort(array_column($ladderList,'where'),SORT_ASC, $ladderList);
- $ranking = (int)$agentInfo['teamDividend']['ranking'];
- $weightValueNum = 0;
- foreach($ladderList as $ladder){
- if($ranking <= $ladder['where'] && $ranking > 0){
- $weightValueNum = (float)$ladder['num'];
- break;
- }
- }
-
- return $weightValueNum;
- }else {
- return (float)0;
+ $deservedValue = 0;// 应得权重值(固定值||比例)
+ $calculationType = 0;// 计算类型:0=固定值,1=支付比例
+ // 获取应得值 特殊身份:0=无特殊身份,1=经纪人,2=代理商,3=省级代理
+ switch($agentInfo['identity_type']){
+ // 经纪人处理
+ case 1:
+ $calculationType = (int)$currentSale['calculation_type'];
+ if((int)$currentSale['gift_type'] == 0) $deservedValue = $currentSale['quantity'];// 赠送固定值
+ else if($agentInfo['teamDividend']) $deservedValue = $this->getRankGive($currentSale['ladder'],(int)$agentInfo['teamDividend']['ranking']);// 阶梯赠送
+ else $deservedValue = (float)0;
+ break;
+ // 代理商处理
+ case 2:
+ $calculationType = (int)$currentSale['agent_calculation_type'];
+ if((int)$currentSale['agent_gift_type'] == 0) $deservedValue = $currentSale['agent_quantity'];
+ else if($agentInfo['teamDividend']) $deservedValue = $this->getRankGive($currentSale['agent_ladder'],(int)$agentInfo['teamDividend']['ranking']);
+ else $deservedValue = (float)0;
+ break;
}
+ // 判断:是固定值还是比例,固定金额需要乘以商品购买数量,比例根据商品实际支付价格的比例
+ if((int)$calculationType == 1) return (float)sprintf("%.2f",$currentSale['payment_amount'] * $deservedValue / 100);// 实际支付金额的比例
+ else return (float)sprintf("%.2f",$currentSale['total'] * $deservedValue);// 总数量 * 应得权重值 = 总应得权重值
}
+ /**
+ * Common: 获取排名奖
+ * Author: wu-hui
+ * Time: 2023/10/23 15:18
+ * @param $ladder
+ * @param $ranking
+ * @return float
+ */
+ private function getRankGive($ladder,$ranking){
+ $ladderList = json_decode($ladder,true);
+ array_multisort(array_column($ladderList,'where'),SORT_ASC, $ladderList);
+ $weightValueNum = 0;
+ foreach($ladderList as $ladder){
+ if($ranking <= $ladder['where'] && $ranking > 0){
+ $weightValueNum = (float)$ladder['num'];
+ break;
+ }
+ }
+
+ return (float)$weightValueNum;
+ }
+
+
+
/**
* Common: 经销商升级赠送权重值 - 开始处理
* Author: wu-hui
@@ -216,8 +281,11 @@ class WeightValue extends BaseModel{
*/
public function upgradeGiveInit($uid,$levelId){
\Log::debug('------经销商升级赠送权重值 - 开始处理------',['uid'=>$uid,'level_id'=>$levelId]);
- $parents = $this->getParent($uid);// 获取当前用户及上级信息
- $levelWvSet = $this->getLevelWeightValue($levelId);// 等级赠送设置信息
+ // 获取当前用户及上级信息
+ $agents = $this->getParent($uid);
+ $parents = array_merge($agents['current_user'],$agents['parents']);
+ // 等级赠送设置信息
+ $levelWvSet = $this->getLevelWeightValue($levelId);
if(!$levelWvSet){
\Log::debug('------经销商升级赠送权重值 - 错误 - 当前等级不存在设置信息------',$levelId);
return;
@@ -243,7 +311,7 @@ class WeightValue extends BaseModel{
// 用户当前持有的权重值
$currentAgentHasWeightValue = (float)$parents[$agentKey]['weight_value']['quantity'] ?? 0;
// 获取当前用户应得的权重值
- $weightValue = (float)sprintf("%.2f",$this->getWeightValue($levelWvSet,$agentInfo));
+ $weightValue = (float)sprintf("%.2f",$this->getGiveWeightValue($levelWvSet,$agentInfo));
// 应得权重值大于0 记录改变信息并且修改持有权重值
if((float)$weightValue > 0){
$changeAfter = sprintf("%.2f",($currentAgentHasWeightValue + $weightValue));
@@ -286,6 +354,30 @@ class WeightValue extends BaseModel{
return $first ? $first->toArray() : [];
}
+ /**
+ * Common: 经销商升级赠送权重值 - 获取应得权重值
+ * Author: wu-hui
+ * Time: 2023/10/23 15:10
+ * @param $currentSale
+ * @param $agentInfo
+ * @return float|int
+ */
+ private function getGiveWeightValue($currentSale,$agentInfo){
+ if((int)$currentSale['gift_type'] == 0){
+ // 赠送固定值
+ return (float)$currentSale['quantity'];
+ }else if($agentInfo['teamDividend']){
+ // 阶梯赠送 阶梯判断条件必须按照从大到小排序
+ return (float)$this->getRankGive($currentSale['ladder'],(int)$agentInfo['teamDividend']['ranking']);
+ }else {
+ return (float)0;
+ }
+ }
+
+
+
+
+
/**
diff --git a/plugins/weight-value/views/widget/marketing/weight_value.js b/plugins/weight-value/views/widget/marketing/weight_value.js
index bd7e799f..d42f6016 100644
--- a/plugins/weight-value/views/widget/marketing/weight_value.js
+++ b/plugins/weight-value/views/widget/marketing/weight_value.js
@@ -3,17 +3,25 @@ define({
template:`
-
关闭
开启
仅存在经销商身份的用户可以获得权重值
+ 代理商:仅距离最近的第一个代理商有奖励
-
+
+
+
+ 不开启
+ 开启
+ 开启:当前用户购买后根据当前用户的经销商等级进行赠送
+
+
+
普通赠送
阶梯赠送
@@ -23,36 +31,125 @@ define({
二级
三级
- 二级:赠送购买人、购买人上级
- 三级:赠送购买人、购买人上级、购买人上级的上级
+ 二级:赠送购买人上级
+ 三级:赠送购买人上级、购买人上级的上级
+
+
+ 固定值
+ 支付比例
+ 固定值:指定数量,支付比例:当前商品实际支付的比例
-
- 权重值
+
+ {{ json.calculation_type == 0 ? '权重值' : '%' }}
+
+ 如果设置为空或者0则不赠送权重值
+
+
+
+
+
+
+ 小于等于
+ 名
+
+
+ 赠送
+ {{ json.calculation_type == 0 ? '权重值' : '%' }}
+
+ 删除
+
+
+ 增加阶梯
+ 例如:设置小于等于10赠送100权重值;小于等于32赠送120权重值。则第1~10位经销商赠送100权重值,第11~32位经销商赠送120权重值,第33位及之后所有经销商均不赠送权重值
+
+
+
+
+
+
+ 普通赠送
+ 阶梯赠送
+ 普通赠送:赠送指定的权重值
+ 阶梯赠送:根据用户成为经销商的时间顺序排序,获取对应的权重值;超过最大名次则不赠送权重值
+
+
+ 固定值
+ 支付比例
+ 固定值:指定数量,支付比例:当前商品实际支付的比例
+
+
+
+ {{ json.agent_calculation_type == 0 ? '权重值' : '%' }}
+
+ 如果设置为空或者0则不赠送权重值
+
+
+
+
+
+
+ 小于等于
+ 名
+
+
+ 赠送
+ {{ json.agent_calculation_type == 0 ? '权重值' : '%' }}
+
+ 删除
+
+
+ 增加阶梯
+ 例如:设置小于等于10赠送100权重值;小于等于32赠送120权重值。则第1~10位经销商赠送100权重值,第11~32位经销商赠送120权重值,第33位及之后所有经销商均不赠送权重值
+
+
+
+
+
+
+ 普通赠送
+ 阶梯赠送
+ 普通赠送:赠送指定的权重值
+ 阶梯赠送:根据用户成为经销商的时间顺序排序,获取对应的权重值;超过最大名次则不赠送权重值
+
+
+ 固定值
+ 支付比例
+ 固定值:指定数量,支付比例:当前商品实际支付的比例
+
+
+
+ {{ json.province_calculation_type == 0 ? '权重值' : '%' }}
如果设置为空或者0则不赠送权重值
-
+
-
+
小于等于
名
-
+
赠送
- 权重值
+ {{ json.province_calculation_type == 0 ? '权重值' : '%' }}
- 删除
+ 删除
- 增加阶梯
+ 增加阶梯
例如:设置小于等于10赠送100权重值;小于等于32赠送120权重值。则第1~10位经销商赠送100权重值,第11~32位经销商赠送120权重值,第33位及之后所有经销商均不赠送权重值
-
-
+
+
`,
@@ -78,39 +175,123 @@ define({
return {
json: {
is_open: 0,// 是否开启购买商品赠送权重值:0=未开启,1=开启
+ is_self_purchase: 0,// 是否开启自购:0=不开启,1=开启
gift_type: 0,// 赠送方式:0=赠送固定值,1=阶梯值赠送
lv_type: 0,// 赠送方式:0=二级,1=三级
+ calculation_type: 0,// 计算类型:0=固定值,1=支付比例
quantity: 0,// 赠送数量
ladder: {},// 阶梯赠送信息
+ agent_gift_type: 0,// 赠送方式:0=赠送固定值,1=阶梯值赠送
+ agent_calculation_type: 0,// 计算类型:0=固定值,1=支付比例
+ agent_quantity: 0,// 赠送数量
+ agent_ladder: {},// 阶梯赠送信息
+ province_gift_type: 0,// 赠送方式:0=赠送固定值,1=阶梯值赠送
+ province_calculation_type: 0,// 计算类型:0=固定值,1=支付比例
+ province_quantity: 0,// 赠送数量
+ province_ladder: {},// 阶梯赠送信息
}
}
},
watch: { },
mounted() {
- console.log(this.form);
if (this.form) {
let weight_value = this.form || {};
+ console.log('商品权重值设置信息');
+ console.log(weight_value);
this.json.is_open = weight_value.is_open ? weight_value.is_open : 0;
+ this.json.is_self_purchase = weight_value.is_self_purchase ? weight_value.is_self_purchase : 0;
this.json.gift_type = weight_value.gift_type ? weight_value.gift_type : 0;
this.json.lv_type = weight_value.lv_type ? weight_value.lv_type : 0;
+ this.json.calculation_type = weight_value.calculation_type ? weight_value.calculation_type : 0;
this.json.quantity = weight_value.quantity ? weight_value.quantity : 0;
this.json.ladder = weight_value.ladder ? JSON.parse(weight_value.ladder) : {};
- }
- console.log(this.json);
+ this.json.agent_gift_type = weight_value.agent_gift_type ? weight_value.agent_gift_type : 0;
+ this.json.agent_calculation_type = weight_value.agent_calculation_type ? weight_value.agent_calculation_type : 0;
+ this.json.agent_quantity = weight_value.agent_quantity ? weight_value.agent_quantity : 0;
+ this.json.agent_ladder = weight_value.agent_ladder ? JSON.parse(weight_value.agent_ladder) : {};
+
+ this.json.province_gift_type = weight_value.province_gift_type ? weight_value.province_gift_type : 0;
+ this.json.province_calculation_type = weight_value.province_calculation_type ? weight_value.province_calculation_type : 0;
+ this.json.province_quantity = weight_value.province_quantity ? weight_value.province_quantity : 0;
+ this.json.province_ladder = weight_value.province_ladder ? JSON.parse(weight_value.province_ladder) : {};
+ }
},
methods:{
- addLadder(){
- this.json.ladder = Object.values(this.json.ladder).concat({where: '', num: ''});
+ addLadder(type = ''){
+ if(type === 'agent') this.json.agent_ladder = Object.values(this.json.agent_ladder).concat({where: '', num: ''});
+ else if(type === 'province') this.json.province_ladder = Object.values(this.json.province_ladder).concat({where: '', num: ''});
+ else this.json.ladder = Object.values(this.json.ladder).concat({where: '', num: ''});
},
- delLadder(index){
- let ladder = Object.assign({},this.json.ladder);
+ delLadder(index,type = ''){
+ let ladder = {};
+ if(type === 'agent') ladder = Object.assign({},this.json.agent_ladder);
+ else if(type === 'province') ladder = Object.assign({},this.json.province_ladder);
+ else ladder = Object.assign({},this.json.ladder);
+
delete ladder[index];
- this.json.ladder = Object.values(ladder);
+ if(type === 'agent') this.json.agent_ladder = Object.values(ladder);
+ else if(type === 'province') this.json.province_ladder = Object.values(ladder);
+ else this.json.ladder = Object.values(ladder);
},
validate(){
+ let json = this.json;
+ // console.log("权重值信息处理 - validate:");
+ // console.log(json);
+ if(parseInt(json.calculation_type) === 1){
+ if(json.gift_type == 1){
+ let isPass = false;
+ Object.values(json.ladder).forEach((item,index)=>{
+ if(item.num <= 0 || item.num > 100) isPass = true;
+ });
+ if(isPass) {
+ this.$message.error('经纪人设置-赠送数量比例不能小于等于0或者大于100')
+ return false
+ }
+ }else{
+ if(json.quantity <= 0 || json.quantity > 100){
+ this.$message.error('经纪人设置-赠送数量比例不能小于等于0或者大于100')
+ return false
+ }
+ }
+ }
+ if(parseInt(json.agent_calculation_type) === 1){
+ if(json.agent_gift_type == 1){
+ let isPass = false;
+ Object.values(json.agent_ladder).forEach((item,index)=>{
+ if(item.num <= 0 || item.num > 100) isPass = true;
+ });
+ if(isPass) {
+ this.$message.error('代理商设置-赠送数量比例不能小于等于0或者大于100')
+ return false
+ }
+ }else{
+ if(json.agent_quantity <= 0 || json.agent_quantity > 100){
+ this.$message.error('代理商设置-赠送数量比例不能小于等于0或者大于100')
+ return false
+ }
+ }
+ }
+ if(parseInt(json.province_calculation_type) === 1){
+ if(json.province_gift_type == 1){
+ let isPass = false;
+ Object.values(json.province_ladder).forEach((item,index)=>{
+ if(item.num <= 0 || item.num > 100) isPass = true;
+ });
+ if(isPass) {
+ this.$message.error('省公司设置-赠送数量比例不能小于等于0或者大于100')
+ return false
+ }
+ }else{
+ if(json.province_quantity <= 0 || json.province_quantity > 100){
+ this.$message.error('省公司设置-赠送数量比例不能小于等于0或者大于100')
+ return false
+ }
+ }
+ }
+
return this.json;
}
}
|