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:
@@ -0,0 +1,10 @@
|
||||
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["components/timeranges/index"],{"2a68":function(t,e,i){"use strict";i.r(e);var u=i("6bf1"),n=i("d747");for(var a in n)["default"].indexOf(a)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(a);i("cbb4");var s=i("828b"),l=Object(s["a"])(n["default"],u["b"],u["c"],!1,null,null,null,!1,u["a"],void 0);e["default"]=l.exports},"6bf1":function(t,e,i){"use strict";i.d(e,"b",(function(){return u})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var u=function(){var t=this.$createElement;this._self._c},n=[]},"8f531":function(t,e,i){},c4e2:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;for(var u=[],n=0;n<=59;n++)n<10&&(n="0"+n),u.push(n);for(var a=[],s=0;s<=23;s++)s<10&&(s="0"+s),a.push(s);var l={props:{isShow:{type:Boolean,default:!1},time:{type:Array,default:function(){return[]}}},watch:{time:function(){this.value=this.time}},created:function(){},data:function(){return{value:this.time,hoursList:a,minutes:u}},methods:{confirm:function(){var t=this.value[0]+":"+this.value[1]+" - "+this.value[3]+":"+this.value[4];if(!(this.value[3]>this.value[0]||this.value[3]==this.value[0]&&this.value[4]>=this.value[1]))return this.$util.Tips({title:"开始时间必须小于结束时间"});this.$emit("confrim",{time:t,val:this.value})},cancel:function(){var t=this.value[0]+":"+this.value[1]+" - "+this.value[3]+":"+this.value[4];this.$emit("cancel",{time:t})},getime:function(t){var e=t.detail.value;this.value[0]=this.hoursList[e[0]],this.value[1]=this.minutes[e[1]],this.value[2]=e[2],this.value[3]=this.hoursList[e[3]],this.value[4]=this.minutes[e[4]]}}};e.default=l},cbb4:function(t,e,i){"use strict";var u=i("8f531"),n=i.n(u);n.a},d747:function(t,e,i){"use strict";i.r(e);var u=i("c4e2"),n=i.n(u);for(var a in u)["default"].indexOf(a)<0&&function(t){i.d(e,t,(function(){return u[t]}))}(a);e["default"]=n.a}}]);
|
||||
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
|
||||
'components/timeranges/index-create-component',
|
||||
{
|
||||
'components/timeranges/index-create-component':(function(module, exports, __webpack_require__){
|
||||
__webpack_require__('df3c')['createComponent'](__webpack_require__("2a68"))
|
||||
})
|
||||
},
|
||||
[['components/timeranges/index-create-component']]
|
||||
]);
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view><view class="{{['time1',isShow==true?'on':'']}}"><view class="top acea-row row-between-wrapper"><text data-event-opts="{{[['tap',[['cancel',['$event']]]]]}}" bindtap="__e">取消</text><text data-event-opts="{{[['tap',[['confirm',['$event']]]]]}}" bindtap="__e">确定</text></view><picker-view class="picker" value="{{value}}" indicator-style="height:34px;" data-event-opts="{{[['change',[['getime',['$event']]]]]}}" bindchange="__e"><picker-view-column><block wx:for="{{hoursList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="hours">{{item}}</view></block></picker-view-column><picker-view-column><block wx:for="{{minutes}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="minutes">{{item}}</view></block></picker-view-column><picker-view-column><view class="center">-</view></picker-view-column><picker-view-column><block wx:for="{{hoursList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="hours">{{item}}</view></block></picker-view-column><picker-view-column><block wx:for="{{minutes}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="minutes">{{item}}</view></block></picker-view-column></picker-view></view><view class="mask" catchtouchmove="true" hidden="{{isShow==false}}" data-event-opts="{{[['tap',[['cancel',['$event']]]]]}}" bindtap="__e"></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.time1{width:100%;margin:0 auto;background-color:#fff;color:#000;height:568rpx;position:fixed;bottom:0;z-index:99;-webkit-transform:translate3d(0,200%,0);transform:translate3d(0,200%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9)}.time1.on{-webkit-transform:translateZ(0);transform:translateZ(0)}.time1 .top{height:90rpx;border-bottom:1px solid #eee;padding:0 30rpx}.time1 .top text{font-size:32rpx}.time1 .top text:nth-child(1){color:#888}.time1 .top text:nth-child(2){color:#007aff}.time1 .tip12{width:100%;height:100rpx}.time1 .tip12 view{width:50%;text-align:center;line-height:100rpx;font-size:40rpx;color:#000}.time1 .hours{font-size:32rpx;color:#000;line-height:34px;text-align:center}.time1 .minutes{font-size:32rpx;color:#000;line-height:34px;text-align:center}.time1 .center{line-height:34px;text-align:center}.picker{width:100%;height:476rpx}
|
||||
Reference in New Issue
Block a user