Merge branch 'develop' into 'master'

Develop

See merge request jianweie/coreshoppro!12
This commit is contained in:
大灰灰
2022-10-15 18:15:18 +00:00
22 changed files with 845 additions and 554 deletions

View File

@@ -43,7 +43,7 @@ namespace CoreCms.Net.Filter
//处理各种异常
var jm = new AdminUiCallBack();
jm.code = (int)status;
jm.msg = "系统异常,请查看错误描述并进行解决。";
jm.msg = "系统异常" + context.Exception.Message;
jm.data = context.Exception;
context.ExceptionHandled = true;
context.Result = new ObjectResult(jm);

View File

@@ -46,7 +46,7 @@ namespace CoreCms.Net.Filter
{
status = false,
code = (int)status,
msg = "系统返回异常,请联系管理员进行处理!",
msg = "系统异常" + context.Exception.Message,
data = context.Exception
};
context.ExceptionHandled = true;

View File

@@ -33,11 +33,13 @@ namespace CoreCms.Net.IRepository
/// <returns></returns>
Task<AdminUiCallBack> InsertAsync(List<CoreCmsContinuousCheckInRules> entity);
/// <summary>
/// 获取缓存的所有数据
/// 获取的所有数据及子集
/// </summary>
/// <returns></returns>
Task<List<CoreCmsContinuousCheckInRules>> GetCaChe();
Task<List<CoreCmsContinuousCheckInRules>> GetDataWidthChild();
}
}

View File

@@ -25,18 +25,6 @@ namespace CoreCms.Net.IRepository
/// </summary>
public interface ICoreCmsCumulativeCheckInRulesRepository : IBaseRepository<CoreCmsCumulativeCheckInRules>
{
/// <summary>
/// 重写异步更新方法
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
Task<AdminUiCallBack> InsertAsync(List<CoreCmsCumulativeCheckInRules> entity);
/// <summary>
/// 获取缓存的所有数据
/// </summary>
/// <returns></returns>
Task<List<CoreCmsCumulativeCheckInRules>> GetCaChe();
}
}

View File

@@ -32,11 +32,13 @@ namespace CoreCms.Net.IServices
/// <returns></returns>
Task<AdminUiCallBack> InsertAsync(List<CoreCmsContinuousCheckInRules> entity);
/// <summary>
/// 获取缓存的所有数据
/// 获取的所有数据及子集
/// </summary>
/// <returns></returns>
Task<List<CoreCmsContinuousCheckInRules>> GetCaChe();
Task<List<CoreCmsContinuousCheckInRules>> GetDataWidthChild();
}
}

View File

@@ -24,17 +24,5 @@ namespace CoreCms.Net.IServices
/// </summary>
public interface ICoreCmsCumulativeCheckInRulesServices : IBaseServices<CoreCmsCumulativeCheckInRules>
{
/// <summary>
/// 重写异步更新方法
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
Task<AdminUiCallBack> InsertAsync(List<CoreCmsCumulativeCheckInRules> entity);
/// <summary>
/// 获取缓存的所有数据
/// </summary>
/// <returns></returns>
Task<List<CoreCmsCumulativeCheckInRules>> GetCaChe();
}
}

View File

@@ -77,13 +77,13 @@ namespace CoreCms.Net.Repository
days = item.days
};
var id = await DbClient.Insertable(continuous).ExecuteReturnIdentityAsync();
var id = await DbClient.Insertable(continuous).RemoveDataCache().ExecuteReturnIdentityAsync();
if (id <= 0) continue;
foreach (var detail in item.details)
{
detail.ruleId = id;
}
await DbClient.Insertable(item.details).ExecuteReturnIdentityAsync();
await DbClient.Insertable(item.details).RemoveDataCache().ExecuteReturnIdentityAsync();
}
_unitOfWork.CommitTran();
@@ -103,13 +103,12 @@ namespace CoreCms.Net.Repository
}
#region ==========================================================
/// <summary>
/// 获取缓存的所有数据
/// 获取的所有数据及子集
/// </summary>
/// <returns></returns>
public async Task<List<CoreCmsContinuousCheckInRules>> GetCaChe()
public async Task<List<CoreCmsContinuousCheckInRules>> GetDataWidthChild()
{
var list = await DbClient.Queryable<CoreCmsContinuousCheckInRules>()
.Select(p => new CoreCmsContinuousCheckInRules
@@ -123,53 +122,5 @@ namespace CoreCms.Net.Repository
}
#endregion
#region
/// <summary>
/// 重写根据条件查询分页数据
/// </summary>
/// <param name="predicate">判断集合</param>
/// <param name="orderByType">排序方式</param>
/// <param name="pageIndex">当前页面索引</param>
/// <param name="pageSize">分布大小</param>
/// <param name="orderByExpression"></param>
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
/// <returns></returns>
public async Task<IPageList<CoreCmsContinuousCheckInRules>> QueryPageAsync(Expression<Func<CoreCmsContinuousCheckInRules, bool>> predicate,
Expression<Func<CoreCmsContinuousCheckInRules, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
int pageSize = 20, bool blUseNoLock = false)
{
RefAsync<int> totalCount = 0;
List<CoreCmsContinuousCheckInRules> page;
if (blUseNoLock)
{
page = await DbClient.Queryable<CoreCmsContinuousCheckInRules>()
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsContinuousCheckInRules
{
id = p.id,
days = p.days,
}).With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount);
}
else
{
page = await DbClient.Queryable<CoreCmsContinuousCheckInRules>()
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsContinuousCheckInRules
{
id = p.id,
days = p.days,
}).ToPageListAsync(pageIndex, pageSize, totalCount);
}
var list = new PageList<CoreCmsContinuousCheckInRules>(page, pageIndex, pageSize, totalCount);
return list;
}
#endregion
}
}

View File

@@ -34,29 +34,5 @@ namespace CoreCms.Net.Repository
_unitOfWork = unitOfWork;
}
/// <summary>
/// 重写异步更新方法
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public async Task<AdminUiCallBack> InsertAsync(List<CoreCmsCumulativeCheckInRules> entity)
{
var jm = new AdminUiCallBack();
var bl = await DbClient.Insertable(entity).ExecuteCommandAsync();
jm.code = 0;
jm.msg = GlobalConstVars.EditSuccess;
return jm;
}
/// <summary>
/// 获取缓存的所有数据
/// </summary>
/// <returns></returns>
public async Task<List<CoreCmsCumulativeCheckInRules>> GetCaChe()
{
return await DbClient.Queryable<CoreCmsCumulativeCheckInRules>().With(SqlWith.NoLock).WithCache().ToListAsync();
}
}
}

View File

@@ -50,14 +50,17 @@ namespace CoreCms.Net.Services
return await _dal.InsertAsync(entity);
}
/// <summary>
/// 获取缓存的所有数据
/// 获取的所有数据及子集
/// </summary>
/// <returns></returns>
public async Task<List<CoreCmsContinuousCheckInRules>> GetCaChe()
public async Task<List<CoreCmsContinuousCheckInRules>> GetDataWidthChild()
{
return await _dal.GetCaChe();
return await _dal.GetDataWidthChild();
}
}
}

View File

@@ -39,24 +39,5 @@ namespace CoreCms.Net.Services
_unitOfWork = unitOfWork;
}
/// <summary>
/// 重写异步插入方法
/// </summary>
/// <param name="entity">实体数据</param>
/// <returns></returns>
public async Task<AdminUiCallBack> InsertAsync(List<CoreCmsCumulativeCheckInRules> entity)
{
return await _dal.InsertAsync(entity);
}
/// <summary>
/// 获取缓存的所有数据
/// </summary>
/// <returns></returns>
public async Task<List<CoreCmsCumulativeCheckInRules>> GetCaChe()
{
return await _dal.GetCaChe();
}
}
}

View File

@@ -121,7 +121,7 @@ namespace CoreCms.Net.Services
}
//判断累计签到次数是否满足
var cumulativeCheckInRules = await _cumulativeCheckInRulesServices.GetCaChe();
var cumulativeCheckInRules = await _cumulativeCheckInRulesServices.QueryAsync(true, true);
//获取用户总签到次数使用userCheckIn的签到次数统计也可以但是查询实时数据最可靠。根据个人来
//var cumulativeCheckInCount = await _dal.GetCountAsync(p => p.userId == entity.userId);
var cumulativeCheckInCount = userCheckIn.cumulativeCheckInCount;
@@ -150,7 +150,7 @@ namespace CoreCms.Net.Services
//判断连续签到次数是否满足
var continuousCheckInRules = await _continuousCheckInRulesServices.GetCaChe();
var continuousCheckInRules = await _continuousCheckInRulesServices.QueryAsync(true, true);
//获取用户数据
var user = await _userServices.QueryByIdAsync(entity.userId);
//获取用户当前已经连续签到的次数

View File

