diff --git a/pages/personCenter/commissionSetting/commissionSetting.js b/pages/personCenter/commissionSetting/commissionSetting.js index 8673ae4..6bab692 100644 --- a/pages/personCenter/commissionSetting/commissionSetting.js +++ b/pages/personCenter/commissionSetting/commissionSetting.js @@ -8,10 +8,15 @@ Page({ */ data: { projectList: [], // 项目列表 - items_1: [null, null, null], - items: [null, null], + projectId: 0, // 项目ID + maxCommissionRate: 0, // 最大抽佣比率 showPopup: false, // 控制弹窗显隐 + LodingHidden: true, // 控制加载框取消 showCommissionRatePop: false, + nowMyUnitPrice: 0, // 现在的‘我的单价’,用于传给弹窗 + nowCommissionRate: 0, // 现在的'抽成比例', 用于传给弹窗 + nowAgentUnitPrice: 0, // 现在的‘代理单价’,用于传给弹窗 + nowProjectDetailName: '', // 现在的‘项目详细名称’,用于传给弹窗 }, // 获取项目列表 @@ -76,7 +81,17 @@ Page({ }, // 点击“设价”按钮,显示弹窗 - showCommissionRatePop() { + showCommissionRatePop(e) { + console.log('弹窗传值----->',e); + this.setData({ + nowCommissionRate: e.currentTarget.dataset.currentcommissionrate, + nowMyUnitPrice: e.currentTarget.dataset.nowmyunitprice, + nowAgentUnitPrice: e.currentTarget.dataset.agentunitprice, + nowProjectDetailName: e.currentTarget.dataset.projectdetailname, + projectId: e.currentTarget.dataset.detailid, + maxCommissionRate: e.currentTarget.dataset.maxcommissionrate, + }) + this.setData({ showCommissionRatePop: true }); }, @@ -87,8 +102,7 @@ Page({ // 确认按钮回调 handleCommissionRateConfirm(e) { - const { agentPrice, commissionRate, pricingMethod } = e.detail; - console.log('设置数据:', agentPrice, commissionRate, pricingMethod); + this.getProjectList() this.closeCommissionRatePop(); }, diff --git a/pages/personCenter/commissionSetting/commissionSetting.wxml b/pages/personCenter/commissionSetting/commissionSetting.wxml index 15343f6..65f750e 100644 --- a/pages/personCenter/commissionSetting/commissionSetting.wxml +++ b/pages/personCenter/commissionSetting/commissionSetting.wxml @@ -54,7 +54,7 @@ > {{ CommissionList.projectDetailName }} {{ CommissionList.myUnitPrice }}/{{ CommissionList.agentUnitPrice }}/{{ CommissionList.currentCommissionRate }}% - + + \ No newline at end of file + pgencyPrice="{{ nowAgentUnitPrice }}" + commissionRate="{{ nowCommissionRate }}" + myUnitPrice="{{ nowMyUnitPrice }}" + projectDetailName="{{ nowProjectDetailName }}" + detailId="{{ projectId }}" + maxCommissionRate="{{ maxCommissionRate }}" +/> diff --git a/pages/personCenter/commissionSetting/commissionSetting.wxss b/pages/personCenter/commissionSetting/commissionSetting.wxss index 74ac4ec..a58ad31 100644 --- a/pages/personCenter/commissionSetting/commissionSetting.wxss +++ b/pages/personCenter/commissionSetting/commissionSetting.wxss @@ -172,4 +172,4 @@ } .text_8 { margin-left: -75.75rpx; -} \ No newline at end of file +} diff --git a/pages/personCenter/component/commissionRatePop/commissionRatePop.js b/pages/personCenter/component/commissionRatePop/commissionRatePop.js index c57cac2..fb29376 100644 --- a/pages/personCenter/component/commissionRatePop/commissionRatePop.js +++ b/pages/personCenter/component/commissionRatePop/commissionRatePop.js @@ -1,4 +1,11 @@ +import { baseUrl } from "../../../../request"; Component({ + + data: { + pgencyPriceAble: true, // 代理单价input启用/禁用 + commissionRateAble: true, // 抽成比例input启用/禁用 + LodingHidden: false, // 遮罩禁用启用 + }, /** * 组件的属性列表 */ @@ -7,18 +14,30 @@ Component({ type: Boolean, value: false }, - pgencyPrice: 0, // 代理价 - commissionRate: 0, // 抽成比例 - }, - - /** - * 处理输入框的变化 - */ - handleInputChange(e) { - const { field } = e.target.dataset; // 获取字段名 - this.setData({ - [field]: e.detail.value, // 动态更新输入框数据 - }); + pgencyPrice: { // 代理单价 + type: String, + value: 0 + }, + commissionRate: { // 抽成比例 + type: String, + value: 0 + }, + myUnitPrice: { // 我的单价 + type: Number, + value: 0 + }, + projectDetailName: { // 项目详细名称 + type: String, + value: '' + }, + detailId: { // 下级项目明细id + type: Number, + value: 0 + }, + maxCommissionRate: { // 最大抽佣比例 + type: Number, + value: 0 + } }, /** @@ -26,15 +45,116 @@ Component({ */ methods: { close() { + this.resetStatus(); this.triggerEvent('close'); }, cancel() { + this.resetStatus(); this.triggerEvent('cancel'); }, confirm() { // 触发confirm事件带数据 - this.triggerEvent('confirm', {/*数据*/}); + const id = this.data.detailId; + const Rate = this.data.commissionRate; + const maxRate = this.data.maxCommissionRate; + // console.log('maxRate---->', maxRate); + if (Rate > maxRate || Rate < 0) { + wx.showModal({ + title: '抽佣比率错误', + content: '抽佣比率大于最大抽成', + showCancel: false + }) + return; + } + wx.showLoading({ + title: '加载中', + mask: true + }) + // 发送请求 + wx.request({ + url: baseUrl + '/projectCommission/update/rate', + method: 'POST', + header: { + Authorization: wx.getStorageSync('token'), + }, + data: { + id: id, + currentCommissionRate: Rate + }, + success: res => { + console.log('后端结果---->',res.data); + if (res.data.code === 1) { + wx.hideLoading() // 加载框关闭 + this.triggerEvent('confirm', {}); + } else { + wx.showToast({ + title: '服务异常', + icon: 'error' + }) + } + } + }) + this.resetStatus(); }, - } -}) + // 单选框选择方法 + radioChange(e) { + const selected = e.detail.value; + if (selected === '代理价') { + this.setData({ + pgencyPriceAble: false, + commissionRateAble: true, + }) + } else { + this.setData({ + pgencyPriceAble: true, + commissionRateAble: false, + }) + } + }, + + // 重置input状态 + resetStatus() { + this.setData({ + pgencyPriceAble: true, + commissionRateAble: true, + }) + }, + + /** + * 处理输入框的变化 + */ + handleInputChange(e) { + const { field } = e.target.dataset; // 获取字段名 + this.setData({ + [field]: e.detail.value, // 动态更新输入框数据 + }); + }, + + // 计算单价——当输入抽成比率失焦时自动计算 + calculateUnitPrice() { + const tempCommissionRate = this.data.commissionRate/100; // 暂存抽成比率 + const tempMyUnitPrice = this.data.myUnitPrice; // 暂存我的单价 + let res = parseFloat( (tempMyUnitPrice * (1- tempCommissionRate)).toPrecision(2) ) ; + // 计算单价 (避免精度丢失问题) + this.setData({ + pgencyPrice : res + }) + }, + + // 计算比率——当输入代理单价失焦时自动计算 + calculateRatio() { + const tempPgencyPrice = this.data.pgencyPrice; // 暂存代理单价 + const tempMyUnitPrice = this.data.myUnitPrice; // 暂存我的单价 + if (tempPgencyPrice == tempMyUnitPrice) { + this.setData({ commissionRate: 100 }) + } else { + let res = (tempMyUnitPrice - tempPgencyPrice) / tempMyUnitPrice; + this.setData({ + commissionRate: parseFloat((res*100).toPrecision(2)) + }) + } + console.log('抽佣比率------>',this.data.commissionRate); + } + } +}) \ No newline at end of file diff --git a/pages/personCenter/component/commissionRatePop/commissionRatePop.wxml b/pages/personCenter/component/commissionRatePop/commissionRatePop.wxml index 59d9f5e..b00b17c 100644 --- a/pages/personCenter/component/commissionRatePop/commissionRatePop.wxml +++ b/pages/personCenter/component/commissionRatePop/commissionRatePop.wxml @@ -4,34 +4,53 @@ 代理价设置 - 我的价格0.30,我的抽成0.17元 + 我的价格{{ myUnitPrice }},我的抽成{{ (myUnitPrice*100 - pgencyPrice*100)/100 }}元 结算标准 - 3.6元购买30元券包3.6元购买 + {{ projectDetailName }} 代理价 - + 抽成比例 - - + + + 设价方式 - + - + 代理价 - + 抽成比例 diff --git a/pages/personCenter/component/commissionRatePop/commissionRatePop.wxss b/pages/personCenter/component/commissionRatePop/commissionRatePop.wxss index 39a8acb..9dccf32 100644 --- a/pages/personCenter/component/commissionRatePop/commissionRatePop.wxss +++ b/pages/personCenter/component/commissionRatePop/commissionRatePop.wxss @@ -121,6 +121,19 @@ radio { transform: scale(0.8); /* 调整为你需要的缩放比例 */ } +/* 在.wxss文件中 */ +.input-container { + position: relative; /* 容器使用相对定位 */ +} + +.input-icon { + position: absolute; /* 图标使用绝对定位 */ + left: 82px; /* 设置图标距离左边的距离 */ + top: 9px; /* 设置图标距离顶部的距离 */ + width: 15px; /* 图标宽度 */ + height: 15px; /* 图标高度 */ +} + /* 弹窗外围容器,覆盖全屏并居中 */ .popup-wrapper { position: fixed; diff --git a/pages/personCenter/component/commissionRatePop/images/baifenbi.png b/pages/personCenter/component/commissionRatePop/images/baifenbi.png new file mode 100644 index 0000000..d6a89b0 Binary files /dev/null and b/pages/personCenter/component/commissionRatePop/images/baifenbi.png differ