feat(fsgx): 完成全部24项开发任务 Phase1-7

Phase1 后端核心:
- 新增 fsgx_v1.sql 迁移脚本(is_queue_goods/frozen_points/available_points/no_assess)
- SystemConfigServices 返佣设置扩展(周期人数/分档比例/范围/时机)
- StoreOrderCreateServices 周期循环佣金计算
- StoreOrderTakeServices 佣金发放后同步冻结积分
- StoreProductServices/StoreProduct 保存 is_queue_goods

Phase2 后端接口:
- GET /api/hjf/brokerage/progress 佣金周期进度
- GET /api/hjf/assets/overview 资产总览
- HjfPointsServices 每日 frozen_points 0.4‰ 释放定时任务
- PUT /adminapi/hjf/member/{uid}/no_assess 不考核接口
- GET /adminapi/hjf/points/release_log 积分日志接口

Phase3 前端清理:
- hjfCustom.js 路由精简(仅保留 points/log)
- hjfQueue.js/hjfMember.js API 清理/重定向至 CRMEB 原生接口
- pages.json 公排→推荐佣金/佣金记录/佣金规则

Phase4-5 前端改造:
- queue/status.vue 推荐佣金进度页整体重写
- 商品详情/订单确认/支付结果页文案与逻辑改造
- 个人中心/资产页/引导页/规则页文案改造
- HjfQueueProgress/HjfRefundNotice/HjfAssetCard 组件改造
- 推广中心嵌入佣金进度摘要
- hjfMockData.js 全量更新(公排字段→佣金字段)

Phase6 Admin 增强:
- 用户列表新增 frozen_points/available_points 列及不考核操作按钮
- hjfPoints.js USE_MOCK=false 对接真实积分日志接口

Phase7 配置文档:
- docs/fsgx-phase7-config-checklist.md 后台配置与全链路验收清单

Made-with: Cursor
This commit is contained in:
apple
2026-03-23 22:32:19 +08:00
parent 788ee0c0c0
commit 434aa8c69d
13098 changed files with 2008990 additions and 961 deletions

View File

@@ -0,0 +1,10 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["components/splitOrder/index"],{"067f":function(t,n,s){},"33af":function(t,n,s){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var i={props:{splitGoods:{type:Array,default:function(){return[]}},select_all:{type:Boolean,default:!0}},data:function(){return{isAllSelect:!1}},mounted:function(){},methods:{subCart:function(t){t.surplus_num=Number(t.surplus_num)-1,t.surplus_num<=1&&(t.surplus_num=1),this.$emit("getList",this.splitGoods)},addCart:function(t){t.surplus_num=Number(t.surplus_num)+1,t.surplus_num>=t.numShow&&(t.surplus_num=t.numShow),this.$emit("getList",this.splitGoods)},inArray:function(t,n){for(var s in n)if(n[s]==t)return!0;return!1},checkboxChange:function(t){var n=this,s=t.detail.value;this.splitGoods.forEach((function(t){n.inArray(t.id,s)?t.checked=!0:t.checked=!1})),this.$emit("getList",this.splitGoods),s.length==this.splitGoods.length?this.isAllSelect=!0:this.isAllSelect=!1},forGoods:function(t){this.splitGoods.length&&(this.splitGoods.forEach((function(n){n.checked=!!t})),this.$emit("getList",this.splitGoods))},checkboxAllChange:function(t){var n=t.detail.value;n.length?this.forGoods(1):this.forGoods(0)}}};n.default=i},"551a":function(t,n,s){"use strict";s.r(n);var i=s("88e4"),e=s("a96f");for(var u in e)["default"].indexOf(u)<0&&function(t){s.d(n,t,(function(){return e[t]}))}(u);s("bd39");var o=s("828b"),r=Object(o["a"])(e["default"],i["b"],i["c"],!1,null,null,null,!1,i["a"],void 0);n["default"]=r.exports},"88e4":function(t,n,s){"use strict";s.d(n,"b",(function(){return i})),s.d(n,"c",(function(){return e})),s.d(n,"a",(function(){}));var i=function(){var t=this.$createElement,n=(this._self._c,this.splitGoods.length);this.$mp.data=Object.assign({},{$root:{g0:n}})},e=[]},a96f:function(t,n,s){"use strict";s.r(n);var i=s("33af"),e=s.n(i);for(var u in i)["default"].indexOf(u)<0&&function(t){s.d(n,t,(function(){return i[t]}))}(u);n["default"]=e.a},bd39:function(t,n,s){"use strict";var i=s("067f"),e=s.n(i);e.a}}]);
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
'components/splitOrder/index-create-component',
{
'components/splitOrder/index-create-component':(function(module, exports, __webpack_require__){
__webpack_require__('df3c')['createComponent'](__webpack_require__("551a"))
})
},
[['components/splitOrder/index-create-component']]
]);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<block wx:if="{{$root.g0}}"><view class="splitOrder"><block wx:if="{{select_all}}"><view class="all"><checkbox-group data-event-opts="{{[['change',[['checkboxAllChange',['$event']]]]]}}" bindchange="__e"><checkbox value="all" checked="{{isAllSelect}}"></checkbox><text class="checkAll">全选</text></checkbox-group></view></block><checkbox-group data-event-opts="{{[['change',[['checkboxChange',['$event']]]]]}}" bindchange="__e"><block wx:for="{{splitGoods}}" wx:for-item="item" wx:for-index="index" wx:key="index"><block><view class="items acea-row row-between-wrapper"><checkbox value="{{item.id}}" checked="{{item.checked}}"></checkbox><view class="picTxt acea-row row-between-wrapper"><view class="pictrue"><image src="{{item.cart_info.productInfo.image}}"></image></view><view class="text"><view class="acea-row row-between-wrapper"><view class="name line1">{{item.cart_info.productInfo.store_name}}</view></view><view class="infor line1">{{'属性:'+(item.cart_info.productInfo.attrInfo.suk||'默认')}}</view><view class="acea-row row-middle money-section"> 实付款:<view class="money">{{"¥"+item.cart_info.sum_true_price}}</view></view></view><view class="carnum acea-row row-center-wrapper"><view data-event-opts="{{[['tap',[['subCart',['$0'],[[['splitGoods','',index]]]]]]]}}" class="{{['reduce','iconfont','icon-ic_Reduce',item.surplus_num==1?'on':'']}}" catchtap="__e"></view><view class="num">{{item.surplus_num}}</view><view data-event-opts="{{[['tap',[['addCart',['$0'],[[['splitGoods','',index]]]]]]]}}" class="{{['plus','iconfont','icon-ic_increase',item.surplus_num==item.numShow?'on':'']}}" catchtap="__e"></view></view></view></view></block></block></checkbox-group></view></block>