@@ -1,16 +1,19 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text.Json.Nodes;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.Filter;
using CoreCms.Net.IServices;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Helper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using SqlSugar;
namespace CoreCms.Net.Web.Admin.Controllers.Shop
@@ -63,10 +66,38 @@ namespace CoreCms.Net.Web.Admin.Controllers.Shop
var userGrade = await _coreCmsUserGradeServices.QueryAsync();
//连续签到规则
var continuousCheckInRules = await _coreCmsContinuousCheckInRulesServices.GetCaChe();
var continuousCheckInRules = await _coreCmsContinuousCheckInRulesServices.GetDataWidthChild();
//制作新数据,防止出现
JArray newDetails = new JArray();
if (continuousCheckInRules.Any())
{
foreach (var item in continuousCheckInRules)
{
JArray di = new JArray();
var newUserGrand = userGrade;
foreach (var itemGrade in newUserGrand)
{
JObject diItem = new JObject();
diItem.Add("grand", JObject.FromObject(itemGrade));
var details = item.details.Find(p => p.userGradeId == itemGrade.id);
if (details != null)
{
diItem.Add("details", JObject.FromObject(details));
}
di.Add(diItem);
}
newDetails.Add(di);
}
}
//累计签到规则
var cumulativeCheckInRules = await _coreCmsCumulativeCheckInRulesServices.GetCaChe();
var cumulativeCheckInRules = await _coreCmsCumulativeCheckInRulesServices.QueryAsync(true, true);
jm.data = new
{
@@ -74,6 +105,7 @@ namespace CoreCms.Net.Web.Admin.Controllers.Shop
filesStorageOptionsType,
userGrade,
continuousCheckInRules,
newDetails,
cumulativeCheckInRules
};
@@ -133,11 +165,12 @@ namespace CoreCms.Net.Web.Admin.Controllers.Shop
}
//先清理掉数据,因为是配置数据,可直接删除添加新的
var doEnpty = await _coreCmsCumulativeCheckInRulesServices.DeleteAsync(p => p.id > 0);
var doEnpty = await _coreCmsCumulativeCheckInRulesServices.DeleteAsync(p => p.id > 0, true);
//插入新的数据
var insertCount = await _coreCmsCumulativeCheckInRulesServices.InsertAsync(entity.entity, true);
var insertCount = await _coreCmsCumulativeCheckInRulesServices.InsertAsync(entity.entity);
jm.code = 0;
jm.msg = "保存成功";
return jm;

View File

@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Http;
using System;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel;
using System.Linq;
@@ -45,26 +46,37 @@ namespace CoreCms.Net.Web.Admin.Controllers.WeChat
{
var jm = new AdminUiCallBack();
var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken();
var client = _weChatApiHttpClientFactory.CreateWxOpenClient();
var request = new ShopAccountGetInfoRequest();
request.AccessToken = accessToken;
var response = await client.ExecuteShopAccountGetInfoAsync(request);
jm.code = response.IsSuccessful() ? 0 : 1;
jm.msg = response.IsSuccessful() ? "获取成功" : response.ErrorMessage;
jm.data = response.Data;
jm.otherData = new
try
{
service_agent_type_service = response.Data.ServiceAgentTypeList?.Contains(0) == true ? 0 : -1,
service_agent_type_phone = response.Data.ServiceAgentTypeList?.Contains(2) == true ? 0 : -1,
service_agent_type_path = response.Data.ServiceAgentTypeList?.Contains(1) == true ? 0 : -1,
};
var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken();
var client = _weChatApiHttpClientFactory.CreateWxOpenClient();
var request = new ShopAccountGetInfoRequest();
request.AccessToken = accessToken;
var response = await client.ExecuteShopAccountGetInfoAsync(request);
jm.code = response.IsSuccessful() ? 0 : 1;
jm.msg = response.IsSuccessful() ? "获取成功" : response.ErrorMessage;
jm.data = response.Data;
jm.otherData = new
{
service_agent_type_service = response.Data.ServiceAgentTypeList?.Contains(0) == true ? 0 : -1,
service_agent_type_phone = response.Data.ServiceAgentTypeList?.Contains(2) == true ? 0 : -1,
service_agent_type_path = response.Data.ServiceAgentTypeList?.Contains(1) == true ? 0 : -1,
};
}
catch (Exception e)
{
jm.code = 0;
jm.msg = e.Message;
jm.otherData = new
{
service_agent_type_service = -1,
service_agent_type_phone = -1,
service_agent_type_path = -1,
};
}
return jm;
}

View File

@@ -2784,7 +2784,7 @@
促销表
</summary>
</member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsPromotionController.#ctor(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,CoreCms.Net.IServices.ICoreCmsPromotionServices,CoreCms.Net.IServices.ICoreCmsPromotionConditionServices,CoreCms.Net.IServices.ICoreCmsPromotionResultServices,CoreCms.Net.IServices.ICoreCmsGoodsCategoryServices,CoreCms.Net.IServices.ICoreCmsBrandServices,CoreCms.Net.IServices.ICoreCmsUserGradeServices,CoreCms.Net.IServices.ICoreCmsPromotionConditionServices,CoreCms.Net.IServices.ICoreCmsPromotionResultServices,CoreCms.Net.IServices.ICoreCmsCouponServices,CoreCms.Net.IServices.ICoreCmsGoodsServices)">
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsPromotionController.#ctor(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,CoreCms.Net.IServices.ICoreCmsPromotionServices,CoreCms.Net.IServices.ICoreCmsPromotionConditionServices,CoreCms.Net.IServices.ICoreCmsPromotionResultServices,CoreCms.Net.IServices.ICoreCmsGoodsCategoryServices,CoreCms.Net.IServices.ICoreCmsBrandServices,CoreCms.Net.IServices.ICoreCmsUserGradeServices,CoreCms.Net.IServices.ICoreCmsPromotionConditionServices,CoreCms.Net.IServices.ICoreCmsPromotionResultServices,CoreCms.Net.IServices.ICoreCmsCouponServices,CoreCms.Net.IServices.ICoreCmsGoodsServices,CoreCms.Net.IServices.ICoreCmsUserServices)">
<summary>
构造函数
</summary>
@@ -2828,6 +2828,20 @@
<param name="entity"></param>
<returns></returns>
</member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsPromotionController.GetGrant(CoreCms.Net.Model.FromBody.FMIntId)">
<summary>
分发优惠券
</summary>
<param name="entity"></param>
<returns></returns>
</member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsPromotionController.DoGrant(CoreCms.Net.Model.FromBody.FMIntId)">
<summary>
分发优惠券提交
</summary>
<param name="entity"></param>
<returns></returns>
</member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsPromotionController.DoDelete(CoreCms.Net.Model.FromBody.FMIntId)">
<summary>
单选删除
@@ -3127,13 +3141,6 @@
</summary>
<returns></returns>
</member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsUserServicesOrderController.DoSetisPay(CoreCms.Net.Model.FromBody.FMUpdateBoolDataByIntId)">
<summary>
设置是否支付
</summary>
<param name="entity"></param>
<returns></returns>
</member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsUserServicesOrderController.GetTicketPageList(System.String)">
<summary>
获取核销码列表

View File

