.gitignore
@@ -63,3 +63,4 @@ CoreCms.Net.Web.WebApi/appsettings.json CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml CoreCms.Net.Uni-App/bin/ 数据库/ CoreCms.Net.Configuration/GlobalEnumVars.cs
@@ -246,7 +246,14 @@ /// 订单 /// </summary> [Description("订单")] GoodsOder = 11, GoodsOder = 12, /// <summary> /// 经销配送佣金 /// </summary> [Description("经销配送佣金")] DistributionDelivery = 13, } /// <summary> /// 用户积分变动来源类型 CoreCms.Net.Configuration/SystemSettingConstVars.cs
@@ -940,6 +940,11 @@ public static readonly string DictionaryUserGroupKey = "dictionaryUserGroupKey"; /// <summary> /// 经销商发货奖励设置 /// </summary> public static readonly string DictionaryDeliverFees = "dictionaryDeliverFees"; /// <summary> /// 业绩奖励 开关 /// </summary> public static readonly string DictionaryAchievementOnOff = "dictionaryAchievementOnOff"; CoreCms.Net.Configuration/SystemSettingDictionary.cs
@@ -274,6 +274,8 @@ //》++++++++++++++++++++++++++++++++++++百分兵法增加++++++++++++++++ //经销商用户组绑定key 有就绑定,无则不绑定 di.Add(SystemSettingConstVars.DictionaryUserGroupKey, new DictionaryKeyValues() { sKey = "经销商关联用户组KEY", sValue = "DictionaryUserGroupKey" }); //经销商配送奖励 di.Add(SystemSettingConstVars.DictionaryDeliverFees, new DictionaryKeyValues() { sKey = "经销商配送奖励", sValue = "5" }); //业绩开关 di.Add(SystemSettingConstVars.DictionaryAchievementOnOff, new DictionaryKeyValues() { sKey = "是否开启业绩奖励", sValue = "1" }); //业绩奖励技术因子 CoreCms.Net.IServices/baifenbingfa/IDistributorDeliveryServices.cs
@@ -42,6 +42,15 @@ /// <param name="CancelledDec">取消原因</param> /// <returns></returns> Task<WebApiCallBack> SetDeliveryAccepted(sendDistributionAcceptType acceptType,string DeliveryID,string CancelledDec= null); /// <summary> /// 完成订单,配送订单将分配到用户余额 /// </summary> /// <param name="orderId"></param> /// <returns></returns> Task<WebApiCallBack> FinishOrder(string orderId); } CoreCms.Net.Model/Entities/Bill/CoreCmsBillAftersales.cs
@@ -13,7 +13,7 @@ namespace CoreCms.Net.Model.Entities { /// <summary> /// 退货单表 /// 售后单表 /// </summary> [SugarTable("CoreCmsBillAftersales",TableDescription = "退货单表")] public partial class CoreCmsBillAftersales CoreCms.Net.Model/Entities/Bill/CoreCmsBillDelivery.cs
@@ -283,6 +283,12 @@ [Description("等待确认接受")] NoAccted, /// <summary> /// 奖励确认 /// </summary> [Description("奖励确认")] OderFreeComplete, } CoreCms.Net.Model/Entities/Distribution/CoreCmsDistributionOrder.cs
@@ -8,6 +8,7 @@ * Description: 暂无 ***********************************************************************/ using SqlSugar; using System; using System.ComponentModel.DataAnnotations; namespace CoreCms.Net.Model.Entities @@ -25,6 +26,8 @@ { } /// <summary> /// 序列 /// </summary> CoreCms.Net.Model/Entities/Order/CoreCmsOrder.cs
@@ -221,7 +221,7 @@ /// <summary> /// 售后状态 /// 收货状态 /// </summary> [Display(Name = "售后状态")] CoreCms.Net.Model/Entities/Order/CoreCmsOrderPartial.cs
@@ -64,9 +64,17 @@ /// 售后单 /// </summary> [SugarColumn(IsIgnore = true)] public List<CoreCmsBillAftersales> aftersalesItem { get; set; } /// <summary> /// 导航返回 /// </summary> [Navigate(NavigateType.OneToMany, nameof(CoreCmsBillAftersales.orderId), nameof(orderId))] public List<CoreCmsBillAftersales> aftersalesItem1 { get; set; } /// <summary> /// 发货单 /// </summary> [SugarColumn(IsIgnore = true)] CoreCms.Net.Model/Entities/baifenbingfa/DistributionSend/DistributionSendOder.cs
@@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressDeliveryOpenMessageGetDeliveryListResponse.Types; namespace CoreCms.Net.Model.Entities.baifenbingfa.DistributionSendOder { @@ -14,8 +15,10 @@ /// </summary> [SugarTable(TableDescription = "供应商发货配发记录")] [SqlCodeFirst] public class DistributionSendOder: BFBaseModel public partial class DistributionSendOder: BFBaseModel { /// <summary> /// ID /// </summary> @@ -61,11 +64,22 @@ /// </summary> [SugarColumn(ColumnDescription = "配送单Id")] public string deliveryID { get; set; } /// <summary> /// 配送费用 /// </summary> [SugarColumn(ColumnDescription = "配送费用",DefaultValue ="0")] public decimal amount { get; set; }= 0; /// <summary> /// 配送状态 /// </summary> [SugarColumn(ColumnDescription = "配送状态",IsNullable =true)] public sendDistributionAcceptType? sendDistributionAccept { get; set; } /// <summary> /// 应聘职务 /// </summary> [Navigate(NavigateType.OneToOne, nameof(deliveryID))] public CoreCmsBillDelivery delivery { get; set; } } } CoreCms.Net.Model/Entities/baifenbingfa/DistributionSend/DistributionSendOderPartial.cs
New file @@ -0,0 +1,13 @@ using CoreCms.Net.Model.Entities.baifenbingfa.jon; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressDeliveryOpenMessageGetDeliveryListResponse.Types; namespace CoreCms.Net.Model.Entities.baifenbingfa.DistributionSend { } CoreCms.Net.RedisMQ/DistributionSendOderMQ.cs
@@ -4,9 +4,12 @@ using CoreCms.Net.IServices; using CoreCms.Net.Loging; using CoreCms.Net.Model.Entities.baifenbingfa.DistributionSendOder; using CoreCms.Net.Utility.Extensions; using CoreCms.Net.Utility.Helper; using InitQ.Abstractions; using InitQ.Attributes; using Newtonsoft.Json; using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; @@ -21,10 +24,13 @@ public class DistributionSendOderMQ: IRedisSubscribe { private readonly IUnitOfWork _unitOfWork; public DistributionSendOderMQ(IUnitOfWork unitOfWork) private readonly ICoreCmsUserBalanceServices _userBalanceServices; private readonly ICoreCmsSettingServices _coreCmsSettingServices; //注入服务 public DistributionSendOderMQ(IUnitOfWork unitOfWork, ICoreCmsUserBalanceServices userBalanceServices, ICoreCmsSettingServices coreCmsSettingServices) { _unitOfWork= unitOfWork; _userBalanceServices = userBalanceServices; _coreCmsSettingServices = coreCmsSettingServices; } /// <summary> @@ -42,7 +48,10 @@ } Param.createTime = DateTime.Now; Param.createBy = "系统队列"; var allConfigs = await _coreCmsSettingServices.GetConfigDictionaries();//获取所有配置 //筛选配置 var DictionaryDeliverFees = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DictionaryDeliverFees).ObjectToDecimal(0); Param.amount = DictionaryDeliverFees; await _unitOfWork.GetDbClient().Insertable(Param).ExecuteCommandAsync(); } @@ -61,15 +70,43 @@ NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "ActiveDistributionSendOder 修改状态 处理失败", $"转换模型失败===》 {message}"); return; } DistributionSendOder oder = null; if (Param.SendOderActive == Model.Entities.sendDistributionAcceptType.OderFreeComplete) oder=await _unitOfWork.GetDbClient().Queryable<DistributionSendOder>().Includes(x=>x.delivery).Where(x => x.deliveryID == Param.deliveryID ).FirstAsync(); else var oder=await _unitOfWork.GetDbClient().Queryable<DistributionSendOder>().Where(x => x.deliveryID == Param.deliveryID && x.userID == Param.userID).FirstAsync(); oder = await _unitOfWork.GetDbClient().Queryable<DistributionSendOder>().Includes(x => x.delivery).Where(x => x.deliveryID == Param.deliveryID && x.userID == Param.userID).FirstAsync(); oder.upDataTime = DateTime.Now; oder.upDataBy = "ActiveDistributionSendOder 队列"; oder.description = Param.Dec; oder.sendDistributionAccept= Param.SendOderActive; _unitOfWork.BeginTran(); try { if (Param.SendOderActive == Model.Entities.sendDistributionAcceptType.OderFreeComplete) { if (oder.userID != null && oder.delivery?.orderId != null) { //钱挪到会员余额里面 var result = await _userBalanceServices.Change(oder.userID ?? 0, (int)GlobalEnumVars.UserBalanceSourceTypes.DistributionDelivery, oder.amount, oder.delivery.orderId); } else NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.Order, "经销商发货结算失败", $"DistributionSendOder ID={oder.id} 该订单的用户ID或者是deliveryID或者是CoreCmsBillDelivery 中的 oderId"); } await _unitOfWork.GetDbClient().Updateable(oder).ExecuteCommandAsync(); _unitOfWork.CommitTran(); } catch (Exception ) { _unitOfWork.RollbackTran(); throw; } } CoreCms.Net.RedisMQ/OrderAgentOrDistributionSubscribe.cs
@@ -150,7 +150,6 @@ iData.name = !string.IsNullOrEmpty(user.nickName) ? user.nickName : user.mobile; iData.verifyStatus = (int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes; iData.verifyTime = DateTime.Now; await _distributionServices.AddData(iData, order.userId); } } CoreCms.Net.RedisMQ/OrderFinishCommandSubscribe.cs
@@ -2,6 +2,7 @@ using System.Threading.Tasks; using CoreCms.Net.Configuration; using CoreCms.Net.IServices; using CoreCms.Net.IServices.baifenbingfa; using CoreCms.Net.Loging; using CoreCms.Net.Model.Entities; using CoreCms.Net.Utility.Extensions; @@ -27,9 +28,11 @@ private readonly ICoreCmsSettingServices _settingServices; private readonly ICoreCmsUserServices _userServices; private readonly ICoreCmsAgentOrderServices _agentOrderServices; private readonly IDistributorDeliveryServices _distributorDeliveryServices; public OrderFinishCommandSubscribe(ICoreCmsBillPaymentsServices billPaymentsServices, ICoreCmsDistributionOrderServices distributionOrderServices, ICoreCmsDistributionServices distributionServices, ICoreCmsSettingServices settingServices, ICoreCmsUserServices userServices, ICoreCmsAgentOrderServices agentOrderServices) public OrderFinishCommandSubscribe(ICoreCmsBillPaymentsServices billPaymentsServices, ICoreCmsDistributionOrderServices distributionOrderServices, ICoreCmsDistributionServices distributionServices, ICoreCmsSettingServices settingServices, ICoreCmsUserServices userServices, ICoreCmsAgentOrderServices agentOrderServices, IDistributorDeliveryServices distributorDeliveryServices) { _billPaymentsServices = billPaymentsServices; _distributionOrderServices = distributionOrderServices; @@ -37,6 +40,7 @@ _settingServices = settingServices; _userServices = userServices; _agentOrderServices = agentOrderServices; _distributorDeliveryServices= distributorDeliveryServices; } /// <summary> @@ -63,6 +67,8 @@ await _agentOrderServices.FinishOrder(msg); //邀请要求模式下进行分佣,会检测是否开启了三级分销和代理模式。 await _userServices.InviteCommission(msg); //处理经销商发货收益分配记录到余额内 await _distributorDeliveryServices.FinishOrder(msg); NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结结佣", "订单编号获取正常:" + msg); } CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs
@@ -392,6 +392,24 @@ } /// <summary> /// 经销上配送费结算专用 /// </summary> /// <param name="list"></param> /// <returns></returns> private async IAsyncEnumerable<WebApiCallBack> ChangeForEachForDistributionDelivery(List<CoreCmsDistributionOrder> list) { foreach (var item in list) { //钱挪到会员余额里面 var result = await _balanceServices.Change(item.userId, (int)GlobalEnumVars.UserBalanceSourceTypes.DistributionDelivery, item.amount, item.orderId); yield return result; } } #endregion #region 作废订单 CoreCms.Net.Services/baifenbingfa/DistributorDeliveryServices.cs
@@ -21,6 +21,11 @@ using CoreCms.Net.DTO; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressDeliveryOpenMessageGetDeliveryListResponse.Types; using CoreCms.Net.Loging; using CoreCms.Net.Model.Entities.baifenbingfa.DistributionSendOder; using StackExchange.Redis; using Microsoft.Extensions.Logging; namespace CoreCms.Net.Services.baifenbingfa { /// <summary> @@ -39,7 +44,9 @@ private readonly IRedisOperationRepository _redisOperationRepository; private readonly IHttpContextUser _user; public readonly ICoreCmsDistributionServices _coreCmsDistributionServices; private readonly ICoreCmsOrderServices _orderServices; public DistributorDeliveryServices( IUnitOfWork unitOfWork, @@ -51,7 +58,8 @@ , ICoreCmsSettingServices settingServices , IRedisOperationRepository redisOperationRepository , IHttpContextUser user ,ICoreCmsDistributionServices coreCmsDistributionServices ) ,ICoreCmsDistributionServices coreCmsDistributionServices ,ICoreCmsOrderServices orderServices) { this._dal = dal; base.BaseDal = dal; @@ -64,6 +72,7 @@ _redisOperationRepository = redisOperationRepository; _user = user; _coreCmsDistributionServices = coreCmsDistributionServices; _orderServices = orderServices; } public async Task<(List< CoreCmsBillDelivery>,int )> GetDeliveryList(GetDeliveryListPost Param) @@ -77,7 +86,42 @@ } if (Param.distributionAcceptStatus != null) { where= where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus); switch (Param.distributionAcceptStatus) { case sendDistributionAcceptType.Accepted: ///进行中,售后空 where = where.And(x => x.sendDistributionAccept == sendDistributionAcceptType.Accepted && x.order.status == (int)GlobalEnumVars.OrderStatus.Normal && !x.order.aftersalesItem1.Any()&& x.order.confirmStatus != (int)GlobalEnumVars.OrderConfirmStatus.ConfirmReceipt); //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus); break; case sendDistributionAcceptType.NoAccted: ///未确认接受的,不能售后空 where = where.And(x => x.sendDistributionAccept == sendDistributionAcceptType.NoAccted && x.order.status == (int)GlobalEnumVars.OrderStatus.Normal && !x.order.aftersalesItem1.Any()); //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus); break; case sendDistributionAcceptType.OderFreeComplete: where = where.And(x => x.sendDistributionAccept == sendDistributionAcceptType.Accepted && x.order.status == (int)GlobalEnumVars.OrderStatus.Complete && !x.order.aftersalesItem1.Any()); //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus); break; case sendDistributionAcceptType.Cancelled: where = where.And(x =>( x.sendDistributionAccept == sendDistributionAcceptType.Cancelled || x.order.status == (int)GlobalEnumVars.OrderStatus.Cancel || x.order.aftersalesItem1.Any())); //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus); break; case sendDistributionAcceptType.Delivered: where = where.And(x => x.sendDistributionAccept == sendDistributionAcceptType.Delivered || x.order.confirmStatus == (int)GlobalEnumVars.OrderConfirmStatus.ConfirmReceipt ); //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus); break; default: break; } //where= where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus); } where= where.And(x => x.sendDistributionUserID == _user.ID); //必须是出于发货状态 @@ -85,20 +129,63 @@ //必须是有效状态 //where= where.And(x => x.order.status == (int)GlobalEnumVars.OrderStatus.Normal); RefAsync<int> totl = 0; var list = await _unitOfWork.GetDbClient().Queryable<CoreCmsBillDelivery>().Includes(x => x.order, order => order.Orderitems, ite => ite.productInfo).Select(x => new CoreCmsBillDelivery var list = await _unitOfWork.GetDbClient().Queryable<CoreCmsBillDelivery>() .Includes(x => x.order, order => order.Orderitems, ite => ite.productInfo) .Includes(x => x.order, Order => Order.aftersalesItem1) .Where(where) .Select(x => new CoreCmsBillDelivery { sendDistributionAccept = x.sendDistributionAccept == sendDistributionAcceptType.NoAccted ? //用户没有同意但是订单已经取消了 需要赋值 取消状态 (x.order.status== (int)GlobalEnumVars.OrderStatus.Normal ? sendDistributionAcceptType.NoAccted: sendDistributionAcceptType.Cancelled ): ( x.sendDistributionAccept== sendDistributionAcceptType.Accepted? //用户已经同意了 (x.order.confirmStatus == (int)GlobalEnumVars.OrderConfirmStatus.ConfirmReceipt? sendDistributionAcceptType.Delivered: sendDistributionAcceptType.Accepted) : x.order.status==(int )GlobalEnumVars.OrderStatus.Cancel? sendDistributionAcceptType.Cancelled: x.sendDistributionAccept ), order=x.order, },true).MergeTable() .Where(where).OrderByDescending(x => x.createTime) }, true) .MergeTable() //.Mapper(x => x.order.billAftersalesId = SqlFunc.Subqueryable<CoreCmsBillAftersales>().Where(core => core.orderId == x.orderId).Select(core => core.aftersalesId)) .Mapper( x => { switch (x.sendDistributionAccept) { case sendDistributionAcceptType.Accepted: if (x.order.status == (int)GlobalEnumVars.OrderStatus.Cancel) x.sendDistributionAccept = sendDistributionAcceptType.Cancelled; else if (x.order.status == (int)GlobalEnumVars.OrderStatus.Complete && !x.order.aftersalesItem1.Any()) x.sendDistributionAccept = sendDistributionAcceptType.OderFreeComplete; if (x.order.status == (int)GlobalEnumVars.OrderStatus.Complete && x.order.aftersalesItem1.Any()) x.sendDistributionAccept = sendDistributionAcceptType.Cancelled; else if (x.order.status == (int)GlobalEnumVars.OrderStatus.Normal && x.order.aftersalesItem1.Any()) x.sendDistributionAccept = sendDistributionAcceptType.Cancelled; else if (x.order.confirmStatus == (int)GlobalEnumVars.OrderConfirmStatus.ConfirmReceipt) x.sendDistributionAccept = sendDistributionAcceptType.Delivered; else x.sendDistributionAccept = x.sendDistributionAccept; break; case sendDistributionAcceptType.NoAccted: ///未确认接受的,不能售后空 if(x.order.status== (int)GlobalEnumVars.OrderStatus.Complete||x.order.status== (int)GlobalEnumVars.OrderStatus.Cancel|| x.order.aftersalesItem1.Any()) x.sendDistributionAccept= sendDistributionAcceptType.Cancelled; else x.sendDistributionAccept = x.sendDistributionAccept; break; case sendDistributionAcceptType.OderFreeComplete: //永远不会到这 break; case sendDistributionAcceptType.Cancelled: //不需要处理 break; default: break; } } ) .OrderByDescending(x => x.createTime) .ToPageListAsync(Param.page, Param.limit, totl); var listdata= new PageList<CoreCmsBillDelivery>(list, Param.page, Param.limit, totl); @@ -108,7 +195,13 @@ public async Task<int> GetNoAcceptedDeliveryCount() { return await _dal.GetCountAsync(x => x.sendDistributionUserID == _user.ID && x.sendDistributionAccept == sendDistributionAcceptType.NoAccted); var lista= await _unitOfWork.GetDbClient().Queryable<CoreCmsBillDelivery>().Includes(x => x.order,ord=>ord.aftersalesItem1) .Where(x => x.sendDistributionUserID == _user.ID && x.sendDistributionAccept == sendDistributionAcceptType.NoAccted && x.order.status != (int)GlobalEnumVars.OrderStatus.Complete ).ToListAsync(); return lista.Where(x=>(x.order.aftersalesItem1==null|| x.order.aftersalesItem1.Count()==0)).Count();//删选出没有售后申请的订单 } public async Task<bool> GetShowDelivery() @@ -117,7 +210,16 @@ } public async Task<WebApiCallBack> SetDeliveryAccepted(sendDistributionAcceptType acceptType, string DeliveryID, string CancelledDec = null) { WebApiCallBack ret = new WebApiCallBack(); if (acceptType == sendDistributionAcceptType.OderFreeComplete) { //只有在完成订单中设置该状态,该状态会对配售收益进行提取整合 ret.status = false; ret.msg = "状态设置错误"; return ret; } var data = await _dal.QueryByIdAsync(DeliveryID); if (data == null) { @@ -213,5 +315,53 @@ throw; } } public async Task<WebApiCallBack> FinishOrder(string orderId) { var jm = new WebApiCallBack(); var order = await _orderServices.QueryByClauseAsync(p => p.orderId == orderId && p.status == (int)GlobalEnumVars.OrderStatus.Complete); if (order == null) { jm.msg = "订单查询失败"; return jm; } var distributionSendOder = await _unitOfWork.GetDbClient().Queryable<DistributionSendOder>().Includes(x=>x.delivery) .Where(x=>x.delivery.orderId==order.orderId&&(x.sendDistributionAccept== sendDistributionAcceptType.Accepted|| x.sendDistributionAccept== sendDistributionAcceptType.Shipped||x.sendDistributionAccept== sendDistributionAcceptType.Delivered)) .ToListAsync(); if( distributionSendOder.Count==1) { //满足所有条件开始分配逻辑 var mQ = new ActiveDistributionSendOderMQ { SendOderActive = sendDistributionAcceptType.OderFreeComplete, deliveryID = distributionSendOder[0].deliveryID, userID = order.userId }; await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.ActiveDistributionSendOderMQ, JsonConvert.SerializeObject(mQ)); jm.status = true; } else if( distributionSendOder.Count>1) { jm.status= false; jm.msg = "发现多个配送订单,需要手动排查"; NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.Order, "处理经销商配送收益时错误", $"订单ID{orderId} 发现多个满足经销商派送单,放弃处理,需排查"); } jm.status = true; return jm; //if (order.shipStatus is (int)GlobalEnumVars.OrderShipStatus.No or (int)GlobalEnumVars.OrderShipStatus.PartialYes) // { // return jm; // } } } } CoreCms.Net.Utility/Helper/UserHelper.cs
@@ -65,6 +65,9 @@ case (int)GlobalEnumVars.UserBalanceSourceTypes.CheckIn: str += "日历签到奖励" + money + "元"; break; case (int)GlobalEnumVars.UserBalanceSourceTypes.DistributionDelivery: str += "配送佣金" + money + "元"; break; } //::todo 这里还可以做一些其他的校验 return str; CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievement.html
@@ -44,7 +44,7 @@ <script> var debug = layui.setter.debug; layui.data.done = function (d) { //������������»�ȡ�ӿڸ�ֵ���� // if (debug) { console.log(d.params.data); } layui.use(['admin', 'form', 'coreHelper'], function () { CoreCms.Net.Web.Admin/wwwroot/views/distribution/setting/index.html
@@ -70,6 +70,13 @@ <div class="layui-form-mid layui-word-aux">*非必要不修改*</div> </div> <div class="layui-form-item"> <label class="layui-form-label">{{d.data.configs['dictionaryDeliverFees']['sKey']}}:</label> <div class="layui-input-inline "> <input type="text" name="dictionaryDeliverFees" lay-verify="title|number" value="{{d.data.configs['dictionaryDeliverFees']['sValue']}}" autocomplete="off" placeholder="" class="layui-input"> </div> <div class="layui-form-mid layui-word-aux">元</div> </div> <div class="layui-form-item"> <label class="layui-form-label">{{d.data.configs['dictionaryAchievementOnOff']['sKey']}}:</label> <div class="layui-input-inline layui-inline-7"> <input type="radio" lay-filter="dictionaryAchievementOnOff" name="dictionaryAchievementOnOff" value="1" title="开启" {{d.data.configs['dictionaryAchievementOnOff']['sValue']==="1" ? 'checked':''}}>