View File

@@ -0,0 +1 @@
checkbox .wx-checkbox-input.wx-checkbox-input-checked{border:1px solid #2a7efb!important;background-color:#2a7efb!important;color:#fff!important}.splitOrder{width:710rpx;background-color:#fff;border-radius:16rpx;margin:24rpx auto 0 auto;padding:32rpx 26rpx}.splitOrder .all{padding:20rpx 30rpx}.splitOrder .all .checkAll{margin-left:20rpx}.splitOrder .items ~ .items{margin-top:48rpx}.splitOrder .items .picTxt{width:604rpx;position:relative}.splitOrder .items .picTxt .name{width:444rpx}.splitOrder .items .picTxt .pictrue{width:136rpx;height:136rpx}.splitOrder .items .picTxt .pictrue image{width:100%;height:100%;border-radius:16rpx}.splitOrder .items .picTxt .text{width:450rpx;font-size:28rpx;color:#333;font-weight:400}.splitOrder .items .picTxt .text .reColor{color:#999}.splitOrder .items .picTxt .text .reElection{margin-top:20rpx}.splitOrder .items .picTxt .text .reElection .title{font-size:24rpx}.splitOrder .items .picTxt .text .reElection .reBnt{width:120rpx;height:46rpx;border-radius:23rpx;font-size:26rpx}.splitOrder .items .picTxt .text .infor{font-size:22rpx;color:#999;margin-top:12rpx;width:284rpx}.splitOrder .items .picTxt .text .money-section{margin-top:18rpx;font-size:22rpx;color:#999}.splitOrder .items .picTxt .text .money{font-size:36rpx;color:#333;font-family:Regular;color:#ff7d00}.splitOrder .items .picTxt .carnum{height:36rpx;position:absolute;bottom:0;right:0}.splitOrder .items .picTxt .carnum view{width:66rpx;text-align:center;height:100%;line-height:36rpx;font-size:24rpx;color:#333}.splitOrder .items .picTxt .carnum .reduce{border-right:0;border-radius:3rpx 0 0 3rpx}.splitOrder .items .picTxt .carnum .reduce.on{border-color:#e3e3e3;color:#dedede}.splitOrder .items .picTxt .carnum .plus{border-left:0;border-radius:0 3rpx 3rpx 0;font-size:26rpx}.splitOrder .items .picTxt .carnum .plus.on{border-color:#e3e3e3;color:#dedede}.splitOrder .items .picTxt .carnum .num{color:#282828;background:#f5f5f5;width:72rpx}