@@ -1,2 +1,171 @@
/** layuiAdmin.pro-v1.7.0 LPPL License */
;layui.define(["laytpl","layer"],function(e){var t=layui.jquery,a=layui.laytpl,n=layui.layer,r=layui.setter,o=(layui.device(),layui.hint()),i=function(e){return new d(e)},s="LAY_app_body",d=function(e){this.id=e,this.container=t("#"+(e||s))};i.loading=function(e){e.append(this.elemLoad=t('<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon layui-icon-loading layadmin-loading"></i>'))},i.removeLoad=function(){this.elemLoad&&this.elemLoad.remove()},i.exit=function(){layui.data(r.tableName,{key:r.request.tokenName,remove:!0}),location.hash="/user/login"},i.req=function(e){var a=e.success,n=e.error,o=r.request,s=r.response,d=function(){return r.debug?"<br><cite>URL</cite>"+e.url:""};if(e.data=e.data||{},e.headers=e.headers||{},o.tokenName){var l="string"==typeof e.data?JSON.parse(e.data):e.data;e.data[o.tokenName]=o.tokenName in l?e.data[o.tokenName]:layui.data(r.tableName)[o.tokenName]||"",e.headers[o.tokenName]=o.tokenName in e.headers?e.headers[o.tokenName]:layui.data(r.tableName)[o.tokenName]||""}return delete e.success,delete e.error,t.ajax(t.extend({type:"get",dataType:"json",success:function(t){var n=s.statusCode;if(t[s.statusName]==n.ok)"function"==typeof e.done&&e.done(t);else if(t[s.statusName]==n.logout)i.exit();else{var r=["<cite>Error</cite> "+(t[s.msgName]||"返回状态码异常"),d()].join("");i.error(r)}"function"==typeof a&&a(t)},error:function(e,t){var a=["请求异常,请重试<br><cite>错误信息:</cite>"+t,d()].join("");i.error(a),"function"==typeof n&&n.apply(this,arguments)}},e))},i.popup=function(e){var a=e.success,r=e.skin;return delete e.success,delete e.skin,n.open(t.extend({type:1,title:"提示",content:"",id:"LAY-system-view-popup",skin:"layui-layer-admin"+(r?" "+r:""),shadeClose:!0,closeBtn:!1,success:function(e,r){var o=t('<i class="layui-icon" close>&#x1006;</i>');e.append(o),o.on("click",function(){n.close(r)}),"function"==typeof a&&a.apply(this,arguments)}},e))},i.error=function(e,a){return i.popup(t.extend({content:e,maxWidth:300,offset:"t",anim:6,id:"LAY_adminError"},a))},d.prototype.render=function(e,a){var n=this;layui.router();return e=r.views+e+r.engine,t("#"+s).children(".layadmin-loading").remove(),i.loading(n.container),t.ajax({url:e,type:"get",dataType:"html",data:{v:layui.cache.version},success:function(e){e="<div>"+e+"</div>";var r=t(e).find("title"),o=r.text()||(e.match(/\<title\>([\s\S]*)\<\/title>/)||[])[1],s={title:o,body:e};r.remove(),n.params=a||{},n.then&&(n.then(s),delete n.then),n.parse(e),i.removeLoad(),n.done&&(n.done(s),delete n.done)},error:function(e){return i.removeLoad(),n.render.isError?i.error("请求视图文件异常,状态:"+e.status):(404===e.status?n.render("template/tips/404"):n.render("template/tips/error"),void(n.render.isError=!0))}}),n},d.prototype.parse=function(e,n,r){var s=this,d="object"==typeof e,l=d?e:t(e),u=d?e:l.find("*[template]"),c=function(e){var n=a(e.dataElem.html()),o=t.extend({params:y.params},e.res);e.dataElem.after(n.render(o)),"function"==typeof r&&r();try{e.done&&new Function("d",e.done)(o)}catch(i){console.error(e.dataElem[0],"\n存在错误回调脚本\n\n",i)}},y=layui.router();l.find("title").remove(),s.container[n?"after":"html"](l.children()),y.params=s.params||{};for(var p=u.length;p>0;p--)!function(){var e=u.eq(p-1),t=e.attr("lay-done")||e.attr("lay-then"),n=a(e.attr("lay-url")||"").render(y),r=a(e.attr("lay-data")||"").render(y),s=a(e.attr("lay-headers")||"").render(y);try{r=new Function("return "+r+";")()}catch(d){o.error("lay-data: "+d.message),r={}}try{s=new Function("return "+s+";")()}catch(d){o.error("lay-headers: "+d.message),s=s||{}}n?i.req({type:e.attr("lay-type")||"get",url:n,data:r,dataType:"json",headers:s,success:function(a){c({dataElem:e,res:a,done:t})}}):c({dataElem:e,done:t})}();return s},d.prototype.send=function(e,t){var n=a(e||this.container.html()).render(t||{});return this.container.html(n),this},d.prototype.refresh=function(e){var t=this,a=t.container.next(),n=a.attr("lay-templateid");return t.id!=n?t:(t.parse(t.container,"refresh",function(){t.container.siblings('[lay-templateid="'+t.id+'"]:last').remove(),"function"==typeof e&&e()}),t)},d.prototype.then=function(e){return this.then=e,this},d.prototype.done=function(e){return this.done=e,this},e("view",i)});
;
layui.define(["laytpl", "layer"], function (e) {
var t = layui.jquery,
a = layui.laytpl,
n = layui.layer,
r = layui.setter,
o = (layui.device(), layui.hint()),
i = function (e) {
return new d(e)
}, s = "LAY_app_body",
d = function (e) {
this.id = e, this.container = t("#" + (e || s))
};
i.loading = function (e) {
e.append(this.elemLoad = t('<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon layui-icon-loading layadmin-loading"></i>'))
}, i.removeLoad = function () {
this.elemLoad && this.elemLoad.remove()
}, i.exit = function () {
layui.data(r.tableName, {
key: r.request.tokenName,
remove: !0
}), location.hash = "/user/login"
}, i.req = function (e) {
var a = e.success,
n = e.error,
o = r.request,
s = r.response,
d = function () {
return r.debug ? "<br><cite>URL</cite>" + e.url : ""
};
if (e.data = e.data || {}, e.headers = e.headers || {}, o.tokenName) {
var l = "string" == typeof e.data ? JSON.parse(e.data) : e.data;
e.data[o.tokenName] = o.tokenName in l ? e.data[o.tokenName] : layui.data(r.tableName)[o.tokenName] || "", e.headers[o.tokenName] = o.tokenName in e.headers ? e.headers[o.tokenName] : layui.data(r.tableName)[o.tokenName] || ""
}
return delete e.success, delete e.error, t.ajax(t.extend({
type: "get",
dataType: "json",
success: function (t) {
var n = s.statusCode;
if (t[s.statusName] == n.ok) "function" == typeof e.done && e.done(t);
else if (t[s.statusName] == n.logout) i.exit();
else {
var r = ["<cite>Error</cite> " + (t[s.msgName] || "返回状态码异常"), d()].join("<br>");
i.error(r)
}
"function" == typeof a && a(t)
},
error: function (e, t) {
var a = ["请求异常,请重试<br><cite>错误信息:</cite>" + t, d()].join("");
i.error(a), "function" == typeof n && n.apply(this, arguments)
}
}, e))
}, i.popup = function (e) {
var a = e.success,
r = e.skin;
return delete e.success, delete e.skin, n.open(t.extend({
type: 0,
title: "提示",
content: "",
id: "LAY-system-view-popup",
skin: "layui-layer-admin" + (r ? " " + r : ""),
shadeClose: !0,
closeBtn: !1,
success: function (e, r) {
var o = t('<i class="layui-icon" close>&#x1006;</i>');
e.append(o), o.on("click", function () {
n.close(r)
}), "function" == typeof a && a.apply(this, arguments)
}
}, e))
}, i.error = function (e, a) {
return i.popup(t.extend({
content: e,
maxWidth: 500,
offset: "auto",
anim: 6,
id: "LAY_adminError"
}, a))
}, d.prototype.render = function (e, a) {
var n = this;
layui.router();
return e = r.views + e + r.engine, t("#" + s).children(".layadmin-loading").remove(), i.loading(n.container), t.ajax({
url: e,
type: "get",
dataType: "html",
data: {
v: layui.cache.version
},
success: function (e) {
e = "<div>" + e + "</div>";
var r = t(e).find("title"),
o = r.text() || (e.match(/\<title\>([\s\S]*)\<\/title>/) || [])[1],
s = {
title: o,
body: e
};
r.remove(), n.params = a || {}, n.then && (n.then(s), delete n.then), n.parse(e), i.removeLoad(), n.done && (n.done(s), delete n.done)
},
error: function (e) {
return i.removeLoad(), n.render.isError ? i.error("请求视图文件异常,状态:" + e.status) : (404 === e.status ? n.render("template/tips/404") : n.render("template/tips/error"), void (n.render.isError = !0))
}
}), n
}, d.prototype.parse = function (e, n, r) {
var s = this,
d = "object" == typeof e,
l = d ? e : t(e),
u = d ? e : l.find("*[template]"),
c = function (e) {
var n = a(e.dataElem.html()),
o = t.extend({
params: y.params
}, e.res);
e.dataElem.after(n.render(o)), "function" == typeof r && r();
try {
e.done && new Function("d", e.done)(o)
} catch (i) {
console.error(e.dataElem[0], "\n存在错误回调脚本\n\n", i)
}
}, y = layui.router();
l.find("title").remove(), s.container[n ? "after" : "html"](l.children()), y.params = s.params || {};
for (var p = u.length; p > 0; p--)! function () {
var e = u.eq(p - 1),
t = e.attr("lay-done") || e.attr("lay-then"),
n = a(e.attr("lay-url") || "").render(y),
r = a(e.attr("lay-data") || "").render(y),
s = a(e.attr("lay-headers") || "").render(y);
try {
r = new Function("return " + r + ";")()
} catch (d) {
o.error("lay-data: " + d.message), r = {}
}
try {
s = new Function("return " + s + ";")()
} catch (d) {
o.error("lay-headers: " + d.message), s = s || {}
}
n ? i.req({
type: e.attr("lay-type") || "get",
url: n,
data: r,
dataType: "json",
headers: s,
success: function (a) {
c({
dataElem: e,
res: a,
done: t
})
}
}) : c({
dataElem: e,
done: t
})
}();
return s
}, d.prototype.send = function (e, t) {
var n = a(e || this.container.html()).render(t || {});
return this.container.html(n), this
}, d.prototype.refresh = function (e) {
var t = this,
a = t.container.next(),
n = a.attr("lay-templateid");
return t.id != n ? t : (t.parse(t.container, "refresh", function () {
t.container.siblings('[lay-templateid="' + t.id + '"]:last').remove(), "function" == typeof e && e()
}), t)
}, d.prototype.then = function (e) {
return this.then = e, this
}, d.prototype.done = function (e) {
return this.done = e, this
}, e("view", i)
});

View File

@@ -0,0 +1,277 @@
<script type="text/html" template lay-done="layui.data.sendParams(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsServices-editForm" id="LAY-app-CoreCmsServices-editForm">
<input type="hidden" name="id" value="{{d.params.data.model.id || '' }}" />
<div class="layui-form-item">
<label for="title" class="layui-form-label layui-form-required">项目名称</label>
<div class="layui-input-block">
<input name="title" lay-verify="required|verifytitle" value="{{d.params.data.model.title || '' }}" class="layui-input" lay-reqText="请输入项目名称" placeholder="请输入项目名称" />
</div>
</div>
<div class="layui-form-item">
<label for="description" class="layui-form-label layui-form-required">售价</label>
<div class="layui-input-inline layui-inline-2">
<input name="money" lay-verify="required|money" value="{{d.params.data.model.money || '' }}" class="layui-input" placeholder="请输入售价" lay-reqText="请输入售价" />
</div>
<label for="thumbnail" class="layui-form-label layui-form-required">项目缩略图</label>
<div class="layui-input-inline layui-inline-8">
<input name="thumbnail" id="thumbnailInput" lay-verify="required" value="{{d.params.data.model.thumbnail || '' }}" class="layui-input" placeholder="请上传项目缩略图" lay-reqText="请上传项目缩略图" />
</div>
<div class="layui-input-inline">
<img class="coreshop-upload-img" id="viewImgBoxthumbnail" src="{{d.params.data.model.thumbnail || layui.setter.noImagePicUrl }}">
<button type="button" class="layui-btn" id="upBtnthumbnail" lay-active="doCropperImg">上传图片</button>
</div>
</div>
<div class="layui-form-item">
<label for="description" class="layui-form-label layui-form-required">一句话概述</label>
<div class="layui-input-block">
<input name="description" lay-verify="required|verifydescription" class="layui-input" lay-reqText="请输入项目概述" placeholder="请输入项目概述" value="{{d.params.data.model.description || '' }}" />
</div>
</div>
<div class="layui-form-item">
<label for="allowedMembership" class="layui-form-label layui-form-required">允许会员</label>
<div class="layui-input-block">
<div id="selectBox" class="xm-select-demo"></div>
</div>
</div>
<div class="layui-form-item">
<label for="consumableStore" class="layui-form-label layui-form-required">核销门店</label>
<div class="layui-input-block">
<div id="selectStoreBox" class="xm-select-demo"></div>
</div>
</div>
<div class="layui-form-item">
<label for="status" class="layui-form-label layui-form-required">项目状态</label>
<div class="layui-input-inline">
<select name="status">
{{# layui.each(d.params.data.status, function(index, item){ }}
<option value="{{ item.value }}" {{ d.params.data.model.status==item.value ? 'selected="selected"' : '' }}>{{ item.description }}</option>
{{# }); }}
</select>
</div>
<label for="maxBuyNumber" class="layui-form-label layui-form-required">重复购买数</label>
<div class="layui-input-inline layui-inline-2">
<input type="number" min="0" max="999999" name="maxBuyNumber" lay-verify="required|number" class="layui-input" value="{{d.params.data.model.maxBuyNumber}}" placeholder="请输入项目重复购买次数" lay-reqText="请输入项目重复购买次数并为数字" />
</div>
<div class="layui-form-mid">0为不限制</div>
<label for="amount" class="layui-form-label layui-form-required">可销售数量</label>
<div class="layui-input-inline layui-inline-2">
<input type="number" min="0" max="999999" name="amount" lay-verify="required|number" class="layui-input" value="{{d.params.data.model.amount }}" placeholder="请输入项目可销售数量" lay-reqText="请输入项目可销售数量并为数字" />
</div>
<div class="layui-form-mid">销售完售罄状态</div>
</div>
<div class="layui-form-item">
<label for="startTime" class="layui-form-label layui-form-required">可购买时间</label>
<div class="layui-input-inline">
<input name="startTime" id="editTime-CoreCmsServices-startTime" type="text" lay-verify="required|datetime" class="layui-input" placeholder="请输入项目开始时间" lay-reqText="请输入项目开始时间" value="{{d.params.data.model.startTime }}" />
</div>
<div class="layui-form-mid"></div>
<div class="layui-input-inline">
<input name="endTime" id="editTime-CoreCmsServices-endTime" type="text" lay-verify="required|datetime" class="layui-input" placeholder="请输入项目截止时间" lay-reqText="请输入项目截止时间" value="{{d.params.data.model.endTime }}" />
</div>
<div class="layui-form-mid">在此时间段内前端才能进行显示并购买</div>
</div>
<div class="layui-form-item">
<label for="validityType" class="layui-form-label layui-form-required">有效期类型</label>
<div class="layui-input-inline">
<select name="validityType" id="validityType" lay-verify="required" lay-verify="required|number" lay-reqText="请选择核销有效期类型" lay-filter="validityTypeChange">
{{# layui.each(d.params.data.types, function(index, item){ }}
<option value="{{ item.value }}" {{ d.params.data.model.validityType==item.value ? 'selected="selected"' : '' }}>{{ item.description }}</option>
{{# }); }}
</select>
</div>
<div class="layui-form-mid">不限购买后不限制核销服务券时间限时间段只能在允许的时间段内进行服务券的核销消费</div>
</div>
<div class="layui-form-item" style="display: none;" id="validityBox">
<label for="validityStartTime" class="layui-form-label">核销时间段</label>
<div class="layui-input-inline">
<input name="validityStartTime" id="editTime-CoreCmsServices-validityStartTime" type="text" class="layui-input" placeholder="请输入核销开始时间" lay-reqText="请输入核销开始时间" value="{{d.params.data.model.validityStartTime || '' }}" />
</div>
<div class="layui-form-mid"></div>
<div class="layui-input-inline">
<input name="validityEndTime" id="editTime-CoreCmsServices-validityEndTime" type="text" class="layui-input" placeholder="请输入核销结束时间" lay-reqText="请输入核销结束时间" value="{{d.params.data.model.validityEndTime || '' }}" />
</div>
<button type="button" class="layui-btn" lay-active="e1">三月内</button>
<button type="button" class="layui-btn" lay-active="e2">半年内</button>
<button type="button" class="layui-btn" lay-active="e3">一年内</button>
</div>
<div class="layui-form-item">
<label for="ticketNumber" class="layui-form-label layui-form-required">服务券数量</label>
<div class="layui-input-inline layui-inline-2">
<input type="number" min="0" max="999999" name="ticketNumber" lay-verify="required|number" class="layui-input" value="{{d.params.data.model.ticketNumber || '' }}" placeholder="请输入核销服务券数量" lay-reqText="请输入核销服务券数量并为数字" />
</div>
<div class="layui-form-mid">购买服务项目后将按照此数量发送服务券到店使用服务券上的核销码进行核销消费</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="contentBody" class="layui-form-label layui-form-required">详细说明</label>
<div class="layui-input-block">
<div class="document-editor">
<div class="toolbar-container" id="toolbar-container"></div>
<div class="content-container">
<div id="editor"></div>
</div>
</div>
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsServices-editForm-submit" id="LAY-app-CoreCmsServices-editForm-submit" value="确认编辑">
</div>
</div>
</script>
<script>
var debug = layui.setter.debug;
layui.data.sendParams = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'laydate', 'coreHelper', 'cropperImg', 'xmSelect', 'util'],
function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, laydate = layui.laydate
, cropperImg = layui.cropperImg
, xmSelect = layui.xmSelect
, util = layui.util
, coreHelper = layui.coreHelper;
if (d.params.data.model.validityType == 2) {
$('#validityBox').show();
}
let dataStrArr = d.params.data.model.allowedMembership.split(","); //分割成字符串数组
let dataIntArr = [];//保存转换后的整型字符串
dataStrArr.forEach(item => {
dataIntArr.push(+item);
});
var selectBox = xmSelect.render({
el: '#selectBox',
tips: '请选择用户级别?',
name: 'allowedMembership',
layVerify: 'required',
prop: {
name: 'title',
value: 'id',
},
data: d.params.data.userGrade,
initValue: dataIntArr
})
let dataStoreStrArr = d.params.data.model.consumableStore.split(","); //分割成字符串数组
let dataStoreIntArr = [];//保存转换后的整型字符串
dataStoreStrArr.forEach(item => {
dataStoreIntArr.push(+item);
});
var selectStoreBox = xmSelect.render({
el: '#selectStoreBox',
tips: '请选择核销门店?',
name: 'consumableStore',
layVerify: 'required',
prop: {
name: 'storeName',
value: 'id',
},
data: d.params.data.stores,
initValue: dataStoreIntArr
})
//加载编辑器
var Authorization = layui.data(layui.setter.tableName)[layui.setter.request.tokenName];
editor = CKEDITOR.replace('editor', {
fileTools_requestHeaders: {
'Authorization': Authorization
}
});
editor.setData(d.params.data.model.contentBody);
//项目缩略图图片上传
$('#upBtnthumbnail').click(function () {
cropperImg.cropImg({
aspectRatio: 1 / 1,
imgSrc: $('#viewImgBoxthumbnail').attr('src'),
onCrop: function (data) {
var loadIndex = layer.load(2);
coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
if (0 === res.code) {
$('#viewImgBoxthumbnail').attr('src', res.data.fileUrl);
$("#thumbnailInput").val(res.data.fileUrl);
layer.msg(res.msg);
layer.close(loadIndex);
} else {
layer.close(loadIndex);
layer.msg(res.msg, { icon: 2, anim: 6 });
}
});
}
});
});
laydate.render({
elem: '#editTime-CoreCmsServices-startTime',
type: 'datetime'
});
laydate.render({
elem: '#editTime-CoreCmsServices-endTime',
type: 'datetime'
});
laydate.render({
elem: '#editTime-CoreCmsServices-validityStartTime',
type: 'datetime'
});
laydate.render({
elem: '#editTime-CoreCmsServices-validityEndTime',
type: 'datetime'
});
form.verify({
money: [/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/, '请输入金额'],
verifytitle: [/^[\S]{0,50}$/, '项目名称最大只允许输入50位字符且不能出现空格'],
verifythumbnail: [/^[\S]{0,255}$/, '项目缩略图最大只允许输入255位字符且不能出现空格'],
verifydescription: [/^[\S]{0,255}$/, '项目概述最大只允许输入255位字符且不能出现空格'],
verifyallowedMembership: [/^[\S]{0,50}$/, '允许购买会员级别最大只允许输入50位字符且不能出现空格'],
});
form.on('select(validityTypeChange)', function (data) {
console.log(data.value);
if (data.value == 2) {
$('#validityBox').show();
} else {
$('#validityBox').hide();
$('#editTime-CoreCmsServices-validityStartTime').val("");
$('#editTime-CoreCmsServices-validityEndTime').val("");
}
});
//处理属性 为 lay-active 的所有元素事件
util.event('lay-active', {
e1: function () {
$('#editTime-CoreCmsServices-validityStartTime').val(layui.util.toDateString(new Date(), 'yyyy-MM-dd 00:00:00'));
$('#editTime-CoreCmsServices-validityEndTime').val(layui.util.toDateString((new Date()).setMonth((new Date()).getMonth() + 3), 'yyyy-MM-dd 00:00:00'));
}
, e2: function () {
$('#editTime-CoreCmsServices-validityStartTime').val(layui.util.toDateString(new Date(), 'yyyy-MM-dd 00:00:00'));
$('#editTime-CoreCmsServices-validityEndTime').val(layui.util.toDateString((new Date()).setMonth((new Date()).getMonth() + 6), 'yyyy-MM-dd 00:00:00'));
}
, e3: function () {
$('#editTime-CoreCmsServices-validityStartTime').val(layui.util.toDateString(new Date(), 'yyyy-MM-dd 00:00:00'));
$('#editTime-CoreCmsServices-validityEndTime').val(layui.util.toDateString((new Date()).setFullYear((new Date()).getFullYear() + 1), 'yyyy-MM-dd 00:00:00'));
}
});
//重载form
form.render(null, 'LAY-app-CoreCmsServices-editForm');
})
};
</script>

View File

@@ -1,4 +1,4 @@
<title>服务购买</title>
<title>服务项目</title>
<!--当前位置开始-->
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
@@ -10,98 +10,70 @@
<style>
/* 重写样式 */
</style>
<script type="text/html" template lay-type="Post" lay-url="{{ layui.setter.apiUrl }}Api/CoreCmsUserServicesOrder/GetIndex" lay-done="layui.data.done(d);">
<script type="text/html" template lay-type="Post" lay-url="{{ layui.setter.apiUrl }}Api/CoreCmsServices/GetIndex" lay-done="layui.data.done(d);">
</script>
<div class="table-body">
<table id="LAY-app-CoreCmsUserServicesOrder-tableBox" lay-filter="LAY-app-CoreCmsUserServicesOrder-tableBox"></table>
<table id="LAY-app-CoreCmsServices-tableBox" lay-filter="LAY-app-CoreCmsServices-tableBox"></table>
</div>
<script type="text/html" id="LAY-app-CoreCmsUserServicesOrder-toolbar">
<script type="text/html" id="LAY-app-CoreCmsServices-toolbar">
<div class="layui-form coreshop-toolbar-search-form">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" name="serviceOrderId" placeholder="请输入服务订单编号" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" name="userId" placeholder="请输入关联用户" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" name="servicesId" placeholder="请输入关联服务" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="isPay">
<option value="">请选择是否支付</option>
<option value="True"></option>
<option value="False"></option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" name="paymentId" placeholder="请输入支付单号" class="layui-input">
<input type="text" name="title" placeholder="请输入项目名称" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="status">
<option value="">请选择状态</option>
{{# layui.each(indexData.serviceOrderStatus, function(index, item){ }}
<option value="{{ item.value }}">{{ item.title }}</option>
<option value="">请选择项目状态</option>
{{# layui.each(indexData.status, function(index, item){ }}
<option value="{{ item.value }}">{{ item.description }}</option>
{{# }); }}
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline" style="width: 260px;">
<input type="text" name="payTime" id="searchTime-CoreCmsUserServicesOrder-payTime" placeholder="请输入支付时间" class="layui-input">
<div class="layui-input-inline">
<select name="validityType">
<option value="">请选择核销类型</option>
{{# layui.each(indexData.types, function(index, item){ }}
<option value="{{ item.value }}">{{ item.description }}</option>
{{# }); }}
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline" style="width: 260px;">
<input type="text" name="createTime" id="searchTime-CoreCmsUserServicesOrder-createTime" placeholder="请输入订单创建时间" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline" style="width: 260px;">
<input type="text" name="servicesEndTime" id="searchTime-CoreCmsUserServicesOrder-servicesEndTime" placeholder="请输入截止服务时间" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsUserServicesOrder-search"><i class="layui-icon layui-icon-search"></i></button>
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsServices-search"><i class="layui-icon layui-icon-search"></i></button>
</div>
</div>
</div>
</script>
<script type="text/html" id="LAY-app-CoreCmsUserServicesOrder-pagebar">
<script type="text/html" id="LAY-app-CoreCmsServices-pagebar">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="addData"><i class="layui-icon layui-icon-add-1"></i></button>
<button class="layui-btn layui-btn-sm" lay-event="selectExportExcel"><i class="layui-icon layui-icon-add-circle"></i></button>
<button class="layui-btn layui-btn-sm" lay-event="queryExportExcel"><i class="layui-icon layui-icon-download-circle"></i></button>
</div>
</script>
<script type="text/html" id="LAY-app-CoreCmsUserServicesOrder-tableBox-bar">
<a class="layui-btn layui-btn-xs" lay-event="detail">核销码</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#CoreCmsUserServicesOrderTbCancellationDrop{{d.LAY_INDEX}}" no-shade="true">作废</a>
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsUserServicesOrderTbCancellationDrop{{d.LAY_INDEX}}"
<script type="text/html" id="LAY-app-CoreCmsServices-tableBox-bar">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#CoreCmsServicesTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsServicesTbDelDrop{{d.LAY_INDEX}}"
style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
<div class="dropdown-anchor"></div>
<div class="dropdown-popconfirm-title">
<i class="layui-icon layui-icon-help"></i>
确定要作废订单
确定要删除
</div>
<div class="dropdown-popconfirm-btn">
<a class="layui-btn layui-btn-primary cursor" btn-cancel>取消</a>
<a class="layui-btn layui-btn-normal cursor" lay-event="cancellation">确定</a>
<a class="layui-btn layui-btn-normal cursor" lay-event="del">确定</a>
</div>
</div>
</script>
@@ -111,7 +83,7 @@
var debug = layui.setter.debug;
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d); }
if (debug) { console.log(d.data); }
indexData = d.data;
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
@@ -126,22 +98,25 @@
, util = layui.util
, view = layui.view;
//重载form
form.render();
var searchwhere;
//监听搜索
form.on('submit(LAY-app-CoreCmsUserServicesOrder-search)',
form.on('submit(LAY-app-CoreCmsServices-search)',
function (data) {
var field = data.field;
searchwhere = field;
//执行重载
table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox', { where: field });
table.reloadData('LAY-app-CoreCmsServices-tableBox', { where: field });
});
//数据绑定
table.render({
elem: '#LAY-app-CoreCmsUserServicesOrder-tableBox',
url: layui.setter.apiUrl + 'Api/CoreCmsUserServicesOrder/GetPageList',
elem: '#LAY-app-CoreCmsServices-tableBox',
url: layui.setter.apiUrl + 'Api/CoreCmsServices/GetPageList',
method: 'POST',
toolbar: '#LAY-app-CoreCmsUserServicesOrder-toolbar',
pagebar: '#LAY-app-CoreCmsUserServicesOrder-pagebar',
toolbar: '#LAY-app-CoreCmsServices-toolbar',
pagebar: '#LAY-app-CoreCmsServices-pagebar',
className: 'pagebarbox',
defaultToolbar: ['filter', 'print', 'exports'],
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
@@ -152,36 +127,77 @@
cols: [
[
{ type: "checkbox", fixed: "left" },
{ field: 'id', title: '序列', width: 50, sort: false },
{ field: 'serviceOrderId', title: '服务订单编号', sort: false, width: 125 },
{ field: 'id', title: '序列', width: 70, sort: false },
{ field: 'title', title: '项目名称', sort: false, width: 205 },
{
field: 'userId', title: '关联用户', sort: false, width: 155, templet: function (d) {
return d.userId + '【' + d.userName + '】';
field: 'thumbnail', title: '缩略图', sort: false, width: 85,
templet: function (d) {
if (d.thumbnail) {
return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + d.thumbnail + '")><image style="max-width:28px;max-height:28px;" src="' + d.thumbnail + '" /></a>';
} else {
return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + setter.noImagePicUrl + '")><image style="max-width:30px;max-height:30px;" src="' + setter.noImagePicUrl + '" /></a>';
}
}, width: 60
},
{ field: 'money', title: '售价', sort: false, width: 80, templet: function (data) { return '¥' + data.money } },
//{ field: 'description', title: '项目概述', sort: false, width: 105 },
//{ field: 'contentBody', title: '项目详细说明', sort: false, width: 105 },
{
field: 'allowedMembership', title: '允许购买会员级别', sort: false, width: 305, templet: function (data) {
var arr = data.allowedMembership.split(',');
var outStr = "";
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < d.data.userGrade.length; j++) {
if (d.data.userGrade[j].id == arr[i]) {
outStr += '<span class="layui-badge layui-badge-gray">' + d.data.userGrade[j].title + '</span>&nbsp;&nbsp;';
}
}
}
return outStr;
}
},
{ field: 'serviceTitle', title: '关联服务', sort: false },
{ field: 'isPay', title: '是否支付', width: 95, templet: '#switch_isPay', sort: false, unresize: true },
{ field: 'payTime', title: '支付时间', width: 130, sort: false },
{ field: 'paymentId', title: '支付单号', sort: false, width: 125 },
{
field: 'status', title: '状态', sort: false, width: 80, templet: function (data) {
for (var i = 0; i < d.data.serviceOrderStatus.length; i++) {
if (data.status == d.data.serviceOrderStatus[i].value) {
return d.data.serviceOrderStatus[i].description;
field: 'status',
title: '项目状态',
sort: false,
width: 85,
templet: function (data) {
for (var j = 0; j < d.data.status.length; j++) {
if (d.data.status[j].value == data.status) {
return d.data.status[j].description;
}
}
return "";
}
},
{ field: 'createTime', title: '订单创建时间', width: 130, sort: false },
{ field: 'servicesEndTime', title: '截止服务时间', width: 130, sort: false },
{ width: 122, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsUserServicesOrder-tableBox-bar' }
{ field: 'maxBuyNumber', title: '项目重复购买次数', sort: false, width: 125 },
{ field: 'amount', title: '项目可销售数量', sort: false, width: 105 },
{ field: 'startTime', title: '项目开始时间', width: 130, sort: false },
{ field: 'endTime', title: '项目截止时间', width: 130, sort: false },
{
field: 'validityType', title: '核销有效期类型', sort: false, width: 105,
templet: function (data) {
for (var j = 0; j < d.data.types.length; j++) {
if (d.data.types[j].value == data.validityType) {
return d.data.types[j].description;
}
}
return "";
}
},
{ field: 'validityStartTime', title: '核销开始时间', width: 130, sort: false },
{ field: 'validityEndTime', title: '核销结束时间', width: 130, sort: false },
{ field: 'ticketNumber', title: '核销服务券数量', sort: false, width: 105 },
{ field: 'createTime', title: '项目创建时间', width: 130, sort: false },
{ field: 'updateTime', title: '项目更新时间', width: 130, sort: false },
{ width: 142, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsServices-tableBox-bar' }
]
]
});
//监听排序事件
table.on('sort(LAY-app-CoreCmsUserServicesOrder-tableBox)', function (obj) {
table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox', {
table.on('sort(LAY-app-CoreCmsServices-tableBox)', function (obj) {
table.reloadData('LAY-app-CoreCmsServices-tableBox', {
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
orderField: obj.field, //排序字段
@@ -190,14 +206,20 @@
});
});
//监听行双击事件
table.on('rowDouble(LAY-app-CoreCmsUserServicesOrder-tableBox)', function (obj) {
table.on('rowDouble(LAY-app-CoreCmsServices-tableBox)', function (obj) {
//查看详情
doDetails(obj);
});
//头工具栏事件
table.on('pagebar(LAY-app-CoreCmsUserServicesOrder-tableBox)', function (obj) {
table.on('pagebar(LAY-app-CoreCmsServices-tableBox)', function (obj) {
var checkStatus = table.checkStatus(obj.config.id);
switch (obj.event) {
case 'addData':
doCreate();
break;
case 'batchDelete':
doBatchDelete(checkStatus);
break;
case 'selectExportExcel':
doSelectExportExcel(checkStatus);
break;
@@ -207,26 +229,139 @@
};
});
//监听工具条
table.on('tool(LAY-app-CoreCmsUserServicesOrder-tableBox)',
table.on('tool(LAY-app-CoreCmsServices-tableBox)',
function (obj) {
if (obj.event === 'detail') {
doDetails(obj);
} else if (obj.event === 'cancellation') {
doCancellation(obj);
} else if (obj.event === 'del') {
doDelete(obj);
} else if (obj.event === 'edit') {
doEdit(obj)
}
});
//执行创建操作
function doCreate() {
coreHelper.Post("Api/CoreCmsServices/GetCreate", null, function (e) {
if (e.code === 0) {
admin.popup({
shadeClose: false,
title: '创建数据',
area: ['1200px', '90%'],
id: 'LAY-popup-CoreCmsServices-create',
success: function (layero, index) {
view(this.id).render('good/servicegoods/create', { data: e.data }).done(function () {
//监听提交
form.on('submit(LAY-app-CoreCmsServices-createForm-submit)',
function (data) {
var field = data.field; //获取提交的字段
field.contentBody = window.editor.getData();
if (!!!field.contentBody) {
layer.msg('文章详情内容不能为空', { icon: 5 });
return false;
}
if (field.validityType == 2) {
if (!field.validityStartTime || !field.validityStartTime) {
layer.msg('请设置【核销有效时段】', { icon: 5 });
return false;
}
}
if (debug) { console.log(field); } //开启调试返回数据
//提交 Ajax 成功后,关闭当前弹层并重载表格
coreHelper.Post("Api/CoreCmsServices/DoCreate", field, function (e) {
console.log(e)
if (e.code === 0) {
layui.table.reloadData('LAY-app-CoreCmsServices-tableBox'); //重载表格
layer.close(index); //再执行关闭
layer.msg(e.msg);
} else {
layer.msg(e.msg);
}
});
});
});
// 禁止弹窗出现滚动条
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
}
, btn: ['确定', '取消']
, yes: function (index, layero) {
layero.contents().find("#LAY-app-CoreCmsServices-createForm-submit").click();
}
});
} else {
layer.msg(e.msg);
}
});
}
//执行编辑操作
function doEdit(obj) {
coreHelper.Post("Api/CoreCmsServices/GetEdit", { id: obj.data.id }, function (e) {
if (e.code === 0) {
admin.popup({
shadeClose: false,
title: '编辑数据',
area: ['1200px', '90%'],
id: 'LAY-popup-CoreCmsServices-edit',
success: function (layero, index) {
view(this.id).render('good/servicegoods/edit', { data: e.data }).done(function () {
//监听提交
form.on('submit(LAY-app-CoreCmsServices-editForm-submit)',
function (data) {
var field = data.field; //获取提交的字段
field.contentBody = window.editor.getData();
if (!!!field.contentBody) {
layer.msg('文章详情内容不能为空', { icon: 5 });
return false;
}
if (field.validityType == 2) {
if (!field.validityStartTime || !field.validityStartTime) {
layer.msg('请设置【核销有效时段】', { icon: 5 });
return false;
}
}
if (debug) { console.log(field); } //开启调试返回数据
//提交 Ajax 成功后,关闭当前弹层并重载表格
coreHelper.Post("Api/CoreCmsServices/DoEdit", field, function (e) {
console.log(e)
if (e.code === 0) {
layui.table.reloadData('LAY-app-CoreCmsServices-tableBox'); //重载表格
layer.close(index); //再执行关闭
layer.msg(e.msg);
} else {
layer.msg(e.msg);
}
});
});
})
// 禁止弹窗出现滚动条
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
}
, btn: ['确定', '取消']
, yes: function (index, layero) {
layero.contents().find("#LAY-app-CoreCmsServices-editForm-submit").click();
}
});
} else {
layer.msg(e.msg);
}
});
}
//执行预览操作
function doDetails(obj) {
coreHelper.Post("Api/CoreCmsUserServicesOrder/GetDetails", { id: obj.data.id }, function (e) {
coreHelper.Post("Api/CoreCmsServices/GetDetails", { id: obj.data.id }, function (e) {
if (e.code === 0) {
admin.popup({
shadeClose: false,
title: '查看详情',
area: ['1200px', '90%'],
id: 'LAY-popup-CoreCmsUserServicesOrder-details',
id: 'LAY-popup-CoreCmsServices-details',
success: function (layero, index) {
view(this.id).render('order/servicesOrder/details', { data: e.data }).done(function () {
view(this.id).render('good/servicegoods/details', { data: e.data }).done(function () {
form.render();
});
// 禁止弹窗出现滚动条
@@ -238,20 +373,40 @@
}
});
}
//执行作废订
function doCancellation(obj) {
coreHelper.Post("Api/CoreCmsUserServicesOrder/DoCancellation", { id: obj.data.id }, function (e) {
//执行单个删除
function doDelete(obj) {
coreHelper.Post("Api/CoreCmsServices/DoDelete", { id: obj.data.id }, function (e) {
if (debug) { console.log(e); } //开启调试返回数据
table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox');
table.reloadData('LAY-app-CoreCmsServices-tableBox');
layer.msg(e.msg);
});
}
//执行批量删除
function doBatchDelete(checkStatus) {
var checkData = checkStatus.data;
if (checkData.length === 0) {
return layer.msg('请选择要删除的数据');
}
layer.confirm('确定删除吗?删除后将无法恢复。',
function (index) {
var delidsStr = [];
layui.each(checkData,
function (index, item) {
delidsStr.push(item.id);
});
coreHelper.Post("Api/CoreCmsServices/DoBatchDelete", { id: delidsStr }, function (e) {
if (debug) { console.log(e); } //开启调试返回数据
table.reloadData('LAY-app-CoreCmsServices-tableBox');
layer.msg(e.msg);
});
});
}
//执行查询条件导出excel
function doQueryExportexcel() {
layer.confirm('确定根据当前的查询条件导出数据吗?',
function (index) {
var field = searchwhere;
coreHelper.PostForm("Api/CoreCmsUserServicesOrder/QueryExportExcel", field, function (e) {
coreHelper.PostForm("Api/CoreCmsServices/QueryExportExcel", field, function (e) {
if (debug) { console.log(e); } //开启调试返回数据
if (e.code === 0) {
window.open(e.data);
@@ -275,7 +430,7 @@
delidsStr.push(item.id);
});
layer.close(index);
coreHelper.Post("Api/CoreCmsUserServicesOrder/SelectExportExcel", { id: delidsStr }, function (e) {
coreHelper.Post("Api/CoreCmsServices/SelectExportExcel", { id: delidsStr }, function (e) {
if (debug) { console.log(e); } //开启调试返回数据
if (e.code === 0) {
window.open(e.data);
@@ -285,34 +440,27 @@
});
});
}
laydate.render({
elem: '#searchTime-CoreCmsUserServicesOrder-payTime',
type: 'datetime',
range: '到',
});
laydate.render({
elem: '#searchTime-CoreCmsUserServicesOrder-createTime',
type: 'datetime',
range: '到',
});
laydate.render({
elem: '#searchTime-CoreCmsUserServicesOrder-servicesEndTime',
type: 'datetime',
range: '到',
});
//监听 表格复选框操作
//重载form
form.render();
laydate.render({
elem: '#searchTime-CoreCmsServices-startTime',
type: 'datetime',
range: '到',
});
laydate.render({
elem: '#searchTime-CoreCmsServices-endTime',
type: 'datetime',
range: '到',
});
laydate.render({
elem: '#searchTime-CoreCmsServices-validityStartTime',
type: 'datetime',
range: '到',
});
laydate.render({
elem: '#searchTime-CoreCmsServices-validityEndTime',
type: 'datetime',
range: '到',
});
});
};
</script>
<!--设置是否支付-->
<script type="text/html" id="switch_isPay">
<input type="checkbox" name="switch_isPay" value="{{d.id}}" lay-skin="switch" lay-text="已支付|未支付" disabled="disabled" lay-filter="switch_isPay" {{ d.isPay ? 'checked' : '' }}>
</script>
</script>

View File

@@ -1,115 +0,0 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsUserServicesOrder-createForm" id="LAY-app-CoreCmsUserServicesOrder-createForm">
<div class="layui-form-item">
<label for="id" class="layui-form-label layui-form-required">序列</label>
<div class="layui-input-block">
<input type="number" min="0" max="999999" name="id" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入序列" lay-reqText="请输入序列并为数字" />
</div>
</div>
<div class="layui-form-item">
<label for="serviceOrderId" class="layui-form-label layui-form-required">服务订单编号</label>
<div class="layui-input-block">
<input name="serviceOrderId" lay-verType="tips" lay-verify="required|verifyserviceOrderId" class="layui-input" lay-reqText="请输入服务订单编号" placeholder="请输入服务订单编号"/>
</div>
</div>
<div class="layui-form-item">
<label for="userId" class="layui-form-label layui-form-required">关联用户</label>
<div class="layui-input-block">
<input type="number" min="0" max="999999" name="userId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入关联用户" lay-reqText="请输入关联用户并为数字" />
</div>
</div>
<div class="layui-form-item">
<label for="servicesId" class="layui-form-label layui-form-required">关联服务</label>
<div class="layui-input-block">
<input type="number" min="0" max="999999" name="servicesId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入关联服务" lay-reqText="请输入关联服务并为数字" />
</div>
</div>
<div class="layui-form-item" pane>
<label for="isPay" class="layui-form-label layui-form-required">是否支付</label>
<div class="layui-input-block">
<input type="checkbox" lay-filter="switch" name="isPay" lay-skin="switch" lay-text="开启|关闭">
</div>
</div>
<div class="layui-form-item">
<label for="payTime" class="layui-form-label layui-form-required">支付时间</label>
<div class="layui-input-block">
<input name="payTime" id="createTime-CoreCmsUserServicesOrder-payTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入支付时间" lay-reqText="请输入支付时间" />
</div>
</div>
<div class="layui-form-item">
<label for="paymentId" class="layui-form-label layui-form-required">支付单号</label>
<div class="layui-input-block">
<input name="paymentId" lay-verType="tips" lay-verify="required|verifypaymentId" class="layui-input" lay-reqText="请输入支付单号" placeholder="请输入支付单号"/>
</div>
</div>
<div class="layui-form-item">
<label for="status" class="layui-form-label layui-form-required">状态</label>
<div class="layui-input-block">
<input type="number" min="0" max="999999" name="status" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入状态" lay-reqText="请输入状态并为数字" />
</div>
</div>
<div class="layui-form-item">
<label for="createTime" class="layui-form-label layui-form-required">订单创建时间</label>
<div class="layui-input-block">
<input name="createTime" id="createTime-CoreCmsUserServicesOrder-createTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入订单创建时间" lay-reqText="请输入订单创建时间" />
</div>
</div>
<div class="layui-form-item">
<label for="servicesEndTime" class="layui-form-label layui-form-required">截止服务时间</label>
<div class="layui-input-block">
<input name="servicesEndTime" id="createTime-CoreCmsUserServicesOrder-servicesEndTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入截止服务时间" lay-reqText="请输入截止服务时间" />
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserServicesOrder-createForm-submit" id="LAY-app-CoreCmsUserServicesOrder-createForm-submit" value="确认添加">
</div>
</div>
</script>
<script>
var debug= layui.setter.debug;
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, laydate = layui.laydate
, upload = layui.upload
, cropperImg = layui.cropperImg
, coreHelper = layui.coreHelper;
laydate.render({
elem: '#createTime-CoreCmsUserServicesOrder-payTime',
type: 'datetime'
});
laydate.render({
elem: '#createTime-CoreCmsUserServicesOrder-createTime',
type: 'datetime'
});
laydate.render({
elem: '#createTime-CoreCmsUserServicesOrder-servicesEndTime',
type: 'datetime'
});
form.verify({
verifyserviceOrderId: [/^.{0,50}$/,'服务订单编号最大只允许输入50位字符'],
verifypaymentId: [/^.{0,50}$/,'支付单号最大只允许输入50位字符'],
});
//重载form
form.render(null, 'LAY-app-CoreCmsUserServicesOrder-createForm');
})
};
</script>

View File

@@ -1,115 +0,0 @@
<script type="text/html" template lay-done="layui.data.sendParams(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsUserServicesOrder-editForm" id="LAY-app-CoreCmsUserServicesOrder-editForm">
<input type="hidden" name="id" value="{{d.params.data.id || '' }}" />
<div class="layui-form-item">
<label for="id" class="layui-form-label layui-form-required">序列</label>
<div class="layui-input-block">
<input type="number" min="0" max="999999" name="id" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.id || '' }}" placeholder="请输入序列" lay-reqText="请输入序列并为数字" />
</div>
</div>
<div class="layui-form-item">
<label for="serviceOrderId" class="layui-form-label layui-form-required">服务订单编号</label>
<div class="layui-input-block">
<input name="serviceOrderId" lay-verType="tips" lay-verify="required|verifyserviceOrderId" class="layui-input" placeholder="请输入服务订单编号" lay-reqText="请输入服务订单编号" value="{{d.params.data.serviceOrderId || '' }}" />
</div>
</div>
<div class="layui-form-item">
<label for="userId" class="layui-form-label layui-form-required">关联用户</label>
<div class="layui-input-block">
<input type="number" min="0" max="999999" name="userId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.userId || '' }}" placeholder="请输入关联用户" lay-reqText="请输入关联用户并为数字" />
</div>
</div>
<div class="layui-form-item">
<label for="servicesId" class="layui-form-label layui-form-required">关联服务</label>
<div class="layui-input-block">
<input type="number" min="0" max="999999" name="servicesId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.servicesId || '' }}" placeholder="请输入关联服务" lay-reqText="请输入关联服务并为数字" />
</div>
</div>
<div class="layui-form-item" pane>
<label for="isPay" class="layui-form-label layui-form-required">是否支付</label>
<div class="layui-input-block">
<input type="checkbox" lay-filter="switch" name="isPay" {{ d.params.data.isPay ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
</div>
</div>
<div class="layui-form-item">
<label for="payTime" class="layui-form-label layui-form-required">支付时间</label>
<div class="layui-input-block">
<input name="payTime" id="editTime-CoreCmsUserServicesOrder-payTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入支付时间" lay-reqText="请输入支付时间" value="{{d.params.data.payTime || '' }}"/>
</div>
</div>
<div class="layui-form-item">
<label for="paymentId" class="layui-form-label layui-form-required">支付单号</label>
<div class="layui-input-block">
<input name="paymentId" lay-verType="tips" lay-verify="required|verifypaymentId" class="layui-input" placeholder="请输入支付单号" lay-reqText="请输入支付单号" value="{{d.params.data.paymentId || '' }}" />
</div>
</div>
<div class="layui-form-item">
<label for="status" class="layui-form-label layui-form-required">状态</label>
<div class="layui-input-block">
<input type="number" min="0" max="999999" name="status" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.status || '' }}" placeholder="请输入状态" lay-reqText="请输入状态并为数字" />
</div>
</div>
<div class="layui-form-item">
<label for="createTime" class="layui-form-label layui-form-required">订单创建时间</label>
<div class="layui-input-block">
<input name="createTime" id="editTime-CoreCmsUserServicesOrder-createTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入订单创建时间" lay-reqText="请输入订单创建时间" value="{{d.params.data.createTime || '' }}"/>
</div>
</div>
<div class="layui-form-item">
<label for="servicesEndTime" class="layui-form-label layui-form-required">截止服务时间</label>
<div class="layui-input-block">
<input name="servicesEndTime" id="editTime-CoreCmsUserServicesOrder-servicesEndTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入截止服务时间" lay-reqText="请输入截止服务时间" value="{{d.params.data.servicesEndTime || '' }}"/>
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserServicesOrder-editForm-submit" id="LAY-app-CoreCmsUserServicesOrder-editForm-submit" value="确认编辑">
</div>
</div>
</script>
<script>
var debug= layui.setter.debug;
layui.data.sendParams = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, laydate = layui.laydate
, upload = layui.upload
, cropperImg = layui.cropperImg
, coreHelper = layui.coreHelper;
laydate.render({
elem: '#editTime-CoreCmsUserServicesOrder-payTime',
type: 'datetime'
});
laydate.render({
elem: '#editTime-CoreCmsUserServicesOrder-createTime',
type: 'datetime'
});
laydate.render({
elem: '#editTime-CoreCmsUserServicesOrder-servicesEndTime',
type: 'datetime'
});
form.verify({
verifyserviceOrderId: [/^.{0,50}$/,'服务订单编号最大只允许输入50位字符'],
verifypaymentId: [/^.{0,50}$/,'支付单号最大只允许输入50位字符'],
});
//重载form
form.render(null, 'LAY-app-CoreCmsUserServicesOrder-editForm');
})
};
</script>

View File

@@ -305,15 +305,6 @@
//监听 表格复选框操作
layui.form.on('switch(switch_isPay)', function (obj) {
coreHelper.Post("Api/CoreCmsUserServicesOrder/DoSetisPay", { id: this.value, data: obj.elem.checked }, function (e) {
if (debug) { console.log(e); } //开启调试返回数据
//table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox');
layer.msg(e.msg);
});
});
//重载form
form.render();
});
@@ -322,6 +313,6 @@
<!--设置是否支付-->
<script type="text/html" id="switch_isPay">
<input type="checkbox" name="switch_isPay" value="{{d.id}}" lay-skin="switch" lay-text="已支付|未支付" lay-filter="switch_isPay" {{ d.isPay ? 'checked' : '' }}>
<input type="checkbox" name="switch_isPay" value="{{d.id}}" lay-skin="switch" lay-text="已支付|未支付" disabled="disabled" lay-filter="switch_isPay" {{ d.isPay ? 'checked' : '' }}>
</script>

View File

@@ -76,7 +76,6 @@
<div class="layui-form-mid layui-word-aux">清除连续签到次数</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="save">保存更改</button>
@@ -103,24 +102,18 @@
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
<legend>会员组设置</legend>
</fieldset>
{{# layui.each(item.details, function(indexChild, itemChild){ }}
{{# layui.each(d.data.newDetails[index], function(indexChild, itemChild){ }}
<div class="layui-form-item listItems">
<input type="hidden" id="detailsId" name="continuousCheckInRules.details[{{index}}].id[{{indexChild}}]" value="{{itemChild.id}}">
<input type="hidden" id="detailsUserGradeId" name="continuousCheckInRules.details[{{index}}].userGradeId[{{indexChild}}]" value="{{itemChild.userGradeId}}">
<input type="hidden" id="detailsRuleId" name="continuousCheckInRules.details[{{index}}].ruleId[{{indexChild}}]" value="{{itemChild.ruleId}}">
<label class="layui-form-label">
{{# layui.each(d.data.userGrade, function(indexGrade, itemGrade){ }}
{{# if(itemChild.userGradeId === itemGrade.id){ }}
{{ itemGrade.title }}
{{# } }}
{{# }); }}
</label>
<input type="hidden" id="detailsId" name="continuousCheckInRules.details[{{index}}].id[{{indexChild}}]" value="{{ itemChild.details ? itemChild.details.id : 0}}">
<input type="hidden" id="detailsUserGradeId" name="continuousCheckInRules.details[{{index}}].userGradeId[{{indexChild}}]" value="{{itemChild.grand.id}}">
<input type="hidden" id="detailsRuleId" name="continuousCheckInRules.details[{{index}}].ruleId[{{indexChild}}]" value="{{ item.id }}">
<label class="layui-form-label">{{ itemChild.grand.title }}</label>
<div class="layui-input-inline layui-inline-2">
<input type="number" id="detailsNum" name="continuousCheckInRules.details[{{index}}].num[{{indexChild}}]" value="{{itemChild.num}}" lay-verify="required|number" autocomplete="off" placeholder="" class="layui-input">
<input type="number" id="detailsNum" name="continuousCheckInRules.details[{{index}}].num[{{indexChild}}]" value="{{itemChild.details ? itemChild.details.num : 0}}" lay-verify="required|number" autocomplete="off" placeholder="" class="layui-input">
</div>
<div class="layui-input-inline layui-inline-4">
<input type="radio" id="detailsType" name="continuousCheckInRules.details[{{index}}].type[{{indexChild}}]" value="1" title="积分" {{itemChild.type==1?'checked="checked"':''}}>
<input type="radio" id="detailsType" name="continuousCheckInRules.details[{{index}}].type[{{indexChild}}]" value="2" title="余额" {{itemChild.type==2?'checked="checked"':''}}>
<input type="radio" id="detailsType" name="continuousCheckInRules.details[{{index}}].type[{{indexChild}}]" value="1" title="积分" {{(itemChild.details && itemChild.details.type==1)|| !itemChild.details?'checked="checked"':''}}>
<input type="radio" id="detailsType" name="continuousCheckInRules.details[{{index}}].type[{{indexChild}}]" value="2" title="余额" {{itemChild.details && itemChild.details.type==2?'checked="checked"':''}}>
</div>
</div>
{{# }); }}
@@ -193,11 +186,10 @@
</div>
</script>
<script id="continuousCheckInBoxTmp" type="text/html">
<div class="continuousCheckInBox coreshop-solid" data-id="{{d.index}}">
<div class="layui-form-item">
<label class="layui-form-label">累计签到天数</label>
<label class="layui-form-label">连续签到天数</label>
<div class="layui-input-inline">
<input type="hidden" id="id" name="continuousCheckInRules.id[{{d.index}}]" value="0">
<input type="number" id="days" name="continuousCheckInRules.days[{{d.index}}]" value="100" lay-verify="required|number" autocomplete="off" placeholder="" class="layui-input">
@@ -264,6 +256,7 @@
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d); }
indexData = d.data;
layui.use(['admin', 'form', 'coreHelper', 'element', 'table', 'util', 'laytpl', 'table', 'laydate'], function () {
var $ = layui.$
, setter = layui.setter
@@ -278,7 +271,6 @@
, router = layui.router()
, search = router.search;
//时间选择器
laydate.render({
elem: '#checkInAlertTime'
@@ -304,7 +296,6 @@
index: continuousCheckInRulesCount,
userGrade: d.data.userGrade
};
console.log(data);
var getTpl = continuousCheckInBoxTmp.innerHTML;
laytpl(getTpl).render(data, function (html) {
$("#continuousCheckInRulesCount").before(html);
@@ -326,7 +317,7 @@
//重置排序
function resetContinuousCheckInRulesInputNameID() {
$.each($("#continuousCheckInBox .continuousCheckInBox"), function (i, item) {
var oldIndex = $(this).attr('data-id');
//var oldIndex = $(this).attr('data-id');
$(this).attr('data-id', i);
$(this).find("#id").attr("name", "continuousCheckInRules.id[" + i + "]");
$(this).find("#days").attr("name", "continuousCheckInRules.days[" + i + "]");
@@ -510,7 +501,6 @@
});
});
form.render();
});
}

View File

@@ -21,7 +21,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label">客服地址</label>
<div class="layui-input-inline layui-inline-12">
<input name="service_agent_path" class="layui-input" placeholder="请输入客服地址" lay-reqText="请输入客服地址" value="{{d.data.service_agent_path ? d.data.service_agent_path:''}}" />
<input name="service_agent_path" class="layui-input" placeholder="请输入客服地址" lay-reqText="请输入客服地址" value="{{d.data && d.data.service_agent_path ? d.data.service_agent_path:''}}" />
</div>
<div class="layui-form-mid">
输入小程序的客服自定义地址/pages/member/customerService/index
@@ -30,7 +30,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label">联系方式</label>
<div class="layui-input-inline layui-inline-12">
<input name="service_agent_phone" class="layui-input" placeholder="请输入客服地址" lay-reqText="请输入客服地址" value="{{d.data.service_agent_phone ? d.data.service_agent_phone:''}}" />
<input name="service_agent_phone" class="layui-input" placeholder="请输入客服地址" lay-reqText="请输入客服地址" value="{{d.data && d.data.service_agent_phone ? d.data.service_agent_phone:''}}" />
</div>
<div class="layui-form-mid">
020-888888
@@ -50,7 +50,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label layui-form-required">收货人姓名</label>
<div class="layui-input-inline layui-inline-8">
<input name="receiver_name" lay-verify="required" class="layui-input" placeholder="请输入收货人姓名" lay-reqText="请输入收货人姓名" value="{{d.data.default_receiving_address ? d.data.default_receiving_address.receiver_name:''}}" />
<input name="receiver_name" lay-verify="required" class="layui-input" placeholder="请输入收货人姓名" lay-reqText="请输入收货人姓名" value="{{d.data && d.data.default_receiving_address ? d.data.default_receiving_address.receiver_name:''}}" />
</div>
<div class="layui-form-mid">
张三
@@ -60,7 +60,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label layui-form-required">收货地址</label>
<div class="layui-input-inline layui-inline-8">
<input name="detailed_address" lay-verify="required" class="layui-input" placeholder="请输入详细收货地址信息" lay-reqText="请输入详细收货地址信息" value="{{d.data.default_receiving_address ? d.data.default_receiving_address.detailed_address:''}}" />
<input name="detailed_address" lay-verify="required" class="layui-input" placeholder="请输入详细收货地址信息" lay-reqText="请输入详细收货地址信息" value="{{d.data && d.data.default_receiving_address ? d.data.default_receiving_address.detailed_address:''}}" />
</div>
<div class="layui-form-mid">
详细收货地址信息
@@ -69,7 +69,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label layui-form-required">手机号码</label>
<div class="layui-input-inline layui-inline-8">
<input name="tel_number" lay-verify="required|phone" class="layui-input" placeholder="请输入手机号码" lay-reqText="请输入手机号码" value="{{d.data.default_receiving_address ? d.data.default_receiving_address.tel_number:''}}" />
<input name="tel_number" lay-verify="required|phone" class="layui-input" placeholder="请输入手机号码" lay-reqText="请输入手机号码" value="{{d.data && d.data.default_receiving_address ? d.data.default_receiving_address.tel_number:''}}" />
</div>
<div class="layui-form-mid">
19145919666
@@ -79,7 +79,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label">国家</label>
<div class="layui-input-inline layui-inline-8">
<input name="country" class="layui-input" placeholder="请输入手机号码" lay-reqText="请输入手机号码" value="{{d.data.default_receiving_address ? d.data.default_receiving_address.country:''}}" />
<input name="country" class="layui-input" placeholder="请输入手机号码" lay-reqText="请输入手机号码" value="{{d.data && d.data.default_receiving_address ? d.data.default_receiving_address.country:''}}" />
</div>
<div class="layui-form-mid">
选填中国
@@ -89,7 +89,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label layui-form-required">省份</label>
<div class="layui-input-inline layui-inline-8">
<input name="province" class="layui-input" lay-verify="required" placeholder="请输入手机号码" lay-reqText="请输入手机号码" value="{{d.data.default_receiving_address ? d.data.default_receiving_address.province:''}}" />
<input name="province" class="layui-input" lay-verify="required" placeholder="请输入手机号码" lay-reqText="请输入手机号码" value="{{d.data && d.data.default_receiving_address ? d.data.default_receiving_address.province:''}}" />
</div>
<div class="layui-form-mid">
选填湖南省
@@ -99,7 +99,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label layui-form-required"></label>
<div class="layui-input-inline layui-inline-8">
<input name="city" class="layui-input" lay-verify="required" placeholder="请输入城市" lay-reqText="请输入城市" value="{{d.data.default_receiving_address ? d.data.default_receiving_address.city:''}}" />
<input name="city" class="layui-input" lay-verify="required" placeholder="请输入城市" lay-reqText="请输入城市" value="{{d.data && d.data.default_receiving_address ? d.data.default_receiving_address.city:''}}" />
</div>
<div class="layui-form-mid">
选填怀化市
@@ -109,7 +109,7 @@
<div class="layui-form-item">
<label for="licenseImage" class="layui-form-label layui-form-required"></label>
<div class="layui-input-inline layui-inline-8">
<input name="town" class="layui-input" lay-verify="required" placeholder="请输入乡镇" lay-reqText="请输入乡镇" value="{{d.data.default_receiving_address ? d.data.default_receiving_address.town:''}}" />
<input name="town" class="layui-input" lay-verify="required" placeholder="请输入乡镇" lay-reqText="请输入乡镇" value="{{d.data && d.data.default_receiving_address ? d.data.default_receiving_address.town:''}}" />
</div>
<div class="layui-form-mid">
选填鹤城区
@@ -158,6 +158,9 @@
verifylicenseImage: [/^.{0,255}$/, '最大只允许输入255位字符'],
});
if (!d.data) {
layer.msg(d.msg, { icon: 5 });
}
//保存数据
form.on('submit(LAY-app-WeChatTransactionComponentAuditCategory-updateInfo-submit)', function (data) {