mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2026-03-22 16:17:21 +08:00
# 2022-01-17
### 1.3.0 开源社区版: 【新增】完善商品查看详情功能。#I4QTLR 【新增】订单详情页面需要增加下单客户信息。 【新增】完善服务订单管理功能,实现订单作废、导出功能;核销码实现列表,作废,导出功能。#I4OSBK 【修复】修复普通订单查看详情,因优惠信息问题导致的异常情况。#I4QXUQ 【修复】修复门店列表下的用户编辑页面名称大小写问题(linux下大小写敏感问题)。 【修复】修复微信支付成功相应的日志记录类型有误。#I4QSNZ 【修复】修复发货日志记录sku货号错误问题。#I4PX25 【修复】修复发货单列表查看详情,提示权限不足的问题。#I4QDQR ### 0.0.8 会员专业版: 【新增】新增接龙功能营销功能,实现单个活动,可以添加多个不同商品的不同sku混合选择下单。 【新增】增加接龙数据库脚本及演示文件。 【升级】升级uView组件到2.0.20版本。 【修复】修复编辑收货地址的路径中选取区域部分可以手动输入文字。 【修复】修复【微信直播带货】组件缺少获取sku分页数据的问题。#I4QKSU 【优化】调整【微信自定义交易组件】商品类目排序方式及展示内容。#I4QE0N
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.0" />
|
||||||
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.2.1" />
|
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.5.0" />
|
||||||
<PackageReference Include="StackExchange.Redis" Version="2.2.88" />
|
<PackageReference Include="StackExchange.Redis" Version="2.2.88" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="DotLiquid" Version="2.2.585" />
|
<PackageReference Include="DotLiquid" Version="2.2.585" />
|
||||||
<PackageReference Include="sqlSugarCore" Version="5.0.5.1" />
|
<PackageReference Include="sqlSugarCore" Version="5.0.5.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="10.1.1" />
|
<PackageReference Include="AutoMapper" Version="11.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -278,7 +278,8 @@
|
|||||||
public const string CacheCoreCmsProductsDistribution = "CacheCoreCmsProductsDistribution"; //货品三级佣金表
|
public const string CacheCoreCmsProductsDistribution = "CacheCoreCmsProductsDistribution"; //货品三级佣金表
|
||||||
public const string CacheCoreCmsServiceDescription = "CacheCoreCmsServiceDescription";
|
public const string CacheCoreCmsServiceDescription = "CacheCoreCmsServiceDescription";
|
||||||
public const string CacheCoreCmsAgentGrade = "CacheCoreCmsAgentGrade";
|
public const string CacheCoreCmsAgentGrade = "CacheCoreCmsAgentGrade";
|
||||||
|
public const string CacheCoreCmsSolitaireItems = "CacheCoreCmsSolitaireItems";
|
||||||
|
public const string CacheCoreCmsSolitaire = "CacheCoreCmsSolitaire";
|
||||||
public const string CacheWeChatTCThirdCatList = "CacheWeChatTCThirdCatList";
|
public const string CacheWeChatTCThirdCatList = "CacheWeChatTCThirdCatList";
|
||||||
public const string CacheWeChatTransactionComponentGood = "CacheWeChatTransactionComponentGood";
|
public const string CacheWeChatTransactionComponentGood = "CacheWeChatTransactionComponentGood";
|
||||||
public const string CacheWeChatTransactionComponentDeliveryCompany = "CacheWeChatTransactionComponentDeliveryCompany";
|
public const string CacheWeChatTransactionComponentDeliveryCompany = "CacheWeChatTransactionComponentDeliveryCompany";
|
||||||
|
|||||||
@@ -1839,6 +1839,11 @@ namespace CoreCms.Net.Configuration
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("11代理")]
|
[Description("11代理")]
|
||||||
Agent = 11,
|
Agent = 11,
|
||||||
|
/// <summary>
|
||||||
|
/// 12接龙
|
||||||
|
/// </summary>
|
||||||
|
[Description("12接龙")]
|
||||||
|
Solitaire = 12,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -2491,27 +2496,25 @@ namespace CoreCms.Net.Configuration
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 正常
|
/// 正常
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("正常")]
|
[Description("<button type='button' class='layui-btn layui-btn-normal layui-btn-xs'>正常</button>")]
|
||||||
Normal = 0,
|
Normal = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 过期
|
/// 过期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("过期")]
|
[Description("<button type='button' class='layui-btn layui-btn-warm layui-btn-disabled layui-btn-xs'>过期</button>")]
|
||||||
Overdue = 1,
|
Overdue = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 作废
|
/// 作废
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("作废")]
|
[Description("<button type='button' class='layui-btn layui-btn-primary layui-btn-disabled layui-btn-xs'>作废</button>")]
|
||||||
Cancellation = 2,
|
Cancellation = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 已核销
|
/// 已核销
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("已核销")]
|
[Description("<button type='button' class='layui-btn layui-btn-disabled layui-btn-xs'>已核销</button>")]
|
||||||
Verification = 3
|
Verification = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 服务订单状态
|
/// 服务订单状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -2520,24 +2523,24 @@ namespace CoreCms.Net.Configuration
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 正常
|
/// 正常
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("正常")]
|
[Description("<button type='button' class='layui-btn layui-btn-normal layui-btn-xs'>订单正常</button>")]
|
||||||
正常 = 1,
|
正常 = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 作废
|
/// 作废
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("作废")]
|
[Description("<button type='button' class='layui-btn layui-btn-primary layui-btn-disabled layui-btn-xs'>订单作废</button>")]
|
||||||
作废 = 2,
|
作废 = 2,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 过期
|
/// 过期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("过期")]
|
[Description("<button type='button' class='layui-btn layui-btn-warm layui-btn-disabled layui-btn-xs'>订单过期</button>")]
|
||||||
过期 = 3,
|
过期 = 3,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用罄
|
/// 用罄
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("用罄")]
|
[Description("<button type='button' class='layui-btn layui-btn-disabled layui-btn-xs'>订单用罄</button>")]
|
||||||
用罄 = 4
|
用罄 = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -537,6 +537,15 @@ namespace CoreCms.Net.Configuration
|
|||||||
public const string Code20039 = "";
|
public const string Code20039 = "";
|
||||||
public const string Code20040 = "";
|
public const string Code20040 = "";
|
||||||
|
|
||||||
|
//接龙
|
||||||
|
public const string Code21001 = "没有找到此接龙活动";
|
||||||
|
public const string Code21002 = "还没到时间";
|
||||||
|
public const string Code21003 = "已经结束了";
|
||||||
|
public const string Code21004 = "未获取到此活动下货品信息";
|
||||||
|
public const string Code21005 = "活动下未找到此货品信息";
|
||||||
|
public const string Code21006 = "货品折扣后价格已经小于0";
|
||||||
|
|
||||||
|
|
||||||
//会员管理 -21000
|
//会员管理 -21000
|
||||||
|
|
||||||
//商品管理 -22000
|
//商品管理 -22000
|
||||||
|
|||||||
@@ -20,13 +20,13 @@
|
|||||||
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
|
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
|
||||||
<PackageReference Include="Hangfire.MySqlStorage" Version="2.0.3" />
|
<PackageReference Include="Hangfire.MySqlStorage" Version="2.0.3" />
|
||||||
<PackageReference Include="Hangfire.Redis.StackExchange" Version="1.8.5" />
|
<PackageReference Include="Hangfire.Redis.StackExchange" Version="1.8.5" />
|
||||||
<PackageReference Include="InitQ" Version="1.0.0.8" />
|
<PackageReference Include="InitQ" Version="1.0.0.9" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
|
||||||
<PackageReference Include="Microsoft.OpenApi" Version="1.2.3" />
|
<PackageReference Include="Microsoft.OpenApi" Version="1.2.3" />
|
||||||
<PackageReference Include="Qc.YilianyunSdk" Version="1.0.7" />
|
<PackageReference Include="Qc.YilianyunSdk" Version="1.0.7" />
|
||||||
<PackageReference Include="SqlSugar.IOC" Version="1.7.0" />
|
<PackageReference Include="SqlSugar.IOC" Version="1.7.0" />
|
||||||
<PackageReference Include="sqlSugarCore" Version="5.0.5.1" />
|
<PackageReference Include="sqlSugarCore" Version="5.0.5.3" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.2" />
|
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -149,6 +149,23 @@ namespace CoreCms.Net.IRepository
|
|||||||
Task<IPageList<CoreCmsGoods>> QueryAgentGoodsPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
Task<IPageList<CoreCmsGoods>> QueryAgentGoodsPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
||||||
string orderBy = "", int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false);
|
string orderBy = "", int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据条件查询商品及sku分页数据
|
||||||
|
/// </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>
|
||||||
|
Task<IPageList<CoreCmsGoods>> QueryGoodAndSkuPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取下拉商品数据
|
/// 获取下拉商品数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -8,7 +8,12 @@
|
|||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
namespace CoreCms.Net.IRepository
|
namespace CoreCms.Net.IRepository
|
||||||
{
|
{
|
||||||
@@ -59,5 +64,22 @@ namespace CoreCms.Net.IRepository
|
|||||||
//new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
//new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
new Task<IPageList<CoreCmsUserServicesOrder>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsUserServicesOrder, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsUserServicesOrder, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,12 @@
|
|||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
namespace CoreCms.Net.IRepository
|
namespace CoreCms.Net.IRepository
|
||||||
{
|
{
|
||||||
@@ -59,5 +64,22 @@ namespace CoreCms.Net.IRepository
|
|||||||
//new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
//new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
new Task<IPageList<CoreCmsUserServicesTicket>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsUserServicesTicket, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsUserServicesTicket, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:18:18
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
|
||||||
|
namespace CoreCms.Net.IRepository
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动商品表 工厂接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ICoreCmsSolitaireItemsRepository : IBaseRepository<CoreCmsSolitaireItems>
|
||||||
|
{
|
||||||
|
#region 重写增删改查操作===========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> InsertAsync(CoreCmsSolitaireItems entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(CoreCmsSolitaireItems entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(List<CoreCmsSolitaireItems> entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdAsync(object id);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 获取缓存的所有数据==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取缓存的所有数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<CoreCmsSolitaireItems>> GetCaChe();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新cache
|
||||||
|
/// </summary>
|
||||||
|
Task<List<CoreCmsSolitaireItems>> UpdateCaChe();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写根据条件查询列表数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="predicate">判断集合</param>
|
||||||
|
/// <param name="orderByType">排序方式</param>
|
||||||
|
/// <param name="orderByExpression"></param>
|
||||||
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<List<CoreCmsSolitaireItems>> QueryListByClauseAsync(
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, object>> orderByExpression, OrderByType orderByType,
|
||||||
|
bool blUseNoLock = false);
|
||||||
|
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
new Task<IPageList<CoreCmsSolitaireItems>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
120
CoreCms.Net.IRepository/Solitaire/ICoreCmsSolitaireRepository.cs
Normal file
120
CoreCms.Net.IRepository/Solitaire/ICoreCmsSolitaireRepository.cs
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:17:57
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.DTO;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
|
||||||
|
namespace CoreCms.Net.IRepository
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动表 工厂接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ICoreCmsSolitaireRepository : IBaseRepository<CoreCmsSolitaire>
|
||||||
|
{
|
||||||
|
#region 重写增删改查操作===========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> InsertAsync(CoreCmsSolitaire entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(CoreCmsSolitaire entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(List<CoreCmsSolitaire> entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdAsync(object id);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 获取缓存的所有数据==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取缓存的所有数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<CoreCmsSolitaire>> GetCaChe();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新cache
|
||||||
|
/// </summary>
|
||||||
|
Task<List<CoreCmsSolitaire>> UpdateCaChe();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
new Task<IPageList<CoreCmsSolitaire>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsSolitaire, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaire, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 取购物车数据的时候,更新价格
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="objectId"></param>
|
||||||
|
/// <param name="list"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<WebApiCallBack> SolitaireInfo(int objectId, List<CartProducts> list);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取接龙购买用户记录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<WebApiCallBack> GetBuyRecord(int id);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -201,6 +201,21 @@ namespace CoreCms.Net.IServices
|
|||||||
Task<IPageList<CoreCmsGoods>> QueryAgentGoodsPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
Task<IPageList<CoreCmsGoods>> QueryAgentGoodsPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
||||||
string orderBy = "", int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false);
|
string orderBy = "", int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据条件查询商品及sku分页数据
|
||||||
|
/// </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>
|
||||||
|
Task<IPageList<CoreCmsGoods>> QueryGoodAndSkuPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取下拉商品数据
|
/// 获取下拉商品数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -8,9 +8,13 @@
|
|||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq.Expressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
namespace CoreCms.Net.IServices
|
namespace CoreCms.Net.IServices
|
||||||
{
|
{
|
||||||
@@ -26,5 +30,23 @@ namespace CoreCms.Net.IServices
|
|||||||
/// <param name="paymentId"></param>
|
/// <param name="paymentId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<WebApiCallBack> CreateUserServicesTickets(string serviceOrderId, string paymentId);
|
Task<WebApiCallBack> CreateUserServicesTickets(string serviceOrderId, string paymentId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
new Task<IPageList<CoreCmsUserServicesOrder>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsUserServicesOrder, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsUserServicesOrder, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,12 @@
|
|||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
namespace CoreCms.Net.IServices
|
namespace CoreCms.Net.IServices
|
||||||
{
|
{
|
||||||
@@ -17,5 +22,24 @@ namespace CoreCms.Net.IServices
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ICoreCmsUserServicesTicketServices : IBaseServices<CoreCmsUserServicesTicket>
|
public interface ICoreCmsUserServicesTicketServices : IBaseServices<CoreCmsUserServicesTicket>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/// <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>
|
||||||
|
new Task<IPageList<CoreCmsUserServicesTicket>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsUserServicesTicket, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsUserServicesTicket, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:18:18
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.IServices
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动商品表 服务工厂接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ICoreCmsSolitaireItemsServices : IBaseServices<CoreCmsSolitaireItems>
|
||||||
|
{
|
||||||
|
#region 重写增删改查操作===========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> InsertAsync(CoreCmsSolitaireItems entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(CoreCmsSolitaireItems entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(List<CoreCmsSolitaireItems> entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdAsync(object id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 获取缓存的所有数据==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取缓存的所有数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<CoreCmsSolitaireItems>> GetCaChe();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新cache
|
||||||
|
/// </summary>
|
||||||
|
Task<List<CoreCmsSolitaireItems>> UpdateCaChe();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写根据条件查询列表数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="predicate">判断集合</param>
|
||||||
|
/// <param name="orderByType">排序方式</param>
|
||||||
|
/// <param name="orderByExpression"></param>
|
||||||
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<List<CoreCmsSolitaireItems>> QueryListByClauseAsync(
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, object>> orderByExpression, OrderByType orderByType,
|
||||||
|
bool blUseNoLock = false);
|
||||||
|
|
||||||
|
|
||||||
|
#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>
|
||||||
|
new Task<IPageList<CoreCmsSolitaireItems>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
117
CoreCms.Net.IServices/Solitaire/ICoreCmsSolitaireServices.cs
Normal file
117
CoreCms.Net.IServices/Solitaire/ICoreCmsSolitaireServices.cs
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:17:57
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.DTO;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.IServices
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动表 服务工厂接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ICoreCmsSolitaireServices : IBaseServices<CoreCmsSolitaire>
|
||||||
|
{
|
||||||
|
#region 重写增删改查操作===========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> InsertAsync(CoreCmsSolitaire entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(CoreCmsSolitaire entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(List<CoreCmsSolitaire> entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdAsync(object id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 获取缓存的所有数据==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取缓存的所有数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<CoreCmsSolitaire>> GetCaChe();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新cache
|
||||||
|
/// </summary>
|
||||||
|
Task<List<CoreCmsSolitaire>> UpdateCaChe();
|
||||||
|
|
||||||
|
#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>
|
||||||
|
new Task<IPageList<CoreCmsSolitaire>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsSolitaire, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaire, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 取购物车数据的时候,更新价格
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="objectId"></param>
|
||||||
|
/// <param name="list"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<WebApiCallBack> SolitaireInfo(int objectId, List<CartProducts> list);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取接龙购买用户记录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<WebApiCallBack> GetBuyRecord(int id);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="10.1.1" />
|
<PackageReference Include="AutoMapper" Version="11.0.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="sqlSugarCore" Version="5.0.5.1" />
|
<PackageReference Include="sqlSugarCore" Version="5.0.5.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -89,6 +89,11 @@ namespace CoreCms.Net.Model.Entities
|
|||||||
[SugarColumn(IsIgnore = true)]
|
[SugarColumn(IsIgnore = true)]
|
||||||
public CoreCmsProducts product { get; set; } = new();
|
public CoreCmsProducts product { get; set; } = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 关联SKU
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsIgnore = true)]
|
||||||
|
public List<CoreCmsProducts> sku { get; set; } = new();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否收藏
|
/// 是否收藏
|
||||||
|
|||||||
@@ -4,10 +4,12 @@
|
|||||||
* Web: https://www.corecms.net
|
* Web: https://www.corecms.net
|
||||||
* Author: 大灰灰
|
* Author: 大灰灰
|
||||||
* Email: jianweie@163.com
|
* Email: jianweie@163.com
|
||||||
* CreateTime: 2021-06-08 22:14:59
|
* CreateTime: 2022/1/15 1:30:57
|
||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace CoreCms.Net.Model.Entities
|
namespace CoreCms.Net.Model.Entities
|
||||||
@@ -15,11 +17,10 @@ namespace CoreCms.Net.Model.Entities
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 服务购买表
|
/// 服务购买表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarTable("CoreCmsUserServicesOrder",TableDescription = "服务购买表")]
|
|
||||||
public partial class CoreCmsUserServicesOrder
|
public partial class CoreCmsUserServicesOrder
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 服务购买表
|
/// 构造函数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public CoreCmsUserServicesOrder()
|
public CoreCmsUserServicesOrder()
|
||||||
{
|
{
|
||||||
@@ -29,70 +30,123 @@ namespace CoreCms.Net.Model.Entities
|
|||||||
/// 序列
|
/// 序列
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "序列")]
|
[Display(Name = "序列")]
|
||||||
[SugarColumn(ColumnDescription = "序列", IsPrimaryKey = true, IsIdentity = true)]
|
|
||||||
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public System.Int32 id { get; set; }
|
public System.Int32 id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 服务订单编号
|
/// 服务订单编号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "服务订单编号")]
|
[Display(Name = "服务订单编号")]
|
||||||
[SugarColumn(ColumnDescription = "服务订单编号")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
[StringLength(50, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
[StringLength(maximumLength:50,ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
public System.String serviceOrderId { get; set; }
|
public System.String serviceOrderId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关联用户
|
/// 关联用户
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "关联用户")]
|
[Display(Name = "关联用户")]
|
||||||
[SugarColumn(ColumnDescription = "关联用户")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public System.Int32 userId { get; set; }
|
public System.Int32 userId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关联服务
|
/// 关联服务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "关联服务")]
|
[Display(Name = "关联服务")]
|
||||||
[SugarColumn(ColumnDescription = "关联服务")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public System.Int32 servicesId { get; set; }
|
public System.Int32 servicesId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否支付
|
/// 是否支付
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "是否支付")]
|
[Display(Name = "是否支付")]
|
||||||
[SugarColumn(ColumnDescription = "是否支付")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public System.Boolean isPay { get; set; }
|
public System.Boolean isPay { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 支付时间
|
/// 支付时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "支付时间")]
|
[Display(Name = "支付时间")]
|
||||||
[SugarColumn(ColumnDescription = "支付时间", IsNullable = true)]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public System.DateTime? payTime { get; set; }
|
public System.DateTime? payTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 支付单号
|
/// 支付单号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "支付单号")]
|
[Display(Name = "支付单号")]
|
||||||
[SugarColumn(ColumnDescription = "支付单号", IsNullable = true)]
|
|
||||||
[StringLength(50, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
|
||||||
|
[StringLength(maximumLength:50,ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
public System.String paymentId { get; set; }
|
public System.String paymentId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 状态
|
/// 状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "状态")]
|
[Display(Name = "状态")]
|
||||||
[SugarColumn(ColumnDescription = "状态")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public System.Int32 status { get; set; }
|
public System.Int32 status { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 订单创建时间
|
/// 订单创建时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "订单创建时间")]
|
[Display(Name = "订单创建时间")]
|
||||||
[SugarColumn(ColumnDescription = "订单创建时间")]
|
|
||||||
[Required(ErrorMessage = "请输入{0}")]
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public System.DateTime createTime { get; set; }
|
public System.DateTime createTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 截止服务时间
|
/// 截止服务时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Display(Name = "截止服务时间")]
|
[Display(Name = "截止服务时间")]
|
||||||
[SugarColumn(ColumnDescription = "截止服务时间", IsNullable = true)]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public System.DateTime? servicesEndTime { get; set; }
|
public System.DateTime? servicesEndTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -32,5 +32,23 @@ namespace CoreCms.Net.Model.Entities
|
|||||||
[Display(Name = "状态说明")]
|
[Display(Name = "状态说明")]
|
||||||
[SugarColumn(IsIgnore = true)]
|
[SugarColumn(IsIgnore = true)]
|
||||||
public string statusStr { get; set; }
|
public string statusStr { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 服务标题
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "服务标题")]
|
||||||
|
[SugarColumn(IsIgnore = true)]
|
||||||
|
public string serviceTitle { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户昵称
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "用户昵称")]
|
||||||
|
[SugarColumn(IsIgnore = true)]
|
||||||
|
public string userName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
188
CoreCms.Net.Model/Entities/Solitaire/CoreCmsSolitaire.cs
Normal file
188
CoreCms.Net.Model/Entities/Solitaire/CoreCmsSolitaire.cs
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/10/11 22:19:44
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using SqlSugar;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Model.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动表
|
||||||
|
/// </summary>
|
||||||
|
public partial class CoreCmsSolitaire
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 构造函数
|
||||||
|
/// </summary>
|
||||||
|
public CoreCmsSolitaire()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 序列
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "序列")]
|
||||||
|
|
||||||
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Int32 id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 活动标题
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "活动标题")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
[StringLength(maximumLength:250,ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
|
public System.String title { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 缩略图
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "缩略图")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
[StringLength(maximumLength:250,ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
|
public System.String thumbnail { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 活动描述
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "活动描述")]
|
||||||
|
|
||||||
|
|
||||||
|
[StringLength(maximumLength:250,ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
|
public System.String description { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 活动内容
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "活动内容")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.String contentBody { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 开始时间
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "开始时间")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.DateTime startTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 结束时间
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "结束时间")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.DateTime endTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 起购价格
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "起购价格")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Decimal startBuyPrice { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 起送价格
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "起送价格")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Decimal minDeliveryPrice { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否显示
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "是否显示")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Boolean isShow { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 活动状态
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "活动状态")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Int32 status { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 标注删除
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "标注删除")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Boolean isDelete { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "创建时间")]
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.DateTime createTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/21 1:16:08
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Model.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动商品表
|
||||||
|
/// </summary>
|
||||||
|
public partial class CoreCmsSolitaireItems
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 序列
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "序列")]
|
||||||
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public int id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙序列
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "接龙序列")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public int solitaireId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 商品序列
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "商品序列")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public int goodId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 货品价格
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "货品价格")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public int productId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙价
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "接龙价")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public decimal price { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 活动库存
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "活动库存")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public int activityStock { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 每人可买
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "每人可买")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public int oneCanBuy { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 排序
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "排序")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public int sortId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 标注删除
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "标注删除")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
public bool isDelete { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/21 1:16:08
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using SqlSugar;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Model.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动商品表
|
||||||
|
/// </summary>
|
||||||
|
public partial class CoreCmsSolitaireItems
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 关联货品
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "关联货品")]
|
||||||
|
[SqlSugar.SugarColumn(IsIgnore = true)]
|
||||||
|
public CoreCmsProducts productObj { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 关联商品
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "关联商品")]
|
||||||
|
[SqlSugar.SugarColumn(IsIgnore = true)]
|
||||||
|
public CoreCmsGoods goodObj { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:17:57
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Model.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动表
|
||||||
|
/// </summary>
|
||||||
|
public partial class CoreCmsSolitaire
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 货品明细
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "货品明细")]
|
||||||
|
[SqlSugar.SugarColumn(IsIgnore = true)]
|
||||||
|
public List<CoreCmsSolitaireItems> items { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.8" />
|
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.8" />
|
||||||
<PackageReference Include="InitQ" Version="1.0.0.8" />
|
<PackageReference Include="InitQ" Version="1.0.0.9" />
|
||||||
<PackageReference Include="Qc.YilianyunSdk" Version="1.0.7" />
|
<PackageReference Include="Qc.YilianyunSdk" Version="1.0.7" />
|
||||||
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.2.1" />
|
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -1736,6 +1736,122 @@ namespace CoreCms.Net.Repository
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 根据条件查询商品及sku分页数据
|
||||||
|
/// <summary>
|
||||||
|
/// 根据条件查询商品及sku分页数据
|
||||||
|
/// </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<CoreCmsGoods>> QueryGoodAndSkuPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
RefAsync<int> totalCount = 0;
|
||||||
|
List<CoreCmsGoods> page;
|
||||||
|
if (blUseNoLock)
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsGoods>()
|
||||||
|
.Where(p => p.isDel == false)
|
||||||
|
.Select(good => new CoreCmsGoods
|
||||||
|
{
|
||||||
|
id = good.id,
|
||||||
|
bn = good.bn,
|
||||||
|
name = good.name,
|
||||||
|
brief = good.brief,
|
||||||
|
image = good.image,
|
||||||
|
images = good.images,
|
||||||
|
video = good.video,
|
||||||
|
productsDistributionType = good.productsDistributionType,
|
||||||
|
goodsCategoryId = good.goodsCategoryId,
|
||||||
|
goodsTypeId = good.goodsTypeId,
|
||||||
|
brandId = good.brandId,
|
||||||
|
isNomalVirtual = good.isNomalVirtual,
|
||||||
|
isMarketable = good.isMarketable,
|
||||||
|
unit = good.unit,
|
||||||
|
intro = good.intro,
|
||||||
|
spesDesc = good.spesDesc,
|
||||||
|
parameters = good.parameters,
|
||||||
|
commentsCount = good.commentsCount,
|
||||||
|
viewCount = good.viewCount,
|
||||||
|
buyCount = good.buyCount,
|
||||||
|
uptime = good.uptime,
|
||||||
|
downtime = good.downtime,
|
||||||
|
sort = good.sort,
|
||||||
|
labelIds = good.labelIds,
|
||||||
|
newSpec = good.newSpec,
|
||||||
|
openSpec = good.openSpec,
|
||||||
|
createTime = good.createTime,
|
||||||
|
updateTime = good.updateTime,
|
||||||
|
isRecommend = good.isRecommend,
|
||||||
|
isHot = good.isHot,
|
||||||
|
isDel = good.isDel,
|
||||||
|
})
|
||||||
|
.Mapper(p => p.sku, p => p.sku.First().goodsId)
|
||||||
|
.Mapper(it =>
|
||||||
|
{
|
||||||
|
it.sku = it.sku.Where(o => o.isDel == false).ToList();
|
||||||
|
})
|
||||||
|
.With(SqlWith.NoLock)
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate)
|
||||||
|
.ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsGoods>()
|
||||||
|
.Where(p => p.isDel == false)
|
||||||
|
.Select(good => new CoreCmsGoods
|
||||||
|
{
|
||||||
|
id = good.id,
|
||||||
|
bn = good.bn,
|
||||||
|
name = good.name,
|
||||||
|
brief = good.brief,
|
||||||
|
image = good.image,
|
||||||
|
images = good.images,
|
||||||
|
video = good.video,
|
||||||
|
productsDistributionType = good.productsDistributionType,
|
||||||
|
goodsCategoryId = good.goodsCategoryId,
|
||||||
|
goodsTypeId = good.goodsTypeId,
|
||||||
|
brandId = good.brandId,
|
||||||
|
isNomalVirtual = good.isNomalVirtual,
|
||||||
|
isMarketable = good.isMarketable,
|
||||||
|
unit = good.unit,
|
||||||
|
intro = good.intro,
|
||||||
|
spesDesc = good.spesDesc,
|
||||||
|
parameters = good.parameters,
|
||||||
|
commentsCount = good.commentsCount,
|
||||||
|
viewCount = good.viewCount,
|
||||||
|
buyCount = good.buyCount,
|
||||||
|
uptime = good.uptime,
|
||||||
|
downtime = good.downtime,
|
||||||
|
sort = good.sort,
|
||||||
|
labelIds = good.labelIds,
|
||||||
|
newSpec = good.newSpec,
|
||||||
|
openSpec = good.openSpec,
|
||||||
|
createTime = good.createTime,
|
||||||
|
updateTime = good.updateTime,
|
||||||
|
isRecommend = good.isRecommend,
|
||||||
|
isHot = good.isHot,
|
||||||
|
isDel = good.isDel
|
||||||
|
})
|
||||||
|
.Mapper(p => p.sku, p => p.sku.First().goodsId)
|
||||||
|
.Mapper(it =>
|
||||||
|
{
|
||||||
|
it.sku = it.sku.Where(o => o.isDel == false).ToList();
|
||||||
|
})
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate)
|
||||||
|
.ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
var list = new PageList<CoreCmsGoods>(page, pageIndex, pageSize, totalCount);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region 获取下拉商品数据
|
#region 获取下拉商品数据
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -8,9 +8,15 @@
|
|||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using CoreCms.Net.IRepository;
|
using CoreCms.Net.IRepository;
|
||||||
using CoreCms.Net.IRepository.UnitOfWork;
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
namespace CoreCms.Net.Repository
|
namespace CoreCms.Net.Repository
|
||||||
{
|
{
|
||||||
@@ -23,5 +29,81 @@ namespace CoreCms.Net.Repository
|
|||||||
public CoreCmsUserServicesOrderRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
public CoreCmsUserServicesOrderRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#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 new async Task<IPageList<CoreCmsUserServicesOrder>> QueryPageAsync(Expression<Func<CoreCmsUserServicesOrder, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsUserServicesOrder, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
RefAsync<int> totalCount = 0;
|
||||||
|
List<CoreCmsUserServicesOrder> page;
|
||||||
|
if (blUseNoLock)
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsUserServicesOrder, CoreCmsUser, CoreCmsServices>((sOrder, sUser, sService) => new JoinQueryInfos(
|
||||||
|
JoinType.Left, sOrder.userId == sUser.id, JoinType.Left, sOrder.servicesId == sService.id))
|
||||||
|
.Select((sOrder, sUser, sService) => new CoreCmsUserServicesOrder
|
||||||
|
{
|
||||||
|
id = sOrder.id,
|
||||||
|
serviceOrderId = sOrder.serviceOrderId,
|
||||||
|
userId = sOrder.userId,
|
||||||
|
servicesId = sOrder.servicesId,
|
||||||
|
isPay = sOrder.isPay,
|
||||||
|
payTime = sOrder.payTime,
|
||||||
|
paymentId = sOrder.paymentId,
|
||||||
|
status = sOrder.status,
|
||||||
|
createTime = sOrder.createTime,
|
||||||
|
servicesEndTime = sOrder.servicesEndTime,
|
||||||
|
serviceTitle = sService.title,
|
||||||
|
userName = sUser.nickName
|
||||||
|
})
|
||||||
|
.With(SqlWith.NoLock)
|
||||||
|
.MergeTable()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate)
|
||||||
|
.ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsUserServicesOrder, CoreCmsUser, CoreCmsServices>((sOrder, sUser, sService) => new JoinQueryInfos(
|
||||||
|
JoinType.Left, sOrder.userId == sUser.id, JoinType.Left, sOrder.servicesId == sService.id))
|
||||||
|
.Select((sOrder, sUser, sService) => new CoreCmsUserServicesOrder
|
||||||
|
{
|
||||||
|
id = sOrder.id,
|
||||||
|
serviceOrderId = sOrder.serviceOrderId,
|
||||||
|
userId = sOrder.userId,
|
||||||
|
servicesId = sOrder.servicesId,
|
||||||
|
isPay = sOrder.isPay,
|
||||||
|
payTime = sOrder.payTime,
|
||||||
|
paymentId = sOrder.paymentId,
|
||||||
|
status = sOrder.status,
|
||||||
|
createTime = sOrder.createTime,
|
||||||
|
servicesEndTime = sOrder.servicesEndTime,
|
||||||
|
serviceTitle = sService.title,
|
||||||
|
userName = sUser.nickName
|
||||||
|
})
|
||||||
|
.MergeTable()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate)
|
||||||
|
.ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
var list = new PageList<CoreCmsUserServicesOrder>(page, pageIndex, pageSize, totalCount);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,9 +8,15 @@
|
|||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using CoreCms.Net.IRepository;
|
using CoreCms.Net.IRepository;
|
||||||
using CoreCms.Net.IRepository.UnitOfWork;
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
namespace CoreCms.Net.Repository
|
namespace CoreCms.Net.Repository
|
||||||
{
|
{
|
||||||
@@ -23,5 +29,76 @@ namespace CoreCms.Net.Repository
|
|||||||
public CoreCmsUserServicesTicketRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
public CoreCmsUserServicesTicketRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#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 new async Task<IPageList<CoreCmsUserServicesTicket>> QueryPageAsync(Expression<Func<CoreCmsUserServicesTicket, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsUserServicesTicket, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
RefAsync<int> totalCount = 0;
|
||||||
|
List<CoreCmsUserServicesTicket> page;
|
||||||
|
if (blUseNoLock)
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsUserServicesTicket>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsUserServicesTicket
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
serviceOrderId = p.serviceOrderId,
|
||||||
|
securityCode = p.securityCode,
|
||||||
|
redeemCode = p.redeemCode,
|
||||||
|
serviceId = p.serviceId,
|
||||||
|
userId = p.userId,
|
||||||
|
status = p.status,
|
||||||
|
validityType = p.validityType,
|
||||||
|
validityStartTime = p.validityStartTime,
|
||||||
|
validityEndTime = p.validityEndTime,
|
||||||
|
createTime = p.createTime,
|
||||||
|
isVerification = p.isVerification,
|
||||||
|
verificationTime = p.verificationTime,
|
||||||
|
|
||||||
|
}).With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsUserServicesTicket>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsUserServicesTicket
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
serviceOrderId = p.serviceOrderId,
|
||||||
|
securityCode = p.securityCode,
|
||||||
|
redeemCode = p.redeemCode,
|
||||||
|
serviceId = p.serviceId,
|
||||||
|
userId = p.userId,
|
||||||
|
status = p.status,
|
||||||
|
validityType = p.validityType,
|
||||||
|
validityStartTime = p.validityStartTime,
|
||||||
|
validityEndTime = p.validityEndTime,
|
||||||
|
createTime = p.createTime,
|
||||||
|
isVerification = p.isVerification,
|
||||||
|
verificationTime = p.verificationTime,
|
||||||
|
|
||||||
|
}).ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
var list = new PageList<CoreCmsUserServicesTicket>(page, pageIndex, pageSize, totalCount);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,313 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/19 23:42:28
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Caching.Manual;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.IRepository;
|
||||||
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Repository
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动商品表 接口实现
|
||||||
|
/// </summary>
|
||||||
|
public class CoreCmsSolitaireItemsRepository : BaseRepository<CoreCmsSolitaireItems>, ICoreCmsSolitaireItemsRepository
|
||||||
|
{
|
||||||
|
public CoreCmsSolitaireItemsRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 实现重写增删改查操作==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity">实体数据</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> InsertAsync(CoreCmsSolitaireItems entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0;
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(CoreCmsSolitaireItems entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var oldModel = await DbClient.Queryable<CoreCmsSolitaireItems>().In(entity.id).SingleAsync();
|
||||||
|
if (oldModel == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
//事物处理过程开始
|
||||||
|
oldModel.id = entity.id;
|
||||||
|
oldModel.solitaireId = entity.solitaireId;
|
||||||
|
oldModel.goodId = entity.goodId;
|
||||||
|
oldModel.productId = entity.productId;
|
||||||
|
oldModel.price = entity.price;
|
||||||
|
oldModel.activityStock = entity.activityStock;
|
||||||
|
oldModel.oneCanBuy = entity.oneCanBuy;
|
||||||
|
oldModel.isDelete = entity.isDelete;
|
||||||
|
|
||||||
|
//事物处理过程结束
|
||||||
|
var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsSolitaireItems> entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Updateable(entity).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Deleteable<CoreCmsSolitaireItems>(id).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Deleteable<CoreCmsSolitaireItems>().In(ids).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 获取缓存的所有数据==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取缓存的所有数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<CoreCmsSolitaireItems>> GetCaChe()
|
||||||
|
{
|
||||||
|
var cache = ManualDataCache.Instance.Get<List<CoreCmsSolitaireItems>>(GlobalConstVars.CacheCoreCmsSolitaireItems);
|
||||||
|
if (cache != null)
|
||||||
|
{
|
||||||
|
return cache;
|
||||||
|
}
|
||||||
|
return await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新cache
|
||||||
|
/// </summary>
|
||||||
|
public async Task<List<CoreCmsSolitaireItems>> UpdateCaChe()
|
||||||
|
{
|
||||||
|
var list = await DbClient.Queryable<CoreCmsSolitaireItems>().With(SqlWith.NoLock).ToListAsync();
|
||||||
|
ManualDataCache.Instance.Set(GlobalConstVars.CacheCoreCmsSolitaireItems, list);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 重写根据条件查询列表数据
|
||||||
|
/// <summary>
|
||||||
|
/// 重写根据条件查询列表数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="predicate">判断集合</param>
|
||||||
|
/// <param name="orderByType">排序方式</param>
|
||||||
|
/// <param name="orderByExpression"></param>
|
||||||
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<List<CoreCmsSolitaireItems>> QueryListByClauseAsync(Expression<Func<CoreCmsSolitaireItems, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, object>> orderByExpression, OrderByType orderByType, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
List<CoreCmsSolitaireItems> list;
|
||||||
|
if (blUseNoLock)
|
||||||
|
{
|
||||||
|
list = await DbClient.Queryable<CoreCmsSolitaireItems>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsSolitaireItems
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
solitaireId = p.solitaireId,
|
||||||
|
goodId = p.goodId,
|
||||||
|
productId = p.productId,
|
||||||
|
price = p.price,
|
||||||
|
activityStock = p.activityStock,
|
||||||
|
oneCanBuy = p.oneCanBuy,
|
||||||
|
sortId = p.sortId,
|
||||||
|
isDelete = p.isDelete,
|
||||||
|
})
|
||||||
|
.With(SqlWith.NoLock)
|
||||||
|
.MergeTable()
|
||||||
|
.Mapper(it => it.productObj, it => it.productId)
|
||||||
|
.Mapper(it => it.goodObj, it => it.goodId)
|
||||||
|
.ToListAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
list = await DbClient.Queryable<CoreCmsSolitaireItems>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsSolitaireItems
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
solitaireId = p.solitaireId,
|
||||||
|
goodId = p.goodId,
|
||||||
|
productId = p.productId,
|
||||||
|
price = p.price,
|
||||||
|
activityStock = p.activityStock,
|
||||||
|
oneCanBuy = p.oneCanBuy,
|
||||||
|
sortId = p.sortId,
|
||||||
|
isDelete = p.isDelete,
|
||||||
|
|
||||||
|
})
|
||||||
|
.Mapper(it => it.productObj, it => it.productId)
|
||||||
|
.Mapper(it => it.goodObj, it => it.goodId)
|
||||||
|
.ToListAsync();
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#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 new async Task<IPageList<CoreCmsSolitaireItems>> QueryPageAsync(Expression<Func<CoreCmsSolitaireItems, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
RefAsync<int> totalCount = 0;
|
||||||
|
List<CoreCmsSolitaireItems> page;
|
||||||
|
if (blUseNoLock)
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsSolitaireItems>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsSolitaireItems
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
solitaireId = p.solitaireId,
|
||||||
|
goodId = p.goodId,
|
||||||
|
productId = p.productId,
|
||||||
|
price = p.price,
|
||||||
|
activityStock = p.activityStock,
|
||||||
|
oneCanBuy = p.oneCanBuy,
|
||||||
|
sortId = p.sortId,
|
||||||
|
isDelete = p.isDelete,
|
||||||
|
|
||||||
|
})
|
||||||
|
.With(SqlWith.NoLock)
|
||||||
|
.Mapper(it => it.productObj, it => it.productId)
|
||||||
|
.ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsSolitaireItems>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsSolitaireItems
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
solitaireId = p.solitaireId,
|
||||||
|
goodId = p.goodId,
|
||||||
|
productId = p.productId,
|
||||||
|
price = p.price,
|
||||||
|
activityStock = p.activityStock,
|
||||||
|
oneCanBuy = p.oneCanBuy,
|
||||||
|
sortId = p.sortId,
|
||||||
|
isDelete = p.isDelete,
|
||||||
|
|
||||||
|
})
|
||||||
|
.Mapper(it => it.productObj, it => it.productId)
|
||||||
|
.ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
var list = new PageList<CoreCmsSolitaireItems>(page, pageIndex, pageSize, totalCount);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
488
CoreCms.Net.Repository/Solitaire/CoreCmsSolitaireRepository.cs
Normal file
488
CoreCms.Net.Repository/Solitaire/CoreCmsSolitaireRepository.cs
Normal file
@@ -0,0 +1,488 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:17:57
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Caching.Manual;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.IRepository;
|
||||||
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.DTO;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Repository
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动表 接口实现
|
||||||
|
/// </summary>
|
||||||
|
public class CoreCmsSolitaireRepository : BaseRepository<CoreCmsSolitaire>, ICoreCmsSolitaireRepository
|
||||||
|
{
|
||||||
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
|
|
||||||
|
public CoreCmsSolitaireRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
||||||
|
{
|
||||||
|
_unitOfWork = unitOfWork;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 实现重写增删改查操作==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity">实体数据</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> InsertAsync(CoreCmsSolitaire entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
if (entity.status != (int)GlobalEnumVars.SolitaireStatus.Close && entity.status != (int)GlobalEnumVars.SolitaireStatus.Open)
|
||||||
|
{
|
||||||
|
jm.msg = "请设置活动状态";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
if (entity.endTime < entity.startTime)
|
||||||
|
{
|
||||||
|
jm.msg = "活动开始时间不能大于结束时间";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
if (entity.items == null || entity.items.Count <= 0)
|
||||||
|
{
|
||||||
|
jm.msg = "请设置商品sku";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
var bl = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_unitOfWork.BeginTran();
|
||||||
|
|
||||||
|
entity.createTime = DateTime.Now;
|
||||||
|
|
||||||
|
var id = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync();
|
||||||
|
if (id > 0)
|
||||||
|
{
|
||||||
|
entity.items.ForEach(p =>
|
||||||
|
{
|
||||||
|
p.solitaireId = id;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await DbClient.Insertable(entity.items).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
_unitOfWork.CommitTran();
|
||||||
|
bl = true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
bl = false;
|
||||||
|
_unitOfWork.RollbackTran();
|
||||||
|
jm.msg = GlobalConstVars.DataHandleEx;
|
||||||
|
jm.data = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(CoreCmsSolitaire entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
if (entity.status != (int)GlobalEnumVars.SolitaireStatus.Close && entity.status != (int)GlobalEnumVars.SolitaireStatus.Open)
|
||||||
|
{
|
||||||
|
jm.msg = "请设置活动状态";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
if (entity.endTime < entity.startTime)
|
||||||
|
{
|
||||||
|
jm.msg = "活动开始时间不能大于结束时间";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
if (entity.items == null || entity.items.Count <= 0)
|
||||||
|
{
|
||||||
|
jm.msg = "请设置商品sku";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
var oldModel = await DbClient.Queryable<CoreCmsSolitaire>().In(entity.id).SingleAsync();
|
||||||
|
if (oldModel == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
var bl = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_unitOfWork.BeginTran();
|
||||||
|
|
||||||
|
//事物处理过程开始
|
||||||
|
//oldModel.id = entity.id;
|
||||||
|
oldModel.title = entity.title;
|
||||||
|
oldModel.description = entity.description;
|
||||||
|
oldModel.contentBody = entity.contentBody;
|
||||||
|
oldModel.startTime = entity.startTime;
|
||||||
|
oldModel.endTime = entity.endTime;
|
||||||
|
oldModel.startBuyPrice = entity.startBuyPrice;
|
||||||
|
oldModel.minDeliveryPrice = entity.minDeliveryPrice;
|
||||||
|
oldModel.isShow = entity.isShow;
|
||||||
|
oldModel.status = entity.status;
|
||||||
|
oldModel.thumbnail = entity.thumbnail;
|
||||||
|
|
||||||
|
//oldModel.isDelete = entity.isDelete;
|
||||||
|
//oldModel.createTime = entity.createTime;
|
||||||
|
|
||||||
|
await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync();
|
||||||
|
|
||||||
|
//获取数据库存在的数据
|
||||||
|
var oldList = await DbClient.Queryable<CoreCmsSolitaireItems>().Where(p => p.solitaireId == oldModel.id && p.isDelete == false).ToListAsync();
|
||||||
|
var oldProductIds = oldList.Select(p => p.productId).ToList();
|
||||||
|
|
||||||
|
//获取提交的数据有货品序列
|
||||||
|
var newProductIds = entity.items.Select(p => p.productId).ToList();
|
||||||
|
|
||||||
|
//标记已经不存在新数据里面的货品数据为假删除状态
|
||||||
|
await DbClient.Updateable<CoreCmsSolitaireItems>(p => p.isDelete == true)
|
||||||
|
.Where(p => !newProductIds.Contains(p.productId) && p.solitaireId == oldModel.id && p.isDelete == false)
|
||||||
|
.ExecuteCommandAsync();
|
||||||
|
|
||||||
|
//获取老数据并进行更新
|
||||||
|
var oldItems = oldList.Where(p => newProductIds.Contains(p.productId)).ToList();
|
||||||
|
if (oldItems.Any())
|
||||||
|
{
|
||||||
|
oldItems.ForEach(o =>
|
||||||
|
{
|
||||||
|
var newOne = entity.items.Find(p => p.productId == o.productId);
|
||||||
|
o.price = newOne.price;
|
||||||
|
o.activityStock = newOne.activityStock;
|
||||||
|
o.oneCanBuy = newOne.oneCanBuy;
|
||||||
|
o.sortId = newOne.sortId;
|
||||||
|
});
|
||||||
|
await DbClient.Updateable(oldItems).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取新数据并进行增加
|
||||||
|
var newItems = entity.items.Where(p => !oldProductIds.Contains(p.productId)).ToList();
|
||||||
|
if (newItems.Any())
|
||||||
|
{
|
||||||
|
var newList = new List<CoreCmsSolitaireItems>();
|
||||||
|
newItems.ForEach(p =>
|
||||||
|
{
|
||||||
|
newList.Add(new CoreCmsSolitaireItems()
|
||||||
|
{
|
||||||
|
solitaireId = oldModel.id,
|
||||||
|
goodId = p.goodId,
|
||||||
|
productId = p.productId,
|
||||||
|
price = p.price,
|
||||||
|
activityStock = p.activityStock,
|
||||||
|
oneCanBuy = p.oneCanBuy,
|
||||||
|
sortId = p.sortId,
|
||||||
|
isDelete = false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
await DbClient.Insertable(newList).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
//事物处理过程结束
|
||||||
|
_unitOfWork.CommitTran();
|
||||||
|
bl = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
bl = false;
|
||||||
|
_unitOfWork.RollbackTran();
|
||||||
|
jm.msg = GlobalConstVars.DataHandleEx;
|
||||||
|
jm.data = e;
|
||||||
|
}
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsSolitaire> entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Updateable(entity).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Deleteable<CoreCmsSolitaire>(id).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Deleteable<CoreCmsSolitaire>().In(ids).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
||||||
|
if (bl)
|
||||||
|
{
|
||||||
|
await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 获取缓存的所有数据==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取缓存的所有数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<CoreCmsSolitaire>> GetCaChe()
|
||||||
|
{
|
||||||
|
var cache = ManualDataCache.Instance.Get<List<CoreCmsSolitaire>>(GlobalConstVars.CacheCoreCmsSolitaire);
|
||||||
|
if (cache != null)
|
||||||
|
{
|
||||||
|
return cache;
|
||||||
|
}
|
||||||
|
return await UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新cache
|
||||||
|
/// </summary>
|
||||||
|
public async Task<List<CoreCmsSolitaire>> UpdateCaChe()
|
||||||
|
{
|
||||||
|
var list = await DbClient.Queryable<CoreCmsSolitaire>().With(SqlWith.NoLock).ToListAsync();
|
||||||
|
ManualDataCache.Instance.Set(GlobalConstVars.CacheCoreCmsSolitaire, list);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#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 new async Task<IPageList<CoreCmsSolitaire>> QueryPageAsync(Expression<Func<CoreCmsSolitaire, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaire, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
RefAsync<int> totalCount = 0;
|
||||||
|
List<CoreCmsSolitaire> page;
|
||||||
|
if (blUseNoLock)
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsSolitaire>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsSolitaire
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
title = p.title,
|
||||||
|
thumbnail = p.thumbnail,
|
||||||
|
description = p.description,
|
||||||
|
//contentBody = p.contentBody,
|
||||||
|
startTime = p.startTime,
|
||||||
|
endTime = p.endTime,
|
||||||
|
startBuyPrice = p.startBuyPrice,
|
||||||
|
minDeliveryPrice = p.minDeliveryPrice,
|
||||||
|
isShow = p.isShow,
|
||||||
|
status = p.status,
|
||||||
|
isDelete = p.isDelete,
|
||||||
|
createTime = p.createTime,
|
||||||
|
|
||||||
|
}).With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsSolitaire>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsSolitaire
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
title = p.title,
|
||||||
|
thumbnail = p.thumbnail,
|
||||||
|
description = p.description,
|
||||||
|
//contentBody = p.contentBody,
|
||||||
|
startTime = p.startTime,
|
||||||
|
endTime = p.endTime,
|
||||||
|
startBuyPrice = p.startBuyPrice,
|
||||||
|
minDeliveryPrice = p.minDeliveryPrice,
|
||||||
|
isShow = p.isShow,
|
||||||
|
status = p.status,
|
||||||
|
isDelete = p.isDelete,
|
||||||
|
createTime = p.createTime,
|
||||||
|
|
||||||
|
}).ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
var list = new PageList<CoreCmsSolitaire>(page, pageIndex, pageSize, totalCount);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 取购物车数据的时候,更新价格
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 取购物车数据的时候,更新价格
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="objectId"></param>
|
||||||
|
/// <param name="list"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<WebApiCallBack> SolitaireInfo(int objectId, List<CartProducts> list)
|
||||||
|
{
|
||||||
|
var res = new WebApiCallBack();
|
||||||
|
|
||||||
|
var solitaire = await DbClient.Queryable<CoreCmsSolitaire>().FirstAsync(p => p.id == objectId);
|
||||||
|
if (solitaire == null)
|
||||||
|
{
|
||||||
|
res.data = 21001;
|
||||||
|
res.msg = GlobalErrorCodeVars.Code21001;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
var dt = DateTime.Now;
|
||||||
|
if (solitaire.startTime > dt)
|
||||||
|
{
|
||||||
|
res.data = 21002;
|
||||||
|
res.msg = GlobalErrorCodeVars.Code21002;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
if (solitaire.endTime < dt)
|
||||||
|
{
|
||||||
|
res.data = 21003;
|
||||||
|
res.msg = GlobalErrorCodeVars.Code21003;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
var items = await DbClient.Queryable<CoreCmsSolitaireItems>().Where(p => p.solitaireId == objectId && p.isDelete == false).ToListAsync();
|
||||||
|
if (!items.Any())
|
||||||
|
{
|
||||||
|
res.data = 21004;
|
||||||
|
res.msg = GlobalErrorCodeVars.Code21004;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
var sku = items.Find(p => p.productId == item.productId);
|
||||||
|
if (sku == null)
|
||||||
|
{
|
||||||
|
res.data = 21005;
|
||||||
|
res.msg = GlobalErrorCodeVars.Code21005;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.products.price = sku.price;
|
||||||
|
if (item.products.price < 0)
|
||||||
|
{
|
||||||
|
res.data = 21006;
|
||||||
|
res.msg = GlobalErrorCodeVars.Code21006;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res.status = true;
|
||||||
|
res.data = list;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 获取接龙购买用户记录
|
||||||
|
/// <summary>
|
||||||
|
/// 获取接龙购买用户记录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<WebApiCallBack> GetBuyRecord(int id)
|
||||||
|
{
|
||||||
|
var jm = new WebApiCallBack() { status = true };
|
||||||
|
var orderType = (int)GlobalEnumVars.OrderType.Solitaire;
|
||||||
|
var list = await DbClient.Queryable<CoreCmsOrder>()
|
||||||
|
.LeftJoin<CoreCmsUser>((sOrder, sUser) => sOrder.userId == sUser.id)
|
||||||
|
.LeftJoin<CoreCmsOrderItem>((sOrder, sUser, sOrderItem) => sOrder.orderId == sOrderItem.orderId)
|
||||||
|
.Where(sOrder => sOrder.orderType == orderType && sOrder.payStatus == 2 && sOrder.objectId == id)
|
||||||
|
.OrderBy(sOrder => sOrder.createTime, OrderByType.Desc)
|
||||||
|
.Select((sOrder, sUser, sOrderItem) => new
|
||||||
|
{
|
||||||
|
sUser.avatarImage,
|
||||||
|
sUser.nickName,
|
||||||
|
create = sOrder.createTime,
|
||||||
|
productName = sOrderItem.name,
|
||||||
|
productSku = sOrderItem.addon,
|
||||||
|
sOrderItem.nums
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
jm.data = list;
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -405,7 +405,7 @@ namespace CoreCms.Net.Services
|
|||||||
var sLog = new CoreCmsStockLog
|
var sLog = new CoreCmsStockLog
|
||||||
{
|
{
|
||||||
stockId = deliveryInfo.deliveryId,
|
stockId = deliveryInfo.deliveryId,
|
||||||
productId = item.id,
|
productId = item.productId,
|
||||||
goodsId = item.goodsId,
|
goodsId = item.goodsId,
|
||||||
nums = -sendNum,
|
nums = -sendNum,
|
||||||
sn = item.sn,
|
sn = item.sn,
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ namespace CoreCms.Net.Services
|
|||||||
private readonly ICoreCmsPinTuanRecordServices _pinTuanRecordServices;
|
private readonly ICoreCmsPinTuanRecordServices _pinTuanRecordServices;
|
||||||
private readonly ICoreCmsGoodsServices _goodsServices;
|
private readonly ICoreCmsGoodsServices _goodsServices;
|
||||||
private readonly ICoreCmsGoodsCategoryServices _goodsCategoryServices;
|
private readonly ICoreCmsGoodsCategoryServices _goodsCategoryServices;
|
||||||
|
private readonly ICoreCmsSolitaireServices _solitaireServices;
|
||||||
|
|
||||||
|
|
||||||
public CoreCmsCartServices(
|
public CoreCmsCartServices(
|
||||||
ICoreCmsCartRepository dal
|
ICoreCmsCartRepository dal
|
||||||
@@ -66,7 +68,7 @@ namespace CoreCms.Net.Services
|
|||||||
, ICoreCmsUserServices userServices
|
, ICoreCmsUserServices userServices
|
||||||
, ICoreCmsSettingServices settingServices
|
, ICoreCmsSettingServices settingServices
|
||||||
, ICoreCmsProductsServices productsServices
|
, ICoreCmsProductsServices productsServices
|
||||||
, ICoreCmsPinTuanGoodsServices pinTuanGoodsServices, ICoreCmsPromotionConditionServices promotionConditionServices, ICoreCmsGoodsServices goodsServices, ICoreCmsGoodsCategoryServices goodsCategoryServices, ICoreCmsPromotionResultServices promotionResultServices, ICoreCmsPinTuanRecordServices pinTuanRecordServices)
|
, ICoreCmsPinTuanGoodsServices pinTuanGoodsServices, ICoreCmsPromotionConditionServices promotionConditionServices, ICoreCmsGoodsServices goodsServices, ICoreCmsGoodsCategoryServices goodsCategoryServices, ICoreCmsPromotionResultServices promotionResultServices, ICoreCmsPinTuanRecordServices pinTuanRecordServices, ICoreCmsSolitaireServices solitaireServices)
|
||||||
{
|
{
|
||||||
this._dal = dal;
|
this._dal = dal;
|
||||||
base.BaseDal = dal;
|
base.BaseDal = dal;
|
||||||
@@ -86,6 +88,7 @@ namespace CoreCms.Net.Services
|
|||||||
_goodsCategoryServices = goodsCategoryServices;
|
_goodsCategoryServices = goodsCategoryServices;
|
||||||
_promotionResultServices = promotionResultServices;
|
_promotionResultServices = promotionResultServices;
|
||||||
_pinTuanRecordServices = pinTuanRecordServices;
|
_pinTuanRecordServices = pinTuanRecordServices;
|
||||||
|
_solitaireServices = solitaireServices;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 设置购物车商品数量====================================================
|
#region 设置购物车商品数量====================================================
|
||||||
@@ -501,6 +504,16 @@ namespace CoreCms.Net.Services
|
|||||||
break;
|
break;
|
||||||
case (int)GlobalEnumVars.OrderType.Solitaire:
|
case (int)GlobalEnumVars.OrderType.Solitaire:
|
||||||
//接龙模式,去获取接龙商品价格。
|
//接龙模式,去获取接龙商品价格。
|
||||||
|
var solitaireInfo = await _solitaireServices.SolitaireInfo(objectId, cartDto.list);
|
||||||
|
if (solitaireInfo.status)
|
||||||
|
{
|
||||||
|
cartDto.list = solitaireInfo.data as List<CartProducts>;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return solitaireInfo;
|
||||||
|
}
|
||||||
|
break;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta13" />
|
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta13" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
|
||||||
<PackageReference Include="Tencent.QCloud.Cos.Sdk" Version="5.4.25" />
|
<PackageReference Include="Tencent.QCloud.Cos.Sdk" Version="5.4.25" />
|
||||||
<PackageReference Include="ToolGood.Words" Version="3.0.2.8" />
|
<PackageReference Include="ToolGood.Words" Version="3.0.3.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -667,6 +667,23 @@ namespace CoreCms.Net.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据条件查询商品及sku分页数据
|
||||||
|
/// </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<CoreCmsGoods>> QueryGoodAndSkuPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
return await _dal.QueryGoodAndSkuPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||||
|
}
|
||||||
|
|
||||||
#region 获取下拉商品数据
|
#region 获取下拉商品数据
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取下拉商品数据
|
/// 获取下拉商品数据
|
||||||
|
|||||||
@@ -624,8 +624,10 @@ namespace CoreCms.Net.Services
|
|||||||
if (!string.IsNullOrEmpty(p.promotionList))
|
if (!string.IsNullOrEmpty(p.promotionList))
|
||||||
{
|
{
|
||||||
var jobj = JObject.Parse(p.promotionList);
|
var jobj = JObject.Parse(p.promotionList);
|
||||||
var v = jobj.Values().First();
|
if (jobj.Values().Any())
|
||||||
p.promotionObj = v;
|
{
|
||||||
|
p.promotionObj = jobj.Values().FirstOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,15 +10,18 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CoreCms.Net.Configuration;
|
using CoreCms.Net.Configuration;
|
||||||
using CoreCms.Net.IRepository;
|
using CoreCms.Net.IRepository;
|
||||||
using CoreCms.Net.IRepository.UnitOfWork;
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
using CoreCms.Net.IServices;
|
using CoreCms.Net.IServices;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
using CoreCms.Net.Utility.Helper;
|
using CoreCms.Net.Utility.Helper;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
|
||||||
namespace CoreCms.Net.Services
|
namespace CoreCms.Net.Services
|
||||||
@@ -105,5 +108,27 @@ namespace CoreCms.Net.Services
|
|||||||
|
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#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 new async Task<IPageList<CoreCmsUserServicesOrder>> QueryPageAsync(Expression<Func<CoreCmsUserServicesOrder, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsUserServicesOrder, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,13 +9,15 @@
|
|||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq.Expressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CoreCms.Net.Configuration;
|
using CoreCms.Net.Configuration;
|
||||||
using CoreCms.Net.IRepository;
|
using CoreCms.Net.IRepository;
|
||||||
using CoreCms.Net.IRepository.UnitOfWork;
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
using CoreCms.Net.IServices;
|
using CoreCms.Net.IServices;
|
||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
|
||||||
namespace CoreCms.Net.Services
|
namespace CoreCms.Net.Services
|
||||||
@@ -34,5 +36,26 @@ namespace CoreCms.Net.Services
|
|||||||
_unitOfWork = unitOfWork;
|
_unitOfWork = unitOfWork;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#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 new async Task<IPageList<CoreCmsUserServicesTicket>> QueryPageAsync(Expression<Func<CoreCmsUserServicesTicket, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsUserServicesTicket, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ using SixLabors.ImageSharp.Processing;
|
|||||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||||
using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||||
|
|
||||||
|
|
||||||
namespace CoreCms.Net.Services
|
namespace CoreCms.Net.Services
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -49,9 +48,10 @@ namespace CoreCms.Net.Services
|
|||||||
private readonly IUnitOfWork _unitOfWork;
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||||
|
|
||||||
public static readonly string AppInterFaceUrl = AppSettingsConstVars.AppConfigAppInterFaceUrl;
|
private readonly string _appInterFaceUrl = AppSettingsConstVars.AppConfigAppInterFaceUrl;
|
||||||
|
|
||||||
public readonly ICoreCmsGoodsServices GoodsServices;
|
private readonly ICoreCmsGoodsServices _goodsServices;
|
||||||
|
private readonly ICoreCmsSolitaireServices _solitaireServices;
|
||||||
private readonly WeChatOptions _weChatOptions;
|
private readonly WeChatOptions _weChatOptions;
|
||||||
private readonly WeChat.Service.HttpClients.IWeChatApiHttpClientFactory _weChatApiHttpClientFactory;
|
private readonly WeChat.Service.HttpClients.IWeChatApiHttpClientFactory _weChatApiHttpClientFactory;
|
||||||
|
|
||||||
@@ -60,13 +60,14 @@ namespace CoreCms.Net.Services
|
|||||||
public CoreCmsShareServices(IUnitOfWork unitOfWork
|
public CoreCmsShareServices(IUnitOfWork unitOfWork
|
||||||
, IWebHostEnvironment webHostEnvironment
|
, IWebHostEnvironment webHostEnvironment
|
||||||
, ICoreCmsGoodsServices goodsServices
|
, ICoreCmsGoodsServices goodsServices
|
||||||
, IOptions<WeChatOptions> weChatOptions, IWeChatApiHttpClientFactory weChatApiHttpClientFactory)
|
, IOptions<WeChatOptions> weChatOptions, IWeChatApiHttpClientFactory weChatApiHttpClientFactory, ICoreCmsSolitaireServices solitaireServices)
|
||||||
|
|
||||||
{
|
{
|
||||||
_unitOfWork = unitOfWork;
|
_unitOfWork = unitOfWork;
|
||||||
_webHostEnvironment = webHostEnvironment;
|
_webHostEnvironment = webHostEnvironment;
|
||||||
GoodsServices = goodsServices;
|
_goodsServices = goodsServices;
|
||||||
_weChatApiHttpClientFactory = weChatApiHttpClientFactory;
|
_weChatApiHttpClientFactory = weChatApiHttpClientFactory;
|
||||||
|
_solitaireServices = solitaireServices;
|
||||||
_weChatOptions = weChatOptions.Value;
|
_weChatOptions = weChatOptions.Value;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -123,14 +124,20 @@ namespace CoreCms.Net.Services
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<WebApiCallBack> PosterShare(int client, int page, int userShareCode, string url, JObject parameter)
|
public async Task<WebApiCallBack> PosterShare(int client, int page, int userShareCode, string url, JObject parameter)
|
||||||
{
|
{
|
||||||
|
//获取分享代码
|
||||||
var res = GetCode(client, page, userShareCode, url, parameter);
|
var res = GetCode(client, page, userShareCode, url, parameter);
|
||||||
if (!res.status)
|
if (!res.status)
|
||||||
{
|
{
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
//如果不是商品和拼团
|
//如果不是商品和拼团
|
||||||
if (page != (int)GlobalEnumVars.UrlSharePageType.PinTuan && page != (int)GlobalEnumVars.UrlSharePageType.Goods && page != (int)GlobalEnumVars.UrlSharePageType.Seckill && page != (int)GlobalEnumVars.UrlSharePageType.Group)
|
if (page != (int)GlobalEnumVars.UrlSharePageType.PinTuan &&
|
||||||
|
page != (int)GlobalEnumVars.UrlSharePageType.Goods &&
|
||||||
|
page != (int)GlobalEnumVars.UrlSharePageType.Seckill &&
|
||||||
|
page != (int)GlobalEnumVars.UrlSharePageType.Solitaire &&
|
||||||
|
page != (int)GlobalEnumVars.UrlSharePageType.Group)
|
||||||
{
|
{
|
||||||
|
//走二维码分享
|
||||||
return await getQr(url, res.otherData.ToString(), client);
|
return await getQr(url, res.otherData.ToString(), client);
|
||||||
}
|
}
|
||||||
//生成海报图片
|
//生成海报图片
|
||||||
@@ -196,7 +203,7 @@ namespace CoreCms.Net.Services
|
|||||||
//有这个二维码了
|
//有这个二维码了
|
||||||
jm.status = true;
|
jm.status = true;
|
||||||
jm.msg = "二维码获取成功";
|
jm.msg = "二维码获取成功";
|
||||||
jm.data = AppInterFaceUrl + fileName;
|
jm.data = _appInterFaceUrl + fileName;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -231,50 +238,22 @@ namespace CoreCms.Net.Services
|
|||||||
//拼团
|
//拼团
|
||||||
if (!string.IsNullOrEmpty(invite))
|
if (!string.IsNullOrEmpty(invite))
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(teamId))
|
scene = ShareHelper.share_parameter_encode("5", invite, id, !string.IsNullOrEmpty(teamId) ? teamId : "");
|
||||||
{
|
|
||||||
scene = ShareHelper.share_parameter_encode("5", invite, id, teamId);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
scene = ShareHelper.share_parameter_encode("5", invite, id, "");
|
scene = ShareHelper.share_parameter_encode("5", "", id, !string.IsNullOrEmpty(teamId) ? teamId : "");
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(teamId))
|
|
||||||
{
|
|
||||||
scene = ShareHelper.share_parameter_encode("5", "", id, teamId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scene = ShareHelper.share_parameter_encode("5", "", id, "");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (type == 4)
|
else if (type == 4)
|
||||||
{
|
{
|
||||||
//店铺首页
|
//店铺首页
|
||||||
if (!string.IsNullOrEmpty(invite))
|
scene = ShareHelper.share_parameter_encode("9", !string.IsNullOrEmpty(invite) ? invite : "", id, "");
|
||||||
{
|
|
||||||
scene = ShareHelper.share_parameter_encode("9", invite, id, "");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scene = ShareHelper.share_parameter_encode("9", "", id, "");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//默认首页
|
//默认首页
|
||||||
if (!string.IsNullOrEmpty(invite))
|
scene = ShareHelper.share_parameter_encode("3", !string.IsNullOrEmpty(invite) ? invite : "", "", "");
|
||||||
{
|
|
||||||
scene = ShareHelper.share_parameter_encode("3", invite, "", "");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scene = ShareHelper.share_parameter_encode("3", "", "", "");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//没有去官方请求生成
|
//没有去官方请求生成
|
||||||
@@ -363,7 +342,7 @@ namespace CoreCms.Net.Services
|
|||||||
{
|
{
|
||||||
jm.status = true;
|
jm.status = true;
|
||||||
jm.msg = "二维码获取成功";
|
jm.msg = "二维码获取成功";
|
||||||
jm.data = AppInterFaceUrl + fileName;
|
jm.data = _appInterFaceUrl + fileName;
|
||||||
jm.otherData = fileNameMin;
|
jm.otherData = fileNameMin;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -646,6 +625,17 @@ namespace CoreCms.Net.Services
|
|||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case (int)GlobalEnumVars.UrlSharePageType.Solitaire:
|
||||||
|
if (parameter.ContainsKey("id"))
|
||||||
|
{
|
||||||
|
str = parameter["id"]?.ToString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
jm.msg = "参数必须传id";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
jm.msg = GlobalErrorCodeVars.Code10000;
|
jm.msg = GlobalErrorCodeVars.Code10000;
|
||||||
return jm;
|
return jm;
|
||||||
@@ -745,7 +735,7 @@ namespace CoreCms.Net.Services
|
|||||||
case (int)GlobalEnumVars.UrlSharePageType.Form:
|
case (int)GlobalEnumVars.UrlSharePageType.Form:
|
||||||
if (arr.Length == 1)
|
if (arr.Length == 1)
|
||||||
{
|
{
|
||||||
jm.data = new { goodsId = arr[0] };
|
jm.data = new { id = arr[0] };
|
||||||
jm.status = true;
|
jm.status = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -778,6 +768,13 @@ namespace CoreCms.Net.Services
|
|||||||
jm.status = true;
|
jm.status = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case (int)GlobalEnumVars.UrlSharePageType.Solitaire:
|
||||||
|
if (arr.Length == 1)
|
||||||
|
{
|
||||||
|
jm.data = new { id = arr[0] };
|
||||||
|
jm.status = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
jm.msg = GlobalErrorCodeVars.Code10000;
|
jm.msg = GlobalErrorCodeVars.Code10000;
|
||||||
return jm;
|
return jm;
|
||||||
@@ -814,7 +811,7 @@ namespace CoreCms.Net.Services
|
|||||||
//有这个二维码了
|
//有这个二维码了
|
||||||
jm.status = true;
|
jm.status = true;
|
||||||
jm.msg = "海报获取成功";
|
jm.msg = "海报获取成功";
|
||||||
jm.data = AppInterFaceUrl + fileName;
|
jm.data = _appInterFaceUrl + fileName;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -838,7 +835,7 @@ namespace CoreCms.Net.Services
|
|||||||
{
|
{
|
||||||
jm.status = true;
|
jm.status = true;
|
||||||
jm.msg = "海报生成成功";
|
jm.msg = "海报生成成功";
|
||||||
jm.data = AppInterFaceUrl + fileName;
|
jm.data = _appInterFaceUrl + fileName;
|
||||||
}
|
}
|
||||||
jm.otherData = mkResult;
|
jm.otherData = mkResult;
|
||||||
}
|
}
|
||||||
@@ -856,7 +853,6 @@ namespace CoreCms.Net.Services
|
|||||||
{
|
{
|
||||||
var fileName = fileNameStr;
|
var fileName = fileNameStr;
|
||||||
|
|
||||||
|
|
||||||
//文件硬地址
|
//文件硬地址
|
||||||
var savePath = _webHostEnvironment.WebRootPath + "/static/qrCode/weChat/";
|
var savePath = _webHostEnvironment.WebRootPath + "/static/qrCode/weChat/";
|
||||||
var qrCodeDir = _webHostEnvironment.WebRootPath + "/static/qrCode/weChat/" + otherData;
|
var qrCodeDir = _webHostEnvironment.WebRootPath + "/static/qrCode/weChat/" + otherData;
|
||||||
@@ -871,7 +867,7 @@ namespace CoreCms.Net.Services
|
|||||||
}
|
}
|
||||||
//2商品详情页,3拼团详情页
|
//2商品详情页,3拼团详情页
|
||||||
var page = dataObj["page"].ObjectToInt(0);
|
var page = dataObj["page"].ObjectToInt(0);
|
||||||
if (page == 2 || page == 3)
|
if (page == (int)GlobalEnumVars.UrlSharePageType.Goods || page == (int)GlobalEnumVars.UrlSharePageType.PinTuan)
|
||||||
{
|
{
|
||||||
if (dataObj.ContainsKey("params"))
|
if (dataObj.ContainsKey("params"))
|
||||||
{
|
{
|
||||||
@@ -881,20 +877,19 @@ namespace CoreCms.Net.Services
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var goodId = paramsObj["goodsId"].ObjectToInt();
|
var goodId = paramsObj["goodsId"].ObjectToInt();
|
||||||
var goodModel = await GoodsServices.GetGoodsDetial(goodId);
|
var goodModel = await _goodsServices.GetGoodsDetial(goodId);
|
||||||
if (goodModel != null)
|
if (goodModel != null)
|
||||||
{
|
{
|
||||||
var images = goodModel.images.Split(",");
|
var images = goodModel.images.Split(",");
|
||||||
if (images.Any())
|
if (images.Any())
|
||||||
{
|
{
|
||||||
var image = images[0];
|
|
||||||
//创建一个背景宽度为400X600的底图
|
//创建一个背景宽度为400X600的底图
|
||||||
using var imageTemple = new SixLabors.ImageSharp.Image<Rgba32>(400, 600);
|
using var imageTemple = new SixLabors.ImageSharp.Image<Rgba32>(400, 600);
|
||||||
//设置底图的背景色为白色
|
//设置底图的背景色为白色
|
||||||
imageTemple.Mutate(x => x.BackgroundColor(SixLabors.ImageSharp.Color.White));
|
imageTemple.Mutate(x => x.BackgroundColor(SixLabors.ImageSharp.Color.White));
|
||||||
//绘制商品图片(网络下载图片)
|
//绘制商品图片(网络下载图片)
|
||||||
HttpClient client = new HttpClient();
|
HttpClient client = new HttpClient();
|
||||||
HttpResponseMessage response = await client.GetAsync(image);
|
HttpResponseMessage response = await client.GetAsync(goodModel.image);
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
var stream = await response.Content.ReadAsStreamAsync();
|
var stream = await response.Content.ReadAsStreamAsync();
|
||||||
//载入下载的图片流
|
//载入下载的图片流
|
||||||
@@ -956,9 +951,88 @@ namespace CoreCms.Net.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (page == (int)GlobalEnumVars.UrlSharePageType.Solitaire)
|
||||||
|
{
|
||||||
|
if (dataObj.ContainsKey("params"))
|
||||||
|
{
|
||||||
|
var paramsObj = JObject.FromObject(dataObj["params"]);
|
||||||
|
if (!paramsObj.ContainsKey("id"))
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
var id = paramsObj["id"].ObjectToInt();
|
||||||
|
var solitaireModel = await _solitaireServices.QueryByClauseAsync(p => p.id == id);
|
||||||
|
if (solitaireModel != null && !string.IsNullOrEmpty(solitaireModel.thumbnail))
|
||||||
|
{
|
||||||
|
//创建一个背景宽度为400X600的底图
|
||||||
|
using var imageTemple = new SixLabors.ImageSharp.Image<Rgba32>(400, 600);
|
||||||
|
//设置底图的背景色为白色
|
||||||
|
imageTemple.Mutate(x => x.BackgroundColor(SixLabors.ImageSharp.Color.White));
|
||||||
|
//绘制商品图片(网络下载图片)
|
||||||
|
HttpClient client = new HttpClient();
|
||||||
|
HttpResponseMessage response = await client.GetAsync(solitaireModel.thumbnail);
|
||||||
|
response.EnsureSuccessStatusCode();
|
||||||
|
var stream = await response.Content.ReadAsStreamAsync();
|
||||||
|
//载入下载的图片流
|
||||||
|
var imageThumbnail = await SixLabors.ImageSharp.Image.LoadAsync(stream);
|
||||||
|
//将下载的图片压缩至400X400
|
||||||
|
imageThumbnail.Mutate(x =>
|
||||||
|
{
|
||||||
|
x.Resize(400, 400);
|
||||||
|
});
|
||||||
|
//将商品大图合并到背景图上
|
||||||
|
imageTemple.Mutate(x => x.DrawImage(imageThumbnail, new SixLabors.ImageSharp.Point(0, 0), 1));
|
||||||
|
//将用户的分享二维码合并大背景图上
|
||||||
|
var imageQrcode = await SixLabors.ImageSharp.Image.LoadAsync(qrCodeDir);
|
||||||
|
//将二维码缩略至120X120
|
||||||
|
imageQrcode.Mutate(x =>
|
||||||
|
{
|
||||||
|
x.Resize(120, 120);
|
||||||
|
});
|
||||||
|
//将二维码图片合并到背景图上
|
||||||
|
imageTemple.Mutate(x => x.DrawImage(imageQrcode, new SixLabors.ImageSharp.Point(275, 420), 1));
|
||||||
|
//构建字体//装载字体(ttf)(而且字体一定要支持简体中文的)
|
||||||
|
var fonts = new FontCollection();
|
||||||
|
SixLabors.Fonts.FontFamily fontFamily = fonts.Install(_webHostEnvironment.WebRootPath + "/fonts/SourceHanSansK-Normal.ttf");
|
||||||
|
//绘制商品名称
|
||||||
|
SixLabors.Fonts.Font titleFont = new SixLabors.Fonts.Font(fontFamily, 20, SixLabors.Fonts.FontStyle.Regular);
|
||||||
|
//商品名称可能较长,设置为多行文本输出
|
||||||
|
var textOptions = new TextOptions()
|
||||||
|
{
|
||||||
|
ApplyKerning = true,
|
||||||
|
VerticalAlignment = VerticalAlignment.Top,
|
||||||
|
HorizontalAlignment = HorizontalAlignment.Left,
|
||||||
|
WrapTextWidth = 230
|
||||||
|
};
|
||||||
|
var graphicsOptions = new GraphicsOptions()
|
||||||
|
{
|
||||||
|
Antialias = true
|
||||||
|
};
|
||||||
|
//沿着行尾的绕行路径绘制文本
|
||||||
|
var options = new SixLabors.ImageSharp.Drawing.Processing.DrawingOptions
|
||||||
|
{
|
||||||
|
GraphicsOptions = graphicsOptions,
|
||||||
|
TextOptions = textOptions
|
||||||
|
};
|
||||||
|
//开始绘制商品名称
|
||||||
|
imageTemple.Mutate(ctx => ctx.DrawText(options, solitaireModel.title, titleFont, SixLabors.ImageSharp.Color.Red, new SixLabors.ImageSharp.PointF(10, 450)));
|
||||||
|
//绘制商品金额
|
||||||
|
SixLabors.Fonts.Font moneyFont = new SixLabors.Fonts.Font(fontFamily, 18);
|
||||||
|
//获取该文件绘制所需的大小
|
||||||
|
//var size = TextMeasurer.Measure(moneyText, new RendererOptions(moneyFont));
|
||||||
|
imageTemple.Mutate(ctx => ctx.DrawText("火热接龙中", moneyFont, SixLabors.ImageSharp.Color.Crimson, new SixLabors.ImageSharp.PointF(10, 410)));
|
||||||
|
//绘制提示语
|
||||||
|
SixLabors.Fonts.Font tipsFont = new SixLabors.Fonts.Font(fontFamily, 10);
|
||||||
|
imageTemple.Mutate(ctx => ctx.DrawText("扫描或长按识别二维码", tipsFont, SixLabors.ImageSharp.Color.Black, new SixLabors.ImageSharp.PointF(283, 555)));
|
||||||
|
|
||||||
|
//载入流存储在到文件
|
||||||
|
await imageTemple.SaveAsync(_webHostEnvironment.WebRootPath + fileName);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
154
CoreCms.Net.Services/Solitaire/CoreCmsSolitaireItemsServices.cs
Normal file
154
CoreCms.Net.Services/Solitaire/CoreCmsSolitaireItemsServices.cs
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:18:18
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
using CoreCms.Net.IRepository;
|
||||||
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
|
using CoreCms.Net.IServices;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Services
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动商品表 接口实现
|
||||||
|
/// </summary>
|
||||||
|
public class CoreCmsSolitaireItemsServices : BaseServices<CoreCmsSolitaireItems>, ICoreCmsSolitaireItemsServices
|
||||||
|
{
|
||||||
|
private readonly ICoreCmsSolitaireItemsRepository _dal;
|
||||||
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
|
|
||||||
|
public CoreCmsSolitaireItemsServices(IUnitOfWork unitOfWork, ICoreCmsSolitaireItemsRepository dal)
|
||||||
|
{
|
||||||
|
this._dal = dal;
|
||||||
|
base.BaseDal = dal;
|
||||||
|
_unitOfWork = unitOfWork;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 实现重写增删改查操作==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity">实体数据</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> InsertAsync(CoreCmsSolitaireItems entity)
|
||||||
|
{
|
||||||
|
return await _dal.InsertAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(CoreCmsSolitaireItems entity)
|
||||||
|
{
|
||||||
|
return await _dal.UpdateAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsSolitaireItems> entity)
|
||||||
|
{
|
||||||
|
return await _dal.UpdateAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||||
|
{
|
||||||
|
return await _dal.DeleteByIdAsync(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||||
|
{
|
||||||
|
return await _dal.DeleteByIdsAsync(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 获取缓存的所有数据==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取缓存的所有数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<CoreCmsSolitaireItems>> GetCaChe()
|
||||||
|
{
|
||||||
|
return await _dal.GetCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新cache
|
||||||
|
/// </summary>
|
||||||
|
public async Task<List<CoreCmsSolitaireItems>> UpdateCaChe()
|
||||||
|
{
|
||||||
|
return await _dal.UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写根据条件查询列表数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="predicate">判断集合</param>
|
||||||
|
/// <param name="orderByType">排序方式</param>
|
||||||
|
/// <param name="orderByExpression"></param>
|
||||||
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new Task<List<CoreCmsSolitaireItems>> QueryListByClauseAsync(
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, object>> orderByExpression, OrderByType orderByType,
|
||||||
|
bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
return _dal.QueryListByClauseAsync(predicate, orderByExpression, orderByType, blUseNoLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#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 new async Task<IPageList<CoreCmsSolitaireItems>> QueryPageAsync(Expression<Func<CoreCmsSolitaireItems, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaireItems, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
162
CoreCms.Net.Services/Solitaire/CoreCmsSolitaireServices.cs
Normal file
162
CoreCms.Net.Services/Solitaire/CoreCmsSolitaireServices.cs
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:17:57
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
using CoreCms.Net.IRepository;
|
||||||
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
|
using CoreCms.Net.IServices;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.DTO;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Services
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动表 接口实现
|
||||||
|
/// </summary>
|
||||||
|
public class CoreCmsSolitaireServices : BaseServices<CoreCmsSolitaire>, ICoreCmsSolitaireServices
|
||||||
|
{
|
||||||
|
private readonly ICoreCmsSolitaireRepository _dal;
|
||||||
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
|
|
||||||
|
public CoreCmsSolitaireServices(IUnitOfWork unitOfWork, ICoreCmsSolitaireRepository dal)
|
||||||
|
{
|
||||||
|
this._dal = dal;
|
||||||
|
base.BaseDal = dal;
|
||||||
|
_unitOfWork = unitOfWork;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 实现重写增删改查操作==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity">实体数据</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> InsertAsync(CoreCmsSolitaire entity)
|
||||||
|
{
|
||||||
|
return await _dal.InsertAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(CoreCmsSolitaire entity)
|
||||||
|
{
|
||||||
|
return await _dal.UpdateAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsSolitaire> entity)
|
||||||
|
{
|
||||||
|
return await _dal.UpdateAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||||
|
{
|
||||||
|
return await _dal.DeleteByIdAsync(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||||
|
{
|
||||||
|
return await _dal.DeleteByIdsAsync(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 获取缓存的所有数据==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取缓存的所有数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<CoreCmsSolitaire>> GetCaChe()
|
||||||
|
{
|
||||||
|
return await _dal.GetCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新cache
|
||||||
|
/// </summary>
|
||||||
|
public async Task<List<CoreCmsSolitaire>> UpdateCaChe()
|
||||||
|
{
|
||||||
|
return await _dal.UpdateCaChe();
|
||||||
|
}
|
||||||
|
|
||||||
|
#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 new async Task<IPageList<CoreCmsSolitaire>> QueryPageAsync(Expression<Func<CoreCmsSolitaire, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsSolitaire, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 取购物车数据的时候,更新价格
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 取购物车数据的时候,更新价格
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="objectId"></param>
|
||||||
|
/// <param name="list"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<WebApiCallBack> SolitaireInfo(int objectId, List<CartProducts> list)
|
||||||
|
{
|
||||||
|
return await _dal.SolitaireInfo(objectId, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取接龙购买用户记录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<WebApiCallBack> GetBuyRecord(int id)
|
||||||
|
{
|
||||||
|
return await _dal.GetBuyRecord(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -257,6 +257,20 @@
|
|||||||
"navigationBarTitleText": "打赏"
|
"navigationBarTitleText": "打赏"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/activity/solitaire/list/list",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarTitleText": "接龙"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/activity/solitaire/solitaireDetails/solitaireDetails",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarTitleText": "接龙详情"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/template",
|
"path": "pages/template",
|
||||||
"style": {
|
"style": {
|
||||||
|
|||||||
@@ -0,0 +1,126 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<u-navbar title="接龙" safeAreaInsetTop fixed placeholder>
|
||||||
|
<view class="coreshop-navbar-left-slot" slot="left">
|
||||||
|
<u-icon name="arrow-left" size="19" @click="goNavigateBack"></u-icon>
|
||||||
|
<u-line direction="column" :hairline="false" length="16" margin="0 8px"></u-line>
|
||||||
|
<u-icon name="home" size="22" @click="goHome"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view slot="right">
|
||||||
|
</view>
|
||||||
|
</u-navbar>
|
||||||
|
|
||||||
|
<view class="solitaire-details-bg"></view>
|
||||||
|
<view class="solitaire-details-placeholder-body" />
|
||||||
|
|
||||||
|
<!--商家及推荐-->
|
||||||
|
<view class="coreshop-margin-20 coreshop-goods-shop-info-view-box">
|
||||||
|
<view class="coreshop-shop-view">
|
||||||
|
<view class="coreshop-position-absolute">
|
||||||
|
<u-avatar :src="shopLogo" shape="square"></u-avatar>
|
||||||
|
</view>
|
||||||
|
<view class="coreshop-margin-left-10 coreshop-padding-left-40 coreshop-padding-right-40">
|
||||||
|
<view class="coreshop-margin-bottom-5 coreshop-text-white">{{shopName || ' '}}</view>
|
||||||
|
<view class="coreshop-font-sm u-line-1 coreshop-text-white">{{shareTitle || ' '}}</view>
|
||||||
|
</view>
|
||||||
|
<u-button type="default" size="mini" :plain="true" @click="doPhoneCall" icon="phone" text="联系商家" color="#272d47"></u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
<view class="page-box coreshop-margin-top-20" v-if="listData.length > 0">
|
||||||
|
<view class="orderList" v-for="(item, itemIndex) in listData" :key="itemIndex">
|
||||||
|
<view class="top" @click="goSolitaireDetail(item.id)">
|
||||||
|
<view class="store u-line-2">{{item.title}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="item">
|
||||||
|
<view class="left"><image :src="item.thumbnail && item.thumbnail!='null' ? item.thumbnail : '/static/images/common/empty-banner.png'" mode="aspectFill"></image></view>
|
||||||
|
<view class="content">
|
||||||
|
<view class="type u-line-4">{{item.description}}</view>
|
||||||
|
<view class="delivery-time">截止时间:{{ $u.timeFormat(item.endTime, 'yyyy-mm-dd hh:MM:ss') }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="bottom coreshop-margin-top-10">
|
||||||
|
<view class="more">正在接龙中</view>
|
||||||
|
<view class="coreshop-flex">
|
||||||
|
<view class='logistics coreshop-btn' @click="goSolitaireDetail(item.id)">查看详情</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<u-loadmore :status="loadStatus"></u-loadmore>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 无数据时默认显示 -->
|
||||||
|
<view class="coreshop-emptybox" v-else>
|
||||||
|
<u-empty :icon="$globalConstVars.apiFilesUrl+'/static/images/empty/order.png'" icon-size="150" text="暂无接龙信息" mode="list"></u-empty>
|
||||||
|
<navigator class="coreshop-btn" url="/pages/category/index/index" open-type="switchTab">随便逛逛</navigator>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
listData: [],
|
||||||
|
loadStatus: 'loadmore',
|
||||||
|
iconType: 'flower',
|
||||||
|
loadText: {
|
||||||
|
loadmore: '轻轻上拉',
|
||||||
|
loading: '努力加载中',
|
||||||
|
nomore: '实在没有了'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
shopName() {
|
||||||
|
return this.$store.state.config.shopName;
|
||||||
|
},
|
||||||
|
shareTitle() {
|
||||||
|
return this.$store.state.config.shareTitle;
|
||||||
|
},
|
||||||
|
shopLogo() {
|
||||||
|
return this.$store.state.config.shopLogo;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onReachBottom() {
|
||||||
|
if (this.loadStatus === 'loadmore') {
|
||||||
|
this.getList();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//获取列表
|
||||||
|
getList() {
|
||||||
|
this.loadStatus = 'loading'
|
||||||
|
let data = {
|
||||||
|
page: this.page,
|
||||||
|
limit: this.limit,
|
||||||
|
}
|
||||||
|
this.$u.api.getSolitairePageList(data).then(res => {
|
||||||
|
if (res.status) {
|
||||||
|
let newList = this.listData.concat(res.data);
|
||||||
|
this.listData = newList;
|
||||||
|
if (res.data.count > this.listData.length) {
|
||||||
|
this.page++
|
||||||
|
this.loadStatus = 'loadmore'
|
||||||
|
} else {
|
||||||
|
this.loadStatus = 'nomore'
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.$u.toast(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,389 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<u-navbar title="群接龙" safeAreaInsetTop fixed placeholder>
|
||||||
|
<view class="coreshop-navbar-left-slot" slot="left">
|
||||||
|
<u-icon name="arrow-left" size="19" @click="goNavigateBack"></u-icon>
|
||||||
|
<u-line direction="column" :hairline="false" length="16" margin="0 8px"></u-line>
|
||||||
|
<u-icon name="home" size="22" @click="goHome"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view slot="right">
|
||||||
|
</view>
|
||||||
|
</u-navbar>
|
||||||
|
|
||||||
|
|
||||||
|
<view class="solitaire-details-bg"></view>
|
||||||
|
<view class="solitaire-details-placeholder-body" />
|
||||||
|
|
||||||
|
<!--商家及推荐-->
|
||||||
|
<view class="coreshop-margin-20 coreshop-goods-shop-info-view-box">
|
||||||
|
<view class="coreshop-shop-view">
|
||||||
|
<view class="coreshop-position-absolute">
|
||||||
|
<u-avatar :src="shopLogo" shape="square"></u-avatar>
|
||||||
|
</view>
|
||||||
|
<view class="coreshop-margin-left-10 coreshop-padding-left-40 coreshop-padding-right-40">
|
||||||
|
<view class="coreshop-margin-bottom-5 coreshop-text-white">{{shopName || ' '}}</view>
|
||||||
|
<view class="coreshop-font-sm u-line-1 coreshop-text-white">{{shareTitle || ' '}}</view>
|
||||||
|
</view>
|
||||||
|
<u-button type="default" size="mini" :plain="true" @click="doPhoneCall" icon="phone" text="联系商家" color="#272d47"></u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="coreshop-bg-white solitaire-details-body">
|
||||||
|
<view class="coreshop-flex coreshop-flex-nowrap coreshop-justify-between">
|
||||||
|
<view class="coreshop-padding-top-15 coreshop-margin-bottom-10 coreshop-text-black u-line-2 coreshop-font-15">
|
||||||
|
{{model.title || ' '}}
|
||||||
|
</view>
|
||||||
|
<view class="solitaire-details-shareBox" @click="goShare()">
|
||||||
|
<u-icon name="share" color="#fff" size="22"></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="coreshop-font-11 coreshop-text-gray coreshop-margin-bottom-10 ">
|
||||||
|
{{$u.timeFormat(model.createTime, 'mm月dd日')}}发布截至{{$u.timeFormat(model.endTime, 'mm月dd日 hh:MM:ss')}}
|
||||||
|
</view>
|
||||||
|
<view class="coreshop-padding-10 coreshop-content">
|
||||||
|
<u-parse :content="model.contentBody" :selectable="true" v-if="model.contentBody"></u-parse>
|
||||||
|
<!-- 无数据时默认显示 -->
|
||||||
|
<view class="coreshop-emptybox" v-else>
|
||||||
|
<u-empty :icon="$globalConstVars.apiFilesUrl+'/static/images/empty/data.png'" icon-size="150" text="详情为空" mode="list"></u-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 购物车主结构 -->
|
||||||
|
<view class="solitaire-details-product-item" v-for="(item, index) in items" :key="index">
|
||||||
|
<view class="coreshop-flex">
|
||||||
|
<u-avatar :src="item.productObj.images ? item.productObj.images+'?x-oss-process=image/resize,m_lfit,h_320,w_240' : item.goodObj.image+'?x-oss-process=image/resize,m_lfit,h_320,w_240'" :size="60" shape="square"></u-avatar>
|
||||||
|
<view class="coreshop-margin-left-10">
|
||||||
|
<view class="coreshop-font-13 u-line-2">{{item.goodObj.name}} </view>
|
||||||
|
<view class="coreshop-font-12 coreshop-text-yellow coreshop-margin-top-10 u-line-1">{{ item.productObj.spesDesc }}</view>
|
||||||
|
<view class="coreshop-flex coreshop-justify-between coreshop-margin-top-10">
|
||||||
|
<view>
|
||||||
|
<text class="coreshop-font-16 coreshop-text-red coreshop-text-price">
|
||||||
|
{{item.price}}
|
||||||
|
</text>
|
||||||
|
<text class="coreshop-text-through coreshop-font-11 coreshop-margin-left-10 coreshop-text-grey">原价¥{{ item.productObj.price || '0.00'}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="cart-shoppingcard-goods-number">
|
||||||
|
<u-number-box buttonSize="24" integer :name="index" :value="item.nums" @change="toNumberChange" :step="1" :min="0" :max="item.oneCanBuy"></u-number-box>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cart-space-between">
|
||||||
|
<text class="cart-shoppingcard-remove cart-icons icon-msg" v-if="item.stockNo">库存不足</text>
|
||||||
|
<text class="cart-shoppingcard-remove cart-icons icon-msg" v-else-if="item.stockTension">库存紧张</text>
|
||||||
|
<text class="cart-shoppingcard-remove cart-icons" v-else=""></text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!--内容区-->
|
||||||
|
<view class="coreshop-margin-10 coreshop-padding-top-10 coreshop-bg-white">
|
||||||
|
<view class="coreshop-font-md coreshop-padding-top-10 coreshop-padding-bottom-10 coreshop-padding-left-10 coreshop-padding-right-10 coreshop-flex-direction-row">
|
||||||
|
<u-icon name="more-circle" color="#e54d42" label="接龙清单" labelSize="15px" label-pos="right"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view class="coreshop-padding-top-10">
|
||||||
|
<!--接龙记录-->
|
||||||
|
<view class="coreshop-padding-left-10 coreshop-padding-right-10 coreshop-padding-top-10 coreshop-padding-bottom-10" v-if="records.length>0">
|
||||||
|
<view class="coreshop-flex coreshop-flex-nowrap coreshop-justify-between coreshop-margin-bottom-10" v-for="(item, index) in records" :key="index">
|
||||||
|
<view class="coreshop-flex coreshop-flex-nowrap coreshop-justify-between coreshop-align-center">
|
||||||
|
<text class="coreshop-text-black coreshop-margin-right-10 coreshop-font-12">{{ records.length-index}}</text>
|
||||||
|
<u-avatar :src="item.avatarImage" :size="30"></u-avatar>
|
||||||
|
<text class="coreshop-text-black coreshop-font-12 u-line-1">{{ item.nickName}}</text>
|
||||||
|
<view class="coreshop-margin-left-10 coreshop-width-max-content">
|
||||||
|
<text class="coreshop-text-gray coreshop-font-10">{{$u.timeFormat(item.create, 'mm月dd日')}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="coreshop-text-right coreshop-flex-direction-column">
|
||||||
|
<text class="coreshop-text-black coreshop-font-11 u-line-1">{{ item.productSku}}</text>
|
||||||
|
<text class="coreshop-text-gray coreshop-margin-left-10 coreshop-font-10">x{{ item.nums}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 无数据时默认显示 -->
|
||||||
|
<view class="coreshop-emptybox coreshop-margin-0" v-else>
|
||||||
|
<u-empty :icon="$globalConstVars.apiFilesUrl+'/static/images/empty/data.png'" icon-size="150" text="就你购买后展示效果了^_^" mode="list"></u-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 分享弹窗 -->
|
||||||
|
<view class="coreshop-padding-10">
|
||||||
|
<u-popup mode="bottom" :show="shareBox" ref="share">
|
||||||
|
<!-- #ifdef H5 -->
|
||||||
|
<coreshop-share-h5 :objectId="model.id" :shareType="12" @close="closeShare()"></coreshop-share-h5>
|
||||||
|
<!-- #endif -->
|
||||||
|
<!-- #ifdef MP-WEIXIN -->
|
||||||
|
<coreshop-share-wx :objectId="model.id" :shareType="12" @close="closeShare()"></coreshop-share-wx>
|
||||||
|
<!-- #endif -->
|
||||||
|
<!-- #ifdef MP-ALIPAY -->
|
||||||
|
<coreshop-share-alipay :objectId="model.id" :shareType="12" @close="closeShare()"></coreshop-share-alipay>
|
||||||
|
<!-- #endif -->
|
||||||
|
<!-- #ifdef MP-TOUTIAO -->
|
||||||
|
<coreshop-share-tt :objectId="model.id" :shareType="12" @close="closeShare()"></coreshop-share-tt>
|
||||||
|
<!-- #endif -->
|
||||||
|
<!-- #ifdef APP-PLUS || APP-PLUS-NVUE -->
|
||||||
|
<coreshop-share-app :objectId="model.id" :shareType="12" @close="closeShare()"></coreshop-share-app>
|
||||||
|
<!-- #endif -->
|
||||||
|
</u-popup>
|
||||||
|
<div id="qrCode" ref="qrCodeDiv"></div>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="coreshop-foot-hight-view" />
|
||||||
|
<!--按钮-->
|
||||||
|
<view class="coreshop-bg-white coreshop-footer-fixed coreshop-foot-padding-bottom">
|
||||||
|
<view class="coreshop-flex coreshop-padding-10 coreshop-justify-between coreshop-align-center coreshop-percent-100">
|
||||||
|
<view>
|
||||||
|
<text>合计 :</text>
|
||||||
|
<text class="coreshop-font-26 coreshop-text-red">¥{{totalprice}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="coreshop-width-fit-content">
|
||||||
|
<u-button type="error" size="normal" @click="doSubmit" :disabled='submitStatus' :loading='submitStatus'>立即结算</u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 右边浮动球 -->
|
||||||
|
<!--<coreshop-fab horizontal="right" vertical="bottom" direction="vertical"></coreshop-fab>-->
|
||||||
|
<!-- 登录提示 -->
|
||||||
|
<coreshop-login-modal></coreshop-login-modal>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
id: 0,
|
||||||
|
model: {},
|
||||||
|
items: [],
|
||||||
|
records: [],
|
||||||
|
background: {
|
||||||
|
background: '#272d47'
|
||||||
|
},
|
||||||
|
customButtonStyle: {
|
||||||
|
background: 'none',
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
totalprice: '0.00',
|
||||||
|
cart: [],
|
||||||
|
type: 2,
|
||||||
|
cartType: 8,
|
||||||
|
shareBox: false,
|
||||||
|
submitStatus: false,
|
||||||
|
shareUrl: '/pages/share/jump/jump',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(e) {
|
||||||
|
this.id = e.id;
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.getDetial();
|
||||||
|
this.submitStatus = false;
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
shopName() {
|
||||||
|
return this.$store.state.config.shopName;
|
||||||
|
},
|
||||||
|
shareTitle() {
|
||||||
|
return this.$store.state.config.shareTitle;
|
||||||
|
},
|
||||||
|
shopLogo() {
|
||||||
|
return this.$store.state.config.shopLogo;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//获取列表
|
||||||
|
getDetial() {
|
||||||
|
let data = {
|
||||||
|
id: this.id
|
||||||
|
}
|
||||||
|
this.$u.api.getSolitaireDetail(data).then(res => {
|
||||||
|
if (res.status) {
|
||||||
|
this.model = res.data.model;
|
||||||
|
this.items = res.data.items;
|
||||||
|
this.records = res.data.record;
|
||||||
|
} else {
|
||||||
|
this.$u.toast(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//获取商品总额
|
||||||
|
getGoodsTotalMoney() {
|
||||||
|
var goodsTotalMoney = 0
|
||||||
|
this.cart.forEach(function (item, index, input) {
|
||||||
|
goodsTotalMoney += item.price * item.nums
|
||||||
|
})
|
||||||
|
this.totalprice = this.$common.formatMoney(goodsTotalMoney, 2, '')
|
||||||
|
},
|
||||||
|
toNumberChange: function (e) {
|
||||||
|
console.log(e);
|
||||||
|
this.$u.throttle(this.numberChange(e), 500)
|
||||||
|
},
|
||||||
|
numberChange: function (e) {
|
||||||
|
var _this = this;
|
||||||
|
var item = this.items[e.name];
|
||||||
|
var nums = e.value;
|
||||||
|
|
||||||
|
if (nums > 0) {
|
||||||
|
let data = {
|
||||||
|
ProductId: item.productId,
|
||||||
|
Nums: nums,
|
||||||
|
type: this.type,
|
||||||
|
cartType: this.cartType,
|
||||||
|
objectId: this.id
|
||||||
|
};
|
||||||
|
_this.$u.api.addCart(data).then(res => {
|
||||||
|
if (res.status) {
|
||||||
|
if (_this.cart.length < 1) {
|
||||||
|
_this.cart.push({
|
||||||
|
key: e.name,
|
||||||
|
id: res.data,
|
||||||
|
productId: item.productId,
|
||||||
|
goodsId: item.goodId,
|
||||||
|
nums: e.value,
|
||||||
|
price: item.price
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
var isIn = false
|
||||||
|
for (var i = 0; i < _this.cart.length; i++) {
|
||||||
|
if (_this.cart[i].key == e.name && _this.cart[i].productId == item.productId) {
|
||||||
|
_this.cart[i] = {
|
||||||
|
key: e.name,
|
||||||
|
id: res.data,
|
||||||
|
productId: item.productId,
|
||||||
|
goodsId: item.goodId,
|
||||||
|
nums: e.value,
|
||||||
|
price: item.price
|
||||||
|
}
|
||||||
|
isIn = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isIn) {
|
||||||
|
_this.cart.push({
|
||||||
|
key: e.name,
|
||||||
|
id: res.data,
|
||||||
|
productId: item.productId,
|
||||||
|
goodsId: item.goodId,
|
||||||
|
nums: e.value,
|
||||||
|
price: item.price
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_this.getGoodsTotalMoney();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
_this.$u.toast(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var deleteIndex = -1;
|
||||||
|
var deleteId = 0;
|
||||||
|
for (var i = 0; i < _this.cart.length; i++) {
|
||||||
|
if (_this.cart[i].key == e.name && _this.cart[i].productId == item.productId) {
|
||||||
|
//移除数据库
|
||||||
|
deleteIndex = i;
|
||||||
|
deleteId = _this.cart[i].id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (deleteIndex >= 0 && deleteId > 0) {
|
||||||
|
let data = {
|
||||||
|
id: deleteId
|
||||||
|
};
|
||||||
|
_this.$u.api.removeCart(data).then(res => {
|
||||||
|
if (res.status) {
|
||||||
|
_this.cart.splice(deleteIndex, 1);
|
||||||
|
_this.getGoodsTotalMoney();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doSubmit() {
|
||||||
|
if (this.cart.length < 1) {
|
||||||
|
this.$u.toast('请先选择商品')
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if (parseFloat(this.totalprice) < parseFloat(this.model.startBuyPrice)) {
|
||||||
|
this.$u.toast('最小购买价格为' + this.model.startBuyPrice + '元,请增加购买产品')
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
let userToken = this.$db.get('userToken');
|
||||||
|
let obj = {
|
||||||
|
cart: this.cart,
|
||||||
|
id: this.id,
|
||||||
|
token: userToken
|
||||||
|
}
|
||||||
|
this.submitStatus = true;
|
||||||
|
let newData = '';
|
||||||
|
for (var i = 0; i < this.cart.length; i++) {
|
||||||
|
if (this.cart[i].nums > 0) {
|
||||||
|
newData += ',' + this.cart[i].id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (newData.substr(0, 1) == ',') {
|
||||||
|
newData = newData.substr(1);
|
||||||
|
}
|
||||||
|
if (newData.length > 0) {
|
||||||
|
this.$u.route('/pages/placeOrder/index/index?orderType=' + this.cartType + '&objectId=' + this.id + '&cartIds=' + JSON.stringify(newData));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
//没有选择不跳转
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 跳转到h5分享页面
|
||||||
|
goShare() {
|
||||||
|
this.shareBox = true;
|
||||||
|
},
|
||||||
|
closeShare() {
|
||||||
|
this.shareBox = false;
|
||||||
|
},
|
||||||
|
//获取分享URL
|
||||||
|
getShareUrl() {
|
||||||
|
let data = {
|
||||||
|
client: 2,
|
||||||
|
url: "/pages/share/jump/jump",
|
||||||
|
type: 1,
|
||||||
|
page: 12,
|
||||||
|
params: {
|
||||||
|
id: this.model.id,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let userToken = this.$db.get('userToken');
|
||||||
|
if (userToken && userToken != '') {
|
||||||
|
data['token'] = userToken;
|
||||||
|
}
|
||||||
|
this.$u.api.share(data).then(res => {
|
||||||
|
this.shareUrl = res.data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
model: {
|
||||||
|
handler() {
|
||||||
|
this.getShareUrl();
|
||||||
|
},
|
||||||
|
deep: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//分享
|
||||||
|
onShareAppMessage(res) {
|
||||||
|
return {
|
||||||
|
title: this.model.title,
|
||||||
|
imageUrl: this.model.thumbnail,
|
||||||
|
path: this.shareUrl
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onShareTimeline(res) {
|
||||||
|
return {
|
||||||
|
title: this.model.title,
|
||||||
|
imageUrl: this.model.thumbnail,
|
||||||
|
path: this.shareUrl
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
||||||
@@ -4,12 +4,6 @@
|
|||||||
<h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
|
<h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
|
||||||
<h3 align="center">多平台快速开发的UI框架</h3>
|
<h3 align="center">多平台快速开发的UI框架</h3>
|
||||||
|
|
||||||
## 一起推动uView发展
|
|
||||||
|
|
||||||
uView正在参与开源中国的“年度最佳项目”评选,目前投票进入了最后一个阶段(之前投过票的现在也可以投票),
|
|
||||||
我们不分昼夜的努力,恳请同学们能为我们投一票,uView来源于社区,也希望社区能一起推动它的发展,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
|
|
||||||
|
|
||||||
|
|
||||||
## 说明
|
## 说明
|
||||||
|
|
||||||
uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
|
uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
|
||||||
@@ -27,7 +21,7 @@ uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全
|
|||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# npm方式安装
|
# npm方式安装,插件市场导入无需执行此命令
|
||||||
npm i uview-ui
|
npm i uview-ui
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,21 @@
|
|||||||
|
## 2.0.20(2022-01-14)
|
||||||
|
# uView2.0重磅发布,利剑出鞘,一统江湖
|
||||||
|
|
||||||
|
1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题
|
||||||
|
2. 修复Slider缺少disabled props 还有注释
|
||||||
|
3. 修复u-notice-bar点击事件无法拿到index索引值的问题
|
||||||
|
4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题
|
||||||
|
5. 优化头像为空时显示默认头像
|
||||||
|
6. 修复图片地址赋值后判断加载状态为完成问题
|
||||||
|
7. 修复日历滚动到默认日期月份区域
|
||||||
|
8. search组件暴露点击左边icon事件
|
||||||
|
9. 修复u-form clearValidate方法不生效
|
||||||
|
10. upload h5端增加返回文件参数(文件的name参数)
|
||||||
|
11. 处理upload选择文件后url为blob类型无法预览的问题
|
||||||
|
12. u-code-input 修复输入框没有往左移出一半屏幕
|
||||||
|
13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误
|
||||||
|
14. 临时处理ios app下grid点击坍塌问题
|
||||||
|
15. 其他修复
|
||||||
## 2.0.19(2021-12-29)
|
## 2.0.19(2021-12-29)
|
||||||
# uView2.0重磅发布,利剑出鞘,一统江湖
|
# uView2.0重磅发布,利剑出鞘,一统江湖
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
width: $u.addUnit(size),
|
width: $u.addUnit(size),
|
||||||
height: $u.addUnit(size),
|
height: $u.addUnit(size),
|
||||||
}, $u.addStyle(customStyle)]"
|
}, $u.addStyle(customStyle)]"
|
||||||
@tap.stop="clickHandler"
|
@tap="clickHandler"
|
||||||
>
|
>
|
||||||
<slot>
|
<slot>
|
||||||
<!-- #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU -->
|
<!-- #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU -->
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
class="u-avatar__image"
|
class="u-avatar__image"
|
||||||
v-else
|
v-else
|
||||||
:class="[`u-avatar__image--${shape}`]"
|
:class="[`u-avatar__image--${shape}`]"
|
||||||
:src="avatarUrl"
|
:src="avatarUrl || defaultUrl"
|
||||||
:mode="mode"
|
:mode="mode"
|
||||||
@error="errorHandler"
|
@error="errorHandler"
|
||||||
:style="[{
|
:style="[{
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="u-calendar-month-wrapper" ref="u-calendar-month-wrapper">
|
<view class="u-calendar-month-wrapper" ref="u-calendar-month-wrapper">
|
||||||
<view v-for="(item, index) in months" :key="index" :class="[`u-calendar-month-${index}`]"
|
<view v-for="(item, index) in months" :key="index" :class="[`u-calendar-month-${index}`]"
|
||||||
:ref="`u-calendar-month-${index}`" :id="`month-${item.month}`">
|
:ref="`u-calendar-month-${index}`" :id="`month-${index}`">
|
||||||
<text v-if="index !== 0" class="u-calendar-month__title">{{ item.year }}年{{ item.month }}月</text>
|
<text v-if="index !== 0" class="u-calendar-month__title">{{ item.year }}年{{ item.month }}月</text>
|
||||||
<view class="u-calendar-month__days">
|
<view class="u-calendar-month__days">
|
||||||
<view v-if="showMark" class="u-calendar-month__days__month-mark-wrapper">
|
<view v-if="showMark" class="u-calendar-month__days__month-mark-wrapper">
|
||||||
@@ -280,6 +280,8 @@
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
init() {
|
init() {
|
||||||
|
// 初始化默认选中
|
||||||
|
this.$emit('monthSelected', this.selected)
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
// 这里需要另一个延时,因为获取宽度后,会进行月份数据渲染,只有渲染完成之后,才有真正的高度
|
// 这里需要另一个延时,因为获取宽度后,会进行月份数据渲染,只有渲染完成之后,才有真正的高度
|
||||||
// 因为nvue下,$nextTick并不是100%可靠的
|
// 因为nvue下,$nextTick并不是100%可靠的
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
}"
|
}"
|
||||||
scroll-y
|
scroll-y
|
||||||
@scroll="onScroll"
|
@scroll="onScroll"
|
||||||
|
:scroll-top="scrollTop"
|
||||||
:scrollIntoView="scrollIntoView"
|
:scrollIntoView="scrollIntoView"
|
||||||
>
|
>
|
||||||
<uMonth
|
<uMonth
|
||||||
@@ -125,6 +126,7 @@ export default {
|
|||||||
// month组件中选择的日期数组
|
// month组件中选择的日期数组
|
||||||
selected: [],
|
selected: [],
|
||||||
scrollIntoView: '',
|
scrollIntoView: '',
|
||||||
|
scrollTop:0,
|
||||||
// 过滤处理方法
|
// 过滤处理方法
|
||||||
innerFormatter: (value) => value
|
innerFormatter: (value) => value
|
||||||
}
|
}
|
||||||
@@ -233,7 +235,7 @@ export default {
|
|||||||
const minMonth = dayjs(minDate).month() + 1
|
const minMonth = dayjs(minDate).month() + 1
|
||||||
const maxYear = dayjs(maxDate).year()
|
const maxYear = dayjs(maxDate).year()
|
||||||
const maxMonth = dayjs(maxDate).month() + 1
|
const maxMonth = dayjs(maxDate).month() + 1
|
||||||
return (maxYear - minYear) * 12 + (maxMonth - minMonth)
|
return (maxYear - minYear) * 12 + (maxMonth - minMonth) + 1
|
||||||
},
|
},
|
||||||
// 设置月份数据
|
// 设置月份数据
|
||||||
setMonth() {
|
setMonth() {
|
||||||
@@ -309,6 +311,28 @@ export default {
|
|||||||
year: dayjs(minDate).add(i, 'month').year()
|
year: dayjs(minDate).add(i, 'month').year()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
// 滚动到默认设置的月份
|
||||||
|
scrollIntoDefaultMonth(selected) {
|
||||||
|
// 查询默认日期在可选列表的下标
|
||||||
|
const _index = this.months.findIndex(({
|
||||||
|
year,
|
||||||
|
month
|
||||||
|
}) => {
|
||||||
|
month = uni.$u.padZero(month)
|
||||||
|
return `${year}-${month}` === selected
|
||||||
|
})
|
||||||
|
if (_index !== -1) {
|
||||||
|
// #ifndef MP-WEIXIN
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.scrollIntoView = `month-${_index}`
|
||||||
|
})
|
||||||
|
// #endif
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
this.scrollTop = this.months[_index].top || 0;
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// scroll-view滚动监听
|
// scroll-view滚动监听
|
||||||
onScroll(event) {
|
onScroll(event) {
|
||||||
@@ -327,6 +351,22 @@ export default {
|
|||||||
topArr.map((item, index) => {
|
topArr.map((item, index) => {
|
||||||
this.months[index].top = item
|
this.months[index].top = item
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 获取默认日期的下标
|
||||||
|
if (!this.defaultDate) {
|
||||||
|
// 如果没有设置默认日期,则将当天日期设置为默认选中的日期
|
||||||
|
const selected = dayjs().format("YYYY-MM")
|
||||||
|
this.scrollIntoDefaultMonth(selected)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let selected = dayjs().format("YYYY-MM");
|
||||||
|
// 单选模式,可以是字符串或数组,Date对象等
|
||||||
|
if (!uni.$u.test.array(this.defaultDate)) {
|
||||||
|
selected = dayjs(this.defaultDate).format("YYYY-MM")
|
||||||
|
} else {
|
||||||
|
selected = dayjs(this.defaultDate[0]).format("YYYY-MM");
|
||||||
|
}
|
||||||
|
this.scrollIntoDefaultMonth(selected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -203,7 +203,7 @@
|
|||||||
// 之所以需要input输入框,是因为有它才能唤起键盘
|
// 之所以需要input输入框,是因为有它才能唤起键盘
|
||||||
// 这里将它设置为两倍的屏幕宽度,再将左边的一半移出屏幕,为了不让用户看到输入的内容
|
// 这里将它设置为两倍的屏幕宽度,再将左边的一半移出屏幕,为了不让用户看到输入的内容
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: -150rpx;
|
left: -750rpx;
|
||||||
width: 1500rpx;
|
width: 1500rpx;
|
||||||
top: 0;
|
top: 0;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|||||||
@@ -14,22 +14,18 @@
|
|||||||
>
|
>
|
||||||
<!-- #ifndef MP-WEIXIN -->
|
<!-- #ifndef MP-WEIXIN -->
|
||||||
<!-- 微信小程序不支持,因为微信中不支持 <slot name="title" slot="title" />的写法 -->
|
<!-- 微信小程序不支持,因为微信中不支持 <slot name="title" slot="title" />的写法 -->
|
||||||
<slot
|
<template slot="title">
|
||||||
name="title"
|
<slot name="title"></slot>
|
||||||
slot="title"
|
</template>
|
||||||
/>
|
<template slot="icon">
|
||||||
<slot
|
<slot name="icon"></slot>
|
||||||
name="icon"
|
</template>
|
||||||
slot="icon"
|
<template slot="value">
|
||||||
/>
|
<slot name="value"></slot>
|
||||||
<slot
|
</template>
|
||||||
name="value"
|
<template slot="right-icon">
|
||||||
slot="value"
|
<slot name="right-icon"></slot>
|
||||||
/>
|
</template>
|
||||||
<slot
|
|
||||||
name="right-icon"
|
|
||||||
slot="right-icon"
|
|
||||||
/>
|
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
</u-cell>
|
</u-cell>
|
||||||
<view
|
<view
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
:interval="duration"
|
:interval="duration"
|
||||||
:autoplay="true"
|
:autoplay="true"
|
||||||
class="u-notice__swiper"
|
class="u-notice__swiper"
|
||||||
|
@change="noticeChange"
|
||||||
>
|
>
|
||||||
<swiper-item
|
<swiper-item
|
||||||
v-for="(item, index) in text"
|
v-for="(item, index) in text"
|
||||||
@@ -101,13 +102,16 @@
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
index:0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
noticeChange(e){
|
||||||
|
this.index = e.detail.current
|
||||||
|
},
|
||||||
// 点击通告栏
|
// 点击通告栏
|
||||||
clickHandler(index) {
|
clickHandler() {
|
||||||
this.$emit('click', index)
|
this.$emit('click', this.index)
|
||||||
},
|
},
|
||||||
// 点击关闭按钮
|
// 点击关闭按钮
|
||||||
close() {
|
close() {
|
||||||
|
|||||||
@@ -112,7 +112,7 @@
|
|||||||
props = [].concat(props);
|
props = [].concat(props);
|
||||||
this.children.map((child) => {
|
this.children.map((child) => {
|
||||||
// 如果u-form-item的prop在props数组中,则清除对应的校验结果信息
|
// 如果u-form-item的prop在props数组中,则清除对应的校验结果信息
|
||||||
if (props.includes(child.props)) {
|
if (props.includes(child.prop)) {
|
||||||
child.message = null;
|
child.message = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<!-- #ifndef APP-NVUE -->
|
||||||
<view
|
<view
|
||||||
class="u-grid-item"
|
class="u-grid-item"
|
||||||
hover-class="u-grid-item--hover-class"
|
hover-class="u-grid-item--hover-class"
|
||||||
@@ -9,6 +10,18 @@
|
|||||||
>
|
>
|
||||||
<slot />
|
<slot />
|
||||||
</view>
|
</view>
|
||||||
|
<!-- #endif -->
|
||||||
|
<!-- #ifdef APP-NVUE -->
|
||||||
|
<view
|
||||||
|
class="u-grid-item"
|
||||||
|
:hover-stay-time="200"
|
||||||
|
@tap="clickHandler"
|
||||||
|
:class="classes"
|
||||||
|
:style="[itemStyle]"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</view>
|
||||||
|
<!-- #endif -->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -117,10 +117,9 @@
|
|||||||
if (!n) {
|
if (!n) {
|
||||||
// 如果传入null或者'',或者false,或者undefined,标记为错误状态
|
// 如果传入null或者'',或者false,或者undefined,标记为错误状态
|
||||||
this.isError = true
|
this.isError = true
|
||||||
|
this.loading = false
|
||||||
} else {
|
} else {
|
||||||
this.isError = false
|
this.isError = false
|
||||||
this.loading = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
enable-back-to-top
|
enable-back-to-top
|
||||||
:offset-accuracy="1"
|
:offset-accuracy="1"
|
||||||
:style="{
|
:style="{
|
||||||
height: $u.addUnit(scrollViewHeight)
|
maxHeight: $u.addUnit(scrollViewHeight)
|
||||||
}"
|
}"
|
||||||
@scroll="scrollHandler"
|
@scroll="scrollHandler"
|
||||||
ref="uList"
|
ref="uList"
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
:scrollIntoView="scrollIntoView"
|
:scrollIntoView="scrollIntoView"
|
||||||
:offset-accuracy="1"
|
:offset-accuracy="1"
|
||||||
:style="{
|
:style="{
|
||||||
height: $u.addUnit(scrollViewHeight)
|
maxHeight: $u.addUnit(scrollViewHeight)
|
||||||
}"
|
}"
|
||||||
scroll-y
|
scroll-y
|
||||||
@scroll="scrollHandler"
|
@scroll="scrollHandler"
|
||||||
@@ -187,7 +187,9 @@
|
|||||||
methods: {
|
methods: {
|
||||||
init() {
|
init() {
|
||||||
// 设置列表的高度为整个屏幕的高度
|
// 设置列表的高度为整个屏幕的高度
|
||||||
this.scrollViewHeight = this.sys.windowHeight
|
//减去this.customNavHeight,并将this.scrollViewHeight设置为maxHeight
|
||||||
|
//解决当u-index-list组件放在tabbar页面时,scroll-view内容较少时,还能滚动
|
||||||
|
this.scrollViewHeight = this.sys.windowHeight - this.customNavHeight
|
||||||
},
|
},
|
||||||
// 索引列表被触摸
|
// 索引列表被触摸
|
||||||
touchStart(e) {
|
touchStart(e) {
|
||||||
|
|||||||
@@ -14,6 +14,9 @@
|
|||||||
</slot>
|
</slot>
|
||||||
</view>
|
</view>
|
||||||
<view class="u-input__content__field-wrapper" @tap="clickHandler">
|
<view class="u-input__content__field-wrapper" @tap="clickHandler">
|
||||||
|
<!-- 根据uni-app的input组件文档,H5和APP中只要声明了password参数(无论true还是false),type均失效,此时
|
||||||
|
为了防止type=number时,又存在password属性,type无效,此时需要设置password为undefined
|
||||||
|
-->
|
||||||
<input
|
<input
|
||||||
class="u-input__content__field-wrapper__field"
|
class="u-input__content__field-wrapper__field"
|
||||||
:style="[inputStyle]"
|
:style="[inputStyle]"
|
||||||
@@ -34,7 +37,7 @@
|
|||||||
:adjust-position="adjustPosition"
|
:adjust-position="adjustPosition"
|
||||||
:selection-end="selectionEnd"
|
:selection-end="selectionEnd"
|
||||||
:selection-start="selectionStart"
|
:selection-start="selectionStart"
|
||||||
:password="password || type === 'password'"
|
:password="password || type === 'password' || undefined"
|
||||||
@input="onInput"
|
@input="onInput"
|
||||||
@blur="onBlur"
|
@blur="onBlur"
|
||||||
@focus="onFocus"
|
@focus="onFocus"
|
||||||
|
|||||||
@@ -254,6 +254,7 @@ export default {
|
|||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
display: block;
|
display: block;
|
||||||
/* #endif */
|
/* #endif */
|
||||||
|
color: $u-main-color;
|
||||||
|
|
||||||
&--disabled {
|
&--disabled {
|
||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<view class="u-search__content__icon">
|
<view class="u-search__content__icon">
|
||||||
<u-icon
|
<u-icon
|
||||||
|
@tap="clickIcon"
|
||||||
:size="22"
|
:size="22"
|
||||||
:name="searchIcon"
|
:name="searchIcon"
|
||||||
:color="searchIconColor ? searchIconColor : color"
|
:color="searchIconColor ? searchIconColor : color"
|
||||||
@@ -190,6 +191,10 @@
|
|||||||
// 点击搜索框,只有disabled=true时才发出事件,因为禁止了输入,意味着是想跳转真正的搜索页
|
// 点击搜索框,只有disabled=true时才发出事件,因为禁止了输入,意味着是想跳转真正的搜索页
|
||||||
clickHandler() {
|
clickHandler() {
|
||||||
if (this.disabled) this.$emit('click');
|
if (this.disabled) this.$emit('click');
|
||||||
|
},
|
||||||
|
// 点击左边图标
|
||||||
|
clickIcon() {
|
||||||
|
this.$emit('clickIcon');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,11 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
default: uni.$u.props.slider.blockColor
|
default: uni.$u.props.slider.blockColor
|
||||||
},
|
},
|
||||||
|
// 禁用状态
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: uni.$u.props.slider.disabled
|
||||||
|
},
|
||||||
// 是否显示当前的选择值
|
// 是否显示当前的选择值
|
||||||
showValue: {
|
showValue: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
:blockSize="$u.getPx(blockSize)"
|
:blockSize="$u.getPx(blockSize)"
|
||||||
:blockColor="blockColor"
|
:blockColor="blockColor"
|
||||||
:showValue="showValue"
|
:showValue="showValue"
|
||||||
|
:disabled="disabled"
|
||||||
@changing="changingHandler"
|
@changing="changingHandler"
|
||||||
@change="changeHandler"
|
@change="changeHandler"
|
||||||
></slider>
|
></slider>
|
||||||
|
|||||||
@@ -95,7 +95,7 @@
|
|||||||
<view
|
<view
|
||||||
v-else
|
v-else
|
||||||
class="u-upload__button"
|
class="u-upload__button"
|
||||||
:hover-class="!disabled && 'u-upload__button--hover'"
|
:hover-class="!disabled ? 'u-upload__button--hover' : ''"
|
||||||
hover-stay-time="150"
|
hover-stay-time="150"
|
||||||
@tap="chooseFile"
|
@tap="chooseFile"
|
||||||
:class="[disabled && 'u-upload__button--disabled']"
|
:class="[disabled && 'u-upload__button--disabled']"
|
||||||
@@ -188,8 +188,9 @@
|
|||||||
} = this;
|
} = this;
|
||||||
const lists = fileList.map((item) =>
|
const lists = fileList.map((item) =>
|
||||||
Object.assign(Object.assign({}, item), {
|
Object.assign(Object.assign({}, item), {
|
||||||
isImage: uni.$u.test.image(item.url),
|
// 如果item.url为本地选择的blob文件的话,无法判断其为video还是image,此处优先通过accept做判断处理
|
||||||
isVideo: uni.$u.test.video(item.url),
|
isImage: this.accept === 'image' || uni.$u.test.image(item.url || item.thumb),
|
||||||
|
isVideo: this.accept === 'video' || uni.$u.test.video(item.url || item.thumb),
|
||||||
deletable: typeof(item.deletable) === 'boolean' ? item.deletable : this.deletable,
|
deletable: typeof(item.deletable) === 'boolean' ? item.deletable : this.deletable,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@@ -299,8 +300,8 @@
|
|||||||
if (!item.isImage || !this.previewFullImage) return
|
if (!item.isImage || !this.previewFullImage) return
|
||||||
uni.previewImage({
|
uni.previewImage({
|
||||||
// 先filter找出为图片的item,再返回filter结果中的图片url
|
// 先filter找出为图片的item,再返回filter结果中的图片url
|
||||||
urls: this.lists.filter((item) => uni.$u.test.image(item.url)).map((item) => item.url),
|
urls: this.lists.filter((item) => this.accept === 'image' || uni.$u.test.image(item.url || item.thumb)).map((item) => item.url || item.thumb),
|
||||||
current: item.url,
|
current: item.url || item.thumb,
|
||||||
fail() {
|
fail() {
|
||||||
uni.$u.toast('预览图片失败')
|
uni.$u.toast('预览图片失败')
|
||||||
},
|
},
|
||||||
@@ -324,10 +325,7 @@
|
|||||||
),
|
),
|
||||||
current: index,
|
current: index,
|
||||||
fail() {
|
fail() {
|
||||||
wx.showToast({
|
uni.$u.toast('预览视频失败')
|
||||||
title: '预览视频失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -17,7 +17,10 @@ function formatImage(res) {
|
|||||||
type: 'image',
|
type: 'image',
|
||||||
url: item.path,
|
url: item.path,
|
||||||
thumb: item.path,
|
thumb: item.path,
|
||||||
size: item.size
|
size: item.size,
|
||||||
|
// #ifdef H5
|
||||||
|
name: item.name
|
||||||
|
// #endif
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +31,10 @@ function formatVideo(res) {
|
|||||||
type: 'video',
|
type: 'video',
|
||||||
url: res.tempFilePath,
|
url: res.tempFilePath,
|
||||||
thumb: res.thumbTempFilePath,
|
thumb: res.thumbTempFilePath,
|
||||||
size: res.size
|
size: res.size,
|
||||||
|
// #ifdef H5
|
||||||
|
name: res.name
|
||||||
|
// #endif
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -44,7 +50,15 @@ function formatMedia(res) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function formatFile(res) {
|
function formatFile(res) {
|
||||||
return res.tempFiles.map((item) => ({ ...pickExclude(item, ['path']), url: item.path, size:item.size }))
|
return res.tempFiles.map((item) => ({
|
||||||
|
...pickExclude(item, ['path']),
|
||||||
|
url: item.path,
|
||||||
|
size:item.size,
|
||||||
|
// #ifdef H5
|
||||||
|
name: item.name,
|
||||||
|
type: item.type
|
||||||
|
// #endif
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
export function chooseFile({
|
export function chooseFile({
|
||||||
accept,
|
accept,
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
// 此版本发布于2020-12-29
|
// 此版本发布于2022-01-14
|
||||||
const version = '2.0.19'
|
const version = '2.0.20'
|
||||||
|
|
||||||
|
// 开发环境才提示,生产环境不会提示
|
||||||
|
if (process.env.NODE_ENV === 'development') {
|
||||||
|
console.log(`\n %c uView V${version} %c https://www.uviewui.com/ \n\n`, 'color: #ffffff; background: #3c9cff; padding:5px 0;', 'color: #3c9cff;background: #ffffff; padding:5px 0;');
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
v: version,
|
v: version,
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ export default {
|
|||||||
inactiveColor: '#c0c4cc',
|
inactiveColor: '#c0c4cc',
|
||||||
blockColor: '#ffffff',
|
blockColor: '#ffffff',
|
||||||
showValue: false,
|
showValue: false,
|
||||||
|
disabled:false,
|
||||||
blockStyle: () => {}
|
blockStyle: () => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"id": "uview-ui",
|
"id": "uview-ui",
|
||||||
"name": "uview-ui",
|
"name": "uview-ui",
|
||||||
"displayName": "uView2.0重磅发布,利剑出鞘,一统江湖",
|
"displayName": "uView2.0重磅发布,利剑出鞘,一统江湖",
|
||||||
"version": "2.0.19",
|
"version": "2.0.20",
|
||||||
"description": "uView UI已完美兼容nvue,全面的组件和便捷的工具会让您信手拈来,如鱼得水",
|
"description": "uView UI已完美兼容nvue,全面的组件和便捷的工具会让您信手拈来,如鱼得水",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"uview",
|
"uview",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Core" Version="1.1.0" />
|
<PackageReference Include="Microsoft.AspNetCore.SignalR.Core" Version="1.1.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
<PackageReference Include="NPOI" Version="2.4.1" />
|
<PackageReference Include="NPOI" Version="2.4.1" />
|
||||||
<PackageReference Include="ToolGood.Words" Version="3.0.2.8" />
|
<PackageReference Include="ToolGood.Words" Version="3.0.3.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="MediatR" Version="9.0.0" />
|
<PackageReference Include="MediatR" Version="10.0.1" />
|
||||||
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="9.0.0" />
|
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="10.0.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.2.1" />
|
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -793,6 +793,43 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 获取商品列表====================================================
|
||||||
|
|
||||||
|
// POST: Api/Tools/GetGoods
|
||||||
|
/// <summary>
|
||||||
|
/// 获取商品列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("获取商品列表")]
|
||||||
|
public async Task<AdminUiCallBack> GetGoodAndSku()
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
|
||||||
|
var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
|
||||||
|
var where = PredicateBuilder.True<CoreCmsGoods>();
|
||||||
|
where = where.And(p => p.isMarketable);
|
||||||
|
//商品编码 nvarchar
|
||||||
|
var bn = Request.Form["bn"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(bn)) where = where.And(p => p.bn.Contains(bn));
|
||||||
|
//商品名称 nvarchar
|
||||||
|
var name = Request.Form["name"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(name)) where = where.And(p => p.name.Contains(name));
|
||||||
|
where = where.And(p => p.isDel == false);
|
||||||
|
//获取数据
|
||||||
|
var list = await _coreCmsGoodsServices.QueryGoodAndSkuPageAsync(where, p => p.createTime, OrderByType.Desc,
|
||||||
|
pageCurrent, pageSize);
|
||||||
|
//返回数据
|
||||||
|
|
||||||
|
jm.data = list;
|
||||||
|
jm.code = 0;
|
||||||
|
jm.count = list.TotalCount;
|
||||||
|
jm.msg = "数据调用成功!";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region 根据商品序列获取货品数据====================================================
|
#region 根据商品序列获取货品数据====================================================
|
||||||
|
|
||||||
// POST: Api/Tools/GetProducts
|
// POST: Api/Tools/GetProducts
|
||||||
@@ -1126,7 +1163,6 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Authorize(Permissions.Name)]
|
|
||||||
public async Task<WebApiCallBack> LogisticsByApi([FromBody] FMApiLogisticsByApiPost entity)
|
public async Task<WebApiCallBack> LogisticsByApi([FromBody] FMApiLogisticsByApiPost entity)
|
||||||
{
|
{
|
||||||
var jm = new WebApiCallBack();
|
var jm = new WebApiCallBack();
|
||||||
|
|||||||
@@ -1,948 +0,0 @@
|
|||||||
/***********************************************************************
|
|
||||||
* Project: CoreCms
|
|
||||||
* ProjectName: 核心内容管理系统
|
|
||||||
* Web: https://www.corecms.net
|
|
||||||
* Author: 大灰灰
|
|
||||||
* Email: jianweie@163.com
|
|
||||||
* CreateTime: 2021/1/31 21:45:10
|
|
||||||
* Description: 暂无
|
|
||||||
***********************************************************************/
|
|
||||||
|
|
||||||
using CoreCms.Net.Configuration;
|
|
||||||
using CoreCms.Net.Filter;
|
|
||||||
using CoreCms.Net.IServices;
|
|
||||||
using CoreCms.Net.Model.Entities;
|
|
||||||
using CoreCms.Net.Model.Entities.Expression;
|
|
||||||
using CoreCms.Net.Model.FromBody;
|
|
||||||
using CoreCms.Net.Model.ViewModels.UI;
|
|
||||||
using CoreCms.Net.Utility.Extensions;
|
|
||||||
using CoreCms.Net.Utility.Helper;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using NPOI.HSSF.UserModel;
|
|
||||||
using SqlSugar;
|
|
||||||
using System;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Linq.Expressions;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace CoreCms.Net.Web.Admin.Controllers
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 服务消费券
|
|
||||||
///</summary>
|
|
||||||
[Description("服务消费券")]
|
|
||||||
[Route("api/[controller]/[action]")]
|
|
||||||
[ApiController]
|
|
||||||
[RequiredErrorForAdmin]
|
|
||||||
[Authorize(Permissions.Name)]
|
|
||||||
public class CoreCmsUserServicesTicketController : ControllerBase
|
|
||||||
{
|
|
||||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
|
||||||
private readonly ICoreCmsUserServicesTicketServices _CoreCmsUserServicesTicketServices;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 构造函数
|
|
||||||
///</summary>
|
|
||||||
public CoreCmsUserServicesTicketController(IWebHostEnvironment webHostEnvironment
|
|
||||||
, ICoreCmsUserServicesTicketServices CoreCmsUserServicesTicketServices
|
|
||||||
)
|
|
||||||
{
|
|
||||||
_webHostEnvironment = webHostEnvironment;
|
|
||||||
_CoreCmsUserServicesTicketServices = CoreCmsUserServicesTicketServices;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 获取列表============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/GetPageList
|
|
||||||
/// <summary>
|
|
||||||
/// 获取列表
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("获取列表")]
|
|
||||||
public async Task<AdminUiCallBack> GetPageList()
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
|
|
||||||
var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
|
|
||||||
var where = PredicateBuilder.True<CoreCmsUserServicesTicket>();
|
|
||||||
//获取排序字段
|
|
||||||
var orderField = Request.Form["orderField"].FirstOrDefault();
|
|
||||||
Expression<Func<CoreCmsUserServicesTicket, object>> orderEx;
|
|
||||||
switch (orderField)
|
|
||||||
{
|
|
||||||
case "id":
|
|
||||||
orderEx = p => p.id;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "serviceOrderId":
|
|
||||||
orderEx = p => p.serviceOrderId;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "securityCode":
|
|
||||||
orderEx = p => p.securityCode;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "redeemCode":
|
|
||||||
orderEx = p => p.redeemCode;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "serviceId":
|
|
||||||
orderEx = p => p.serviceId;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "userId":
|
|
||||||
orderEx = p => p.userId;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "status":
|
|
||||||
orderEx = p => p.status;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "validityType":
|
|
||||||
orderEx = p => p.validityType;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "validityStartTime":
|
|
||||||
orderEx = p => p.validityStartTime;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "validityEndTime":
|
|
||||||
orderEx = p => p.validityEndTime;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "createTime":
|
|
||||||
orderEx = p => p.createTime;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "isVerification":
|
|
||||||
orderEx = p => p.isVerification;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "verificationTime":
|
|
||||||
orderEx = p => p.verificationTime;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
orderEx = p => p.id;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//设置排序方式
|
|
||||||
var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
|
|
||||||
var orderBy = orderDirection switch
|
|
||||||
{
|
|
||||||
"asc" => OrderByType.Asc,
|
|
||||||
"desc" => OrderByType.Desc,
|
|
||||||
_ => OrderByType.Desc
|
|
||||||
};
|
|
||||||
//查询筛选
|
|
||||||
|
|
||||||
//序列 int
|
|
||||||
var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (id > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.id == id);
|
|
||||||
}
|
|
||||||
//关联购买订单 nvarchar
|
|
||||||
var serviceOrderId = Request.Form["serviceOrderId"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(serviceOrderId))
|
|
||||||
{
|
|
||||||
where = where.And(p => p.serviceOrderId.Contains(serviceOrderId));
|
|
||||||
}
|
|
||||||
//兑换码 nvarchar
|
|
||||||
var redeemCode = Request.Form["redeemCode"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(redeemCode))
|
|
||||||
{
|
|
||||||
where = where.And(p => p.redeemCode.Contains(redeemCode));
|
|
||||||
}
|
|
||||||
//关联服务项目id int
|
|
||||||
var serviceId = Request.Form["serviceId"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (serviceId > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.serviceId == serviceId);
|
|
||||||
}
|
|
||||||
//关联用户id int
|
|
||||||
var userId = Request.Form["userId"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (userId > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.userId == userId);
|
|
||||||
}
|
|
||||||
//状态 int
|
|
||||||
var status = Request.Form["status"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (status > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.status == status);
|
|
||||||
}
|
|
||||||
//核销有效期类型 int
|
|
||||||
var validityType = Request.Form["validityType"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (validityType > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.validityType == validityType);
|
|
||||||
}
|
|
||||||
//核销开始时间 datetime
|
|
||||||
var validityStartTime = Request.Form["validityStartTime"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(validityStartTime))
|
|
||||||
{
|
|
||||||
if (validityStartTime.Contains("到"))
|
|
||||||
{
|
|
||||||
var dts = validityStartTime.Split("到");
|
|
||||||
var dtStart = dts[0].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.validityStartTime > dtStart);
|
|
||||||
var dtEnd = dts[1].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.validityStartTime < dtEnd);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var dt = validityStartTime.ObjectToDate();
|
|
||||||
where = where.And(p => p.validityStartTime > dt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//核销结束时间 datetime
|
|
||||||
var validityEndTime = Request.Form["validityEndTime"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(validityEndTime))
|
|
||||||
{
|
|
||||||
if (validityEndTime.Contains("到"))
|
|
||||||
{
|
|
||||||
var dts = validityEndTime.Split("到");
|
|
||||||
var dtStart = dts[0].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.validityEndTime > dtStart);
|
|
||||||
var dtEnd = dts[1].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.validityEndTime < dtEnd);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var dt = validityEndTime.ObjectToDate();
|
|
||||||
where = where.And(p => p.validityEndTime > dt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//创建时间 datetime
|
|
||||||
var createTime = Request.Form["createTime"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(createTime))
|
|
||||||
{
|
|
||||||
if (createTime.Contains("到"))
|
|
||||||
{
|
|
||||||
var dts = createTime.Split("到");
|
|
||||||
var dtStart = dts[0].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.createTime > dtStart);
|
|
||||||
var dtEnd = dts[1].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.createTime < dtEnd);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var dt = createTime.ObjectToDate();
|
|
||||||
where = where.And(p => p.createTime > dt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//是否核销 bit
|
|
||||||
var isVerification = Request.Form["isVerification"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(isVerification) && isVerification.ToLowerInvariant() == "true")
|
|
||||||
{
|
|
||||||
where = where.And(p => p.isVerification == true);
|
|
||||||
}
|
|
||||||
else if (!string.IsNullOrEmpty(isVerification) && isVerification.ToLowerInvariant() == "false")
|
|
||||||
{
|
|
||||||
where = where.And(p => p.isVerification == false);
|
|
||||||
}
|
|
||||||
//核销时间 datetime
|
|
||||||
var verificationTime = Request.Form["verificationTime"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(verificationTime))
|
|
||||||
{
|
|
||||||
if (verificationTime.Contains("到"))
|
|
||||||
{
|
|
||||||
var dts = verificationTime.Split("到");
|
|
||||||
var dtStart = dts[0].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.verificationTime > dtStart);
|
|
||||||
var dtEnd = dts[1].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.verificationTime < dtEnd);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var dt = verificationTime.ObjectToDate();
|
|
||||||
where = where.And(p => p.verificationTime > dt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//获取数据
|
|
||||||
var list = await _CoreCmsUserServicesTicketServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize);
|
|
||||||
//返回数据
|
|
||||||
jm.data = list;
|
|
||||||
jm.code = 0;
|
|
||||||
jm.count = list.TotalCount;
|
|
||||||
jm.msg = "数据调用成功!";
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 获取列表============================================================
|
|
||||||
|
|
||||||
#region 首页数据============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/GetIndex
|
|
||||||
/// <summary>
|
|
||||||
/// 首页数据
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("首页数据")]
|
|
||||||
public AdminUiCallBack GetIndex()
|
|
||||||
{
|
|
||||||
//返回数据
|
|
||||||
var jm = new AdminUiCallBack { code = 0 };
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 首页数据============================================================
|
|
||||||
|
|
||||||
#region 创建数据============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/GetCreate
|
|
||||||
/// <summary>
|
|
||||||
/// 创建数据
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("创建数据")]
|
|
||||||
public AdminUiCallBack GetCreate()
|
|
||||||
{
|
|
||||||
//返回数据
|
|
||||||
var jm = new AdminUiCallBack { code = 0 };
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 创建数据============================================================
|
|
||||||
|
|
||||||
#region 创建提交============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/DoCreate
|
|
||||||
/// <summary>
|
|
||||||
/// 创建提交
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("创建提交")]
|
|
||||||
public async Task<AdminUiCallBack> DoCreate([FromBody] CoreCmsUserServicesTicket entity)
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
var bl = await _CoreCmsUserServicesTicketServices.InsertAsync(entity) > 0;
|
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = (bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure);
|
|
||||||
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 创建提交============================================================
|
|
||||||
|
|
||||||
#region 编辑数据============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/GetEdit
|
|
||||||
/// <summary>
|
|
||||||
/// 编辑数据
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("编辑数据")]
|
|
||||||
public async Task<AdminUiCallBack> GetEdit([FromBody] FMIntId entity)
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
var model = await _CoreCmsUserServicesTicketServices.QueryByIdAsync(entity.id);
|
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
jm.msg = "不存在此信息";
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
jm.code = 0;
|
|
||||||
jm.data = model;
|
|
||||||
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 编辑数据============================================================
|
|
||||||
|
|
||||||
#region 编辑提交============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/Edit
|
|
||||||
/// <summary>
|
|
||||||
/// 编辑提交
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("编辑提交")]
|
|
||||||
public async Task<AdminUiCallBack> DoEdit([FromBody] CoreCmsUserServicesTicket entity)
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
var oldModel = await _CoreCmsUserServicesTicketServices.QueryByIdAsync(entity.id);
|
|
||||||
if (oldModel == null)
|
|
||||||
{
|
|
||||||
jm.msg = "不存在此信息";
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
//事物处理过程开始
|
|
||||||
oldModel.serviceOrderId = entity.serviceOrderId;
|
|
||||||
oldModel.securityCode = entity.securityCode;
|
|
||||||
oldModel.redeemCode = entity.redeemCode;
|
|
||||||
oldModel.serviceId = entity.serviceId;
|
|
||||||
oldModel.userId = entity.userId;
|
|
||||||
oldModel.status = entity.status;
|
|
||||||
oldModel.validityType = entity.validityType;
|
|
||||||
oldModel.validityStartTime = entity.validityStartTime;
|
|
||||||
oldModel.validityEndTime = entity.validityEndTime;
|
|
||||||
oldModel.createTime = entity.createTime;
|
|
||||||
oldModel.isVerification = entity.isVerification;
|
|
||||||
oldModel.verificationTime = entity.verificationTime;
|
|
||||||
|
|
||||||
//事物处理过程结束
|
|
||||||
var bl = await _CoreCmsUserServicesTicketServices.UpdateAsync(oldModel);
|
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
|
||||||
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 编辑提交============================================================
|
|
||||||
|
|
||||||
#region 删除数据============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/DoDelete/10
|
|
||||||
/// <summary>
|
|
||||||
/// 单选删除
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("单选删除")]
|
|
||||||
public async Task<AdminUiCallBack> DoDelete([FromBody] FMIntId entity)
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
var model = await _CoreCmsUserServicesTicketServices.QueryByIdAsync(entity.id);
|
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
jm.msg = GlobalConstVars.DataisNo;
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
var bl = await _CoreCmsUserServicesTicketServices.DeleteByIdAsync(entity.id);
|
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 删除数据============================================================
|
|
||||||
|
|
||||||
#region 批量删除============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/DoBatchDelete/10,11,20
|
|
||||||
/// <summary>
|
|
||||||
/// 批量删除
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("批量删除")]
|
|
||||||
public async Task<AdminUiCallBack> DoBatchDelete([FromBody] FMArrayIntIds entity)
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
var bl = await _CoreCmsUserServicesTicketServices.DeleteByIdsAsync(entity.id);
|
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
|
||||||
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 批量删除============================================================
|
|
||||||
|
|
||||||
#region 预览数据============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/GetDetails/10
|
|
||||||
/// <summary>
|
|
||||||
/// 预览数据
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("预览数据")]
|
|
||||||
public async Task<AdminUiCallBack> GetDetails([FromBody] FMIntId entity)
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
var model = await _CoreCmsUserServicesTicketServices.QueryByIdAsync(entity.id);
|
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
jm.msg = "不存在此信息";
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
jm.code = 0;
|
|
||||||
jm.data = model;
|
|
||||||
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 预览数据============================================================
|
|
||||||
|
|
||||||
#region 选择导出============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/SelectExportExcel/10
|
|
||||||
/// <summary>
|
|
||||||
/// 选择导出
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("选择导出")]
|
|
||||||
public async Task<AdminUiCallBack> SelectExportExcel([FromBody] FMArrayIntIds entity)
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
//创建Excel文件的对象
|
|
||||||
var book = new HSSFWorkbook();
|
|
||||||
//添加一个sheet
|
|
||||||
var mySheet = book.CreateSheet("Sheet1");
|
|
||||||
//获取list数据
|
|
||||||
var listModel = await _CoreCmsUserServicesTicketServices.QueryListByClauseAsync(p => entity.id.Contains(p.id), p => p.id, OrderByType.Asc);
|
|
||||||
//给sheet1添加第一行的头部标题
|
|
||||||
var headerRow = mySheet.CreateRow(0);
|
|
||||||
var headerStyle = ExcelHelper.GetHeaderStyle(book);
|
|
||||||
|
|
||||||
var cell0 = headerRow.CreateCell(0);
|
|
||||||
cell0.SetCellValue("序列");
|
|
||||||
cell0.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(0, 10 * 256);
|
|
||||||
|
|
||||||
var cell1 = headerRow.CreateCell(1);
|
|
||||||
cell1.SetCellValue("关联购买订单");
|
|
||||||
cell1.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(1, 10 * 256);
|
|
||||||
|
|
||||||
var cell2 = headerRow.CreateCell(2);
|
|
||||||
cell2.SetCellValue("安全码");
|
|
||||||
cell2.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(2, 10 * 256);
|
|
||||||
|
|
||||||
var cell3 = headerRow.CreateCell(3);
|
|
||||||
cell3.SetCellValue("兑换码");
|
|
||||||
cell3.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(3, 10 * 256);
|
|
||||||
|
|
||||||
var cell4 = headerRow.CreateCell(4);
|
|
||||||
cell4.SetCellValue("关联服务项目id");
|
|
||||||
cell4.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(4, 10 * 256);
|
|
||||||
|
|
||||||
var cell5 = headerRow.CreateCell(5);
|
|
||||||
cell5.SetCellValue("关联用户id");
|
|
||||||
cell5.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(5, 10 * 256);
|
|
||||||
|
|
||||||
var cell6 = headerRow.CreateCell(6);
|
|
||||||
cell6.SetCellValue("状态");
|
|
||||||
cell6.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(6, 10 * 256);
|
|
||||||
|
|
||||||
var cell7 = headerRow.CreateCell(7);
|
|
||||||
cell7.SetCellValue("核销有效期类型");
|
|
||||||
cell7.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(7, 10 * 256);
|
|
||||||
|
|
||||||
var cell8 = headerRow.CreateCell(8);
|
|
||||||
cell8.SetCellValue("核销开始时间");
|
|
||||||
cell8.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(8, 10 * 256);
|
|
||||||
|
|
||||||
var cell9 = headerRow.CreateCell(9);
|
|
||||||
cell9.SetCellValue("核销结束时间");
|
|
||||||
cell9.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(9, 10 * 256);
|
|
||||||
|
|
||||||
var cell10 = headerRow.CreateCell(10);
|
|
||||||
cell10.SetCellValue("创建时间");
|
|
||||||
cell10.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(10, 10 * 256);
|
|
||||||
|
|
||||||
var cell11 = headerRow.CreateCell(11);
|
|
||||||
cell11.SetCellValue("是否核销");
|
|
||||||
cell11.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(11, 10 * 256);
|
|
||||||
|
|
||||||
var cell12 = headerRow.CreateCell(12);
|
|
||||||
cell12.SetCellValue("核销时间");
|
|
||||||
cell12.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(12, 10 * 256);
|
|
||||||
|
|
||||||
headerRow.Height = 30 * 20;
|
|
||||||
var commonCellStyle = ExcelHelper.GetCommonStyle(book);
|
|
||||||
|
|
||||||
//将数据逐步写入sheet1各个行
|
|
||||||
for (var i = 0; i < listModel.Count; i++)
|
|
||||||
{
|
|
||||||
var rowTemp = mySheet.CreateRow(i + 1);
|
|
||||||
|
|
||||||
var rowTemp0 = rowTemp.CreateCell(0);
|
|
||||||
rowTemp0.SetCellValue(listModel[i].id.ToString());
|
|
||||||
rowTemp0.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp1 = rowTemp.CreateCell(1);
|
|
||||||
rowTemp1.SetCellValue(listModel[i].serviceOrderId.ToString());
|
|
||||||
rowTemp1.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp2 = rowTemp.CreateCell(2);
|
|
||||||
rowTemp2.SetCellValue(listModel[i].securityCode.ToString());
|
|
||||||
rowTemp2.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp3 = rowTemp.CreateCell(3);
|
|
||||||
rowTemp3.SetCellValue(listModel[i].redeemCode.ToString());
|
|
||||||
rowTemp3.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp4 = rowTemp.CreateCell(4);
|
|
||||||
rowTemp4.SetCellValue(listModel[i].serviceId.ToString());
|
|
||||||
rowTemp4.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp5 = rowTemp.CreateCell(5);
|
|
||||||
rowTemp5.SetCellValue(listModel[i].userId.ToString());
|
|
||||||
rowTemp5.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp6 = rowTemp.CreateCell(6);
|
|
||||||
rowTemp6.SetCellValue(listModel[i].status.ToString());
|
|
||||||
rowTemp6.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp7 = rowTemp.CreateCell(7);
|
|
||||||
rowTemp7.SetCellValue(listModel[i].validityType.ToString());
|
|
||||||
rowTemp7.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp8 = rowTemp.CreateCell(8);
|
|
||||||
rowTemp8.SetCellValue(listModel[i].validityStartTime.ToString());
|
|
||||||
rowTemp8.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp9 = rowTemp.CreateCell(9);
|
|
||||||
rowTemp9.SetCellValue(listModel[i].validityEndTime.ToString());
|
|
||||||
rowTemp9.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp10 = rowTemp.CreateCell(10);
|
|
||||||
rowTemp10.SetCellValue(listModel[i].createTime.ToString());
|
|
||||||
rowTemp10.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp11 = rowTemp.CreateCell(11);
|
|
||||||
rowTemp11.SetCellValue(listModel[i].isVerification.ToString());
|
|
||||||
rowTemp11.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp12 = rowTemp.CreateCell(12);
|
|
||||||
rowTemp12.SetCellValue(listModel[i].verificationTime.ToString());
|
|
||||||
rowTemp12.CellStyle = commonCellStyle;
|
|
||||||
}
|
|
||||||
// 导出excel
|
|
||||||
string webRootPath = _webHostEnvironment.WebRootPath;
|
|
||||||
string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
|
|
||||||
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsUserServicesTicket导出(选择结果).xls";
|
|
||||||
string filePath = webRootPath + tpath;
|
|
||||||
DirectoryInfo di = new DirectoryInfo(filePath);
|
|
||||||
if (!di.Exists)
|
|
||||||
{
|
|
||||||
di.Create();
|
|
||||||
}
|
|
||||||
FileStream fileHssf = new FileStream(filePath + fileName, FileMode.Create);
|
|
||||||
book.Write(fileHssf);
|
|
||||||
fileHssf.Close();
|
|
||||||
|
|
||||||
jm.code = 0;
|
|
||||||
jm.msg = GlobalConstVars.ExcelExportSuccess;
|
|
||||||
jm.data = tpath + fileName;
|
|
||||||
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 选择导出============================================================
|
|
||||||
|
|
||||||
#region 查询导出============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/QueryExportExcel/10
|
|
||||||
/// <summary>
|
|
||||||
/// 查询导出
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("查询导出")]
|
|
||||||
public async Task<AdminUiCallBack> QueryExportExcel()
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
var where = PredicateBuilder.True<CoreCmsUserServicesTicket>();
|
|
||||||
//查询筛选
|
|
||||||
|
|
||||||
//序列 int
|
|
||||||
var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (id > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.id == id);
|
|
||||||
}
|
|
||||||
//关联购买订单 nvarchar
|
|
||||||
var serviceOrderId = Request.Form["serviceOrderId"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(serviceOrderId))
|
|
||||||
{
|
|
||||||
where = where.And(p => p.serviceOrderId.Contains(serviceOrderId));
|
|
||||||
}
|
|
||||||
//兑换码 nvarchar
|
|
||||||
var redeemCode = Request.Form["redeemCode"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(redeemCode))
|
|
||||||
{
|
|
||||||
where = where.And(p => p.redeemCode.Contains(redeemCode));
|
|
||||||
}
|
|
||||||
//关联服务项目id int
|
|
||||||
var serviceId = Request.Form["serviceId"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (serviceId > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.serviceId == serviceId);
|
|
||||||
}
|
|
||||||
//关联用户id int
|
|
||||||
var userId = Request.Form["userId"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (userId > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.userId == userId);
|
|
||||||
}
|
|
||||||
//状态 int
|
|
||||||
var status = Request.Form["status"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (status > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.status == status);
|
|
||||||
}
|
|
||||||
//核销有效期类型 int
|
|
||||||
var validityType = Request.Form["validityType"].FirstOrDefault().ObjectToInt(0);
|
|
||||||
if (validityType > 0)
|
|
||||||
{
|
|
||||||
where = where.And(p => p.validityType == validityType);
|
|
||||||
}
|
|
||||||
//核销开始时间 datetime
|
|
||||||
var validityStartTime = Request.Form["validityStartTime"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(validityStartTime))
|
|
||||||
{
|
|
||||||
var dt = validityStartTime.ObjectToDate();
|
|
||||||
where = where.And(p => p.validityStartTime > dt);
|
|
||||||
}
|
|
||||||
//核销结束时间 datetime
|
|
||||||
var validityEndTime = Request.Form["validityEndTime"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(validityEndTime))
|
|
||||||
{
|
|
||||||
var dt = validityEndTime.ObjectToDate();
|
|
||||||
where = where.And(p => p.validityEndTime > dt);
|
|
||||||
}
|
|
||||||
//创建时间 datetime
|
|
||||||
var createTime = Request.Form["createTime"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(createTime))
|
|
||||||
{
|
|
||||||
var dt = createTime.ObjectToDate();
|
|
||||||
where = where.And(p => p.createTime > dt);
|
|
||||||
}
|
|
||||||
//是否核销 bit
|
|
||||||
var isVerification = Request.Form["isVerification"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(isVerification) && isVerification.ToLowerInvariant() == "true")
|
|
||||||
{
|
|
||||||
where = where.And(p => p.isVerification == true);
|
|
||||||
}
|
|
||||||
else if (!string.IsNullOrEmpty(isVerification) && isVerification.ToLowerInvariant() == "false")
|
|
||||||
{
|
|
||||||
where = where.And(p => p.isVerification == false);
|
|
||||||
}
|
|
||||||
//核销时间 datetime
|
|
||||||
var verificationTime = Request.Form["verificationTime"].FirstOrDefault();
|
|
||||||
if (!string.IsNullOrEmpty(verificationTime))
|
|
||||||
{
|
|
||||||
var dt = verificationTime.ObjectToDate();
|
|
||||||
where = where.And(p => p.verificationTime > dt);
|
|
||||||
}
|
|
||||||
//获取数据
|
|
||||||
//创建Excel文件的对象
|
|
||||||
var book = new HSSFWorkbook();
|
|
||||||
//添加一个sheet
|
|
||||||
var mySheet = book.CreateSheet("Sheet1");
|
|
||||||
//获取list数据
|
|
||||||
var listModel = await _CoreCmsUserServicesTicketServices.QueryListByClauseAsync(where, p => p.id, OrderByType.Asc);
|
|
||||||
//给sheet1添加第一行的头部标题
|
|
||||||
var headerRow = mySheet.CreateRow(0);
|
|
||||||
var headerStyle = ExcelHelper.GetHeaderStyle(book);
|
|
||||||
|
|
||||||
var cell0 = headerRow.CreateCell(0);
|
|
||||||
cell0.SetCellValue("序列");
|
|
||||||
cell0.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(0, 10 * 256);
|
|
||||||
|
|
||||||
var cell1 = headerRow.CreateCell(1);
|
|
||||||
cell1.SetCellValue("关联购买订单");
|
|
||||||
cell1.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(1, 10 * 256);
|
|
||||||
|
|
||||||
var cell2 = headerRow.CreateCell(2);
|
|
||||||
cell2.SetCellValue("安全码");
|
|
||||||
cell2.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(2, 10 * 256);
|
|
||||||
|
|
||||||
var cell3 = headerRow.CreateCell(3);
|
|
||||||
cell3.SetCellValue("兑换码");
|
|
||||||
cell3.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(3, 10 * 256);
|
|
||||||
|
|
||||||
var cell4 = headerRow.CreateCell(4);
|
|
||||||
cell4.SetCellValue("关联服务项目id");
|
|
||||||
cell4.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(4, 10 * 256);
|
|
||||||
|
|
||||||
var cell5 = headerRow.CreateCell(5);
|
|
||||||
cell5.SetCellValue("关联用户id");
|
|
||||||
cell5.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(5, 10 * 256);
|
|
||||||
|
|
||||||
var cell6 = headerRow.CreateCell(6);
|
|
||||||
cell6.SetCellValue("状态");
|
|
||||||
cell6.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(6, 10 * 256);
|
|
||||||
|
|
||||||
var cell7 = headerRow.CreateCell(7);
|
|
||||||
cell7.SetCellValue("核销有效期类型");
|
|
||||||
cell7.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(7, 10 * 256);
|
|
||||||
|
|
||||||
var cell8 = headerRow.CreateCell(8);
|
|
||||||
cell8.SetCellValue("核销开始时间");
|
|
||||||
cell8.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(8, 10 * 256);
|
|
||||||
|
|
||||||
var cell9 = headerRow.CreateCell(9);
|
|
||||||
cell9.SetCellValue("核销结束时间");
|
|
||||||
cell9.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(9, 10 * 256);
|
|
||||||
|
|
||||||
var cell10 = headerRow.CreateCell(10);
|
|
||||||
cell10.SetCellValue("创建时间");
|
|
||||||
cell10.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(10, 10 * 256);
|
|
||||||
|
|
||||||
var cell11 = headerRow.CreateCell(11);
|
|
||||||
cell11.SetCellValue("是否核销");
|
|
||||||
cell11.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(11, 10 * 256);
|
|
||||||
|
|
||||||
var cell12 = headerRow.CreateCell(12);
|
|
||||||
cell12.SetCellValue("核销时间");
|
|
||||||
cell12.CellStyle = headerStyle;
|
|
||||||
mySheet.SetColumnWidth(12, 10 * 256);
|
|
||||||
|
|
||||||
headerRow.Height = 30 * 20;
|
|
||||||
var commonCellStyle = ExcelHelper.GetCommonStyle(book);
|
|
||||||
|
|
||||||
//将数据逐步写入sheet1各个行
|
|
||||||
for (var i = 0; i < listModel.Count; i++)
|
|
||||||
{
|
|
||||||
var rowTemp = mySheet.CreateRow(i + 1);
|
|
||||||
|
|
||||||
var rowTemp0 = rowTemp.CreateCell(0);
|
|
||||||
rowTemp0.SetCellValue(listModel[i].id.ToString());
|
|
||||||
rowTemp0.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp1 = rowTemp.CreateCell(1);
|
|
||||||
rowTemp1.SetCellValue(listModel[i].serviceOrderId.ToString());
|
|
||||||
rowTemp1.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp2 = rowTemp.CreateCell(2);
|
|
||||||
rowTemp2.SetCellValue(listModel[i].securityCode.ToString());
|
|
||||||
rowTemp2.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp3 = rowTemp.CreateCell(3);
|
|
||||||
rowTemp3.SetCellValue(listModel[i].redeemCode.ToString());
|
|
||||||
rowTemp3.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp4 = rowTemp.CreateCell(4);
|
|
||||||
rowTemp4.SetCellValue(listModel[i].serviceId.ToString());
|
|
||||||
rowTemp4.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp5 = rowTemp.CreateCell(5);
|
|
||||||
rowTemp5.SetCellValue(listModel[i].userId.ToString());
|
|
||||||
rowTemp5.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp6 = rowTemp.CreateCell(6);
|
|
||||||
rowTemp6.SetCellValue(listModel[i].status.ToString());
|
|
||||||
rowTemp6.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp7 = rowTemp.CreateCell(7);
|
|
||||||
rowTemp7.SetCellValue(listModel[i].validityType.ToString());
|
|
||||||
rowTemp7.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp8 = rowTemp.CreateCell(8);
|
|
||||||
rowTemp8.SetCellValue(listModel[i].validityStartTime.ToString());
|
|
||||||
rowTemp8.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp9 = rowTemp.CreateCell(9);
|
|
||||||
rowTemp9.SetCellValue(listModel[i].validityEndTime.ToString());
|
|
||||||
rowTemp9.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp10 = rowTemp.CreateCell(10);
|
|
||||||
rowTemp10.SetCellValue(listModel[i].createTime.ToString());
|
|
||||||
rowTemp10.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp11 = rowTemp.CreateCell(11);
|
|
||||||
rowTemp11.SetCellValue(listModel[i].isVerification.ToString());
|
|
||||||
rowTemp11.CellStyle = commonCellStyle;
|
|
||||||
|
|
||||||
var rowTemp12 = rowTemp.CreateCell(12);
|
|
||||||
rowTemp12.SetCellValue(listModel[i].verificationTime.ToString());
|
|
||||||
rowTemp12.CellStyle = commonCellStyle;
|
|
||||||
}
|
|
||||||
// 写入到excel
|
|
||||||
string webRootPath = _webHostEnvironment.WebRootPath;
|
|
||||||
string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
|
|
||||||
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsUserServicesTicket导出(查询结果).xls";
|
|
||||||
string filePath = webRootPath + tpath;
|
|
||||||
DirectoryInfo di = new DirectoryInfo(filePath);
|
|
||||||
if (!di.Exists)
|
|
||||||
{
|
|
||||||
di.Create();
|
|
||||||
}
|
|
||||||
FileStream fileHssf = new FileStream(filePath + fileName, FileMode.Create);
|
|
||||||
book.Write(fileHssf);
|
|
||||||
fileHssf.Close();
|
|
||||||
|
|
||||||
jm.code = 0;
|
|
||||||
jm.msg = GlobalConstVars.ExcelExportSuccess;
|
|
||||||
jm.data = tpath + fileName;
|
|
||||||
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 查询导出============================================================
|
|
||||||
|
|
||||||
#region 设置是否核销============================================================
|
|
||||||
|
|
||||||
// POST: Api/CoreCmsUserServicesTicket/DoSetisVerification/10
|
|
||||||
/// <summary>
|
|
||||||
/// 设置是否核销
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
[Description("设置是否核销")]
|
|
||||||
public async Task<AdminUiCallBack> DoSetisVerification([FromBody] FMUpdateBoolDataByIntId entity)
|
|
||||||
{
|
|
||||||
var jm = new AdminUiCallBack();
|
|
||||||
|
|
||||||
var oldModel = await _CoreCmsUserServicesTicketServices.QueryByIdAsync(entity.id);
|
|
||||||
if (oldModel == null)
|
|
||||||
{
|
|
||||||
jm.msg = "不存在此信息";
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
oldModel.isVerification = (bool)entity.data;
|
|
||||||
|
|
||||||
var bl = await _CoreCmsUserServicesTicketServices.UpdateAsync(oldModel);
|
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
|
||||||
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion 设置是否核销============================================================
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,415 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2021/6/14 23:17:57
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.Entities.Expression;
|
||||||
|
using CoreCms.Net.Model.FromBody;
|
||||||
|
using CoreCms.Net.Filter;
|
||||||
|
using CoreCms.Net.Loging;
|
||||||
|
using CoreCms.Net.IServices;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using CoreCms.Net.Utility.Helper;
|
||||||
|
using CoreCms.Net.Utility.Extensions;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using NPOI.HSSF.UserModel;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Web.Admin.Controllers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 接龙活动表
|
||||||
|
///</summary>
|
||||||
|
[Description("接龙活动表")]
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
[ApiController]
|
||||||
|
[RequiredErrorForAdmin]
|
||||||
|
[Authorize(Permissions.Name)]
|
||||||
|
public class CoreCmsSolitaireController : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||||
|
private readonly ICoreCmsSolitaireServices _solitaireServices;
|
||||||
|
private readonly ICoreCmsSolitaireItemsServices _itemsServices;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 构造函数
|
||||||
|
///</summary>
|
||||||
|
public CoreCmsSolitaireController(IWebHostEnvironment webHostEnvironment
|
||||||
|
, ICoreCmsSolitaireServices solitaireServices, ICoreCmsSolitaireItemsServices itemsServices)
|
||||||
|
{
|
||||||
|
_webHostEnvironment = webHostEnvironment;
|
||||||
|
_solitaireServices = solitaireServices;
|
||||||
|
_itemsServices = itemsServices;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 获取列表============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/GetPageList
|
||||||
|
/// <summary>
|
||||||
|
/// 获取列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("获取列表")]
|
||||||
|
public async Task<AdminUiCallBack> GetPageList()
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
|
||||||
|
var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
|
||||||
|
var where = PredicateBuilder.True<CoreCmsSolitaire>();
|
||||||
|
//获取排序字段
|
||||||
|
var orderField = Request.Form["orderField"].FirstOrDefault();
|
||||||
|
|
||||||
|
Expression<Func<CoreCmsSolitaire, object>> orderEx = orderField switch
|
||||||
|
{
|
||||||
|
"id" => p => p.id,
|
||||||
|
"title" => p => p.title,
|
||||||
|
"contentBody" => p => p.contentBody,
|
||||||
|
"startTime" => p => p.startTime,
|
||||||
|
"endTime" => p => p.endTime,
|
||||||
|
"startBuyPrice" => p => p.startBuyPrice,
|
||||||
|
"minDeliveryPrice" => p => p.minDeliveryPrice,
|
||||||
|
"isShow" => p => p.isShow,
|
||||||
|
"status" => p => p.status,
|
||||||
|
"isDelete" => p => p.isDelete,
|
||||||
|
"createTime" => p => p.createTime,
|
||||||
|
_ => p => p.id
|
||||||
|
};
|
||||||
|
|
||||||
|
//设置排序方式
|
||||||
|
var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
|
||||||
|
var orderBy = orderDirection switch
|
||||||
|
{
|
||||||
|
"asc" => OrderByType.Asc,
|
||||||
|
"desc" => OrderByType.Desc,
|
||||||
|
_ => OrderByType.Desc
|
||||||
|
};
|
||||||
|
//查询筛选
|
||||||
|
|
||||||
|
//序列 int
|
||||||
|
var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
|
||||||
|
if (id > 0)
|
||||||
|
{
|
||||||
|
where = where.And(p => p.id == id);
|
||||||
|
}
|
||||||
|
//活动标题 nvarchar
|
||||||
|
var title = Request.Form["title"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(title))
|
||||||
|
{
|
||||||
|
where = where.And(p => p.title.Contains(title));
|
||||||
|
}
|
||||||
|
//活动内容 nvarchar
|
||||||
|
var contentBody = Request.Form["contentBody"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(contentBody))
|
||||||
|
{
|
||||||
|
where = where.And(p => p.contentBody.Contains(contentBody));
|
||||||
|
}
|
||||||
|
//开始时间 datetime
|
||||||
|
var startTime = Request.Form["startTime"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(startTime))
|
||||||
|
{
|
||||||
|
if (startTime.Contains("到"))
|
||||||
|
{
|
||||||
|
var dts = startTime.Split("到");
|
||||||
|
var dtStart = dts[0].Trim().ObjectToDate();
|
||||||
|
where = where.And(p => p.startTime > dtStart);
|
||||||
|
var dtEnd = dts[1].Trim().ObjectToDate();
|
||||||
|
where = where.And(p => p.startTime < dtEnd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dt = startTime.ObjectToDate();
|
||||||
|
where = where.And(p => p.startTime > dt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//结束时间 datetime
|
||||||
|
var endTime = Request.Form["endTime"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(endTime))
|
||||||
|
{
|
||||||
|
if (endTime.Contains("到"))
|
||||||
|
{
|
||||||
|
var dts = endTime.Split("到");
|
||||||
|
var dtStart = dts[0].Trim().ObjectToDate();
|
||||||
|
where = where.And(p => p.endTime > dtStart);
|
||||||
|
var dtEnd = dts[1].Trim().ObjectToDate();
|
||||||
|
where = where.And(p => p.endTime < dtEnd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dt = endTime.ObjectToDate();
|
||||||
|
where = where.And(p => p.endTime > dt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//是否显示 bit
|
||||||
|
var isShow = Request.Form["isShow"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(isShow) && isShow.ToLowerInvariant() == "true")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isShow == true);
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(isShow) && isShow.ToLowerInvariant() == "false")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isShow == false);
|
||||||
|
}
|
||||||
|
//活动状态 int
|
||||||
|
var status = Request.Form["status"].FirstOrDefault().ObjectToInt(0);
|
||||||
|
if (status > 0)
|
||||||
|
{
|
||||||
|
where = where.And(p => p.status == status);
|
||||||
|
}
|
||||||
|
//标注删除 bit
|
||||||
|
var isDelete = Request.Form["isDelete"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(isDelete) && isDelete.ToLowerInvariant() == "true")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isDelete == true);
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(isDelete) && isDelete.ToLowerInvariant() == "false")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isDelete == false);
|
||||||
|
}
|
||||||
|
//创建时间 datetime
|
||||||
|
var createTime = Request.Form["createTime"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(createTime))
|
||||||
|
{
|
||||||
|
if (createTime.Contains("到"))
|
||||||
|
{
|
||||||
|
var dts = createTime.Split("到");
|
||||||
|
var dtStart = dts[0].Trim().ObjectToDate();
|
||||||
|
where = where.And(p => p.createTime > dtStart);
|
||||||
|
var dtEnd = dts[1].Trim().ObjectToDate();
|
||||||
|
where = where.And(p => p.createTime < dtEnd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dt = createTime.ObjectToDate();
|
||||||
|
where = where.And(p => p.createTime > dt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//获取数据
|
||||||
|
var list = await _solitaireServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize, true);
|
||||||
|
//返回数据
|
||||||
|
jm.data = list;
|
||||||
|
jm.code = 0;
|
||||||
|
jm.count = list.TotalCount;
|
||||||
|
jm.msg = "数据调用成功!";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 首页数据============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/GetIndex
|
||||||
|
/// <summary>
|
||||||
|
/// 首页数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("首页数据")]
|
||||||
|
public AdminUiCallBack GetIndex()
|
||||||
|
{
|
||||||
|
//返回数据
|
||||||
|
var jm = new AdminUiCallBack { code = 0 };
|
||||||
|
var solitaireStatus = EnumHelper.EnumToList<GlobalEnumVars.SolitaireStatus>();
|
||||||
|
jm.data = new
|
||||||
|
{
|
||||||
|
solitaireStatus
|
||||||
|
};
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 创建数据============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/GetCreate
|
||||||
|
/// <summary>
|
||||||
|
/// 创建数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("创建数据")]
|
||||||
|
public AdminUiCallBack GetCreate()
|
||||||
|
{
|
||||||
|
//返回数据
|
||||||
|
var jm = new AdminUiCallBack { code = 0 };
|
||||||
|
|
||||||
|
var solitaireStatus = EnumHelper.EnumToList<GlobalEnumVars.SolitaireStatus>();
|
||||||
|
jm.data = new
|
||||||
|
{
|
||||||
|
solitaireStatus
|
||||||
|
};
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 创建提交============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/DoCreate
|
||||||
|
/// <summary>
|
||||||
|
/// 创建提交
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("创建提交")]
|
||||||
|
public async Task<AdminUiCallBack> DoCreate([FromBody] CoreCmsSolitaire entity)
|
||||||
|
{
|
||||||
|
var jm = await _solitaireServices.InsertAsync(entity);
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 编辑数据============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/GetEdit
|
||||||
|
/// <summary>
|
||||||
|
/// 编辑数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("编辑数据")]
|
||||||
|
public async Task<AdminUiCallBack> GetEdit([FromBody] FMIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var model = await _solitaireServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
var items = await _itemsServices.QueryListByClauseAsync(p => p.solitaireId == model.id && p.isDelete == false, p => p.sortId, OrderByType.Asc);
|
||||||
|
var goodsId = items.Select(p => p.productId).ToList();
|
||||||
|
var solitaireStatus = EnumHelper.EnumToList<GlobalEnumVars.SolitaireStatus>();
|
||||||
|
jm.data = new
|
||||||
|
{
|
||||||
|
model,
|
||||||
|
items,
|
||||||
|
goodsId,
|
||||||
|
solitaireStatus
|
||||||
|
};
|
||||||
|
jm.code = 0;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 编辑提交============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/Edit
|
||||||
|
/// <summary>
|
||||||
|
/// 编辑提交
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("编辑提交")]
|
||||||
|
public async Task<AdminUiCallBack> DoEdit([FromBody] CoreCmsSolitaire entity)
|
||||||
|
{
|
||||||
|
var jm = await _solitaireServices.UpdateAsync(entity);
|
||||||
|
jm.otherData = entity;
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 删除数据============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/DoDelete/10
|
||||||
|
/// <summary>
|
||||||
|
/// 单选删除
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("单选删除")]
|
||||||
|
public async Task<AdminUiCallBack> DoDelete([FromBody] FMIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var oldModel = await _solitaireServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (oldModel == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
//jm = await _coreCmsSolitaireServices.DeleteByIdAsync(entity.id);
|
||||||
|
var bl = await _solitaireServices.UpdateAsync(p => new CoreCmsSolitaire() { isDelete = true }, p => p.id == oldModel.id);
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 设置是否显示============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/DoSetisShow/10
|
||||||
|
/// <summary>
|
||||||
|
/// 设置是否显示
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("设置是否显示")]
|
||||||
|
public async Task<AdminUiCallBack> DoSetisShow([FromBody] FMUpdateBoolDataByIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var oldModel = await _solitaireServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (oldModel == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
oldModel.isShow = (bool)entity.data;
|
||||||
|
|
||||||
|
var bl = await _solitaireServices.UpdateAsync(p => new CoreCmsSolitaire() { isShow = oldModel.isShow }, p => p.id == oldModel.id);
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 设置标注删除============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaire/DoSetisDelete/10
|
||||||
|
/// <summary>
|
||||||
|
/// 设置标注删除
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("设置标注删除")]
|
||||||
|
public async Task<AdminUiCallBack> DoSetisDelete([FromBody] FMUpdateBoolDataByIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var oldModel = await _solitaireServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (oldModel == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
oldModel.isDelete = (bool)entity.data;
|
||||||
|
|
||||||
|
var bl = await _solitaireServices.UpdateAsync(p => new CoreCmsSolitaire() { isDelete = oldModel.isDelete }, p => p.id == oldModel.id);
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,10 +4,11 @@
|
|||||||
* Web: https://www.corecms.net
|
* Web: https://www.corecms.net
|
||||||
* Author: 大灰灰
|
* Author: 大灰灰
|
||||||
* Email: jianweie@163.com
|
* Email: jianweie@163.com
|
||||||
* CreateTime: 2021/1/31 21:45:10
|
* CreateTime: 2021/6/19 23:42:28
|
||||||
* Description: 暂无
|
* Description: 暂无
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -18,10 +19,10 @@ using CoreCms.Net.Configuration;
|
|||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
using CoreCms.Net.Model.Entities.Expression;
|
using CoreCms.Net.Model.Entities.Expression;
|
||||||
using CoreCms.Net.Model.FromBody;
|
using CoreCms.Net.Model.FromBody;
|
||||||
using CoreCms.Net.Model.ViewModels.UI;
|
|
||||||
using CoreCms.Net.Filter;
|
using CoreCms.Net.Filter;
|
||||||
using CoreCms.Net.Loging;
|
using CoreCms.Net.Loging;
|
||||||
using CoreCms.Net.IServices;
|
using CoreCms.Net.IServices;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
using CoreCms.Net.Utility.Helper;
|
using CoreCms.Net.Utility.Helper;
|
||||||
using CoreCms.Net.Utility.Extensions;
|
using CoreCms.Net.Utility.Extensions;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
@@ -33,31 +34,31 @@ using SqlSugar;
|
|||||||
namespace CoreCms.Net.Web.Admin.Controllers
|
namespace CoreCms.Net.Web.Admin.Controllers
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 服务券核验日志
|
/// 接龙活动商品表
|
||||||
///</summary>
|
///</summary>
|
||||||
[Description("服务券核验日志")]
|
[Description("接龙活动商品表")]
|
||||||
[Route("api/[controller]/[action]")]
|
[Route("api/[controller]/[action]")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[RequiredErrorForAdmin]
|
[RequiredErrorForAdmin]
|
||||||
[Authorize(Permissions.Name)]
|
[Authorize(Permissions.Name)]
|
||||||
public class CoreCmsUserServicesTicketVerificationLogController : ControllerBase
|
public class CoreCmsSolitaireItemsController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||||
private readonly ICoreCmsUserServicesTicketVerificationLogServices _CoreCmsUserServicesTicketVerificationLogServices;
|
private readonly ICoreCmsSolitaireItemsServices _CoreCmsSolitaireItemsServices;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造函数
|
/// 构造函数
|
||||||
///</summary>
|
///</summary>
|
||||||
public CoreCmsUserServicesTicketVerificationLogController(IWebHostEnvironment webHostEnvironment
|
public CoreCmsSolitaireItemsController(IWebHostEnvironment webHostEnvironment
|
||||||
, ICoreCmsUserServicesTicketVerificationLogServices CoreCmsUserServicesTicketVerificationLogServices
|
, ICoreCmsSolitaireItemsServices CoreCmsSolitaireItemsServices
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_webHostEnvironment = webHostEnvironment;
|
_webHostEnvironment = webHostEnvironment;
|
||||||
_CoreCmsUserServicesTicketVerificationLogServices = CoreCmsUserServicesTicketVerificationLogServices;
|
_CoreCmsSolitaireItemsServices = CoreCmsSolitaireItemsServices;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 获取列表============================================================
|
#region 获取列表============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/GetPageList
|
// POST: Api/CoreCmsSolitaireItems/GetPageList
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取列表
|
/// 获取列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -69,34 +70,23 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
var jm = new AdminUiCallBack();
|
var jm = new AdminUiCallBack();
|
||||||
var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
|
var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
|
||||||
var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
|
var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
|
||||||
var where = PredicateBuilder.True<CoreCmsUserServicesTicketVerificationLog>();
|
var where = PredicateBuilder.True<CoreCmsSolitaireItems>();
|
||||||
//获取排序字段
|
//获取排序字段
|
||||||
var orderField = Request.Form["orderField"].FirstOrDefault();
|
var orderField = Request.Form["orderField"].FirstOrDefault();
|
||||||
Expression<Func<CoreCmsUserServicesTicketVerificationLog, object>> orderEx;
|
|
||||||
switch (orderField)
|
Expression<Func<CoreCmsSolitaireItems, object>> orderEx = orderField switch
|
||||||
{
|
{
|
||||||
case "id":
|
"id" => p => p.id,
|
||||||
orderEx = p => p.id;
|
"solitaireId" => p => p.solitaireId,
|
||||||
break;
|
"goodId" => p => p.goodId,
|
||||||
case "storeId":
|
"productId" => p => p.productId,
|
||||||
orderEx = p => p.storeId;
|
"price" => p => p.price,
|
||||||
break;
|
"activityStock" => p => p.activityStock,
|
||||||
case "verificationUserId":
|
"oneCanBuy" => p => p.oneCanBuy,
|
||||||
orderEx = p => p.verificationUserId;
|
"isDelete" => p => p.isDelete,
|
||||||
break;
|
_ => p => p.id
|
||||||
case "ticketId":
|
};
|
||||||
orderEx = p => p.ticketId;
|
|
||||||
break;
|
|
||||||
case "ticketRedeemCode":
|
|
||||||
orderEx = p => p.ticketRedeemCode;
|
|
||||||
break;
|
|
||||||
case "verificationTime":
|
|
||||||
orderEx = p => p.verificationTime;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
orderEx = p => p.id;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//设置排序方式
|
//设置排序方式
|
||||||
var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
|
var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
|
||||||
var orderBy = orderDirection switch
|
var orderBy = orderDirection switch
|
||||||
@@ -113,50 +103,48 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
{
|
{
|
||||||
where = where.And(p => p.id == id);
|
where = where.And(p => p.id == id);
|
||||||
}
|
}
|
||||||
//核销门店id int
|
//接龙序列 int
|
||||||
var storeId = Request.Form["storeId"].FirstOrDefault().ObjectToInt(0);
|
var solitaireId = Request.Form["solitaireId"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (storeId > 0)
|
if (solitaireId > 0)
|
||||||
{
|
{
|
||||||
where = where.And(p => p.storeId == storeId);
|
where = where.And(p => p.solitaireId == solitaireId);
|
||||||
}
|
}
|
||||||
//核验人 int
|
//商品序列 int
|
||||||
var verificationUserId = Request.Form["verificationUserId"].FirstOrDefault().ObjectToInt(0);
|
var goodId = Request.Form["goodId"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (verificationUserId > 0)
|
if (goodId > 0)
|
||||||
{
|
{
|
||||||
where = where.And(p => p.verificationUserId == verificationUserId);
|
where = where.And(p => p.goodId == goodId);
|
||||||
}
|
}
|
||||||
//服务券序列 int
|
//货品价格 int
|
||||||
var ticketId = Request.Form["ticketId"].FirstOrDefault().ObjectToInt(0);
|
var productId = Request.Form["productId"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (ticketId > 0)
|
if (productId > 0)
|
||||||
{
|
{
|
||||||
where = where.And(p => p.ticketId == ticketId);
|
where = where.And(p => p.productId == productId);
|
||||||
}
|
}
|
||||||
//核验码 nvarchar
|
//活动库存 int
|
||||||
var ticketRedeemCode = Request.Form["ticketRedeemCode"].FirstOrDefault();
|
var activityStock = Request.Form["activityStock"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (!string.IsNullOrEmpty(ticketRedeemCode))
|
if (activityStock > 0)
|
||||||
{
|
{
|
||||||
where = where.And(p => p.ticketRedeemCode.Contains(ticketRedeemCode));
|
where = where.And(p => p.activityStock == activityStock);
|
||||||
}
|
}
|
||||||
//核验时间 datetime
|
//每人可买 int
|
||||||
var verificationTime = Request.Form["verificationTime"].FirstOrDefault();
|
var oneCanBuy = Request.Form["oneCanBuy"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (!string.IsNullOrEmpty(verificationTime))
|
if (oneCanBuy > 0)
|
||||||
{
|
{
|
||||||
if (verificationTime.Contains("到"))
|
where = where.And(p => p.oneCanBuy == oneCanBuy);
|
||||||
{
|
|
||||||
var dts = verificationTime.Split("到");
|
|
||||||
var dtStart = dts[0].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.verificationTime > dtStart);
|
|
||||||
var dtEnd = dts[1].Trim().ObjectToDate();
|
|
||||||
where = where.And(p => p.verificationTime < dtEnd);
|
|
||||||
}
|
}
|
||||||
else
|
//标注删除 bit
|
||||||
|
var isDelete = Request.Form["isDelete"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(isDelete) && isDelete.ToLowerInvariant() == "true")
|
||||||
{
|
{
|
||||||
var dt = verificationTime.ObjectToDate();
|
where = where.And(p => p.isDelete == true);
|
||||||
where = where.And(p => p.verificationTime > dt);
|
|
||||||
}
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(isDelete) && isDelete.ToLowerInvariant() == "false")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isDelete == false);
|
||||||
}
|
}
|
||||||
//获取数据
|
//获取数据
|
||||||
var list = await _CoreCmsUserServicesTicketVerificationLogServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize);
|
var list = await _CoreCmsSolitaireItemsServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize, true);
|
||||||
//返回数据
|
//返回数据
|
||||||
jm.data = list;
|
jm.data = list;
|
||||||
jm.code = 0;
|
jm.code = 0;
|
||||||
@@ -167,7 +155,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 首页数据============================================================
|
#region 首页数据============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/GetIndex
|
// POST: Api/CoreCmsSolitaireItems/GetIndex
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 首页数据
|
/// 首页数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -183,7 +171,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 创建数据============================================================
|
#region 创建数据============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/GetCreate
|
// POST: Api/CoreCmsSolitaireItems/GetCreate
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建数据
|
/// 创建数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -199,7 +187,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 创建提交============================================================
|
#region 创建提交============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/DoCreate
|
// POST: Api/CoreCmsSolitaireItems/DoCreate
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建提交
|
/// 创建提交
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -207,20 +195,15 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Description("创建提交")]
|
[Description("创建提交")]
|
||||||
public async Task<AdminUiCallBack> DoCreate([FromBody] CoreCmsUserServicesTicketVerificationLog entity)
|
public async Task<AdminUiCallBack> DoCreate([FromBody] CoreCmsSolitaireItems entity)
|
||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
var jm = await _CoreCmsSolitaireItemsServices.InsertAsync(entity);
|
||||||
|
|
||||||
var bl = await _CoreCmsUserServicesTicketVerificationLogServices.InsertAsync(entity) > 0;
|
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = (bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure);
|
|
||||||
|
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 编辑数据============================================================
|
#region 编辑数据============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/GetEdit
|
// POST: Api/CoreCmsSolitaireItems/GetEdit
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 编辑数据
|
/// 编辑数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -232,7 +215,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
var model = await _CoreCmsUserServicesTicketVerificationLogServices.QueryByIdAsync(entity.id);
|
var model = await _CoreCmsSolitaireItemsServices.QueryByIdAsync(entity.id, false);
|
||||||
if (model == null)
|
if (model == null)
|
||||||
{
|
{
|
||||||
jm.msg = "不存在此信息";
|
jm.msg = "不存在此信息";
|
||||||
@@ -246,7 +229,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 编辑提交============================================================
|
#region 编辑提交============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/Edit
|
// POST: Api/CoreCmsSolitaireItems/Edit
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 编辑提交
|
/// 编辑提交
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -254,35 +237,15 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Description("编辑提交")]
|
[Description("编辑提交")]
|
||||||
public async Task<AdminUiCallBack> DoEdit([FromBody] CoreCmsUserServicesTicketVerificationLog entity)
|
public async Task<AdminUiCallBack> DoEdit([FromBody] CoreCmsSolitaireItems entity)
|
||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
var jm = await _CoreCmsSolitaireItemsServices.UpdateAsync(entity);
|
||||||
|
|
||||||
var oldModel = await _CoreCmsUserServicesTicketVerificationLogServices.QueryByIdAsync(entity.id);
|
|
||||||
if (oldModel == null)
|
|
||||||
{
|
|
||||||
jm.msg = "不存在此信息";
|
|
||||||
return jm;
|
|
||||||
}
|
|
||||||
//事物处理过程开始
|
|
||||||
oldModel.id = entity.id;
|
|
||||||
oldModel.storeId = entity.storeId;
|
|
||||||
oldModel.verificationUserId = entity.verificationUserId;
|
|
||||||
oldModel.ticketId = entity.ticketId;
|
|
||||||
oldModel.ticketRedeemCode = entity.ticketRedeemCode;
|
|
||||||
oldModel.verificationTime = entity.verificationTime;
|
|
||||||
|
|
||||||
//事物处理过程结束
|
|
||||||
var bl = await _CoreCmsUserServicesTicketVerificationLogServices.UpdateAsync(oldModel);
|
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
|
||||||
|
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 删除数据============================================================
|
#region 删除数据============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/DoDelete/10
|
// POST: Api/CoreCmsSolitaireItems/DoDelete/10
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单选删除
|
/// 单选删除
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -294,22 +257,20 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
var model = await _CoreCmsUserServicesTicketVerificationLogServices.QueryByIdAsync(entity.id);
|
var model = await _CoreCmsSolitaireItemsServices.ExistsAsync(p => p.id == entity.id, true);
|
||||||
if (model == null)
|
if (!model)
|
||||||
{
|
{
|
||||||
jm.msg = GlobalConstVars.DataisNo;
|
jm.msg = GlobalConstVars.DataisNo;
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
var bl = await _CoreCmsUserServicesTicketVerificationLogServices.DeleteByIdAsync(entity.id);
|
jm = await _CoreCmsSolitaireItemsServices.DeleteByIdAsync(entity.id);
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
|
||||||
return jm;
|
|
||||||
|
|
||||||
|
return jm;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 批量删除============================================================
|
#region 批量删除============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/DoBatchDelete/10,11,20
|
// POST: Api/CoreCmsSolitaireItems/DoBatchDelete/10,11,20
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 批量删除
|
/// 批量删除
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -319,19 +280,14 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
[Description("批量删除")]
|
[Description("批量删除")]
|
||||||
public async Task<AdminUiCallBack> DoBatchDelete([FromBody] FMArrayIntIds entity)
|
public async Task<AdminUiCallBack> DoBatchDelete([FromBody] FMArrayIntIds entity)
|
||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
var jm = await _CoreCmsSolitaireItemsServices.DeleteByIdsAsync(entity.id);
|
||||||
|
|
||||||
var bl = await _CoreCmsUserServicesTicketVerificationLogServices.DeleteByIdsAsync(entity.id);
|
|
||||||
jm.code = bl ? 0 : 1;
|
|
||||||
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
|
||||||
|
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 预览数据============================================================
|
#region 预览数据============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/GetDetails/10
|
// POST: Api/CoreCmsSolitaireItems/GetDetails/10
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 预览数据
|
/// 预览数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -343,7 +299,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
var model = await _CoreCmsUserServicesTicketVerificationLogServices.QueryByIdAsync(entity.id);
|
var model = await _CoreCmsSolitaireItemsServices.QueryByIdAsync(entity.id, false);
|
||||||
if (model == null)
|
if (model == null)
|
||||||
{
|
{
|
||||||
jm.msg = "不存在此信息";
|
jm.msg = "不存在此信息";
|
||||||
@@ -357,7 +313,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 选择导出============================================================
|
#region 选择导出============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/SelectExportExcel/10
|
// POST: Api/CoreCmsSolitaireItems/SelectExportExcel/10
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 选择导出
|
/// 选择导出
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -374,7 +330,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
//添加一个sheet
|
//添加一个sheet
|
||||||
var mySheet = book.CreateSheet("Sheet1");
|
var mySheet = book.CreateSheet("Sheet1");
|
||||||
//获取list数据
|
//获取list数据
|
||||||
var listModel = await _CoreCmsUserServicesTicketVerificationLogServices.QueryListByClauseAsync(p => entity.id.Contains(p.id), p => p.id, OrderByType.Asc);
|
var listModel = await _CoreCmsSolitaireItemsServices.QueryListByClauseAsync(p => entity.id.Contains(p.id), p => p.id, OrderByType.Asc, true);
|
||||||
//给sheet1添加第一行的头部标题
|
//给sheet1添加第一行的头部标题
|
||||||
var headerRow = mySheet.CreateRow(0);
|
var headerRow = mySheet.CreateRow(0);
|
||||||
var headerStyle = ExcelHelper.GetHeaderStyle(book);
|
var headerStyle = ExcelHelper.GetHeaderStyle(book);
|
||||||
@@ -385,30 +341,40 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
mySheet.SetColumnWidth(0, 10 * 256);
|
mySheet.SetColumnWidth(0, 10 * 256);
|
||||||
|
|
||||||
var cell1 = headerRow.CreateCell(1);
|
var cell1 = headerRow.CreateCell(1);
|
||||||
cell1.SetCellValue("核销门店id");
|
cell1.SetCellValue("接龙序列");
|
||||||
cell1.CellStyle = headerStyle;
|
cell1.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(1, 10 * 256);
|
mySheet.SetColumnWidth(1, 10 * 256);
|
||||||
|
|
||||||
var cell2 = headerRow.CreateCell(2);
|
var cell2 = headerRow.CreateCell(2);
|
||||||
cell2.SetCellValue("核验人");
|
cell2.SetCellValue("商品序列");
|
||||||
cell2.CellStyle = headerStyle;
|
cell2.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(2, 10 * 256);
|
mySheet.SetColumnWidth(2, 10 * 256);
|
||||||
|
|
||||||
var cell3 = headerRow.CreateCell(3);
|
var cell3 = headerRow.CreateCell(3);
|
||||||
cell3.SetCellValue("服务券序列");
|
cell3.SetCellValue("货品价格");
|
||||||
cell3.CellStyle = headerStyle;
|
cell3.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(3, 10 * 256);
|
mySheet.SetColumnWidth(3, 10 * 256);
|
||||||
|
|
||||||
var cell4 = headerRow.CreateCell(4);
|
var cell4 = headerRow.CreateCell(4);
|
||||||
cell4.SetCellValue("核验码");
|
cell4.SetCellValue("接龙价");
|
||||||
cell4.CellStyle = headerStyle;
|
cell4.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(4, 10 * 256);
|
mySheet.SetColumnWidth(4, 10 * 256);
|
||||||
|
|
||||||
var cell5 = headerRow.CreateCell(5);
|
var cell5 = headerRow.CreateCell(5);
|
||||||
cell5.SetCellValue("核验时间");
|
cell5.SetCellValue("活动库存");
|
||||||
cell5.CellStyle = headerStyle;
|
cell5.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(5, 10 * 256);
|
mySheet.SetColumnWidth(5, 10 * 256);
|
||||||
|
|
||||||
|
var cell6 = headerRow.CreateCell(6);
|
||||||
|
cell6.SetCellValue("每人可买");
|
||||||
|
cell6.CellStyle = headerStyle;
|
||||||
|
mySheet.SetColumnWidth(6, 10 * 256);
|
||||||
|
|
||||||
|
var cell7 = headerRow.CreateCell(7);
|
||||||
|
cell7.SetCellValue("标注删除");
|
||||||
|
cell7.CellStyle = headerStyle;
|
||||||
|
mySheet.SetColumnWidth(7, 10 * 256);
|
||||||
|
|
||||||
headerRow.Height = 30 * 20;
|
headerRow.Height = 30 * 20;
|
||||||
var commonCellStyle = ExcelHelper.GetCommonStyle(book);
|
var commonCellStyle = ExcelHelper.GetCommonStyle(book);
|
||||||
|
|
||||||
@@ -422,30 +388,38 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
rowTemp0.CellStyle = commonCellStyle;
|
rowTemp0.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
var rowTemp1 = rowTemp.CreateCell(1);
|
var rowTemp1 = rowTemp.CreateCell(1);
|
||||||
rowTemp1.SetCellValue(listModel[i].storeId.ToString());
|
rowTemp1.SetCellValue(listModel[i].solitaireId.ToString());
|
||||||
rowTemp1.CellStyle = commonCellStyle;
|
rowTemp1.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
var rowTemp2 = rowTemp.CreateCell(2);
|
var rowTemp2 = rowTemp.CreateCell(2);
|
||||||
rowTemp2.SetCellValue(listModel[i].verificationUserId.ToString());
|
rowTemp2.SetCellValue(listModel[i].goodId.ToString());
|
||||||
rowTemp2.CellStyle = commonCellStyle;
|
rowTemp2.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
var rowTemp3 = rowTemp.CreateCell(3);
|
var rowTemp3 = rowTemp.CreateCell(3);
|
||||||
rowTemp3.SetCellValue(listModel[i].ticketId.ToString());
|
rowTemp3.SetCellValue(listModel[i].productId.ToString());
|
||||||
rowTemp3.CellStyle = commonCellStyle;
|
rowTemp3.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
var rowTemp4 = rowTemp.CreateCell(4);
|
var rowTemp4 = rowTemp.CreateCell(4);
|
||||||
rowTemp4.SetCellValue(listModel[i].ticketRedeemCode.ToString());
|
rowTemp4.SetCellValue(listModel[i].price.ToString());
|
||||||
rowTemp4.CellStyle = commonCellStyle;
|
rowTemp4.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
var rowTemp5 = rowTemp.CreateCell(5);
|
var rowTemp5 = rowTemp.CreateCell(5);
|
||||||
rowTemp5.SetCellValue(listModel[i].verificationTime.ToString());
|
rowTemp5.SetCellValue(listModel[i].activityStock.ToString());
|
||||||
rowTemp5.CellStyle = commonCellStyle;
|
rowTemp5.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
var rowTemp6 = rowTemp.CreateCell(6);
|
||||||
|
rowTemp6.SetCellValue(listModel[i].oneCanBuy.ToString());
|
||||||
|
rowTemp6.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
var rowTemp7 = rowTemp.CreateCell(7);
|
||||||
|
rowTemp7.SetCellValue(listModel[i].isDelete.ToString());
|
||||||
|
rowTemp7.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
}
|
}
|
||||||
// 导出excel
|
// 导出excel
|
||||||
string webRootPath = _webHostEnvironment.WebRootPath;
|
string webRootPath = _webHostEnvironment.WebRootPath;
|
||||||
string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
|
string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
|
||||||
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsUserServicesTicketVerificationLog导出(选择结果).xls";
|
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsSolitaireItems导出(选择结果).xls";
|
||||||
string filePath = webRootPath + tpath;
|
string filePath = webRootPath + tpath;
|
||||||
DirectoryInfo di = new DirectoryInfo(filePath);
|
DirectoryInfo di = new DirectoryInfo(filePath);
|
||||||
if (!di.Exists)
|
if (!di.Exists)
|
||||||
@@ -465,7 +439,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 查询导出============================================================
|
#region 查询导出============================================================
|
||||||
// POST: Api/CoreCmsUserServicesTicketVerificationLog/QueryExportExcel/10
|
// POST: Api/CoreCmsSolitaireItems/QueryExportExcel/10
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查询导出
|
/// 查询导出
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -476,7 +450,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
var where = PredicateBuilder.True<CoreCmsUserServicesTicketVerificationLog>();
|
var where = PredicateBuilder.True<CoreCmsSolitaireItems>();
|
||||||
//查询筛选
|
//查询筛选
|
||||||
|
|
||||||
//序列 int
|
//序列 int
|
||||||
@@ -485,36 +459,45 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
{
|
{
|
||||||
where = where.And(p => p.id == id);
|
where = where.And(p => p.id == id);
|
||||||
}
|
}
|
||||||
//核销门店id int
|
//接龙序列 int
|
||||||
var storeId = Request.Form["storeId"].FirstOrDefault().ObjectToInt(0);
|
var solitaireId = Request.Form["solitaireId"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (storeId > 0)
|
if (solitaireId > 0)
|
||||||
{
|
{
|
||||||
where = where.And(p => p.storeId == storeId);
|
where = where.And(p => p.solitaireId == solitaireId);
|
||||||
}
|
}
|
||||||
//核验人 int
|
//商品序列 int
|
||||||
var verificationUserId = Request.Form["verificationUserId"].FirstOrDefault().ObjectToInt(0);
|
var goodId = Request.Form["goodId"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (verificationUserId > 0)
|
if (goodId > 0)
|
||||||
{
|
{
|
||||||
where = where.And(p => p.verificationUserId == verificationUserId);
|
where = where.And(p => p.goodId == goodId);
|
||||||
}
|
}
|
||||||
//服务券序列 int
|
//货品价格 int
|
||||||
var ticketId = Request.Form["ticketId"].FirstOrDefault().ObjectToInt(0);
|
var productId = Request.Form["productId"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (ticketId > 0)
|
if (productId > 0)
|
||||||
{
|
{
|
||||||
where = where.And(p => p.ticketId == ticketId);
|
where = where.And(p => p.productId == productId);
|
||||||
}
|
}
|
||||||
//核验码 nvarchar
|
//活动库存 int
|
||||||
var ticketRedeemCode = Request.Form["ticketRedeemCode"].FirstOrDefault();
|
var activityStock = Request.Form["activityStock"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (!string.IsNullOrEmpty(ticketRedeemCode))
|
if (activityStock > 0)
|
||||||
{
|
{
|
||||||
where = where.And(p => p.ticketRedeemCode.Contains(ticketRedeemCode));
|
where = where.And(p => p.activityStock == activityStock);
|
||||||
}
|
}
|
||||||
//核验时间 datetime
|
//每人可买 int
|
||||||
var verificationTime = Request.Form["verificationTime"].FirstOrDefault();
|
var oneCanBuy = Request.Form["oneCanBuy"].FirstOrDefault().ObjectToInt(0);
|
||||||
if (!string.IsNullOrEmpty(verificationTime))
|
if (oneCanBuy > 0)
|
||||||
{
|
{
|
||||||
var dt = verificationTime.ObjectToDate();
|
where = where.And(p => p.oneCanBuy == oneCanBuy);
|
||||||
where = where.And(p => p.verificationTime > dt);
|
}
|
||||||
|
//标注删除 bit
|
||||||
|
var isDelete = Request.Form["isDelete"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(isDelete) && isDelete.ToLowerInvariant() == "true")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isDelete == true);
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(isDelete) && isDelete.ToLowerInvariant() == "false")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isDelete == false);
|
||||||
}
|
}
|
||||||
//获取数据
|
//获取数据
|
||||||
//创建Excel文件的对象
|
//创建Excel文件的对象
|
||||||
@@ -522,7 +505,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
//添加一个sheet
|
//添加一个sheet
|
||||||
var mySheet = book.CreateSheet("Sheet1");
|
var mySheet = book.CreateSheet("Sheet1");
|
||||||
//获取list数据
|
//获取list数据
|
||||||
var listModel = await _CoreCmsUserServicesTicketVerificationLogServices.QueryListByClauseAsync(where, p => p.id, OrderByType.Asc);
|
var listModel = await _CoreCmsSolitaireItemsServices.QueryListByClauseAsync(where, p => p.id, OrderByType.Asc, true);
|
||||||
//给sheet1添加第一行的头部标题
|
//给sheet1添加第一行的头部标题
|
||||||
var headerRow = mySheet.CreateRow(0);
|
var headerRow = mySheet.CreateRow(0);
|
||||||
var headerStyle = ExcelHelper.GetHeaderStyle(book);
|
var headerStyle = ExcelHelper.GetHeaderStyle(book);
|
||||||
@@ -533,30 +516,40 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
mySheet.SetColumnWidth(0, 10 * 256);
|
mySheet.SetColumnWidth(0, 10 * 256);
|
||||||
|
|
||||||
var cell1 = headerRow.CreateCell(1);
|
var cell1 = headerRow.CreateCell(1);
|
||||||
cell1.SetCellValue("核销门店id");
|
cell1.SetCellValue("接龙序列");
|
||||||
cell1.CellStyle = headerStyle;
|
cell1.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(1, 10 * 256);
|
mySheet.SetColumnWidth(1, 10 * 256);
|
||||||
|
|
||||||
var cell2 = headerRow.CreateCell(2);
|
var cell2 = headerRow.CreateCell(2);
|
||||||
cell2.SetCellValue("核验人");
|
cell2.SetCellValue("商品序列");
|
||||||
cell2.CellStyle = headerStyle;
|
cell2.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(2, 10 * 256);
|
mySheet.SetColumnWidth(2, 10 * 256);
|
||||||
|
|
||||||
var cell3 = headerRow.CreateCell(3);
|
var cell3 = headerRow.CreateCell(3);
|
||||||
cell3.SetCellValue("服务券序列");
|
cell3.SetCellValue("货品价格");
|
||||||
cell3.CellStyle = headerStyle;
|
cell3.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(3, 10 * 256);
|
mySheet.SetColumnWidth(3, 10 * 256);
|
||||||
|
|
||||||
var cell4 = headerRow.CreateCell(4);
|
var cell4 = headerRow.CreateCell(4);
|
||||||
cell4.SetCellValue("核验码");
|
cell4.SetCellValue("接龙价");
|
||||||
cell4.CellStyle = headerStyle;
|
cell4.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(4, 10 * 256);
|
mySheet.SetColumnWidth(4, 10 * 256);
|
||||||
|
|
||||||
var cell5 = headerRow.CreateCell(5);
|
var cell5 = headerRow.CreateCell(5);
|
||||||
cell5.SetCellValue("核验时间");
|
cell5.SetCellValue("活动库存");
|
||||||
cell5.CellStyle = headerStyle;
|
cell5.CellStyle = headerStyle;
|
||||||
mySheet.SetColumnWidth(5, 10 * 256);
|
mySheet.SetColumnWidth(5, 10 * 256);
|
||||||
|
|
||||||
|
var cell6 = headerRow.CreateCell(6);
|
||||||
|
cell6.SetCellValue("每人可买");
|
||||||
|
cell6.CellStyle = headerStyle;
|
||||||
|
mySheet.SetColumnWidth(6, 10 * 256);
|
||||||
|
|
||||||
|
var cell7 = headerRow.CreateCell(7);
|
||||||
|
cell7.SetCellValue("标注删除");
|
||||||
|
cell7.CellStyle = headerStyle;
|
||||||
|
mySheet.SetColumnWidth(7, 10 * 256);
|
||||||
|
|
||||||
|
|
||||||
headerRow.Height = 30 * 20;
|
headerRow.Height = 30 * 20;
|
||||||
var commonCellStyle = ExcelHelper.GetCommonStyle(book);
|
var commonCellStyle = ExcelHelper.GetCommonStyle(book);
|
||||||
@@ -574,39 +567,51 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
|
|
||||||
|
|
||||||
var rowTemp1 = rowTemp.CreateCell(1);
|
var rowTemp1 = rowTemp.CreateCell(1);
|
||||||
rowTemp1.SetCellValue(listModel[i].storeId.ToString());
|
rowTemp1.SetCellValue(listModel[i].solitaireId.ToString());
|
||||||
rowTemp1.CellStyle = commonCellStyle;
|
rowTemp1.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var rowTemp2 = rowTemp.CreateCell(2);
|
var rowTemp2 = rowTemp.CreateCell(2);
|
||||||
rowTemp2.SetCellValue(listModel[i].verificationUserId.ToString());
|
rowTemp2.SetCellValue(listModel[i].goodId.ToString());
|
||||||
rowTemp2.CellStyle = commonCellStyle;
|
rowTemp2.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var rowTemp3 = rowTemp.CreateCell(3);
|
var rowTemp3 = rowTemp.CreateCell(3);
|
||||||
rowTemp3.SetCellValue(listModel[i].ticketId.ToString());
|
rowTemp3.SetCellValue(listModel[i].productId.ToString());
|
||||||
rowTemp3.CellStyle = commonCellStyle;
|
rowTemp3.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var rowTemp4 = rowTemp.CreateCell(4);
|
var rowTemp4 = rowTemp.CreateCell(4);
|
||||||
rowTemp4.SetCellValue(listModel[i].ticketRedeemCode.ToString());
|
rowTemp4.SetCellValue(listModel[i].price.ToString());
|
||||||
rowTemp4.CellStyle = commonCellStyle;
|
rowTemp4.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var rowTemp5 = rowTemp.CreateCell(5);
|
var rowTemp5 = rowTemp.CreateCell(5);
|
||||||
rowTemp5.SetCellValue(listModel[i].verificationTime.ToString());
|
rowTemp5.SetCellValue(listModel[i].activityStock.ToString());
|
||||||
rowTemp5.CellStyle = commonCellStyle;
|
rowTemp5.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var rowTemp6 = rowTemp.CreateCell(6);
|
||||||
|
rowTemp6.SetCellValue(listModel[i].oneCanBuy.ToString());
|
||||||
|
rowTemp6.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var rowTemp7 = rowTemp.CreateCell(7);
|
||||||
|
rowTemp7.SetCellValue(listModel[i].isDelete.ToString());
|
||||||
|
rowTemp7.CellStyle = commonCellStyle;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// 写入到excel
|
// 写入到excel
|
||||||
string webRootPath = _webHostEnvironment.WebRootPath;
|
string webRootPath = _webHostEnvironment.WebRootPath;
|
||||||
string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
|
string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
|
||||||
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsUserServicesTicketVerificationLog导出(查询结果).xls";
|
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsSolitaireItems导出(查询结果).xls";
|
||||||
string filePath = webRootPath + tpath;
|
string filePath = webRootPath + tpath;
|
||||||
DirectoryInfo di = new DirectoryInfo(filePath);
|
DirectoryInfo di = new DirectoryInfo(filePath);
|
||||||
if (!di.Exists)
|
if (!di.Exists)
|
||||||
@@ -626,6 +631,35 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 设置标注删除============================================================
|
||||||
|
// POST: Api/CoreCmsSolitaireItems/DoSetisDelete/10
|
||||||
|
/// <summary>
|
||||||
|
/// 设置标注删除
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("设置标注删除")]
|
||||||
|
public async Task<AdminUiCallBack> DoSetisDelete([FromBody] FMUpdateBoolDataByIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var oldModel = await _CoreCmsSolitaireItemsServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (oldModel == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
oldModel.isDelete = (bool)entity.data;
|
||||||
|
|
||||||
|
var bl = await _CoreCmsSolitaireItemsServices.UpdateAsync(p => new CoreCmsSolitaireItems() { isDelete = oldModel.isDelete }, p => p.id == oldModel.id);
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -192,7 +192,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//获取数据
|
//获取数据
|
||||||
var list = await _weChatTcThirdCatListServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize, true);
|
var list = await _weChatTcThirdCatListServices.QueryPageAsync(where, " first_cat_id asc, second_cat_id asc , third_cat_id asc ", pageCurrent, pageSize, false);
|
||||||
//返回数据
|
//返回数据
|
||||||
jm.data = list;
|
jm.data = list;
|
||||||
jm.code = 0;
|
jm.code = 0;
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.2.0" />
|
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.2.0" />
|
||||||
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="6.0.0" />
|
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="6.0.0" />
|
||||||
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
|
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="11.0.0" />
|
||||||
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.8" />
|
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.8" />
|
||||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.8" />
|
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.8" />
|
||||||
<PackageReference Include="IdentityModel" Version="6.0.0" />
|
<PackageReference Include="IdentityModel" Version="6.0.0" />
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<PackageReference Include="StackExchange.Redis" Version="2.2.88" />
|
<PackageReference Include="StackExchange.Redis" Version="2.2.88" />
|
||||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.15.0" />
|
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.15.0" />
|
||||||
<PackageReference Include="Tencent.QCloud.Cos.Sdk" Version="5.4.25" />
|
<PackageReference Include="Tencent.QCloud.Cos.Sdk" Version="5.4.25" />
|
||||||
<PackageReference Include="ToolGood.Words" Version="3.0.2.8" />
|
<PackageReference Include="ToolGood.Words" Version="3.0.3.1" />
|
||||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.12" />
|
<PackageReference Include="Yitter.IdGenerator" Version="1.0.12" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
744
CoreCms.Net.Web.Admin/wwwroot/views/good/goods/details.html
Normal file
744
CoreCms.Net.Web.Admin/wwwroot/views/good/goods/details.html
Normal file
@@ -0,0 +1,744 @@
|
|||||||
|
|
||||||
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
|
<div class="layui-fluid addGoods">
|
||||||
|
<div class="layui-row layui-col-space15">
|
||||||
|
|
||||||
|
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsGoods-editForm" id="LAY-app-CoreCmsGoods-editForm">
|
||||||
|
|
||||||
|
<div class="layui-tab layui-tab-card" style="margin: 0 0 10px 0">
|
||||||
|
<ul class="layui-tab-title">
|
||||||
|
<li class="layui-this">基础信息</li>
|
||||||
|
<li>图集/视频</li>
|
||||||
|
<li>SKU/货品设置</li>
|
||||||
|
<li>参数设置</li>
|
||||||
|
<li>会员折扣</li>
|
||||||
|
<li>商品详情</li>
|
||||||
|
</ul>
|
||||||
|
<div class="layui-tab-content" style="min-height: 500px;">
|
||||||
|
<div class="layui-tab-item layui-show">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">商品名称</label>
|
||||||
|
<div class="layui-input-inline layui-inline-100 layui-form-mid">{{d.params.data.model.name }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="goodsCategoryId" class="layui-form-label">商品分类</label>
|
||||||
|
<div class="layui-input-inline layui-inline-6">
|
||||||
|
<div id="goodsCategoryId_SelectCreateTree" class="ew-xmselect-tree" lay-verType="tips" lay-reqText="请选择商品分类"></div>
|
||||||
|
</div>
|
||||||
|
<label class="layui-form-label">扩展分类:</label>
|
||||||
|
<div class="layui-input-inline layui-inline-10">
|
||||||
|
<div id="goodsCategoryIdExtend_SelectCreateTree" class="xm-select-demo"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="brandId" class="layui-form-label">品牌</label>
|
||||||
|
<div class="layui-input-inline layui-inline-6" id="brandIdView">
|
||||||
|
<select name="goods[brandId]" id="brandId" disabled="disabled">
|
||||||
|
<option value="0">无</option>
|
||||||
|
{{# layui.each(d.params.data.brands, function(index, item){ }}
|
||||||
|
<option value="{{ item.id }}" {{item.id===d.params.data.model.brandId?'selected="selected"':''}}>{{ item.name }}</option>
|
||||||
|
{{# }); }}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">商品编码</label>
|
||||||
|
<div class="layui-input-inline layui-inline-100 layui-form-mid">{{d.params.data.model.bn }}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item layui-form-text">
|
||||||
|
<label class="layui-form-label">商品简介</label>
|
||||||
|
<div class="layui-input-inline layui-inline-100 layui-form-mid">{{d.params.data.model.brief }}</div>
|
||||||
|
</div>
|
||||||
|
<fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">其他参数</a></legend></fieldset>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
|
||||||
|
<label class="layui-form-label">重量</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">{{d.params.data.model.weight }}克</div>
|
||||||
|
|
||||||
|
<label class="layui-form-label">单位</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">{{d.params.data.model.unit }}</div>
|
||||||
|
|
||||||
|
<label class="layui-form-label">商品排序</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">{{d.params.data.model.sort }}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="isMarketable" class="layui-form-label layui-form-required">是否上架</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="goods[isMarketable]" {{d.params.data.model.isMarketable ?'checked="checked"':'' }} id="isMarketable" lay-skin="switch" lay-text="上架|下架" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
<label for="isNomalVirtual" class="layui-form-label layui-form-required">虚拟商品</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="goods[isNomalVirtual]" {{d.params.data.model.isNomalVirtual ?'checked="checked"':'' }} id="isNomalVirtual" lay-skin="switch" lay-text="是|否" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
<label for="isRecommend" class="layui-form-label layui-form-required">是否推荐</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="goods[isRecommend]" {{d.params.data.model.isRecommend ?'checked="checked"':'' }} id="isRecommend" lay-skin="switch" lay-text="是|否" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
<label for="isHot" class="layui-form-label layui-form-required">是否热门</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="goods[isHot]" {{d.params.data.model.isHot ?'checked="checked"':'' }} id="isHot" lay-skin="switch" lay-text="是|否" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">封面图</a></legend></fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label" for="avatarImage">封面图:</label>
|
||||||
|
<div class="layui-input-inline layui-inline-12 layui-form-mid">{{d.params.data.model.image}}</div>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<div class="layui-upload">
|
||||||
|
<img class="layui-upload-img" id="viewImgBox" src="{{d.params.data.model.image || layui.setter.noImagePicUrl }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">图集</a></legend></fieldset>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
|
||||||
|
<div class="layui-upload-list" id="upload-more-list"></div>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">媒体</a></legend></fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label" for="video">视频:</label>
|
||||||
|
<div class="layui-input-inline layui-inline-12 layui-form-mid">{{d.params.data.model.video ||'无'}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<!--<blockquote class="layui-elem-quote">
|
||||||
|
1、选择对应的【商品类型】,将进入多SKU货品模式。同时如果类别有参数,也将进行显示设置。<br/>
|
||||||
|
2、设置多SKU后,商品本身的价格只做对外展示用,实际以进入商品详情选择不同货品为准。<br/>
|
||||||
|
3、货品SKU组合属性值只支持:中文、英文、数字、大写符号,小写符号三个(-、/、.))<br/>
|
||||||
|
4、货号必须为SN字母开头<br/>
|
||||||
|
5、如果不设置单货品重量,将默认使用商品重量为1个单位的重量。
|
||||||
|
</blockquote>-->
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="brandId" class="layui-form-label">佣金设置</label>
|
||||||
|
<div class="layui-input-inline layui-inline-6">
|
||||||
|
{{# layui.each(d.params.data.productsDistributionType, function(index, item){ }}
|
||||||
|
<input type="radio" name="goods[productsDistributionType]" disabled="disabled" value="{{ item.value }}" title="{{ item.description }}" {{item.value===d.params.data.model.productsDistributionType?'checked="checked"':''}}>
|
||||||
|
{{# }); }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">开启SKU</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm" id="openSpecBtn" lay-active="openSpecBtn" data-id="typeInfo.id" style="margin-top:5px;margin-left: 10px;">启用SKU</button>
|
||||||
|
</div>
|
||||||
|
</div>-->
|
||||||
|
|
||||||
|
<div class="layui-form-item" id="goodsTypeIdViewBox" style="display: none;">
|
||||||
|
<label for="goodsTypeId" class="layui-form-label">选择SKU模型</label>
|
||||||
|
<div class="layui-input-inline layui-inline-10">
|
||||||
|
<div id="goodsSku_SelectCreateTree" class="xm-select-demo"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="product-info">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">参数模型选择</label>
|
||||||
|
<div class="layui-input-inline layui-inline-10">
|
||||||
|
<div id="goodsParams_SelectCreateTree" class="xm-select-demo"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="parametersBox">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<blockquote class="layui-elem-quote">
|
||||||
|
会员价为0时,使用默认价格。大于0时,商品实际价格=货品销售价-会员价
|
||||||
|
</blockquote>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
{{# layui.each(d.params.data.userGrade, function(index, item){ }}
|
||||||
|
<label class="layui-form-label layui-form-required">{{ item.title }}</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">{{getUserGradePrice(d.params.data.goodsGrades, item.id, item.value || 0)}}</div>
|
||||||
|
{{# }); }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<div class="layui-form-item layui-form-text">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
{{d.params.data.model.intro}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script id="getSpec_tpl" type="text/html">
|
||||||
|
<table class="layui-table" lay-size="sm">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150">
|
||||||
|
<col width="150">
|
||||||
|
<col width="150">
|
||||||
|
<col>
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>默认货品</th>
|
||||||
|
<th>图片</th>
|
||||||
|
<th>货号</th>
|
||||||
|
<th>SKU</th>
|
||||||
|
<th>冻结库存</th>
|
||||||
|
<th>重量(克)</th>
|
||||||
|
<th>库存</th>
|
||||||
|
<th><i class="required-color">*</i>销售价</th>
|
||||||
|
<th>成本价</th>
|
||||||
|
<th>市场价</th>
|
||||||
|
<th>一级返现</th>
|
||||||
|
<th>二级返现</th>
|
||||||
|
<th>三级返现</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="productsTbody">
|
||||||
|
{{# layui.each(d, function(index, item){ }}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" value="{{item.id}}" name="product[id][]" />
|
||||||
|
<input type="hidden" value="{{item.goodsId || 0}}" name="product[goodsId][]" />
|
||||||
|
<input type="checkbox" id="product[{{item.spesDesc}}][isDefalut]" name="product[isDefalut][]" title="是否默认" {{item.isDefalut? 'checked="true"':''}} value="{{item.isDefalut? '1':'0'}}" class="isdefalut" lay-filter="isdefalut" disabled="disabled">
|
||||||
|
</td>
|
||||||
|
<td class="spec-td">
|
||||||
|
<div class="spec_image">
|
||||||
|
<div class="spec_image_item">
|
||||||
|
<!--<div class="del-img">
|
||||||
|
x
|
||||||
|
</div>-->
|
||||||
|
<img src="{{ item.images && item.images !='null'? item.images : layui.setter.noImagePicUrl }}" id="productImagesSrc" style="width:60px;height:60px">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="productImagesInput" name="product[images][]" value="{{item.images}}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.sn}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.spesDesc}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.freezeStock}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.weight}}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="have-add-td">
|
||||||
|
{{item.stock}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.price}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.costprice}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.mktprice}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.levelOne}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.levelTwo}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.levelThree}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{# }); }}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script id="params_tpl" type="text/html">
|
||||||
|
|
||||||
|
{{# if(d.goodsParams){ }}
|
||||||
|
<blockquote class="layui-elem-quote">
|
||||||
|
{{# layui.each(d.goodsParams, function(index, item){ }}
|
||||||
|
<div class="layui-form-item" {{#if(item.type && item.type!='text'){}} pane {{# } }}>
|
||||||
|
<label class="layui-form-label">{{item.name}}</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
{{# if(item.type && item.type==='radio'){ }}
|
||||||
|
{{# layui.each(layui.coreHelper.stringToArray(item.value), function(indexRadio, itemRadio){ }}
|
||||||
|
<input type="radio" name="paramsValue[{{index}}]" value="{{itemRadio}}" title="{{itemRadio}}" {{ setRadioParameters(d.arrParameters, item.id , itemRadio) ?'checked':'' }} lay-verType="tips" lay-verify="required" disabled="disabled">
|
||||||
|
{{# }); }}
|
||||||
|
{{# } else if (item.type && item.type==='checkbox'){ }}
|
||||||
|
{{# layui.each(layui.coreHelper.stringToArray(item.value), function(indexCheckbox, itemCheckbox){ }}
|
||||||
|
<input type="checkbox" name="paramsValue[{{index}}][]" value="{{itemCheckbox}}" lay-skin="primary" {{ setCheckboxParameters(d.arrParameters, item.id , itemCheckbox) ?'checked':'' }} title="{{itemCheckbox}}" disabled="disabled">
|
||||||
|
{{# }); }}
|
||||||
|
{{# } else if (item.type && item.type==='text'){ }}
|
||||||
|
<input type="text" name="paramsValue[{{index}}]" value="{{setTextParameters(d.arrParameters, item.id)}}" class="layui-input" disabled="disabled">
|
||||||
|
{{# } else { }}
|
||||||
|
{{# } }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{# }); }}
|
||||||
|
</blockquote>
|
||||||
|
{{# } }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script id="sku_tpl" type="text/html">
|
||||||
|
<form id="spec_form">
|
||||||
|
<div id="spec_select" style="display: none">
|
||||||
|
<blockquote class="layui-elem-quote">
|
||||||
|
{{# if(d.goodsTypeSpec){ }}
|
||||||
|
{{# layui.each(d.goodsTypeSpec, function(index, item){ }}
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">{{item.name}}</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
{{# layui.each(item.specValues, function(indexValue, itemValue){ }}
|
||||||
|
<div class="spec-item">
|
||||||
|
<div class="checkboxBox">
|
||||||
|
<input type="checkbox" name="selectSpec.{{itemValue.id}}.{{item.name}}" value="{{itemValue.value}}" lay-skin="switch" {{isSelectedTypeSpec(d.model.spesDesc, itemValue.id,item.name)?'checked="checked"':''}} lay-filter="spec_select" class="spec-select" lay-text="启用|关闭" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">{{getSelectedTypeSpecValue(d.model.newSpec, itemValue.id, itemValue.value)}}</div>
|
||||||
|
</div>
|
||||||
|
{{# }); }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{# }); }}
|
||||||
|
{{# } }}
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
<div id="more_spec"></div>
|
||||||
|
</form>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script id="image_tpl" type="text/html">
|
||||||
|
{{# layui.each(d, function(index, item){ }}
|
||||||
|
<div class="imgdiv">
|
||||||
|
<img src="{{ item }}" class="layui-upload-img" onclick='layui.coreHelper.viewImage("{{ item }}")' style="width: 100px;height:100px;">
|
||||||
|
</div>
|
||||||
|
{{# }); }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var $;
|
||||||
|
var debug = layui.setter.debug;
|
||||||
|
var types;
|
||||||
|
var imgs = [];
|
||||||
|
var thumbnailBtn;
|
||||||
|
var _that = this;
|
||||||
|
var enptyProducts;
|
||||||
|
var oldSingleData = {};
|
||||||
|
var oldMultitermData = [];
|
||||||
|
var tempMultitermData = [];
|
||||||
|
|
||||||
|
layui.data.done = function (d) {
|
||||||
|
types = d.params.data.types;
|
||||||
|
//开启调试情况下获取接口赋值数据
|
||||||
|
if (debug) { console.log(d.data); }
|
||||||
|
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'dtree', 'view', 'laytpl', 'xmSelect', 'layedit', 'util', 'cropperImg'],
|
||||||
|
function () {
|
||||||
|
$ = layui.$;
|
||||||
|
var form = layui.form
|
||||||
|
, admin = layui.admin
|
||||||
|
, laydate = layui.laydate
|
||||||
|
, upload = layui.upload
|
||||||
|
, dtree = layui.dtree
|
||||||
|
, view = layui.view
|
||||||
|
, laytpl = layui.laytpl
|
||||||
|
, xmSelect = layui.xmSelect
|
||||||
|
, layedit = layui.layedit
|
||||||
|
, util = layui.util
|
||||||
|
, cropperImg = layui.cropperImg
|
||||||
|
, coreHelper = layui.coreHelper;
|
||||||
|
var element = layui.element;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//初始化图片
|
||||||
|
var defaultImg = 'no';
|
||||||
|
if (d.params.data.model.images) {
|
||||||
|
imgs = d.params.data.model.images.split(',');
|
||||||
|
defaultImg = imgs[0];
|
||||||
|
$('#imageIds').val(imgs);
|
||||||
|
var getTpl = image_tpl.innerHTML, viewBox = document.getElementById('upload-more-list');
|
||||||
|
laytpl(getTpl).render(imgs, function (html) {
|
||||||
|
viewBox.innerHTML = html;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//初始化已经确认商品SKU
|
||||||
|
if (d.params.data.goodsTypeSpec) {
|
||||||
|
var tmpData = { goodsTypeSpec: d.params.data.goodsTypeSpec, model: d.params.data.model };
|
||||||
|
//赋值商品参数数据
|
||||||
|
var getTpl = sku_tpl.innerHTML, viewBox = document.getElementById('product-info');
|
||||||
|
laytpl(getTpl).render(tmpData, function (html) {
|
||||||
|
viewBox.innerHTML = html;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var arrParameters = [];
|
||||||
|
//初始化已经确认商品参数
|
||||||
|
if (d.params.data.goodsParams) {
|
||||||
|
if (d.params.data.model.parameters) {
|
||||||
|
var arr = d.params.data.model.parameters.split('|');
|
||||||
|
for (var i = 0; i < arr.length; i++) {
|
||||||
|
var arrChild = arr[i].split(':');
|
||||||
|
arrParameters.push(arrChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var tmpData = { goodsParams: d.params.data.goodsParams, arrParameters: arrParameters };
|
||||||
|
//赋值商品参数数据
|
||||||
|
var getTpl = params_tpl.innerHTML, viewBox = document.getElementById('parametersBox');
|
||||||
|
laytpl(getTpl).render(tmpData, function (html) {
|
||||||
|
viewBox.innerHTML = html;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//初始化数据
|
||||||
|
enptyProducts = {
|
||||||
|
id: 0,
|
||||||
|
goodsId: 0,
|
||||||
|
isDefalut: true,
|
||||||
|
images: layui.setter.noImagePicUrl,
|
||||||
|
sn: layui.coreHelper.getSN('SN'),
|
||||||
|
spesDesc: "",
|
||||||
|
stock: 1000,
|
||||||
|
weight: 0,
|
||||||
|
price: 0,
|
||||||
|
costprice: 0,
|
||||||
|
mktprice: 0,
|
||||||
|
levelOne: 0,
|
||||||
|
levelTwo: 0,
|
||||||
|
levelThree: 0,
|
||||||
|
}
|
||||||
|
oldMultitermData = d.params.data.products;
|
||||||
|
if (d.params.data.model.openSpec == 1) {
|
||||||
|
oldSingleData = enptyProducts;
|
||||||
|
tempMultitermData = d.params.data.products;
|
||||||
|
} else {
|
||||||
|
oldSingleData = d.params.data.products[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
//初始化商品信息
|
||||||
|
var getTpl = getSpec_tpl.innerHTML, viewBox = document.getElementById('more_spec');
|
||||||
|
var tmpData = oldMultitermData;
|
||||||
|
laytpl(getTpl).render(tmpData, function (html) {
|
||||||
|
viewBox.innerHTML = html;
|
||||||
|
});
|
||||||
|
$('#productsCount').val(oldMultitermData.length);
|
||||||
|
|
||||||
|
if (d.params.data.model.openSpec == 1) {
|
||||||
|
$("#spec_select").show();
|
||||||
|
$("#parametersBox").show();
|
||||||
|
$("#goodsTypeIdViewBox").show();
|
||||||
|
var btn = $('#openSpecBtn');
|
||||||
|
$(btn).html("取消SKU");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 渲染商品分类
|
||||||
|
var insXmSelGoodsCategoryId = xmSelect.render({
|
||||||
|
el: '#goodsCategoryId_SelectCreateTree',
|
||||||
|
height: '250px',
|
||||||
|
data: d.params.data.categories.data,
|
||||||
|
initValue: d.params.data.model ? [d.params.data.model.goodsCategoryId] : [],
|
||||||
|
//model: { label: { type: 'text' } },
|
||||||
|
name: 'goodsCategoryId',
|
||||||
|
prop: {
|
||||||
|
name: 'title',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
layVerify: 'required',
|
||||||
|
layVerType: 'msg',
|
||||||
|
radio: true,
|
||||||
|
clickClose: true,
|
||||||
|
disabled: true,
|
||||||
|
tree: {
|
||||||
|
show: true,
|
||||||
|
indent: 15,
|
||||||
|
strict: false,
|
||||||
|
expandedKeys: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//渲染商品扩展分类
|
||||||
|
|
||||||
|
var arr = [];
|
||||||
|
if (d.params.data.categoryExtend.length > 0) {
|
||||||
|
for (var i = 0; i < d.params.data.categoryExtend.length; i++) {
|
||||||
|
arr.push(d.params.data.categoryExtend[i].goodsCategroyId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var insXmSelGoodsCategoryIdExtend = xmSelect.render({
|
||||||
|
el: '#goodsCategoryIdExtend_SelectCreateTree',
|
||||||
|
height: '250px',
|
||||||
|
data: d.params.data.categories.data,
|
||||||
|
//initValue: mData ? [mData.parentId] : [],
|
||||||
|
//model: { label: { type: 'text' } },
|
||||||
|
name: 'goodsCategoryIdExtend',
|
||||||
|
prop: {
|
||||||
|
name: 'title',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
disabled: true,
|
||||||
|
initValue: arr,
|
||||||
|
//layVerify: 'required',
|
||||||
|
//layVerType: 'msg',
|
||||||
|
//radio: false,
|
||||||
|
//clickClose: true,
|
||||||
|
autoRow: true,
|
||||||
|
|
||||||
|
tree: {
|
||||||
|
//是否显示树状结构
|
||||||
|
show: true,
|
||||||
|
//是否展示三角图标
|
||||||
|
showFolderIcon: true,
|
||||||
|
//是否显示虚线
|
||||||
|
showLine: true,
|
||||||
|
//间距
|
||||||
|
indent: 20,
|
||||||
|
//默认展开节点的数组, 为 true 时, 展开所有节点
|
||||||
|
expandedKeys: true,
|
||||||
|
//是否严格遵守父子模式
|
||||||
|
strict: false,
|
||||||
|
//是否开启极简模式
|
||||||
|
simple: false,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var arrParams = [];
|
||||||
|
if (d.params.data.model.goodsParamsIds) {
|
||||||
|
arrParams = d.params.data.model.goodsParamsIds.split(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
//渲染商品扩展分类
|
||||||
|
var insGoodsParams = xmSelect.render({
|
||||||
|
el: '#goodsParams_SelectCreateTree',
|
||||||
|
height: '250px',
|
||||||
|
data: d.params.data.paramsList,
|
||||||
|
//model: { label: { type: 'text' } },
|
||||||
|
name: 'goodsParamsIds',
|
||||||
|
prop: {
|
||||||
|
name: 'name',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
disabled: true,
|
||||||
|
initValue: arrParams,
|
||||||
|
tree: {
|
||||||
|
//是否显示树状结构
|
||||||
|
show: true,
|
||||||
|
//是否展示三角图标
|
||||||
|
showFolderIcon: true,
|
||||||
|
//是否显示虚线
|
||||||
|
showLine: true,
|
||||||
|
//间距
|
||||||
|
indent: 20,
|
||||||
|
//默认展开节点的数组, 为 true 时, 展开所有节点
|
||||||
|
expandedKeys: true,
|
||||||
|
//是否严格遵守父子模式
|
||||||
|
strict: false,
|
||||||
|
//是否开启极简模式
|
||||||
|
simple: false,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var arrSku = [];
|
||||||
|
if (d.params.data.model.goodsSkuIds) {
|
||||||
|
arrSku = d.params.data.model.goodsSkuIds.split(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
//渲染商品扩展分类
|
||||||
|
var insgoodsSKU = xmSelect.render({
|
||||||
|
el: '#goodsSku_SelectCreateTree',
|
||||||
|
height: '250px',
|
||||||
|
data: d.params.data.skuList,
|
||||||
|
//model: { label: { type: 'text' } },
|
||||||
|
name: 'goodsSkuIds',
|
||||||
|
prop: {
|
||||||
|
name: 'name',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
disabled: true,
|
||||||
|
initValue: arrSku,
|
||||||
|
tree: {
|
||||||
|
//是否显示树状结构
|
||||||
|
show: true,
|
||||||
|
//是否展示三角图标
|
||||||
|
showFolderIcon: true,
|
||||||
|
//是否显示虚线
|
||||||
|
showLine: true,
|
||||||
|
//间距
|
||||||
|
indent: 20,
|
||||||
|
//默认展开节点的数组, 为 true 时, 展开所有节点
|
||||||
|
expandedKeys: true,
|
||||||
|
//是否严格遵守父子模式
|
||||||
|
strict: false,
|
||||||
|
//是否开启极简模式
|
||||||
|
simple: false,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function openSpecBox(is_open) {
|
||||||
|
if (is_open == '0') {
|
||||||
|
$("input[name=openSpec]").val("1");
|
||||||
|
$("#spec_select").show();
|
||||||
|
$("#goodsTypeIdViewBox").show();
|
||||||
|
$("#openSpecBtn").html("取消SKU");
|
||||||
|
console.log("取消SKU");
|
||||||
|
|
||||||
|
if (_that.tempMultitermData.length == 0) {
|
||||||
|
$('#more_spec').html('');
|
||||||
|
$('#productsCount').val(0);
|
||||||
|
} else {
|
||||||
|
var getTpl = getSpec_tpl.innerHTML, viewBox = document.getElementById('more_spec');
|
||||||
|
laytpl(getTpl).render(_that.tempMultitermData, function (html) {
|
||||||
|
viewBox.innerHTML = html;
|
||||||
|
});
|
||||||
|
$('#productsCount').val(_that.tempMultitermData.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$("input[name=openSpec]").val("0");
|
||||||
|
$("#spec_select").hide();
|
||||||
|
$("#goodsTypeIdViewBox").hide();
|
||||||
|
$("#openSpecBtn").html("启用SKU");
|
||||||
|
console.log("启用SKU");
|
||||||
|
|
||||||
|
var arr = [];
|
||||||
|
arr.push(_that.oldSingleData);
|
||||||
|
var getTpl = getSpec_tpl.innerHTML, viewBox = document.getElementById('more_spec');
|
||||||
|
laytpl(getTpl).render(arr, function (html) {
|
||||||
|
viewBox.innerHTML = html;
|
||||||
|
});
|
||||||
|
$('#productsCount').val(1);
|
||||||
|
}
|
||||||
|
form.render();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
form.render();
|
||||||
|
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
//删除图片
|
||||||
|
function delImg(obj, imageUrl) {
|
||||||
|
var imgDiv = $(obj).parent().parent().parent();
|
||||||
|
imgDiv.remove();
|
||||||
|
var index = imgs.indexOf(imageUrl);
|
||||||
|
if (index > -1) {
|
||||||
|
imgs.splice(index, 1);
|
||||||
|
}
|
||||||
|
$('#imageIds').val(imgs);
|
||||||
|
}
|
||||||
|
//设为默认图
|
||||||
|
function setDefault(obj, imageUrl) {
|
||||||
|
var imgDiv = $(obj).parent().parent().parent();
|
||||||
|
$("#upload-more-list").prepend(imgDiv);
|
||||||
|
var index = imgs.indexOf(imageUrl);
|
||||||
|
if (index > -1) {
|
||||||
|
imgs.unshift(imgs.splice(index, 1)[0]);
|
||||||
|
}
|
||||||
|
$('#imageIds').val(imgs);
|
||||||
|
}
|
||||||
|
//获取设置参数文字内容
|
||||||
|
function setTextParameters(parameters, id) {
|
||||||
|
if (parameters) {
|
||||||
|
for (var i = 0; i < parameters.length; i++) {
|
||||||
|
if (parameters[i][0] == id) {
|
||||||
|
return parameters[i][1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
//获取设置参数单选内容
|
||||||
|
function setRadioParameters(parameters, id, value) {
|
||||||
|
if (parameters) {
|
||||||
|
for (var i = 0; i < parameters.length; i++) {
|
||||||
|
if (parameters[i][0] == id && parameters[i][1] == value) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//获取设置参数复选框内容
|
||||||
|
function setCheckboxParameters(parameters, id, value) {
|
||||||
|
if (parameters) {
|
||||||
|
for (var i = 0; i < parameters.length; i++) {
|
||||||
|
if (parameters[i][0] == id) {
|
||||||
|
var arr = parameters[i][1].split(',');
|
||||||
|
for (var j = 0; j < arr.length; j++) {
|
||||||
|
if (value == arr[j]) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//获取不同会员级别价格
|
||||||
|
function getUserGradePrice(parameters, id, value) {
|
||||||
|
if (parameters) {
|
||||||
|
for (var i = 0; i < parameters.length; i++) {
|
||||||
|
if (parameters[i].gradeId == id) {
|
||||||
|
return parameters[i].gradePrice
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
//判断SKU是否选中
|
||||||
|
function isSelectedTypeSpec(parameters, id, value) {
|
||||||
|
if (parameters) {
|
||||||
|
var arr = parameters.split('|');
|
||||||
|
for (var i = 0; i < arr.length; i++) {
|
||||||
|
var str = id + '.' + value;
|
||||||
|
var child = arr[i].split(':');
|
||||||
|
if (child[0] === str) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
function getSelectedTypeSpecValue(parameters, id, value) {
|
||||||
|
if (parameters) {
|
||||||
|
var arr = parameters.split('|');
|
||||||
|
for (var i = 0; i < arr.length; i++) {
|
||||||
|
var child = arr[i].split(':');
|
||||||
|
if (child[0] === id.toString()) {
|
||||||
|
return child[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -118,7 +118,11 @@
|
|||||||
, element = layui.element
|
, element = layui.element
|
||||||
, view = layui.view;
|
, view = layui.view;
|
||||||
|
|
||||||
|
//监听行双击事件
|
||||||
|
table.on('rowDouble(LAY-app-CoreCmsGoods-tableBox)', function (obj) {
|
||||||
|
//查看详情
|
||||||
|
doDetails(obj);
|
||||||
|
});
|
||||||
|
|
||||||
//重载form
|
//重载form
|
||||||
form.render();
|
form.render();
|
||||||
@@ -255,13 +259,13 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
//监听行双击事件
|
|
||||||
//table.on('rowDouble(LAY-app-CoreCmsGoods-tableBox)', function (obj) {
|
|
||||||
//});
|
|
||||||
//监听工具条
|
//监听工具条
|
||||||
table.on('tool(LAY-app-CoreCmsGoods-tableBox)',
|
table.on('tool(LAY-app-CoreCmsGoods-tableBox)',
|
||||||
function (obj) {
|
function (obj) {
|
||||||
if (obj.event === 'del') {
|
if (obj.event === 'detail') {
|
||||||
|
doDetails(obj);
|
||||||
|
} else if (obj.event === 'del') {
|
||||||
doDelete(obj);
|
doDelete(obj);
|
||||||
} else if (obj.event === 'edit') {
|
} else if (obj.event === 'edit') {
|
||||||
doEdit(obj)
|
doEdit(obj)
|
||||||
@@ -421,6 +425,31 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//执行预览操作
|
||||||
|
function doDetails(obj) {
|
||||||
|
console.log(obj);
|
||||||
|
coreHelper.Post("Api/CoreCmsGoods/GetDetails", { id: obj.data.id }, function (e) {
|
||||||
|
if (e.code === 0) {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '查看详情',
|
||||||
|
area: ['95%', '95%'],
|
||||||
|
id: 'LAY-popup-CoreCmsGoods-details',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('good/goods/details', { data: e.data }).done(function () {
|
||||||
|
form.render();
|
||||||
|
});
|
||||||
|
// 禁止弹窗出现滚动条
|
||||||
|
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
//删除商品
|
//删除商品
|
||||||
function delGoods(delidsStr) {
|
function delGoods(delidsStr) {
|
||||||
layer.confirm('确定删除吗?删除后将无法恢复。',
|
layer.confirm('确定删除吗?删除后将无法恢复。',
|
||||||
|
|||||||
@@ -183,6 +183,26 @@
|
|||||||
<label class="layui-form-label">买家备注</label>
|
<label class="layui-form-label">买家备注</label>
|
||||||
<div class="layui-input-inline layui-form-mid layui-inline-10">{{d.params.data.memo||'无'}}</div>
|
<div class="layui-input-inline layui-form-mid layui-inline-10">{{d.params.data.memo||'无'}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!--下单用户-->
|
||||||
|
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
|
||||||
|
<legend style="font-size:14px;">下单用户</legend>
|
||||||
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">用户编号</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">
|
||||||
|
{{d.params.data.user.id}}
|
||||||
|
</div>
|
||||||
|
<label class="layui-form-label">用户手机</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">
|
||||||
|
{{d.params.data.user.mobile}}
|
||||||
|
</div><label class="layui-form-label">用户昵称</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">
|
||||||
|
{{d.params.data.user.nickName}}
|
||||||
|
</div><label class="layui-form-label">微信编号</label>
|
||||||
|
<div class="layui-input-inline layui-inline-3 layui-form-mid">
|
||||||
|
{{d.params.data.user.userWx}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--商品详情-->
|
<!--商品详情-->
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
<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 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">
|
<div class="layui-form-item">
|
||||||
<label for="serviceOrderId" class="layui-form-label layui-form-required">服务订单编号</label>
|
<label for="serviceOrderId" class="layui-form-label layui-form-required">服务订单编号</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@@ -64,7 +71,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item text-right">
|
<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="确认添加">
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserServicesOrder-createForm-submit" id="LAY-app-CoreCmsUserServicesOrder-createForm-submit" value="确认添加">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -98,8 +105,8 @@
|
|||||||
});
|
});
|
||||||
form.verify({
|
form.verify({
|
||||||
|
|
||||||
verifyserviceOrderId: [/^[\S]{0,50}$/,'服务订单编号最大只允许输入50位字符,且不能出现空格'],
|
verifyserviceOrderId: [/^.{0,50}$/,'服务订单编号最大只允许输入50位字符'],
|
||||||
verifypaymentId: [/^[\S]{0,50}$/,'支付单号最大只允许输入50位字符,且不能出现空格'],
|
verifypaymentId: [/^.{0,50}$/,'支付单号最大只允许输入50位字符'],
|
||||||
});
|
});
|
||||||
//重载form
|
//重载form
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesOrder-createForm');
|
form.render(null, 'LAY-app-CoreCmsUserServicesOrder-createForm');
|
||||||
|
|||||||
@@ -1,107 +1,273 @@
|
|||||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
<table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsUserServicesOrder-detailsForm" id="LAY-app-CoreCmsUserServicesOrder-detailsForm">
|
<div class="table-body">
|
||||||
<colgroup>
|
<table id="LAY-app-CoreCmsUserServicesTicket-tableBox" lay-filter="LAY-app-CoreCmsUserServicesTicket-tableBox"></table>
|
||||||
<col width="150">
|
</div>
|
||||||
<col>
|
<script type="text/html" id="LAY-app-CoreCmsUserServicesTicket-toolbar">
|
||||||
</colgroup>
|
<div class="layui-form coreshop-toolbar-search-form">
|
||||||
<tbody>
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
<tr>
|
<div class="layui-input-inline">
|
||||||
<td>
|
<input type="text" name="redeemCode" placeholder="请输入兑换码" class="layui-input">
|
||||||
<label for="serviceOrderId">服务订单编号</label>
|
</div>
|
||||||
</td>
|
</div>
|
||||||
<td>
|
<div class="layui-inline">
|
||||||
{{ d.params.data.serviceOrderId || '' }}
|
<div class="layui-input-inline">
|
||||||
</td>
|
<select name="status">
|
||||||
</tr>
|
<option value="">请选择类型</option>
|
||||||
|
{{# layui.each(d.params.data.servicesTicketStatus, function(index, item){ }}
|
||||||
<tr>
|
<option value="{{ item.value }}">{{ item.description }}</option>
|
||||||
<td>
|
{{# }); }}
|
||||||
<label for="userId">关联用户</label>
|
</select>
|
||||||
</td>
|
</div>
|
||||||
<td>
|
</div>
|
||||||
{{ d.params.data.userId || '' }}
|
<!--<div class="layui-inline">
|
||||||
</td>
|
<div class="layui-input-inline">
|
||||||
</tr>
|
<input type="text" name="validityType" placeholder="请输入核销有效期类型" class="layui-input">
|
||||||
|
</div>
|
||||||
<tr>
|
</div>
|
||||||
<td>
|
<div class="layui-inline">
|
||||||
<label for="servicesId">关联服务</label>
|
<div class="layui-input-inline" style="width: 260px;">
|
||||||
</td>
|
<input type="text" name="validityStartTime" id="searchTime-CoreCmsUserServicesTicket-validityStartTime" placeholder="请输入核销开始时间" class="layui-input">
|
||||||
<td>
|
</div>
|
||||||
{{ d.params.data.servicesId || '' }}
|
</div>
|
||||||
</td>
|
<div class="layui-inline">
|
||||||
</tr>
|
<div class="layui-input-inline" style="width: 260px;">
|
||||||
|
<input type="text" name="validityEndTime" id="searchTime-CoreCmsUserServicesTicket-validityEndTime" placeholder="请输入核销结束时间" class="layui-input">
|
||||||
<tr>
|
</div>
|
||||||
<td>
|
</div>
|
||||||
<label for="isPay">是否支付</label>
|
<div class="layui-inline">
|
||||||
</td>
|
<label class="layui-form-label" for="createTime">创建时间</label>
|
||||||
<td>
|
<div class="layui-input-inline" style="width: 260px;">
|
||||||
<input type="checkbox" disabled name="isPay" value="{{d.params.data.isPay}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isPay" {{ d.params.data.isPay ? 'checked' : '' }}>
|
<input type="text" name="createTime" id="searchTime-CoreCmsUserServicesTicket-createTime" placeholder="请输入创建时间" class="layui-input">
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
</div>-->
|
||||||
|
<div class="layui-inline">
|
||||||
<tr>
|
<div class="layui-input-inline">
|
||||||
<td>
|
<select name="isVerification">
|
||||||
<label for="payTime">支付时间</label>
|
<option value="">请选择是否核销</option>
|
||||||
</td>
|
<option value="True">是</option>
|
||||||
<td>
|
<option value="False">否</option>
|
||||||
{{ d.params.data.payTime || '' }}
|
</select>
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
<tr>
|
<div class="layui-input-inline" style="width: 260px;">
|
||||||
<td>
|
<input type="text" name="verificationTime" id="searchTime-CoreCmsUserServicesTicket-verificationTime" placeholder="请输入核销时间" class="layui-input">
|
||||||
<label for="paymentId">支付单号</label>
|
</div>
|
||||||
</td>
|
</div>
|
||||||
<td>
|
<div class="layui-inline">
|
||||||
{{ d.params.data.paymentId || '' }}
|
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsUserServicesTicket-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
</div>
|
||||||
|
</div>
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="status">状态</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.status || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="createTime">订单创建时间</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.createTime || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="servicesEndTime">截止服务时间</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.servicesEndTime || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsUserServicesTicket-pagebar">
|
||||||
|
<div class="layui-btn-container">
|
||||||
|
<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-CoreCmsUserServicesTicket-tableBox-bar">
|
||||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="cancellation">作废</a>
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var debug = layui.setter.debug;
|
var debug = layui.setter.debug;
|
||||||
layui.data.done = function (d) {
|
layui.data.done = function (d) {
|
||||||
//开启调试情况下获取接口赋值数据
|
//开启调试情况下获取接口赋值数据
|
||||||
if (debug) { console.log(d.params.data); }
|
if (debug) { console.log(d.params.data); }
|
||||||
|
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'], function () {
|
||||||
layui.use(['admin', 'form', 'coreHelper'], function () {
|
|
||||||
var $ = layui.$
|
var $ = layui.$
|
||||||
, setter = layui.setter
|
|
||||||
, admin = layui.admin
|
, admin = layui.admin
|
||||||
|
, table = layui.table
|
||||||
|
, form = layui.form
|
||||||
|
, laydate = layui.laydate
|
||||||
|
, setter = layui.setter
|
||||||
, coreHelper = layui.coreHelper
|
, coreHelper = layui.coreHelper
|
||||||
, form = layui.form;
|
, util = layui.util
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesOrder-detailsForm');
|
, view = layui.view;
|
||||||
|
|
||||||
|
var searchwhere;
|
||||||
|
//监听搜索
|
||||||
|
form.on('submit(LAY-app-CoreCmsUserServicesTicket-search)',
|
||||||
|
function (data) {
|
||||||
|
var field = data.field;
|
||||||
|
searchwhere = field;
|
||||||
|
//执行重载
|
||||||
|
table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox', { where: field });
|
||||||
|
});
|
||||||
|
//数据绑定
|
||||||
|
table.render({
|
||||||
|
elem: '#LAY-app-CoreCmsUserServicesTicket-tableBox',
|
||||||
|
url: layui.setter.apiUrl + 'Api/CoreCmsUserServicesOrder/GetTicketPageList?serviceOrderId=' + d.params.data.model.serviceOrderId,
|
||||||
|
method: 'POST',
|
||||||
|
toolbar: '#LAY-app-CoreCmsUserServicesTicket-toolbar',
|
||||||
|
pagebar: '#LAY-app-CoreCmsUserServicesTicket-pagebar',
|
||||||
|
className: 'pagebarbox',
|
||||||
|
defaultToolbar: ['filter', 'print', 'exports'],
|
||||||
|
height: 'full-227',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
||||||
|
page: true,
|
||||||
|
limit: 30,
|
||||||
|
limits: [10, 15, 20, 25, 30, 50, 100, 200],
|
||||||
|
text: { none: '暂无相关数据' },
|
||||||
|
cols: [
|
||||||
|
[
|
||||||
|
{ type: "checkbox", fixed: "left" },
|
||||||
|
{ field: 'id', title: '序列', width: 50, sort: false },
|
||||||
|
//{ field: 'serviceOrderId', title: '关联购买订单', sort: false, width: 105 },
|
||||||
|
{ field: 'securityCode', title: '安全码', sort: false, width: 155 },
|
||||||
|
{ field: 'redeemCode', title: '兑换码', sort: false, width: 70 },
|
||||||
|
//{ field: 'serviceId', title: '关联服务项目id', sort: false, width: 105 },
|
||||||
|
//{ field: 'userId', title: '关联用户id', sort: false, width: 105 },
|
||||||
|
{
|
||||||
|
field: 'status', title: '状态', sort: false, width: 70, templet: function (data) {
|
||||||
|
for (var i = 0; i < d.params.data.servicesTicketStatus.length; i++) {
|
||||||
|
if (data.status == d.params.data.servicesTicketStatus[i].value) {
|
||||||
|
return d.params.data.servicesTicketStatus[i].description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//{ field: 'validityType', title: '核销有效期类型', sort: false, width: 105 },
|
||||||
|
{
|
||||||
|
field: 'validityType', title: '有效期类型', sort: false, width: 80,
|
||||||
|
templet: function (data) {
|
||||||
|
for (var j = 0; j < d.params.data.types.length; j++) {
|
||||||
|
if (d.params.data.types[j].value == data.validityType) {
|
||||||
|
return d.params.data.types[j].description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ field: 'validityStartTime', title: '核销开始时间', width: 130, sort: false },
|
||||||
|
{ field: 'validityEndTime', title: '核销结束时间', width: 130, sort: false },
|
||||||
|
{ field: 'createTime', title: '创建时间', width: 130, sort: false },
|
||||||
|
{ field: 'isVerification', title: '是否核销', width: 65, templet: '#switch_isVerification', sort: false, unresize: true },
|
||||||
|
{ field: 'verificationTime', title: '核销时间', width: 130, sort: false },
|
||||||
|
{ width: 60, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsUserServicesTicket-tableBox-bar' }
|
||||||
|
]
|
||||||
|
]
|
||||||
|
});
|
||||||
|
//监听工具条
|
||||||
|
table.on('tool(LAY-app-CoreCmsUserServicesTicket-tableBox)',
|
||||||
|
function(obj) {
|
||||||
|
if (obj.event === 'cancellation') {
|
||||||
|
doCancellation(obj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//头工具栏事件
|
||||||
|
table.on('pagebar(LAY-app-CoreCmsUserServicesTicket-tableBox)', function (obj) {
|
||||||
|
var checkStatus = table.checkStatus(obj.config.id);
|
||||||
|
switch (obj.event) {
|
||||||
|
case 'selectExportExcel':
|
||||||
|
doSelectExportExcel(checkStatus);
|
||||||
|
break;
|
||||||
|
case 'queryExportExcel':
|
||||||
|
doQueryExportexcel();
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
//作废核销码记录
|
||||||
|
function doCancellation(obj) {
|
||||||
|
layer.confirm('确定要作废当前核销码吗?',
|
||||||
|
function (index) {
|
||||||
|
coreHelper.Post("Api/CoreCmsUserServicesOrder/DoCancellationTicket", { id: obj.data.id }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox');
|
||||||
|
layer.msg(e.msg);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//执行查询条件导出excel
|
||||||
|
function doQueryExportexcel() {
|
||||||
|
layer.confirm('确定根据当前的查询条件导出数据吗?',
|
||||||
|
function (index) {
|
||||||
|
var field = searchwhere;
|
||||||
|
coreHelper.PostForm("Api/CoreCmsUserServicesOrder/QueryTicketExportExcel", field, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
if (e.code === 0) {
|
||||||
|
window.open(e.data);
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//执行选择目录导出数据
|
||||||
|
function doSelectExportExcel(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);
|
||||||
|
});
|
||||||
|
layer.close(index);
|
||||||
|
coreHelper.Post("Api/CoreCmsUserServicesOrder/SelectTicketExportExcel", { id: delidsStr }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
if (e.code === 0) {
|
||||||
|
window.open(e.data);
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#searchTime-CoreCmsUserServicesTicket-validityStartTime',
|
||||||
|
type: 'datetime',
|
||||||
|
range: '到',
|
||||||
|
});
|
||||||
|
laydate.render({
|
||||||
|
elem: '#searchTime-CoreCmsUserServicesTicket-validityEndTime',
|
||||||
|
type: 'datetime',
|
||||||
|
range: '到',
|
||||||
|
});
|
||||||
|
laydate.render({
|
||||||
|
elem: '#searchTime-CoreCmsUserServicesTicket-createTime',
|
||||||
|
type: 'datetime',
|
||||||
|
range: '到',
|
||||||
|
});
|
||||||
|
laydate.render({
|
||||||
|
elem: '#searchTime-CoreCmsUserServicesTicket-verificationTime',
|
||||||
|
type: 'datetime',
|
||||||
|
range: '到',
|
||||||
|
});
|
||||||
|
|
||||||
|
//监听 表格复选框操作
|
||||||
|
|
||||||
|
layui.form.on('switch(switch_isVerification)', function (obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsUserServicesTicket/DoSetisVerification", { id: this.value, data: obj.elem.checked }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
//table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox');
|
||||||
|
layer.msg(e.msg);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
form.render();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--设置是否核销-->
|
||||||
|
<script type="text/html" id="switch_isVerification">
|
||||||
|
<input type="checkbox" name="switch_isVerification" value="{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="switch_isVerification" {{ d.isVerification ? 'checked' : '' }}>
|
||||||
|
</script>
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
<script type="text/html" template lay-done="layui.data.sendParams(d);">
|
<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">
|
<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">
|
<div class="layui-form-item">
|
||||||
<label for="serviceOrderId" class="layui-form-label layui-form-required">服务订单编号</label>
|
<label for="serviceOrderId" class="layui-form-label layui-form-required">服务订单编号</label>
|
||||||
@@ -25,7 +32,14 @@
|
|||||||
<div class="layui-form-item" pane>
|
<div class="layui-form-item" pane>
|
||||||
<label for="isPay" class="layui-form-label layui-form-required">是否支付</label>
|
<label for="isPay" class="layui-form-label layui-form-required">是否支付</label>
|
||||||
<div class="layui-input-block">
|
<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 || '' }} " />
|
<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>
|
</div>
|
||||||
|
|
||||||
@@ -57,7 +71,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item text-right">
|
<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="确认编辑">
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserServicesOrder-editForm-submit" id="LAY-app-CoreCmsUserServicesOrder-editForm-submit" value="确认编辑">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -91,8 +105,8 @@
|
|||||||
});
|
});
|
||||||
form.verify({
|
form.verify({
|
||||||
|
|
||||||
verifyserviceOrderId: [/^[\S]{0,50}$/, '服务订单编号最大只允许输入50位字符,且不能出现空格'],
|
verifyserviceOrderId: [/^.{0,50}$/,'服务订单编号最大只允许输入50位字符'],
|
||||||
verifypaymentId: [/^[\S]{0,50}$/, '支付单号最大只允许输入50位字符,且不能出现空格'],
|
verifypaymentId: [/^.{0,50}$/,'支付单号最大只允许输入50位字符'],
|
||||||
});
|
});
|
||||||
//重载form
|
//重载form
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesOrder-editForm');
|
form.render(null, 'LAY-app-CoreCmsUserServicesOrder-editForm');
|
||||||
|
|||||||
@@ -10,65 +10,68 @@
|
|||||||
<style>
|
<style>
|
||||||
/* 重写样式 */
|
/* 重写样式 */
|
||||||
</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="Api/CoreCmsUserServicesOrder/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>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsUserServicesOrder-toolbar">
|
||||||
<div class="layui-form coreshop-toolbar-search-form">
|
<div class="layui-form coreshop-toolbar-search-form">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
|
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="serviceOrderId">服务订单编号</label>
|
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="serviceOrderId" placeholder="请输入服务订单编号" class="layui-input">
|
<input type="text" name="serviceOrderId" placeholder="请输入服务订单编号" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="userId">关联用户</label>
|
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="userId" placeholder="请输入关联用户" class="layui-input">
|
<input type="text" name="userId" placeholder="请输入关联用户" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="servicesId">关联服务</label>
|
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="servicesId" placeholder="请输入关联服务" class="layui-input">
|
<input type="text" name="servicesId" placeholder="请输入关联服务" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="isPay">是否支付</label>
|
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<select name="isPay">
|
<select name="isPay">
|
||||||
<option value="">请选择</option>
|
<option value="">请选择是否支付</option>
|
||||||
<option value="True">是</option>
|
<option value="True">是</option>
|
||||||
<option value="False">否</option>
|
<option value="False">否</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="payTime">支付时间</label>
|
|
||||||
<div class="layui-input-inline core-time-input">
|
|
||||||
<input type="text" name="payTime" id="searchTime-CoreCmsUserServicesOrder-payTime" placeholder="请输入支付时间" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="paymentId">支付单号</label>
|
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="paymentId" placeholder="请输入支付单号" class="layui-input">
|
<input type="text" name="paymentId" placeholder="请输入支付单号" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="status">状态</label>
|
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="status" placeholder="请输入状态" class="layui-input">
|
<select name="status">
|
||||||
|
<option value="">请选择状态</option>
|
||||||
|
{{# layui.each(indexData.serviceOrderStatus, function(index, item){ }}
|
||||||
|
<option value="{{ item.value }}">{{ item.title }}</option>
|
||||||
|
{{# }); }}
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="createTime">订单创建时间</label>
|
<div class="layui-input-inline" style="width: 260px;">
|
||||||
<div class="layui-input-inline core-time-input">
|
<input type="text" name="payTime" id="searchTime-CoreCmsUserServicesOrder-payTime" placeholder="请输入支付时间" class="layui-input">
|
||||||
|
</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">
|
<input type="text" name="createTime" id="searchTime-CoreCmsUserServicesOrder-createTime" placeholder="请输入订单创建时间" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="servicesEndTime">截止服务时间</label>
|
<div class="layui-input-inline" style="width: 260px;">
|
||||||
<div class="layui-input-inline core-time-input">
|
|
||||||
<input type="text" name="servicesEndTime" id="searchTime-CoreCmsUserServicesOrder-servicesEndTime" placeholder="请输入截止服务时间" class="layui-input">
|
<input type="text" name="servicesEndTime" id="searchTime-CoreCmsUserServicesOrder-servicesEndTime" placeholder="请输入截止服务时间" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -78,32 +81,27 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
<div class="table-body">
|
|
||||||
<table id="LAY-app-CoreCmsUserServicesOrder-tableBox" lay-filter="LAY-app-CoreCmsUserServicesOrder-tableBox"></table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script type="text/html" id="LAY-app-CoreCmsUserServicesOrder-toolbar">
|
<script type="text/html" id="LAY-app-CoreCmsUserServicesOrder-pagebar">
|
||||||
<div class="layui-btn-container">
|
<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="batchDelete"><i class="layui-icon layui-icon-delete"></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="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>
|
<button class="layui-btn layui-btn-sm" lay-event="queryExportExcel"><i class="layui-icon layui-icon-download-circle"></i>查询导出</button>
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/html" id="LAY-app-CoreCmsUserServicesOrder-tableBox-bar">
|
<script type="text/html" id="LAY-app-CoreCmsUserServicesOrder-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="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="#CoreCmsUserServicesOrderTbCancellationDrop{{d.LAY_INDEX}}" no-shade="true">作废</a>
|
||||||
<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#CoreCmsUserServicesOrderTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
|
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsUserServicesOrderTbCancellationDrop{{d.LAY_INDEX}}"
|
||||||
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsUserServicesOrderTbDelDrop{{d.LAY_INDEX}}"
|
|
||||||
style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
|
style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
|
||||||
<div class="dropdown-anchor"></div>
|
<div class="dropdown-anchor"></div>
|
||||||
<div class="dropdown-popconfirm-title">
|
<div class="dropdown-popconfirm-title">
|
||||||
<i class="layui-icon layui-icon-help"></i>
|
<i class="layui-icon layui-icon-help"></i>
|
||||||
确定要删除吗?
|
确定要作废订单吗?
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-popconfirm-btn">
|
<div class="dropdown-popconfirm-btn">
|
||||||
<a class="layui-btn layui-btn-primary cursor" btn-cancel>取消</a>
|
<a class="layui-btn layui-btn-primary cursor" btn-cancel>取消</a>
|
||||||
<a class="layui-btn layui-btn-normal cursor" lay-event="del">确定</a>
|
<a class="layui-btn layui-btn-normal cursor" lay-event="cancellation">确定</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
@@ -128,23 +126,6 @@
|
|||||||
, util = layui.util
|
, util = layui.util
|
||||||
, view = layui.view;
|
, view = layui.view;
|
||||||
|
|
||||||
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();
|
|
||||||
var searchwhere;
|
var searchwhere;
|
||||||
//监听搜索
|
//监听搜索
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesOrder-search)',
|
form.on('submit(LAY-app-CoreCmsUserServicesOrder-search)',
|
||||||
@@ -160,6 +141,8 @@
|
|||||||
url: layui.setter.apiUrl + 'Api/CoreCmsUserServicesOrder/GetPageList',
|
url: layui.setter.apiUrl + 'Api/CoreCmsUserServicesOrder/GetPageList',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
toolbar: '#LAY-app-CoreCmsUserServicesOrder-toolbar',
|
toolbar: '#LAY-app-CoreCmsUserServicesOrder-toolbar',
|
||||||
|
pagebar: '#LAY-app-CoreCmsUserServicesOrder-pagebar',
|
||||||
|
className: 'pagebarbox',
|
||||||
defaultToolbar: ['filter', 'print', 'exports'],
|
defaultToolbar: ['filter', 'print', 'exports'],
|
||||||
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
||||||
page: true,
|
page: true,
|
||||||
@@ -169,16 +152,30 @@
|
|||||||
cols: [
|
cols: [
|
||||||
[
|
[
|
||||||
{ type: "checkbox", fixed: "left" },
|
{ type: "checkbox", fixed: "left" },
|
||||||
{ field: 'serviceOrderId', title: '服务订单编号', sort: false, width: 105 },
|
{ field: 'id', title: '序列', width: 50, sort: false },
|
||||||
{ field: 'userId', title: '关联用户', sort: false, width: 105 },
|
{ field: 'serviceOrderId', title: '服务订单编号', sort: false, width: 125 },
|
||||||
{ field: 'servicesId', title: '关联服务', sort: false, width: 105 },
|
{
|
||||||
|
field: 'userId', title: '关联用户', sort: false, width: 155, templet: function (d) {
|
||||||
|
return d.userId + '【' + d.userName + '】';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ field: 'serviceTitle', title: '关联服务', sort: false },
|
||||||
{ field: 'isPay', title: '是否支付', width: 95, templet: '#switch_isPay', sort: false, unresize: true },
|
{ field: 'isPay', title: '是否支付', width: 95, templet: '#switch_isPay', sort: false, unresize: true },
|
||||||
{ field: 'payTime', title: '支付时间', width: 130, sort: false },
|
{ field: 'payTime', title: '支付时间', width: 130, sort: false },
|
||||||
{ field: 'paymentId', title: '支付单号', sort: false, width: 105 },
|
{ field: 'paymentId', title: '支付单号', sort: false, width: 125 },
|
||||||
{ field: 'status', title: '状态', sort: false, width: 105 },
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
},
|
||||||
{ field: 'createTime', title: '订单创建时间', width: 130, sort: false },
|
{ field: 'createTime', title: '订单创建时间', width: 130, sort: false },
|
||||||
{ field: 'servicesEndTime', title: '截止服务时间', width: 130, sort: false },
|
{ field: 'servicesEndTime', title: '截止服务时间', width: 130, sort: false },
|
||||||
{ width: 142, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsUserServicesOrder-tableBox-bar' }
|
{ width: 122, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsUserServicesOrder-tableBox-bar' }
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
@@ -198,15 +195,9 @@
|
|||||||
doDetails(obj);
|
doDetails(obj);
|
||||||
});
|
});
|
||||||
//头工具栏事件
|
//头工具栏事件
|
||||||
table.on('toolbar(LAY-app-CoreCmsUserServicesOrder-tableBox)', function (obj) {
|
table.on('pagebar(LAY-app-CoreCmsUserServicesOrder-tableBox)', function (obj) {
|
||||||
var checkStatus = table.checkStatus(obj.config.id);
|
var checkStatus = table.checkStatus(obj.config.id);
|
||||||
switch (obj.event) {
|
switch (obj.event) {
|
||||||
case 'addData':
|
|
||||||
doCreate();
|
|
||||||
break;
|
|
||||||
case 'batchDelete':
|
|
||||||
doBatchDelete(checkStatus);
|
|
||||||
break;
|
|
||||||
case 'selectExportExcel':
|
case 'selectExportExcel':
|
||||||
doSelectExportExcel(checkStatus);
|
doSelectExportExcel(checkStatus);
|
||||||
break;
|
break;
|
||||||
@@ -220,94 +211,11 @@
|
|||||||
function (obj) {
|
function (obj) {
|
||||||
if (obj.event === 'detail') {
|
if (obj.event === 'detail') {
|
||||||
doDetails(obj);
|
doDetails(obj);
|
||||||
} else if (obj.event === 'del') {
|
} else if (obj.event === 'cancellation') {
|
||||||
doDelete(obj);
|
doCancellation(obj);
|
||||||
} else if (obj.event === 'edit') {
|
|
||||||
doEdit(obj)
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//执行创建操作
|
|
||||||
function doCreate() {
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesOrder/GetCreate", null, function (e) {
|
|
||||||
if (e.code === 0) {
|
|
||||||
admin.popup({
|
|
||||||
shadeClose: false,
|
|
||||||
title: '创建数据',
|
|
||||||
area: ['600px', '500px'],
|
|
||||||
id: 'LAY-popup-CoreCmsUserServicesOrder-create',
|
|
||||||
success: function (layero, index) {
|
|
||||||
view(this.id).render('order/servicesOrder/create', { data: e.data }).done(function () {
|
|
||||||
//监听提交
|
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesOrder-createForm-submit)',
|
|
||||||
function (data) {
|
|
||||||
var field = data.field; //获取提交的字段
|
|
||||||
|
|
||||||
field.isPay = field.isPay == 'on';
|
|
||||||
|
|
||||||
if (debug) { console.log(field); } //开启调试返回数据
|
|
||||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesOrder/DoCreate", field, function (e) {
|
|
||||||
console.log(e)
|
|
||||||
if (e.code === 0) {
|
|
||||||
layui.table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox'); //重载表格
|
|
||||||
layer.close(index); //再执行关闭
|
|
||||||
layer.msg(e.msg);
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
// 禁止弹窗出现滚动条
|
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//执行编辑操作
|
|
||||||
function doEdit(obj) {
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesOrder/GetEdit", { id: obj.data.id }, function (e) {
|
|
||||||
if (e.code === 0) {
|
|
||||||
admin.popup({
|
|
||||||
shadeClose: false,
|
|
||||||
title: '编辑数据',
|
|
||||||
area: ['600px', '500px'],
|
|
||||||
id: 'LAY-popup-CoreCmsUserServicesOrder-edit',
|
|
||||||
success: function (layero, index) {
|
|
||||||
view(this.id).render('order/servicesOrder/edit', { data: e.data }).done(function () {
|
|
||||||
//监听提交
|
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesOrder-editForm-submit)',
|
|
||||||
function (data) {
|
|
||||||
var field = data.field; //获取提交的字段
|
|
||||||
|
|
||||||
field.isPay = field.isPay == 'on';
|
|
||||||
|
|
||||||
if (debug) { console.log(field); } //开启调试返回数据
|
|
||||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesOrder/DoEdit", field, function (e) {
|
|
||||||
console.log(e)
|
|
||||||
if (e.code === 0) {
|
|
||||||
layui.table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox'); //重载表格
|
|
||||||
layer.close(index); //再执行关闭
|
|
||||||
layer.msg(e.msg);
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})
|
|
||||||
// 禁止弹窗出现滚动条
|
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//执行预览操作
|
//执行预览操作
|
||||||
function doDetails(obj) {
|
function doDetails(obj) {
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesOrder/GetDetails", { id: obj.data.id }, function (e) {
|
coreHelper.Post("Api/CoreCmsUserServicesOrder/GetDetails", { id: obj.data.id }, function (e) {
|
||||||
@@ -315,14 +223,14 @@
|
|||||||
admin.popup({
|
admin.popup({
|
||||||
shadeClose: false,
|
shadeClose: false,
|
||||||
title: '查看详情',
|
title: '查看详情',
|
||||||
area: ['600px', '500px'],
|
area: ['1200px', '90%'],
|
||||||
id: 'LAY-popup-CoreCmsUserServicesOrder-details',
|
id: 'LAY-popup-CoreCmsUserServicesOrder-details',
|
||||||
success: function (layero, index) {
|
success: function (layero, index) {
|
||||||
view(this.id).render('order/servicesOrder/details', { data: e.data }).done(function () {
|
view(this.id).render('order/servicesOrder/details', { data: e.data }).done(function () {
|
||||||
form.render();
|
form.render();
|
||||||
});
|
});
|
||||||
// 禁止弹窗出现滚动条
|
// 禁止弹窗出现滚动条
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -330,34 +238,14 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//执行单个删除
|
//执行作废订单
|
||||||
function doDelete(obj) {
|
function doCancellation(obj) {
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesOrder/DoDelete", { id: obj.data.id }, function (e) {
|
coreHelper.Post("Api/CoreCmsUserServicesOrder/DoCancellation", { id: obj.data.id }, function (e) {
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox');
|
table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox');
|
||||||
layer.msg(e.msg);
|
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/CoreCmsUserServicesOrder/DoBatchDelete", { id: delidsStr }, function (e) {
|
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesOrder-tableBox');
|
|
||||||
layer.msg(e.msg);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//执行查询条件导出excel
|
//执行查询条件导出excel
|
||||||
function doQueryExportexcel() {
|
function doQueryExportexcel() {
|
||||||
layer.confirm('确定根据当前的查询条件导出数据吗?',
|
layer.confirm('确定根据当前的查询条件导出数据吗?',
|
||||||
@@ -397,6 +285,24 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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: '到',
|
||||||
|
});
|
||||||
|
|
||||||
//监听 表格复选框操作
|
//监听 表格复选框操作
|
||||||
|
|
||||||
layui.form.on('switch(switch_isPay)', function (obj) {
|
layui.form.on('switch(switch_isPay)', function (obj) {
|
||||||
@@ -407,11 +313,15 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//重载form
|
||||||
|
form.render();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!--设置是否支付-->
|
<!--设置是否支付-->
|
||||||
<script type="text/html" id="switch_isPay">
|
<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="已支付|未支付" lay-filter="switch_isPay" {{ d.isPay ? 'checked' : '' }}>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
|
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsSolitaireItems-createForm" id="LAY-app-CoreCmsSolitaireItems-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="solitaire" class="layui-form-label layui-form-required">接龙地址</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="solitaire" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入接龙地址" lay-reqText="请输入接龙地址并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="goodId" class="layui-form-label layui-form-required">商品序列</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="goodId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入商品序列" lay-reqText="请输入商品序列并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="productId" class="layui-form-label layui-form-required">货品价格</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="productId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入货品价格" lay-reqText="请输入货品价格并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="price" class="layui-form-label layui-form-required">接龙价</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input name="price" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入接龙价" lay-reqText="请输入接龙价" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="activityStock" class="layui-form-label layui-form-required">活动库存</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="activityStock" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入活动库存" lay-reqText="请输入活动库存并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="oneCanBuy" class="layui-form-label layui-form-required">每人可买</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="oneCanBuy" 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="isDelete" class="layui-form-label layui-form-required">标注删除</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="isDelete" lay-skin="switch" lay-text="开启|关闭">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item text-right core-hidden">
|
||||||
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsSolitaireItems-createForm-submit" id="LAY-app-CoreCmsSolitaireItems-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;
|
||||||
|
|
||||||
|
form.verify({
|
||||||
|
|
||||||
|
});
|
||||||
|
//重载form
|
||||||
|
form.render(null, 'LAY-app-CoreCmsSolitaireItems-createForm');
|
||||||
|
})
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
|
<table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsSolitaireItems-detailsForm" id="LAY-app-CoreCmsSolitaireItems-detailsForm">
|
||||||
|
<colgroup>
|
||||||
|
<col width="100">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="id">序列</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.id || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="solitaire">接龙地址</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.solitaire || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="goodId">商品序列</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.goodId || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="productId">货品价格</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.productId || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="price">接龙价</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.price || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="activityStock">活动库存</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.activityStock || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="oneCanBuy">每人可买</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.oneCanBuy || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="isDelete">标注删除</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" disabled name="isDelete" value="{{d.params.data.isDelete}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isDelete" {{ d.params.data.isDelete ? 'checked' : '' }}>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
var debug= layui.setter.debug;
|
||||||
|
layui.data.done = function (d) {
|
||||||
|
//开启调试情况下获取接口赋值数据
|
||||||
|
if (debug) { console.log(d.params.data); }
|
||||||
|
|
||||||
|
layui.use(['admin', 'form', 'coreHelper'], function () {
|
||||||
|
var $ = layui.$
|
||||||
|
, setter = layui.setter
|
||||||
|
, admin = layui.admin
|
||||||
|
, coreHelper = layui.coreHelper
|
||||||
|
, form = layui.form;
|
||||||
|
form.render(null, 'LAY-app-CoreCmsSolitaireItems-detailsForm');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.sendParams(d);">
|
||||||
|
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsSolitaireItems-editForm" id="LAY-app-CoreCmsSolitaireItems-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="solitaire" class="layui-form-label layui-form-required">接龙地址</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="solitaire" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.solitaire || '' }}" placeholder="请输入接龙地址" lay-reqText="请输入接龙地址并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="goodId" class="layui-form-label layui-form-required">商品序列</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="goodId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.goodId || '' }}" placeholder="请输入商品序列" lay-reqText="请输入商品序列并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="productId" class="layui-form-label layui-form-required">货品价格</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="productId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.productId || '' }}" placeholder="请输入货品价格" lay-reqText="请输入货品价格并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="price" class="layui-form-label layui-form-required">接龙价</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input name="price" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入接龙价" lay-reqText="请输入接龙价" value="{{d.params.data.price || '' }}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="activityStock" class="layui-form-label layui-form-required">活动库存</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="activityStock" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.activityStock || '' }}" placeholder="请输入活动库存" lay-reqText="请输入活动库存并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="oneCanBuy" class="layui-form-label layui-form-required">每人可买</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" min="0" max="999999" name="oneCanBuy" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.oneCanBuy || '' }}" placeholder="请输入每人可买" lay-reqText="请输入每人可买并为数字" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item" pane>
|
||||||
|
<label for="isDelete" class="layui-form-label layui-form-required">标注删除</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="isDelete" {{ d.params.data.isDelete ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item text-right core-hidden">
|
||||||
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsSolitaireItems-editForm-submit" id="LAY-app-CoreCmsSolitaireItems-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;
|
||||||
|
|
||||||
|
form.verify({
|
||||||
|
|
||||||
|
});
|
||||||
|
//重载form
|
||||||
|
form.render(null, 'LAY-app-CoreCmsSolitaireItems-editForm');
|
||||||
|
})
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<title>服务券核验日志</title>
|
<title>接龙活动商品表</title>
|
||||||
<!--当前位置开始-->
|
<!--当前位置开始-->
|
||||||
<div class="layui-card layadmin-header">
|
<div class="layui-card layadmin-header">
|
||||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
<style>
|
<style>
|
||||||
/* 重写样式 */
|
/* 重写样式 */
|
||||||
</style>
|
</style>
|
||||||
<script type="text/html" template lay-type="Post" lay-url="{{ layui.setter.apiUrl }}Api/CoreCmsUserServicesTicketVerificationLog/GetIndex" lay-done="layui.data.done(d);">
|
<script type="text/html" template lay-type="Post" lay-url="{{ layui.setter.apiUrl }}Api/CoreCmsSolitaireItems/GetIndex" lay-done="layui.data.done(d);">
|
||||||
<div class="layui-form coreshop-toolbar-search-form">
|
<div class="layui-form search-form">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
|
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
@@ -21,46 +21,62 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="storeId">核销门店id</label>
|
<label class="layui-form-label" for="solitaire">接龙地址</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="storeId" placeholder="请输入核销门店id" class="layui-input">
|
<input type="text" name="solitaire" placeholder="请输入接龙地址" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="verificationUserId">核验人</label>
|
<label class="layui-form-label" for="goodId">商品序列</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="verificationUserId" placeholder="请输入核验人" class="layui-input">
|
<input type="text" name="goodId" placeholder="请输入商品序列" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="ticketId">服务券序列</label>
|
<label class="layui-form-label" for="productId">货品价格</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="ticketId" placeholder="请输入服务券序列" class="layui-input">
|
<input type="text" name="productId" placeholder="请输入货品价格" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="ticketRedeemCode">核验码</label>
|
<label class="layui-form-label" for="price">接龙价</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="ticketRedeemCode" placeholder="请输入核验码" class="layui-input">
|
<input type="text" name="price" placeholder="请输入接龙价" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label" for="verificationTime">核验时间</label>
|
<label class="layui-form-label" for="activityStock">活动库存</label>
|
||||||
<div class="layui-input-inline core-time-input">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="verificationTime" id="searchTime-CoreCmsUserServicesTicketVerificationLog-verificationTime" placeholder="请输入核验时间" class="layui-input">
|
<input type="text" name="activityStock" placeholder="请输入活动库存" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsUserServicesTicketVerificationLog-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
<label class="layui-form-label" for="oneCanBuy">每人可买</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="text" name="oneCanBuy" placeholder="请输入每人可买" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label" for="isDelete">标注删除</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<select name="isDelete">
|
||||||
|
<option value="">请选择</option>
|
||||||
|
<option value="True">是</option>
|
||||||
|
<option value="False">否</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsSolitaireItems-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
<div class="table-body">
|
<div class="table-body">
|
||||||
<table id="LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox" lay-filter="LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox"></table>
|
<table id="LAY-app-CoreCmsSolitaireItems-tableBox" lay-filter="LAY-app-CoreCmsSolitaireItems-tableBox"></table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/html" id="LAY-app-CoreCmsUserServicesTicketVerificationLog-toolbar">
|
<script type="text/html" id="LAY-app-CoreCmsSolitaireItems-toolbar">
|
||||||
<div class="layui-btn-container">
|
<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="addData"><i class="layui-icon layui-icon-add-1"></i>添加数据</button>
|
||||||
<button class="layui-btn layui-btn-sm" lay-event="batchDelete"><i class="layui-icon layui-icon-delete"></i>批量删除</button>
|
<button class="layui-btn layui-btn-sm" lay-event="batchDelete"><i class="layui-icon layui-icon-delete"></i>批量删除</button>
|
||||||
@@ -68,11 +84,11 @@
|
|||||||
<button class="layui-btn layui-btn-sm" lay-event="queryExportExcel"><i class="layui-icon layui-icon-download-circle"></i>查询导出</button>
|
<button class="layui-btn layui-btn-sm" lay-event="queryExportExcel"><i class="layui-icon layui-icon-download-circle"></i>查询导出</button>
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
<script type="text/html" id="LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox-bar">
|
<script type="text/html" id="LAY-app-CoreCmsSolitaireItems-tableBox-bar">
|
||||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
<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-xs" lay-event="edit">编辑</a>
|
||||||
<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#CoreCmsUserServicesTicketVerificationLogTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
|
<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#CoreCmsSolitaireItemsTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
|
||||||
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsUserServicesTicketVerificationLogTbDelDrop{{d.LAY_INDEX}}"
|
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsSolitaireItemsTbDelDrop{{d.LAY_INDEX}}"
|
||||||
style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
|
style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
|
||||||
<div class="dropdown-anchor"></div>
|
<div class="dropdown-anchor"></div>
|
||||||
<div class="dropdown-popconfirm-title">
|
<div class="dropdown-popconfirm-title">
|
||||||
@@ -84,6 +100,8 @@
|
|||||||
<a class="layui-btn layui-btn-normal cursor" lay-event="del">确定</a>
|
<a class="layui-btn layui-btn-normal cursor" lay-event="del">确定</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -106,28 +124,23 @@
|
|||||||
, util = layui.util
|
, util = layui.util
|
||||||
, view = layui.view;
|
, view = layui.view;
|
||||||
|
|
||||||
laydate.render({
|
|
||||||
elem: '#searchTime-CoreCmsUserServicesTicketVerificationLog-verificationTime',
|
|
||||||
type: 'datetime',
|
|
||||||
range: '到',
|
|
||||||
});
|
|
||||||
//重载form
|
//重载form
|
||||||
form.render();
|
form.render();
|
||||||
var searchwhere;
|
var searchwhere;
|
||||||
//监听搜索
|
//监听搜索
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesTicketVerificationLog-search)',
|
form.on('submit(LAY-app-CoreCmsSolitaireItems-search)',
|
||||||
function(data) {
|
function(data) {
|
||||||
var field = data.field;
|
var field = data.field;
|
||||||
searchwhere = field;
|
searchwhere = field;
|
||||||
//执行重载
|
//执行重载
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox',{ where: field });
|
table.reloadData('LAY-app-CoreCmsSolitaireItems-tableBox',{ where: field });
|
||||||
});
|
});
|
||||||
//数据绑定
|
//数据绑定
|
||||||
table.render({
|
table.render({
|
||||||
elem: '#LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox',
|
elem: '#LAY-app-CoreCmsSolitaireItems-tableBox',
|
||||||
url: layui.setter.apiUrl + 'Api/CoreCmsUserServicesTicketVerificationLog/GetPageList',
|
url: layui.setter.apiUrl + 'Api/CoreCmsSolitaireItems/GetPageList',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
toolbar: '#LAY-app-CoreCmsUserServicesTicketVerificationLog-toolbar',
|
toolbar: '#LAY-app-CoreCmsSolitaireItems-toolbar',
|
||||||
defaultToolbar: ['filter', 'print', 'exports'],
|
defaultToolbar: ['filter', 'print', 'exports'],
|
||||||
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
||||||
page: true,
|
page: true,
|
||||||
@@ -138,18 +151,20 @@
|
|||||||
[
|
[
|
||||||
{ type: "checkbox", fixed: "left" },
|
{ type: "checkbox", fixed: "left" },
|
||||||
{ field: 'id', title: '序列', width: 60, sort: false},
|
{ field: 'id', title: '序列', width: 60, sort: false},
|
||||||
{ field: 'storeId', title: '核销门店id', sort: false,width: 105 },
|
{ field: 'solitaire', title: '接龙地址', sort: false,width: 105 },
|
||||||
{ field: 'verificationUserId', title: '核验人', sort: false,width: 105 },
|
{ field: 'goodId', title: '商品序列', sort: false,width: 105 },
|
||||||
{ field: 'ticketId', title: '服务券序列', sort: false,width: 105 },
|
{ field: 'productId', title: '货品价格', sort: false,width: 105 },
|
||||||
{ field: 'ticketRedeemCode', title: '核验码', sort: false,width: 105 },
|
{ field: 'price', title: '接龙价', sort: false,width: 105 },
|
||||||
{ field: 'verificationTime', title: '核验时间', width: 130, sort: false},
|
{ field: 'activityStock', title: '活动库存', sort: false,width: 105 },
|
||||||
{ width: 162, align: 'center', title:'操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox-bar' }
|
{ field: 'oneCanBuy', title: '每人可买', sort: false,width: 105 },
|
||||||
|
{ field: 'isDelete', title: '标注删除', width: 95, templet: '#switch_isDelete', sort: false , unresize: true},
|
||||||
|
{ width: 162, align: 'center', title:'操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsSolitaireItems-tableBox-bar' }
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
//监听排序事件
|
//监听排序事件
|
||||||
table.on('sort(LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox)', function(obj){
|
table.on('sort(LAY-app-CoreCmsSolitaireItems-tableBox)', function(obj){
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox', {
|
table.reloadData('LAY-app-CoreCmsSolitaireItems-tableBox', {
|
||||||
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
|
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
|
||||||
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
|
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
|
||||||
orderField: obj.field, //排序字段
|
orderField: obj.field, //排序字段
|
||||||
@@ -158,12 +173,12 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
//监听行双击事件
|
//监听行双击事件
|
||||||
table.on('rowDouble(LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox)', function (obj) {
|
table.on('rowDouble(LAY-app-CoreCmsSolitaireItems-tableBox)', function (obj) {
|
||||||
//查看详情
|
//查看详情
|
||||||
doDetails(obj);
|
doDetails(obj);
|
||||||
});
|
});
|
||||||
//头工具栏事件
|
//头工具栏事件
|
||||||
table.on('toolbar(LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox)', function (obj) {
|
table.on('toolbar(LAY-app-CoreCmsSolitaireItems-tableBox)', function (obj) {
|
||||||
var checkStatus = table.checkStatus(obj.config.id);
|
var checkStatus = table.checkStatus(obj.config.id);
|
||||||
switch (obj.event) {
|
switch (obj.event) {
|
||||||
case 'addData':
|
case 'addData':
|
||||||
@@ -181,7 +196,7 @@
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
//监听工具条
|
//监听工具条
|
||||||
table.on('tool(LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox)',
|
table.on('tool(LAY-app-CoreCmsSolitaireItems-tableBox)',
|
||||||
function(obj) {
|
function(obj) {
|
||||||
if (obj.event === 'detail') {
|
if (obj.event === 'detail') {
|
||||||
doDetails(obj);
|
doDetails(obj);
|
||||||
@@ -193,25 +208,28 @@
|
|||||||
});
|
});
|
||||||
//执行创建操作
|
//执行创建操作
|
||||||
function doCreate(){
|
function doCreate(){
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicketVerificationLog/GetCreate", null, function (e) {
|
coreHelper.Post("Api/CoreCmsSolitaireItems/GetCreate", null, function (e) {
|
||||||
if (e.code === 0) {
|
if (e.code === 0) {
|
||||||
admin.popup({ shadeClose: false,
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
title: '创建数据',
|
title: '创建数据',
|
||||||
area: ['600px', '500px'],
|
area: ['1000px', '500px'],
|
||||||
id: 'LAY-popup-CoreCmsUserServicesTicketVerificationLog-create',
|
id: 'LAY-popup-CoreCmsSolitaireItems-create',
|
||||||
success: function (layero, index) {
|
success: function (layero, index) {
|
||||||
view(this.id).render('serviceGoods/servicesticketverificationlog/create', { data: e.data }).done(function () {
|
view(this.id).render('base/CoreCmsSolitaireItems/create', { data: e.data }).done(function () {
|
||||||
//监听提交
|
//监听提交
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesTicketVerificationLog-createForm-submit)',
|
form.on('submit(LAY-app-CoreCmsSolitaireItems-createForm-submit)',
|
||||||
function(data) {
|
function(data) {
|
||||||
var field = data.field; //获取提交的字段
|
var field = data.field; //获取提交的字段
|
||||||
|
|
||||||
|
field.isDelete = field.isDelete == 'on';
|
||||||
|
|
||||||
if (debug) { console.log(field); } //开启调试返回数据
|
if (debug) { console.log(field); } //开启调试返回数据
|
||||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicketVerificationLog/DoCreate", field, function (e) {
|
coreHelper.Post("Api/CoreCmsSolitaireItems/DoCreate", field, function (e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
if (e.code === 0) {
|
if (e.code === 0) {
|
||||||
layui.table.reloadData('LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox'); //重载表格
|
layui.table.reloadData('LAY-app-CoreCmsSolitaireItems-tableBox'); //重载表格
|
||||||
layer.close(index); //再执行关闭
|
layer.close(index); //再执行关闭
|
||||||
layer.msg(e.msg);
|
layer.msg(e.msg);
|
||||||
} else {
|
} else {
|
||||||
@@ -223,6 +241,10 @@
|
|||||||
// 禁止弹窗出现滚动条
|
// 禁止弹窗出现滚动条
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||||
}
|
}
|
||||||
|
, btn: ['确定', '取消']
|
||||||
|
, yes: function (index, layero) {
|
||||||
|
layero.contents().find("#LAY-app-CoreCmsSolitaireItems-createForm-submit").click();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
layer.msg(e.msg);
|
layer.msg(e.msg);
|
||||||
@@ -231,25 +253,28 @@
|
|||||||
}
|
}
|
||||||
//执行编辑操作
|
//执行编辑操作
|
||||||
function doEdit(obj){
|
function doEdit(obj){
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicketVerificationLog/GetEdit", {id:obj.data.id}, function (e) {
|
coreHelper.Post("Api/CoreCmsSolitaireItems/GetEdit", {id:obj.data.id}, function (e) {
|
||||||
if (e.code === 0) {
|
if (e.code === 0) {
|
||||||
admin.popup({ shadeClose: false,
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
title: '编辑数据',
|
title: '编辑数据',
|
||||||
area: ['600px', '500px'],
|
area: ['1000px', '500px'],
|
||||||
id: 'LAY-popup-CoreCmsUserServicesTicketVerificationLog-edit',
|
id: 'LAY-popup-CoreCmsSolitaireItems-edit',
|
||||||
success: function (layero, index) {
|
success: function (layero, index) {
|
||||||
view(this.id).render('serviceGoods/servicesticketverificationlog/edit', { data: e.data }).done(function () {
|
view(this.id).render('base/CoreCmsSolitaireItems/edit', { data: e.data }).done(function () {
|
||||||
//监听提交
|
//监听提交
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesTicketVerificationLog-editForm-submit)',
|
form.on('submit(LAY-app-CoreCmsSolitaireItems-editForm-submit)',
|
||||||
function(data) {
|
function(data) {
|
||||||
var field = data.field; //获取提交的字段
|
var field = data.field; //获取提交的字段
|
||||||
|
|
||||||
|
field.isDelete = field.isDelete == 'on';
|
||||||
|
|
||||||
if (debug) { console.log(field); } //开启调试返回数据
|
if (debug) { console.log(field); } //开启调试返回数据
|
||||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicketVerificationLog/DoEdit", field, function (e) {
|
coreHelper.Post("Api/CoreCmsSolitaireItems/DoEdit", field, function (e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
if (e.code === 0) {
|
if (e.code === 0) {
|
||||||
layui.table.reloadData('LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox'); //重载表格
|
layui.table.reloadData('LAY-app-CoreCmsSolitaireItems-tableBox'); //重载表格
|
||||||
layer.close(index); //再执行关闭
|
layer.close(index); //再执行关闭
|
||||||
layer.msg(e.msg);
|
layer.msg(e.msg);
|
||||||
} else {
|
} else {
|
||||||
@@ -261,6 +286,10 @@
|
|||||||
// 禁止弹窗出现滚动条
|
// 禁止弹窗出现滚动条
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||||
}
|
}
|
||||||
|
, btn: ['确定', '取消']
|
||||||
|
, yes: function (index, layero) {
|
||||||
|
layero.contents().find("#LAY-app-CoreCmsSolitaireItems-editForm-submit").click();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
layer.msg(e.msg);
|
layer.msg(e.msg);
|
||||||
@@ -269,14 +298,15 @@
|
|||||||
}
|
}
|
||||||
//执行预览操作
|
//执行预览操作
|
||||||
function doDetails(obj) {
|
function doDetails(obj) {
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicketVerificationLog/GetDetails", { id: obj.data.id }, function (e) {
|
coreHelper.Post("Api/CoreCmsSolitaireItems/GetDetails", { id: obj.data.id }, function (e) {
|
||||||
if (e.code === 0) {
|
if (e.code === 0) {
|
||||||
admin.popup({ shadeClose: false,
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
title: '查看详情',
|
title: '查看详情',
|
||||||
area: ['600px', '500px'],
|
area: ['1000px', '500px'],
|
||||||
id: 'LAY-popup-CoreCmsUserServicesTicketVerificationLog-details',
|
id: 'LAY-popup-CoreCmsSolitaireItems-details',
|
||||||
success: function (layero, index) {
|
success: function (layero, index) {
|
||||||
view(this.id).render('serviceGoods/servicesticketverificationlog/details', { data: e.data }).done(function () {
|
view(this.id).render('base/CoreCmsSolitaireItems/details', { data: e.data }).done(function () {
|
||||||
form.render();
|
form.render();
|
||||||
});
|
});
|
||||||
// 禁止弹窗出现滚动条
|
// 禁止弹窗出现滚动条
|
||||||
@@ -290,9 +320,9 @@
|
|||||||
}
|
}
|
||||||
//执行单个删除
|
//执行单个删除
|
||||||
function doDelete(obj){
|
function doDelete(obj){
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicketVerificationLog/DoDelete", { id: obj.data.id }, function (e) {
|
coreHelper.Post("Api/CoreCmsSolitaireItems/DoDelete", { id: obj.data.id }, function (e) {
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox');
|
table.reloadData('LAY-app-CoreCmsSolitaireItems-tableBox');
|
||||||
layer.msg(e.msg);
|
layer.msg(e.msg);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -309,9 +339,9 @@
|
|||||||
function(index, item) {
|
function(index, item) {
|
||||||
delidsStr.push(item.id);
|
delidsStr.push(item.id);
|
||||||
});
|
});
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicketVerificationLog/DoBatchDelete", { id: delidsStr }, function (e) {
|
coreHelper.Post("Api/CoreCmsSolitaireItems/DoBatchDelete", { id: delidsStr }, function (e) {
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesTicketVerificationLog-tableBox');
|
table.reloadData('LAY-app-CoreCmsSolitaireItems-tableBox');
|
||||||
layer.msg(e.msg);
|
layer.msg(e.msg);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -321,7 +351,7 @@
|
|||||||
layer.confirm('确定根据当前的查询条件导出数据吗?',
|
layer.confirm('确定根据当前的查询条件导出数据吗?',
|
||||||
function(index) {
|
function(index) {
|
||||||
var field = searchwhere;
|
var field = searchwhere;
|
||||||
coreHelper.PostForm("Api/CoreCmsUserServicesTicketVerificationLog/QueryExportExcel", field, function (e) {
|
coreHelper.PostForm("Api/CoreCmsSolitaireItems/QueryExportExcel", field, function (e) {
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
if (e.code === 0) {
|
if (e.code === 0) {
|
||||||
window.open(e.data);
|
window.open(e.data);
|
||||||
@@ -345,7 +375,7 @@
|
|||||||
delidsStr.push(item.id);
|
delidsStr.push(item.id);
|
||||||
});
|
});
|
||||||
layer.close(index);
|
layer.close(index);
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicketVerificationLog/SelectExportExcel", { id: delidsStr }, function (e) {
|
coreHelper.Post("Api/CoreCmsSolitaireItems/SelectExportExcel", { id: delidsStr }, function (e) {
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
if (e.code === 0) {
|
if (e.code === 0) {
|
||||||
window.open(e.data);
|
window.open(e.data);
|
||||||
@@ -357,6 +387,20 @@
|
|||||||
}
|
}
|
||||||
//监听 表格复选框操作
|
//监听 表格复选框操作
|
||||||
|
|
||||||
|
layui.form.on('switch(switch_isDelete)', function (obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsSolitaireItems/DoSetisDelete", { id: this.value, data: obj.elem.checked }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
//table.reloadData('LAY-app-CoreCmsSolitaireItems-tableBox');
|
||||||
|
layer.msg(e.msg);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!--设置标注删除-->
|
||||||
|
<script type="text/html" id="switch_isDelete">
|
||||||
|
<input type="checkbox" name="switch_isDelete" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="switch_isDelete" {{ d.isDelete ? 'checked' : '' }}>
|
||||||
|
</script>
|
||||||
|
|
||||||
@@ -0,0 +1,436 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
|
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsSolitaire-createForm" id="LAY-app-CoreCmsSolitaire-createForm">
|
||||||
|
|
||||||
|
<div class="layui-tab">
|
||||||
|
<ul class="layui-tab-title">
|
||||||
|
<li class="layui-this">基础设置</li>
|
||||||
|
<li>商品SKU选择</li>
|
||||||
|
<li>活动说明</li>
|
||||||
|
</ul>
|
||||||
|
<div class="layui-tab-content">
|
||||||
|
<div class="layui-tab-item layui-show">
|
||||||
|
|
||||||
|
<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" class="layui-input" lay-reqText="请输入活动标题" placeholder="请输入活动标题" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item layui-form-text">
|
||||||
|
<label class="layui-form-label layui-form-required">活动描述</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea name="description" lay-verify="required|verifydescription" placeholder="请输入活动描述" class="layui-textarea"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="thumbnail" class="layui-form-label layui-form-required">缩略图</label>
|
||||||
|
<div class="layui-input-inline layui-inline-10">
|
||||||
|
<input name="thumbnail" id="thumbnailInput" lay-verify="required" class="layui-input" placeholder="请上传缩略图" lay-reqText="请上传缩略图" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<img class="coreshop-upload-img" id="viewImgBoxthumbnail" src="{{ layui.setter.noImagePicUrl }}">
|
||||||
|
<button type="button" class="layui-btn" id="upBtnthumbnail">上传图片</button>
|
||||||
|
</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="createTime-CoreCmsSolitaire-startTime" type="text" lay-verify="required|datetime" class="layui-input" placeholder="请输入开始时间" lay-reqText="请输入开始时间" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setStartDate">现在</button>
|
||||||
|
</div>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input name="endTime" id="createTime-CoreCmsSolitaire-endTime" type="text" lay-verify="required|datetime" class="layui-input" placeholder="请输入结束时间" lay-reqText="请输入结束时间" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate1">一日</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate2">一周</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate3">半月</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate4">一月</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate5">二月</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate6">三月</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="startBuyPrice" class="layui-form-label layui-form-required">起购价格</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input name="startBuyPrice" lay-verify="required" value="30" type="number" class="layui-input" placeholder="请输入起购价格" lay-reqText="请输入起购价格" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">元</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="minDeliveryPrice" class="layui-form-label layui-form-required">起送价格</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input name="minDeliveryPrice" lay-verify="required" value="30" type="number" class="layui-input" placeholder="请输入起送价格" lay-reqText="请输入起送价格" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">元</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="isShow" class="layui-form-label layui-form-required">是否显示</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="isShow" lay-skin="switch" lay-text="开启|关闭" checked="checked">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="status" class="layui-form-label layui-form-required">活动状态</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
{{# layui.each(d.params.data.solitaireStatus, function(index, item){ }}
|
||||||
|
<input type="radio" name="status" value="{{ item.value }}" title="{{ item.description }}" lay-verify="required|number" {{index==0?'checked="checked"':''}} lay-reqText="请选择活动状态">
|
||||||
|
{{# }); }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<div>
|
||||||
|
<button class="layui-btn layui-btn-sm" lay-active="goodsShow">选择商品SKU</button>
|
||||||
|
<input type="hidden" name="goodsId" id="goodsId" value="" class="layui-input">
|
||||||
|
<input type="hidden" name="productsCount" id="productsCount" value="0">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="layui-table" lay-size="sm">
|
||||||
|
<colgroup>
|
||||||
|
<col width="55">
|
||||||
|
<col>
|
||||||
|
<col width="60">
|
||||||
|
<col width="150">
|
||||||
|
<col width="50">
|
||||||
|
<col width="60">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="60">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>序列</th>
|
||||||
|
<th>商品名称</th>
|
||||||
|
<th>规格图</th>
|
||||||
|
<th>规格名称</th>
|
||||||
|
<th>库存</th>
|
||||||
|
<th>销售价</th>
|
||||||
|
<th>接龙价</th>
|
||||||
|
<th>活动库存</th>
|
||||||
|
<th>每人可买</th>
|
||||||
|
<th>顺序</th>
|
||||||
|
<th>操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="productsTbody">
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<div class="layui-form-item layui-form-text">
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="layui-form-item text-right core-hidden">
|
||||||
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsSolitaire-createForm-submit" id="LAY-app-CoreCmsSolitaire-createForm-submit" value="确认添加">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script id="get_tpl" type="text/html">
|
||||||
|
{{# layui.each(d.list, function(index, item){ }}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{{item.id}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" value="0" name="product[id][]" />
|
||||||
|
<input type="hidden" value="{{item.id}}" name="product[productId][]" />
|
||||||
|
<input type="hidden" value="{{item.goodsId}}" name="product[goodId][]" />
|
||||||
|
<input type="hidden" value="0" name="product[solitaireId][]" />
|
||||||
|
{{item.name}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<img src="{{ item.images && item.images !='null'? item.images : layui.setter.noImagePicUrl }}" id="productImagesSrc" style="width:40px;height:40px">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.spesDesc || '默认规格'}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.stock}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
¥{{item.price}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[price][]" value="{{item.price}}" placeholder="接龙价" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[activityStock][]" value="{{item.stock}}" placeholder="活动库存" class="layui-input layui-inline-1 goods-stock">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[oneCanBuy][]" value="10" placeholder="每人可买" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[sortId][]" value="{{1}}" placeholder="排序" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs del-class" id="{{item.id}}" lay-active="goodsDelete">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{# }); }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var ids = {};
|
||||||
|
|
||||||
|
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', 'util', 'view', 'laytpl'],
|
||||||
|
function () {
|
||||||
|
var $ = layui.$
|
||||||
|
, form = layui.form
|
||||||
|
, admin = layui.admin
|
||||||
|
, laydate = layui.laydate
|
||||||
|
, upload = layui.upload
|
||||||
|
, cropperImg = layui.cropperImg
|
||||||
|
, util = layui.util
|
||||||
|
, view = layui.view
|
||||||
|
, laytpl = layui.laytpl
|
||||||
|
, coreHelper = layui.coreHelper;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//缩略图图片裁剪上传
|
||||||
|
$('#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 });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//加载编辑器
|
||||||
|
var Authorization = layui.data(layui.setter.tableName)[layui.setter.request.tokenName];
|
||||||
|
//重点代码 适配器
|
||||||
|
class UploadAdapter {
|
||||||
|
constructor(loader) {
|
||||||
|
this.loader = loader;
|
||||||
|
}
|
||||||
|
upload() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const data = new FormData();
|
||||||
|
let file = [];
|
||||||
|
this.loader.file.then(res => {
|
||||||
|
file = res; //文件流
|
||||||
|
data.append('upload', file);
|
||||||
|
$.ajax({
|
||||||
|
url: "/Api/Tools/CkEditorUploadFiles",
|
||||||
|
type: 'POST',
|
||||||
|
data: data,
|
||||||
|
dataType: 'json',
|
||||||
|
headers: {
|
||||||
|
'Authorization': Authorization
|
||||||
|
},
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
success: function (data) {
|
||||||
|
if (data) {
|
||||||
|
console.log(data)
|
||||||
|
resolve({
|
||||||
|
default: data.url //后端返回的参数 【注】返回参数格式是{uploaded:1,default:'http://xxx.com'}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
reject(data.msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
abort() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DecoupledEditor
|
||||||
|
.create(document.querySelector('#editor'),
|
||||||
|
{
|
||||||
|
language: 'zh-cn',
|
||||||
|
})
|
||||||
|
.then(editor => {
|
||||||
|
editor.plugins.get('FileRepository').createUploadAdapter = (loader) => {
|
||||||
|
return new UploadAdapter(loader);
|
||||||
|
};
|
||||||
|
const toolbarContainer = document.querySelector('#toolbar-container');
|
||||||
|
toolbarContainer.appendChild(editor.ui.view.toolbar.element);
|
||||||
|
window.editor = editor;
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//处理属性 为 lay-active 的所有元素事件
|
||||||
|
util.event('lay-active', {
|
||||||
|
setStartDate: function () {
|
||||||
|
var nowTime = layui.util.toDateString(new Date(), 'yyyy-MM-dd HH:mm:ss');
|
||||||
|
$('#createTime-CoreCmsSolitaire-startTime').val(nowTime);
|
||||||
|
},
|
||||||
|
setEndDate1: function () {
|
||||||
|
addEndDateDay(1, 'createTime-CoreCmsSolitaire-startTime', 'createTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate2: function () {
|
||||||
|
addEndDateDay(7, 'createTime-CoreCmsSolitaire-startTime', 'createTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate3: function () {
|
||||||
|
addEndDateDay(15, 'createTime-CoreCmsSolitaire-startTime', 'createTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate4: function () {
|
||||||
|
addEndDateMonth(1, 'createTime-CoreCmsSolitaire-startTime', 'createTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate5: function () {
|
||||||
|
addEndDateMonth(2, 'createTime-CoreCmsSolitaire-startTime', 'createTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate6: function () {
|
||||||
|
addEndDateMonth(3, 'createTime-CoreCmsSolitaire-startTime', 'createTime-CoreCmsSolitaire-endTime');
|
||||||
|
},
|
||||||
|
goodsShow: function () {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '选择商品',
|
||||||
|
area: ['900px', '80%'],
|
||||||
|
id: 'LAY-app-CoreCmsPinTuanRule-createForm-GetGoodsList',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('common/getProductsIds', null).done(function () {
|
||||||
|
form.render();
|
||||||
|
//监听商品列表页工具条
|
||||||
|
form.on('submit(LAY-app-CoreCmsProducts-getData)',
|
||||||
|
function (data) {
|
||||||
|
if (Object.getOwnPropertyNames(ids).length === 0) {
|
||||||
|
layer.msg("请先选择商品");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//判断个数是否满足
|
||||||
|
if (Object.getOwnPropertyNames(ids).length > 10) {
|
||||||
|
layer.msg("最多只能选择" + 10 + "个");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
console.log(ids);
|
||||||
|
|
||||||
|
|
||||||
|
var the_val = "";
|
||||||
|
var count = 0;
|
||||||
|
for (var key in ids) {
|
||||||
|
the_val += "," + key;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
$("#goodsId").val(the_val.slice(1));
|
||||||
|
$('#productsCount').val(count);
|
||||||
|
|
||||||
|
|
||||||
|
var getTpl = get_tpl.innerHTML, view = document.getElementById('productsTbody');
|
||||||
|
var tmpData = {};
|
||||||
|
tmpData.list = ids;
|
||||||
|
laytpl(getTpl).render(tmpData, function (html) {
|
||||||
|
view.innerHTML = html;
|
||||||
|
});
|
||||||
|
form.render();
|
||||||
|
layer.close(index);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
goodsDelete: function () {
|
||||||
|
var idsArray = $("#goodsId").val().split(",");
|
||||||
|
for (var i = 0; i < idsArray.length; i++) {
|
||||||
|
var id = $(this).attr("id");
|
||||||
|
if (idsArray[i] == id) {
|
||||||
|
idsArray.splice(i, 1);
|
||||||
|
}
|
||||||
|
if (ids[id]) {
|
||||||
|
delete ids[id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$("#goodsId").val(idsArray.join(","));
|
||||||
|
$('#productsCount').val(idsArray.length);
|
||||||
|
$(this).parent().parent('tr').remove();
|
||||||
|
form.render();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function addEndDateDay(num, sinput, einput) {
|
||||||
|
var startTime = $("#" + sinput).val();
|
||||||
|
if (!!!startTime) {
|
||||||
|
layer.msg("请先设置开始时间", { icon: 2, anim: 6 });
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
startTime = new Date(startTime);
|
||||||
|
}
|
||||||
|
startTime = +startTime + 1000 * 60 * 60 * 24 * num;
|
||||||
|
startTime = new Date(startTime);
|
||||||
|
var endTime = layui.util.toDateString(startTime, 'yyyy-MM-dd HH:mm:ss');
|
||||||
|
$("#" + einput).val(endTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addEndDateMonth(num, sinput, einput) {
|
||||||
|
var startTime = $("#" + sinput).val();
|
||||||
|
if (!!!startTime) {
|
||||||
|
layer.msg("请先设置开始时间", { icon: 2, anim: 6 });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var s = (new Date(startTime)).setMonth((new Date(startTime)).getMonth() + num);
|
||||||
|
var endTime = layui.util.toDateString(s, 'yyyy-MM-dd HH:mm:ss');
|
||||||
|
$("#" + einput).val(endTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#createTime-CoreCmsSolitaire-startTime',
|
||||||
|
type: 'datetime',
|
||||||
|
value: layui.util.toDateString(new Date(), 'yyyy-MM-dd 00:00:00')
|
||||||
|
});
|
||||||
|
laydate.render({
|
||||||
|
elem: '#createTime-CoreCmsSolitaire-endTime',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
|
||||||
|
form.verify({
|
||||||
|
verifytitle: [/^.{0,250}$/, '活动标题最大只允许输入250位字符'],
|
||||||
|
verifydescription: [/^.{0,250}$/,'活动描述最大只允许输入250位字符'],
|
||||||
|
});
|
||||||
|
//重载form
|
||||||
|
form.render(null, 'LAY-app-CoreCmsSolitaire-createForm');
|
||||||
|
})
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
|
<table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsSolitaire-detailsForm" id="LAY-app-CoreCmsSolitaire-detailsForm">
|
||||||
|
<colgroup>
|
||||||
|
<col width="100">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="id">序列</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.id || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="title">活动标题</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.title || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="contentBody">活动内容</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.contentBody || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="startTime">开始时间</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.startTime || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="endTime">结束时间</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.endTime || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="startBuyPrice">起购价格</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.startBuyPrice || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="minDeliveryPrice">起送价格</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.minDeliveryPrice || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="isShow">是否显示</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" disabled name="isShow" value="{{d.params.data.isShow}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isShow" {{ d.params.data.isShow ? 'checked' : '' }}>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="status">活动状态</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.status || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="isDelete">标注删除</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" disabled name="isDelete" value="{{d.params.data.isDelete}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isDelete" {{ d.params.data.isDelete ? 'checked' : '' }}>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="createTime">创建时间</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.createTime || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
var debug= layui.setter.debug;
|
||||||
|
layui.data.done = function (d) {
|
||||||
|
//开启调试情况下获取接口赋值数据
|
||||||
|
if (debug) { console.log(d.params.data); }
|
||||||
|
|
||||||
|
layui.use(['admin', 'form', 'coreHelper'], function () {
|
||||||
|
var $ = layui.$
|
||||||
|
, setter = layui.setter
|
||||||
|
, admin = layui.admin
|
||||||
|
, coreHelper = layui.coreHelper
|
||||||
|
, form = layui.form;
|
||||||
|
form.render(null, 'LAY-app-CoreCmsSolitaire-detailsForm');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,511 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.sendParams(d);">
|
||||||
|
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsSolitaire-editForm" id="LAY-app-CoreCmsSolitaire-editForm">
|
||||||
|
<input type="hidden" name="id" value="{{d.params.data.model.id}}" />
|
||||||
|
|
||||||
|
|
||||||
|
<div class="layui-tab">
|
||||||
|
<ul class="layui-tab-title">
|
||||||
|
<li class="layui-this">基础设置</li>
|
||||||
|
<li>商品SKU选择</li>
|
||||||
|
<li>活动说明</li>
|
||||||
|
</ul>
|
||||||
|
<div class="layui-tab-content">
|
||||||
|
<div class="layui-tab-item layui-show">
|
||||||
|
|
||||||
|
<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" class="layui-input" value="{{d.params.data.model.title || '' }}" lay-reqText="请输入活动标题" placeholder="请输入活动标题" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item layui-form-text">
|
||||||
|
<label class="layui-form-label layui-form-required">活动描述</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea name="description" lay-verify="required|verifydescription" placeholder="请输入活动描述" class="layui-textarea">{{d.params.data.model.description || '' }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="thumbnail" class="layui-form-label layui-form-required">缩略图</label>
|
||||||
|
<div class="layui-input-inline layui-inline-10">
|
||||||
|
<input name="thumbnail" id="thumbnailInput" lay-verType="tips" lay-verify="required" class="layui-input" value="{{d.params.data.model.thumbnail || '' }}" 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">上传图片</button>
|
||||||
|
</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-CoreCmsSolitaire-startTime" type="text" value="{{d.params.data.model.startTime || '' }}" lay-verify="required|datetime" class="layui-input" placeholder="请输入开始时间" lay-reqText="请输入开始时间" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setStartDate">现在</button>
|
||||||
|
</div>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input name="endTime" id="editTime-CoreCmsSolitaire-endTime" value="{{d.params.data.model.endTime || '' }}" type="text" lay-verify="required|datetime" class="layui-input" placeholder="请输入结束时间" lay-reqText="请输入结束时间" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate1">一日</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate2">一周</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate3">半月</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate4">一月</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate5">二月</button>
|
||||||
|
<button type="button" class="layui-btn layui-btn-xs" lay-active="setEndDate6">三月</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="startBuyPrice" class="layui-form-label layui-form-required">起购价格</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input name="startBuyPrice" lay-verify="required" value="{{d.params.data.model.startBuyPrice || '0' }}" type="number" class="layui-input" placeholder="请输入起购价格" lay-reqText="请输入起购价格" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">元</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="minDeliveryPrice" class="layui-form-label layui-form-required">起送价格</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input name="minDeliveryPrice" lay-verify="required" value="{{d.params.data.model.minDeliveryPrice || '' }}" type="number" class="layui-input" placeholder="请输入起送价格" lay-reqText="请输入起送价格" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">元</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="isShow" class="layui-form-label layui-form-required">是否显示</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="isShow" lay-skin="switch" {{ d.params.data.model.isShow ? 'checked' : '' }} lay-text="开启|关闭" checked="checked">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="status" class="layui-form-label layui-form-required">活动状态</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
{{# layui.each(d.params.data.solitaireStatus, function(index, item){ }}
|
||||||
|
<input type="radio" name="status" value="{{ item.value }}" title="{{ item.description }}" lay-verify="required|number" {{item.value==d.params.data.model.status?'checked="checked"':''}} lay-reqText="请选择活动状态">
|
||||||
|
{{# }); }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<div>
|
||||||
|
<button class="layui-btn layui-btn-sm" lay-active="goodsShow">选择商品SKU</button>
|
||||||
|
<input type="hidden" name="goodsId" id="goodsId" value="{{d.params.data.goodsId }}" class="layui-input">
|
||||||
|
<input type="hidden" name="productsCount" id="productsCount" value="{{d.params.data.items.length || '0' }}">
|
||||||
|
</div>
|
||||||
|
<table class="layui-table" lay-size="sm">
|
||||||
|
<colgroup>
|
||||||
|
<col width="55">
|
||||||
|
<col>
|
||||||
|
<col width="60">
|
||||||
|
<col>
|
||||||
|
<col width="50">
|
||||||
|
<col width="60">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="80">
|
||||||
|
<col width="60">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>序列</th>
|
||||||
|
<th>商品名称</th>
|
||||||
|
<th>规格图</th>
|
||||||
|
<th>规格名称</th>
|
||||||
|
<th>库存</th>
|
||||||
|
<th>销售价</th>
|
||||||
|
<th>接龙价</th>
|
||||||
|
<th>活动库存</th>
|
||||||
|
<th>每人可买</th>
|
||||||
|
<th>顺序</th>
|
||||||
|
<th>操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="productsTbody">
|
||||||
|
|
||||||
|
{{# layui.each(d.params.data.items, function(index, item){ }}
|
||||||
|
<tr id="tr{{item.productId}}">
|
||||||
|
<td>
|
||||||
|
{{item.productId}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" value="{{item.id}}" name="product[id][]" />
|
||||||
|
<input type="hidden" value="{{item.productId}}" name="product[productId][]" />
|
||||||
|
<input type="hidden" value="{{item.goodId}}" name="product[goodId][]" />
|
||||||
|
<input type="hidden" value="{{item.solitaireId}}" name="product[solitaireId][]" />
|
||||||
|
{{item.goodObj.name}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<img src="{{ item.productObj.images && item.productObj.images !='null'? item.productObj.images : item.goodObj.image }}" id="productImagesSrc" style="width:40px;height:40px">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.productObj.spesDesc || '默认规格'}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.productObj.stock}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
¥{{item.productObj.price}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[price][]" value="{{item.price}}" placeholder="接龙价" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[activityStock][]" value="{{item.activityStock}}" placeholder="活动库存" class="layui-input layui-inline-1 goods-stock">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[oneCanBuy][]" value="{{item.oneCanBuy}}" placeholder="每人可买" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[sortId][]" value="{{item.sortId}}" placeholder="排序" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs del-class" id="{{item.productId}}" lay-active="goodsDelete">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{# }); }}
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
|
||||||
|
<div class="layui-form-item layui-form-text">
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item text-right core-hidden">
|
||||||
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsSolitaire-editForm-submit" id="LAY-app-CoreCmsSolitaire-editForm-submit" value="确认编辑">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script id="get_tpl" type="text/html">
|
||||||
|
{{# layui.each(d.list, function(index, item){ }}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{{item.productId || item.id}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" value="{{item.id || 0}}" name="product[id][]" />
|
||||||
|
<input type="hidden" value="{{item.productId || item.id}}" name="product[productId][]" />
|
||||||
|
<input type="hidden" value="{{item.goodsId}}" name="product[goodId][]" />
|
||||||
|
<input type="hidden" value="0" name="product[solitaireId][]" />
|
||||||
|
{{item.name}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<img src="{{ item.images && item.images !='null'? item.images : layui.setter.noImagePicUrl }}" id="productImagesSrc" style="width:40px;height:40px">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.spesDesc || '默认规格'}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{item.stock}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
¥{{item.price}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[price][]" value="{{item.activityPrice || item.price}}" placeholder="接龙价" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[activityStock][]" value="{{item.activityStock || item.stock}}" placeholder="活动库存" class="layui-input layui-inline-1 goods-stock">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[oneCanBuy][]" value="{{item.oneCanBuy || 10}}" placeholder="每人可买" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="product[sortId][]" value="{{item.sortId|| 1}}" placeholder="排序" class="layui-input layui-inline-1">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs del-class" id="{{item.productId || item.id}}" lay-active="goodsDelete">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{# }); }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var ids = {};
|
||||||
|
var items = [];
|
||||||
|
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', 'util', 'view', 'laytpl'],
|
||||||
|
function () {
|
||||||
|
var $ = layui.$
|
||||||
|
, form = layui.form
|
||||||
|
, admin = layui.admin
|
||||||
|
, laydate = layui.laydate
|
||||||
|
, upload = layui.upload
|
||||||
|
, cropperImg = layui.cropperImg
|
||||||
|
, util = layui.util
|
||||||
|
, view = layui.view
|
||||||
|
, laytpl = layui.laytpl
|
||||||
|
, coreHelper = layui.coreHelper;
|
||||||
|
|
||||||
|
|
||||||
|
//缩略图图片裁剪上传
|
||||||
|
$('#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 });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//加载编辑器
|
||||||
|
var Authorization = layui.data(layui.setter.tableName)[layui.setter.request.tokenName];
|
||||||
|
//重点代码 适配器
|
||||||
|
class UploadAdapter {
|
||||||
|
constructor(loader) {
|
||||||
|
this.loader = loader;
|
||||||
|
}
|
||||||
|
upload() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const data = new FormData();
|
||||||
|
let file = [];
|
||||||
|
this.loader.file.then(res => {
|
||||||
|
file = res; //文件流
|
||||||
|
data.append('upload', file);
|
||||||
|
$.ajax({
|
||||||
|
url: "/Api/Tools/CkEditorUploadFiles",
|
||||||
|
type: 'POST',
|
||||||
|
data: data,
|
||||||
|
dataType: 'json',
|
||||||
|
headers: {
|
||||||
|
'Authorization': Authorization
|
||||||
|
},
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
success: function (data) {
|
||||||
|
if (data) {
|
||||||
|
console.log(data)
|
||||||
|
resolve({
|
||||||
|
default: data.url //后端返回的参数 【注】返回参数格式是{uploaded:1,default:'http://xxx.com'}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
reject(data.msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
abort() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DecoupledEditor
|
||||||
|
.create(document.querySelector('#editor'),
|
||||||
|
{
|
||||||
|
language: 'zh-cn',
|
||||||
|
})
|
||||||
|
.then(editor => {
|
||||||
|
editor.plugins.get('FileRepository').createUploadAdapter = (loader) => {
|
||||||
|
return new UploadAdapter(loader);
|
||||||
|
};
|
||||||
|
const toolbarContainer = document.querySelector('#toolbar-container');
|
||||||
|
toolbarContainer.appendChild(editor.ui.view.toolbar.element);
|
||||||
|
editor.setData(d.params.data.model.contentBody);
|
||||||
|
window.editor = editor;
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
items = d.params.data.items;
|
||||||
|
|
||||||
|
for (var i = 0; i < items.length; i++) {
|
||||||
|
let obj = {
|
||||||
|
id: items[i].id,
|
||||||
|
productId: items[i].productId,
|
||||||
|
goodsId: items[i].goodId,
|
||||||
|
solitaireId: items[i].solitaireId,
|
||||||
|
name: items[i].goodObj.name,
|
||||||
|
images: items[i].productObj.images && items[i].productObj.images != 'null' ? items[i].productObj.images : items[i].goodObj.image,
|
||||||
|
|
||||||
|
spesDesc: items[i].productObj.spesDesc,
|
||||||
|
stock: items[i].productObj.stock,
|
||||||
|
price: items[i].productObj.price,
|
||||||
|
|
||||||
|
activityPrice: items[i].price,
|
||||||
|
activityStock: items[i].activityStock,
|
||||||
|
oneCanBuy: items[i].oneCanBuy,
|
||||||
|
isDelete: items[i].isDelete,
|
||||||
|
sortId: items[i].sortId,
|
||||||
|
|
||||||
|
}
|
||||||
|
ids[items[i].productId] = obj;
|
||||||
|
}
|
||||||
|
console.log(ids);
|
||||||
|
|
||||||
|
//处理属性 为 lay-active 的所有元素事件
|
||||||
|
util.event('lay-active', {
|
||||||
|
setStartDate: function () {
|
||||||
|
var nowTime = layui.util.toDateString(new Date(), 'yyyy-MM-dd HH:mm:ss');
|
||||||
|
$('#editTime-CoreCmsSolitaire-startTime').val(nowTime);
|
||||||
|
},
|
||||||
|
setEndDate1: function () {
|
||||||
|
addEndDateDay(1, 'editTime-CoreCmsSolitaire-startTime', 'editTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate2: function () {
|
||||||
|
addEndDateDay(7, 'editTime-CoreCmsSolitaire-startTime', 'editTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate3: function () {
|
||||||
|
addEndDateDay(15, 'editTime-CoreCmsSolitaire-startTime', 'editTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate4: function () {
|
||||||
|
addEndDateMonth(1, 'editTime-CoreCmsSolitaire-startTime', 'editTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate5: function () {
|
||||||
|
addEndDateMonth(2, 'editTime-CoreCmsSolitaire-startTime', 'editTime-CoreCmsSolitaire-endTime');
|
||||||
|
}, setEndDate6: function () {
|
||||||
|
addEndDateMonth(3, 'editTime-CoreCmsSolitaire-startTime', 'editTime-CoreCmsSolitaire-endTime');
|
||||||
|
},
|
||||||
|
goodsShow: function () {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '选择商品',
|
||||||
|
area: ['900px', '80%'],
|
||||||
|
id: 'LAY-app-CoreCmsPinTuanRule-createForm-GetGoodsList',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('common/getProductsIds', null).done(function () {
|
||||||
|
form.render();
|
||||||
|
//监听商品列表页工具条
|
||||||
|
form.on('submit(LAY-app-CoreCmsProducts-getData)',
|
||||||
|
function (data) {
|
||||||
|
if (Object.getOwnPropertyNames(ids).length === 0) {
|
||||||
|
layer.msg("请先选择商品");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//判断个数是否满足
|
||||||
|
if (Object.getOwnPropertyNames(ids).length > 10) {
|
||||||
|
layer.msg("最多只能选择" + 10 + "个");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(ids);
|
||||||
|
|
||||||
|
var the_val = "";
|
||||||
|
var count = 0;
|
||||||
|
for (var key in ids) {
|
||||||
|
the_val += "," + key;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
$("#goodsId").val(the_val.slice(1));
|
||||||
|
$('#productsCount').val(count);
|
||||||
|
|
||||||
|
var getTpl = get_tpl.innerHTML, view = document.getElementById('productsTbody');
|
||||||
|
var tmpData = {};
|
||||||
|
tmpData.list = ids;
|
||||||
|
laytpl(getTpl).render(tmpData, function (html) {
|
||||||
|
view.innerHTML = html;
|
||||||
|
});
|
||||||
|
form.render();
|
||||||
|
layer.close(index);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
goodsDelete: function () {
|
||||||
|
var idsArray = $("#goodsId").val().split(",");
|
||||||
|
for (var i = 0; i < idsArray.length; i++) {
|
||||||
|
var id = $(this).attr("id");
|
||||||
|
if (idsArray[i] == id) {
|
||||||
|
idsArray.splice(i, 1);
|
||||||
|
}
|
||||||
|
if (ids[id]) {
|
||||||
|
delete ids[id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$("#goodsId").val(idsArray.join(","));
|
||||||
|
$('#productsCount').val(idsArray.length);
|
||||||
|
$(this).parent().parent('tr').remove();
|
||||||
|
form.render();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function addEndDateDay(num, sinput, einput) {
|
||||||
|
var startTime = $("#" + sinput).val();
|
||||||
|
if (!!!startTime) {
|
||||||
|
layer.msg("请先设置开始时间", { icon: 2, anim: 6 });
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
startTime = new Date(startTime);
|
||||||
|
}
|
||||||
|
startTime = +startTime + 1000 * 60 * 60 * 24 * num;
|
||||||
|
startTime = new Date(startTime);
|
||||||
|
var endTime = layui.util.toDateString(startTime, 'yyyy-MM-dd HH:mm:ss');
|
||||||
|
$("#" + einput).val(endTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addEndDateMonth(num, sinput, einput) {
|
||||||
|
var startTime = $("#" + sinput).val();
|
||||||
|
if (!!!startTime) {
|
||||||
|
layer.msg("请先设置开始时间", { icon: 2, anim: 6 });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var s = (new Date(startTime)).setMonth((new Date(startTime)).getMonth() + num);
|
||||||
|
var endTime = layui.util.toDateString(s, 'yyyy-MM-dd HH:mm:ss');
|
||||||
|
$("#" + einput).val(endTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#editTime-CoreCmsSolitaire-startTime',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
laydate.render({
|
||||||
|
elem: '#editTime-CoreCmsSolitaire-endTime',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
|
||||||
|
form.verify({
|
||||||
|
verifytitle: [/^.{0,250}$/, '活动标题最大只允许输入250位字符'],
|
||||||
|
verifydescription: [/^.{0,250}$/, '活动描述最大只允许输入250位字符'],
|
||||||
|
});
|
||||||
|
//重载form
|
||||||
|
form.render(null, 'LAY-app-CoreCmsSolitaire-editForm');
|
||||||
|
})
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,416 @@
|
|||||||
|
<title>接龙活动表</title>
|
||||||
|
<!--当前位置开始-->
|
||||||
|
<div class="layui-card layadmin-header">
|
||||||
|
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||||
|
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--当前位置结束-->
|
||||||
|
<style>
|
||||||
|
/* 重写样式 */
|
||||||
|
</style>
|
||||||
|
<script type="text/html" template lay-type="Post" lay-url="{{ layui.setter.apiUrl }}Api/CoreCmsSolitaire/GetIndex" lay-done="layui.data.done(d);">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<div class="table-body">
|
||||||
|
<table id="LAY-app-CoreCmsSolitaire-tableBox" lay-filter="LAY-app-CoreCmsSolitaire-tableBox"></table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsSolitaire-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="title" placeholder="请输入活动标题" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-inline">
|
||||||
|
<div class="layui-input-inline core-time-input">
|
||||||
|
<input type="text" name="startTime" id="searchTime-CoreCmsSolitaire-startTime" placeholder="请输入开始时间" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<div class="layui-input-inline core-time-input">
|
||||||
|
<input type="text" name="endTime" id="searchTime-CoreCmsSolitaire-endTime" placeholder="请输入结束时间" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-inline">
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<select name="isShow">
|
||||||
|
<option value="">请选择是否显示</option>
|
||||||
|
<option value="True">是</option>
|
||||||
|
<option value="False">否</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<select name="status" id="status">
|
||||||
|
<option value="">请选择活动状态</option>
|
||||||
|
{{# layui.each(indexData.solitaireStatus, function(index, item){ }}
|
||||||
|
<option value="{{ item.value }}">{{ item.description }}</option>
|
||||||
|
{{# }); }}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-inline">
|
||||||
|
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsSolitaire-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsSolitaire-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>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsSolitaire-tableBox-bar">
|
||||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||||
|
<!--<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#CoreCmsSolitaireTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
|
||||||
|
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsSolitaireTbDelDrop{{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="del">确定</a>
|
||||||
|
</div>
|
||||||
|
</div>-->
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var indexData;
|
||||||
|
var debug = layui.setter.debug;
|
||||||
|
layui.data.done = function (d) {
|
||||||
|
//开启调试情况下获取接口赋值数据
|
||||||
|
if (debug) { console.log(d); }
|
||||||
|
|
||||||
|
indexData = d.data;
|
||||||
|
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
|
||||||
|
function () {
|
||||||
|
var $ = layui.$
|
||||||
|
, admin = layui.admin
|
||||||
|
, table = layui.table
|
||||||
|
, form = layui.form
|
||||||
|
, laydate = layui.laydate
|
||||||
|
, setter = layui.setter
|
||||||
|
, coreHelper = layui.coreHelper
|
||||||
|
, util = layui.util
|
||||||
|
, view = layui.view;
|
||||||
|
|
||||||
|
|
||||||
|
//重载form
|
||||||
|
form.render();
|
||||||
|
var searchwhere;
|
||||||
|
//监听搜索
|
||||||
|
form.on('submit(LAY-app-CoreCmsSolitaire-search)',
|
||||||
|
function (data) {
|
||||||
|
var field = data.field;
|
||||||
|
searchwhere = field;
|
||||||
|
//执行重载
|
||||||
|
table.reloadData('LAY-app-CoreCmsSolitaire-tableBox', { where: field });
|
||||||
|
});
|
||||||
|
//数据绑定
|
||||||
|
table.render({
|
||||||
|
elem: '#LAY-app-CoreCmsSolitaire-tableBox',
|
||||||
|
url: layui.setter.apiUrl + 'Api/CoreCmsSolitaire/GetPageList',
|
||||||
|
method: 'POST',
|
||||||
|
toolbar: '#LAY-app-CoreCmsSolitaire-toolbar',
|
||||||
|
pagebar: '#LAY-app-CoreCmsSolitaire-pagebar',
|
||||||
|
className: 'pagebarbox',
|
||||||
|
defaultToolbar: ['filter', 'print', 'exports'],
|
||||||
|
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
||||||
|
page: true,
|
||||||
|
limit: 30,
|
||||||
|
limits: [10, 15, 20, 25, 30, 50, 100, 200],
|
||||||
|
text: { none: '暂无相关数据' },
|
||||||
|
cols: [
|
||||||
|
[
|
||||||
|
{ type: "checkbox", fixed: "left" },
|
||||||
|
{ field: 'id', title: '序列', width: 60, sort: false },
|
||||||
|
{ field: 'title', title: '活动标题', sort: false },
|
||||||
|
//{ field: 'contentBody', title: '活动内容', sort: false, width: 105 },
|
||||||
|
{ field: 'startTime', title: '开始时间', width: 130, sort: false },
|
||||||
|
{ field: 'endTime', title: '结束时间', width: 130, sort: false },
|
||||||
|
{ field: 'startBuyPrice', title: '起购价格', sort: false, width: 105 },
|
||||||
|
{ field: 'minDeliveryPrice', title: '起送价格', sort: false, width: 105 },
|
||||||
|
{ field: 'isShow', title: '是否显示', width: 95, templet: '#switch_isShow', sort: false, unresize: true },
|
||||||
|
{ field: 'status', title: '活动状态', sort: false, width: 105 },
|
||||||
|
{ field: 'isDelete', title: '标注删除', width: 95, templet: '#switch_isDelete', sort: false, unresize: true },
|
||||||
|
{ field: 'createTime', title: '创建时间', width: 130, sort: false },
|
||||||
|
{ width: 70, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsSolitaire-tableBox-bar' }
|
||||||
|
]
|
||||||
|
]
|
||||||
|
});
|
||||||
|
//监听排序事件
|
||||||
|
table.on('sort(LAY-app-CoreCmsSolitaire-tableBox)', function (obj) {
|
||||||
|
table.reloadData('LAY-app-CoreCmsSolitaire-tableBox', {
|
||||||
|
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
|
||||||
|
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
|
||||||
|
orderField: obj.field, //排序字段
|
||||||
|
orderDirection: obj.type //排序方式
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
//监听行双击事件
|
||||||
|
//table.on('rowDouble(LAY-app-CoreCmsSolitaire-tableBox)', function (obj) {
|
||||||
|
// //查看详情
|
||||||
|
// doDetails(obj);
|
||||||
|
//});
|
||||||
|
//头工具栏事件
|
||||||
|
table.on('pagebar(LAY-app-CoreCmsSolitaire-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;
|
||||||
|
case 'queryExportExcel':
|
||||||
|
doQueryExportexcel();
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
//监听工具条
|
||||||
|
table.on('tool(LAY-app-CoreCmsSolitaire-tableBox)',
|
||||||
|
function (obj) {
|
||||||
|
if (obj.event === 'detail') {
|
||||||
|
doDetails(obj);
|
||||||
|
} else if (obj.event === 'del') {
|
||||||
|
doDelete(obj);
|
||||||
|
} else if (obj.event === 'edit') {
|
||||||
|
doEdit(obj)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//执行创建操作
|
||||||
|
function doCreate() {
|
||||||
|
coreHelper.Post("Api/CoreCmsSolitaire/GetCreate", null, function (e) {
|
||||||
|
if (e.code === 0) {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '创建数据',
|
||||||
|
area: ['1200px', '90%'],
|
||||||
|
id: 'LAY-popup-CoreCmsSolitaire-create',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('promotion/solitaire/solitaires/create', { data: e.data }).done(function () {
|
||||||
|
//监听提交
|
||||||
|
form.on('submit(LAY-app-CoreCmsSolitaire-createForm-submit)',
|
||||||
|
function (data) {
|
||||||
|
var field = data.field; //获取提交的字段
|
||||||
|
|
||||||
|
field.isShow = field.isShow == 'on';
|
||||||
|
//field.isDelete = field.isDelete == 'on';
|
||||||
|
|
||||||
|
field.contentBody = window.editor.getData();
|
||||||
|
if (!!!field.contentBody) {
|
||||||
|
layer.msg('活动详情内容不能为空', { icon: 5 });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//多参数产品库生成列表集合
|
||||||
|
var products = [];
|
||||||
|
var productsCount = parseInt(field['productsCount']);
|
||||||
|
for (var i = 0; i < productsCount; i++) {
|
||||||
|
var productModel = {};
|
||||||
|
productModel.id = field['product[id][' + i + ']'];
|
||||||
|
productModel.productId = field['product[productId][' + i + ']'];
|
||||||
|
productModel.goodId = field['product[goodId][' + i + ']'];
|
||||||
|
productModel.solitaireId = field['product[solitaireId][' + i + ']'];
|
||||||
|
productModel.price = field['product[price][' + i + ']'];
|
||||||
|
productModel.activityStock = field['product[activityStock][' + i + ']'];
|
||||||
|
productModel.oneCanBuy = field['product[oneCanBuy][' + i + ']'];
|
||||||
|
productModel.sortId = field['product[sortId][' + i + ']'];
|
||||||
|
productModel.isDelete = field['product[isDelete][' + i + ']'];
|
||||||
|
productModel.sortId = field['product[sortId][' + i + ']'];
|
||||||
|
products.push(productModel);
|
||||||
|
}
|
||||||
|
field.items = products;
|
||||||
|
|
||||||
|
if (debug) { console.log(field); } //开启调试返回数据
|
||||||
|
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||||
|
coreHelper.Post("Api/CoreCmsSolitaire/DoCreate", field, function (e) {
|
||||||
|
console.log(e)
|
||||||
|
if (e.code === 0) {
|
||||||
|
layui.table.reloadData('LAY-app-CoreCmsSolitaire-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-CoreCmsSolitaire-createForm-submit").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//执行编辑操作
|
||||||
|
function doEdit(obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsSolitaire/GetEdit", { id: obj.data.id }, function (e) {
|
||||||
|
if (e.code === 0) {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '编辑数据',
|
||||||
|
area: ['1200px', '90%'],
|
||||||
|
id: 'LAY-popup-CoreCmsSolitaire-edit',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('promotion/solitaire/solitaires/edit', { data: e.data }).done(function () {
|
||||||
|
//监听提交
|
||||||
|
form.on('submit(LAY-app-CoreCmsSolitaire-editForm-submit)',
|
||||||
|
function (data) {
|
||||||
|
var field = data.field; //获取提交的字段
|
||||||
|
|
||||||
|
field.isShow = field.isShow == 'on';
|
||||||
|
//field.isDelete = field.isDelete == 'on';
|
||||||
|
|
||||||
|
field.contentBody = window.editor.getData();
|
||||||
|
if (!!!field.contentBody) {
|
||||||
|
layer.msg('活动详情内容不能为空', { icon: 5 });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//多参数产品库生成列表集合
|
||||||
|
var products = [];
|
||||||
|
var productsCount = parseInt(field['productsCount']);
|
||||||
|
for (var i = 0; i < productsCount; i++) {
|
||||||
|
var productModel = {};
|
||||||
|
productModel.id = field['product[id][' + i + ']'];
|
||||||
|
productModel.productId = field['product[productId][' + i + ']'];
|
||||||
|
productModel.goodId = field['product[goodId][' + i + ']'];
|
||||||
|
productModel.solitaireId = field['product[solitaireId][' + i + ']'];
|
||||||
|
productModel.price = field['product[price][' + i + ']'];
|
||||||
|
productModel.activityStock = field['product[activityStock][' + i + ']'];
|
||||||
|
productModel.oneCanBuy = field['product[oneCanBuy][' + i + ']'];
|
||||||
|
productModel.isDelete = field['product[isDelete][' + i + ']'];
|
||||||
|
productModel.sortId = field['product[sortId][' + i + ']'];
|
||||||
|
products.push(productModel);
|
||||||
|
}
|
||||||
|
field.items = products;
|
||||||
|
|
||||||
|
if (debug) { console.log(field); } //开启调试返回数据
|
||||||
|
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||||
|
coreHelper.Post("Api/CoreCmsSolitaire/DoEdit", field, function (e) {
|
||||||
|
console.log(e)
|
||||||
|
if (e.code === 0) {
|
||||||
|
layui.table.reloadData('LAY-app-CoreCmsSolitaire-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-CoreCmsSolitaire-editForm-submit").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
////执行预览操作
|
||||||
|
//function doDetails(obj) {
|
||||||
|
// coreHelper.Post("Api/CoreCmsSolitaire/GetDetails", { id: obj.data.id }, function (e) {
|
||||||
|
// if (e.code === 0) {
|
||||||
|
// admin.popup({
|
||||||
|
// shadeClose: false,
|
||||||
|
// title: '查看详情',
|
||||||
|
// area: ['1200px', '90%'],
|
||||||
|
// id: 'LAY-popup-CoreCmsSolitaire-details',
|
||||||
|
// success: function (layero, index) {
|
||||||
|
// view(this.id).render('base/CoreCmsSolitaire/details', { data: e.data }).done(function () {
|
||||||
|
// form.render();
|
||||||
|
// });
|
||||||
|
// // 禁止弹窗出现滚动条
|
||||||
|
// $(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// layer.msg(e.msg);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
//}
|
||||||
|
//执行单个删除
|
||||||
|
function doDelete(obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsSolitaire/DoDelete", { id: obj.data.id }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
table.reloadData('LAY-app-CoreCmsSolitaire-tableBox');
|
||||||
|
layer.msg(e.msg);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
layui.form.on('switch(switch_isShow)', function (obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsSolitaire/DoSetisShow", { id: this.value, data: obj.elem.checked }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
//table.reloadData('LAY-app-CoreCmsSolitaire-tableBox');
|
||||||
|
layer.msg(e.msg);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
layui.form.on('switch(switch_isDelete)', function (obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsSolitaire/DoSetisDelete", { id: this.value, data: obj.elem.checked }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
//table.reloadData('LAY-app-CoreCmsSolitaire-tableBox');
|
||||||
|
layer.msg(e.msg);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#searchTime-CoreCmsSolitaire-startTime',
|
||||||
|
type: 'datetime',
|
||||||
|
range: '到',
|
||||||
|
});
|
||||||
|
laydate.render({
|
||||||
|
elem: '#searchTime-CoreCmsSolitaire-endTime',
|
||||||
|
type: 'datetime',
|
||||||
|
range: '到',
|
||||||
|
});
|
||||||
|
laydate.render({
|
||||||
|
elem: '#searchTime-CoreCmsSolitaire-createTime',
|
||||||
|
type: 'datetime',
|
||||||
|
range: '到',
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!--设置是否显示-->
|
||||||
|
<script type="text/html" id="switch_isShow">
|
||||||
|
<input type="checkbox" name="switch_isShow" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="switch_isShow" {{ d.isShow ? 'checked' : '' }}>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!--设置标注删除-->
|
||||||
|
<script type="text/html" id="switch_isDelete">
|
||||||
|
<input type="checkbox" name="switch_isDelete" value="{{d.id}}" lay-skin="switch" lay-text="已删除|保留" lay-filter="switch_isDelete" {{ d.isDelete ? 'checked' : '' }}>
|
||||||
|
</script>
|
||||||
|
|
||||||
@@ -1,140 +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-CoreCmsUserServicesTicket-createForm" id="LAY-app-CoreCmsUserServicesTicket-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="securityCode" class="layui-form-label layui-form-required">安全码</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="securityCode" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入安全码" lay-reqText="请输入安全码" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="redeemCode" class="layui-form-label layui-form-required">兑换码</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="redeemCode" lay-verType="tips" lay-verify="required|verifyredeemCode" class="layui-input" lay-reqText="请输入兑换码" placeholder="请输入兑换码" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="serviceId" class="layui-form-label layui-form-required">关联服务项目id</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="serviceId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入关联服务项目id" lay-reqText="请输入关联服务项目id并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="userId" class="layui-form-label layui-form-required">关联用户id</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="请输入关联用户id" lay-reqText="请输入关联用户id并为数字" />
|
|
||||||
</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="validityType" class="layui-form-label layui-form-required">核销有效期类型</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="validityType" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入核销有效期类型" lay-reqText="请输入核销有效期类型并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="validityStartTime" class="layui-form-label layui-form-required">核销开始时间</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="validityStartTime" id="createTime-CoreCmsUserServicesTicket-validityStartTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入核销开始时间" lay-reqText="请输入核销开始时间" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="validityEndTime" class="layui-form-label layui-form-required">核销结束时间</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="validityEndTime" id="createTime-CoreCmsUserServicesTicket-validityEndTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" 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-CoreCmsUserServicesTicket-createTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入创建时间" lay-reqText="请输入创建时间" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item" pane>
|
|
||||||
<label for="isVerification" class="layui-form-label layui-form-required">是否核销</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="checkbox" lay-filter="switch" name="isVerification" lay-skin="switch" lay-text="开启|关闭">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="verificationTime" class="layui-form-label layui-form-required">核销时间</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="verificationTime" id="createTime-CoreCmsUserServicesTicket-verificationTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入核销时间" lay-reqText="请输入核销时间" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item text-right">
|
|
||||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserServicesTicket-createForm-submit" id="LAY-app-CoreCmsUserServicesTicket-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-CoreCmsUserServicesTicket-validityStartTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#createTime-CoreCmsUserServicesTicket-validityEndTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#createTime-CoreCmsUserServicesTicket-createTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#createTime-CoreCmsUserServicesTicket-verificationTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
form.verify({
|
|
||||||
|
|
||||||
verifyserviceOrderId: [/^[\S]{0,50}$/,'关联购买订单最大只允许输入50位字符,且不能出现空格'],
|
|
||||||
verifyredeemCode: [/^[\S]{0,50}$/,'兑换码最大只允许输入50位字符,且不能出现空格'],
|
|
||||||
});
|
|
||||||
//重载form
|
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesTicket-createForm');
|
|
||||||
})
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,143 +0,0 @@
|
|||||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
|
||||||
<table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsUserServicesTicket-detailsForm" id="LAY-app-CoreCmsUserServicesTicket-detailsForm">
|
|
||||||
<colgroup>
|
|
||||||
<col width="150">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="id">序列</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.id || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="serviceOrderId">关联购买订单</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.serviceOrderId || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="securityCode">安全码</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.securityCode || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="redeemCode">兑换码</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.redeemCode || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="serviceId">关联服务项目id</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.serviceId || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="userId">关联用户id</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.userId || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="status">状态</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.status || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="validityType">核销有效期类型</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.validityType || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="validityStartTime">核销开始时间</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.validityStartTime || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="validityEndTime">核销结束时间</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.validityEndTime || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="createTime">创建时间</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.createTime || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="isVerification">是否核销</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<input type="checkbox" disabled name="isVerification" value="{{d.params.data.isVerification}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isVerification" {{ d.params.data.isVerification ? 'checked' : '' }}>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="verificationTime">核销时间</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.verificationTime || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
var debug = layui.setter.debug;
|
|
||||||
layui.data.done = function (d) {
|
|
||||||
//开启调试情况下获取接口赋值数据
|
|
||||||
if (debug) { console.log(d.params.data); }
|
|
||||||
|
|
||||||
layui.use(['admin', 'form', 'coreHelper'], function () {
|
|
||||||
var $ = layui.$
|
|
||||||
, setter = layui.setter
|
|
||||||
, admin = layui.admin
|
|
||||||
, coreHelper = layui.coreHelper
|
|
||||||
, form = layui.form;
|
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesTicket-detailsForm');
|
|
||||||
});
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,140 +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-CoreCmsUserServicesTicket-editForm" id="LAY-app-CoreCmsUserServicesTicket-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="securityCode" class="layui-form-label layui-form-required">安全码</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="securityCode" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入安全码" lay-reqText="请输入安全码" value="{{d.params.data.securityCode || '' }}" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="redeemCode" class="layui-form-label layui-form-required">兑换码</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="redeemCode" lay-verType="tips" lay-verify="required|verifyredeemCode" class="layui-input" placeholder="请输入兑换码" lay-reqText="请输入兑换码" value="{{d.params.data.redeemCode || '' }}" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="serviceId" class="layui-form-label layui-form-required">关联服务项目id</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="serviceId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.serviceId || '' }}" placeholder="请输入关联服务项目id" lay-reqText="请输入关联服务项目id并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="userId" class="layui-form-label layui-form-required">关联用户id</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="请输入关联用户id" lay-reqText="请输入关联用户id并为数字" />
|
|
||||||
</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="validityType" class="layui-form-label layui-form-required">核销有效期类型</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="validityType" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.validityType || '' }}" placeholder="请输入核销有效期类型" lay-reqText="请输入核销有效期类型并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="validityStartTime" class="layui-form-label layui-form-required">核销开始时间</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="validityStartTime" id="editTime-CoreCmsUserServicesTicket-validityStartTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入核销开始时间" lay-reqText="请输入核销开始时间" value="{{d.params.data.validityStartTime || '' }}" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="validityEndTime" class="layui-form-label layui-form-required">核销结束时间</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="validityEndTime" id="editTime-CoreCmsUserServicesTicket-validityEndTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入核销结束时间" lay-reqText="请输入核销结束时间" value="{{d.params.data.validityEndTime || '' }}" />
|
|
||||||
</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-CoreCmsUserServicesTicket-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" pane>
|
|
||||||
<label for="isVerification" class="layui-form-label layui-form-required">是否核销</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="checkbox" lay-filter="switch" name="isVerification" {{ d.params.data.isVerification ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="verificationTime" class="layui-form-label layui-form-required">核销时间</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="verificationTime" id="editTime-CoreCmsUserServicesTicket-verificationTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入核销时间" lay-reqText="请输入核销时间" value="{{d.params.data.verificationTime || '' }}" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item text-right">
|
|
||||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserServicesTicket-editForm-submit" id="LAY-app-CoreCmsUserServicesTicket-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-CoreCmsUserServicesTicket-validityStartTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#editTime-CoreCmsUserServicesTicket-validityEndTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#editTime-CoreCmsUserServicesTicket-createTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#editTime-CoreCmsUserServicesTicket-verificationTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
form.verify({
|
|
||||||
|
|
||||||
verifyserviceOrderId: [/^[\S]{0,50}$/,'关联购买订单最大只允许输入50位字符,且不能出现空格'],
|
|
||||||
verifyredeemCode: [/^[\S]{0,50}$/,'兑换码最大只允许输入50位字符,且不能出现空格'],
|
|
||||||
});
|
|
||||||
//重载form
|
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesTicket-editForm');
|
|
||||||
})
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,447 +0,0 @@
|
|||||||
<title>服务消费券</title>
|
|
||||||
<!--当前位置开始-->
|
|
||||||
<div class="layui-card layadmin-header">
|
|
||||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
|
||||||
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--当前位置结束-->
|
|
||||||
<style>
|
|
||||||
/* 重写样式 */
|
|
||||||
</style>
|
|
||||||
<script type="text/html" template lay-type="Post" lay-url="{{ layui.setter.apiUrl }}Api/CoreCmsUserServicesTicket/GetIndex" lay-done="layui.data.done(d);">
|
|
||||||
<div class="layui-form coreshop-toolbar-search-form">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="id">序列</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input type="text" name="id" placeholder="请输入序列" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="serviceOrderId">关联购买订单</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input type="text" name="serviceOrderId" placeholder="请输入关联购买订单" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="securityCode">安全码</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input type="text" name="securityCode" placeholder="请输入安全码" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="redeemCode">兑换码</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input type="text" name="redeemCode" placeholder="请输入兑换码" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="serviceId">关联服务项目id</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input type="text" name="serviceId" placeholder="请输入关联服务项目id" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="userId">关联用户id</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input type="text" name="userId" placeholder="请输入关联用户id" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="status">状态</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input type="text" name="status" placeholder="请输入状态" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="validityType">核销有效期类型</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input type="text" name="validityType" placeholder="请输入核销有效期类型" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="validityStartTime">核销开始时间</label>
|
|
||||||
<div class="layui-input-inline core-time-input">
|
|
||||||
<input type="text" name="validityStartTime" id="searchTime-CoreCmsUserServicesTicket-validityStartTime" placeholder="请输入核销开始时间" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="validityEndTime">核销结束时间</label>
|
|
||||||
<div class="layui-input-inline core-time-input">
|
|
||||||
<input type="text" name="validityEndTime" id="searchTime-CoreCmsUserServicesTicket-validityEndTime" placeholder="请输入核销结束时间" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="createTime">创建时间</label>
|
|
||||||
<div class="layui-input-inline core-time-input">
|
|
||||||
<input type="text" name="createTime" id="searchTime-CoreCmsUserServicesTicket-createTime" placeholder="请输入创建时间" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="isVerification">是否核销</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<select name="isVerification">
|
|
||||||
<option value="">请选择</option>
|
|
||||||
<option value="True">是</option>
|
|
||||||
<option value="False">否</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label" for="verificationTime">核销时间</label>
|
|
||||||
<div class="layui-input-inline core-time-input">
|
|
||||||
<input type="text" name="verificationTime" id="searchTime-CoreCmsUserServicesTicket-verificationTime" placeholder="请输入核销时间" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsUserServicesTicket-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</script>
|
|
||||||
<div class="table-body">
|
|
||||||
<table id="LAY-app-CoreCmsUserServicesTicket-tableBox" lay-filter="LAY-app-CoreCmsUserServicesTicket-tableBox"></table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script type="text/html" id="LAY-app-CoreCmsUserServicesTicket-toolbar">
|
|
||||||
<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="batchDelete"><i class="layui-icon layui-icon-delete"></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-CoreCmsUserServicesTicket-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="#CoreCmsUserServicesTicketTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
|
|
||||||
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsUserServicesTicketTbDelDrop{{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="del">确定</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
var indexData;
|
|
||||||
var debug= layui.setter.debug;
|
|
||||||
layui.data.done = function (d) {
|
|
||||||
//开启调试情况下获取接口赋值数据
|
|
||||||
if (debug) { console.log(d); }
|
|
||||||
|
|
||||||
indexData = d.data;
|
|
||||||
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
|
|
||||||
function () {
|
|
||||||
var $ = layui.$
|
|
||||||
, admin = layui.admin
|
|
||||||
, table = layui.table
|
|
||||||
, form = layui.form
|
|
||||||
, laydate = layui.laydate
|
|
||||||
, setter = layui.setter
|
|
||||||
, coreHelper = layui.coreHelper
|
|
||||||
, util = layui.util
|
|
||||||
, view = layui.view;
|
|
||||||
|
|
||||||
laydate.render({
|
|
||||||
elem: '#searchTime-CoreCmsUserServicesTicket-validityStartTime',
|
|
||||||
type: 'datetime',
|
|
||||||
range: '到',
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#searchTime-CoreCmsUserServicesTicket-validityEndTime',
|
|
||||||
type: 'datetime',
|
|
||||||
range: '到',
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#searchTime-CoreCmsUserServicesTicket-createTime',
|
|
||||||
type: 'datetime',
|
|
||||||
range: '到',
|
|
||||||
});
|
|
||||||
laydate.render({
|
|
||||||
elem: '#searchTime-CoreCmsUserServicesTicket-verificationTime',
|
|
||||||
type: 'datetime',
|
|
||||||
range: '到',
|
|
||||||
});
|
|
||||||
//重载form
|
|
||||||
form.render();
|
|
||||||
var searchwhere;
|
|
||||||
//监听搜索
|
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesTicket-search)',
|
|
||||||
function(data) {
|
|
||||||
var field = data.field;
|
|
||||||
searchwhere = field;
|
|
||||||
//执行重载
|
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox',{ where: field });
|
|
||||||
});
|
|
||||||
//数据绑定
|
|
||||||
table.render({
|
|
||||||
elem: '#LAY-app-CoreCmsUserServicesTicket-tableBox',
|
|
||||||
url: layui.setter.apiUrl + 'Api/CoreCmsUserServicesTicket/GetPageList',
|
|
||||||
method: 'POST',
|
|
||||||
toolbar: '#LAY-app-CoreCmsUserServicesTicket-toolbar',
|
|
||||||
defaultToolbar: ['filter', 'print', 'exports'],
|
|
||||||
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
|
||||||
page: true,
|
|
||||||
limit: 30,
|
|
||||||
limits: [10, 15, 20, 25, 30, 50, 100, 200],
|
|
||||||
text: {none: '暂无相关数据'},
|
|
||||||
cols: [
|
|
||||||
[
|
|
||||||
{ type: "checkbox", fixed: "left" },
|
|
||||||
{ field: 'id', title: '序列', width: 60, sort: false},
|
|
||||||
{ field: 'serviceOrderId', title: '关联购买订单', sort: false,width: 105 },
|
|
||||||
{ field: 'securityCode', title: '安全码', sort: false,width: 105 },
|
|
||||||
{ field: 'redeemCode', title: '兑换码', sort: false,width: 105 },
|
|
||||||
{ field: 'serviceId', title: '关联服务项目id', sort: false,width: 105 },
|
|
||||||
{ field: 'userId', title: '关联用户id', sort: false,width: 105 },
|
|
||||||
{ field: 'status', title: '状态', sort: false,width: 105 },
|
|
||||||
{ field: 'validityType', title: '核销有效期类型', sort: false,width: 105 },
|
|
||||||
{ field: 'validityStartTime', title: '核销开始时间', width: 130, sort: false},
|
|
||||||
{ field: 'validityEndTime', title: '核销结束时间', width: 130, sort: false},
|
|
||||||
{ field: 'createTime', title: '创建时间', width: 130, sort: false},
|
|
||||||
{ field: 'isVerification', title: '是否核销', width: 95, templet: '#switch_isVerification', sort: false , unresize: true},
|
|
||||||
{ field: 'verificationTime', title: '核销时间', width: 130, sort: false},
|
|
||||||
{ width: 162, align: 'center', title:'操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsUserServicesTicket-tableBox-bar' }
|
|
||||||
]
|
|
||||||
]
|
|
||||||
});
|
|
||||||
//监听排序事件
|
|
||||||
table.on('sort(LAY-app-CoreCmsUserServicesTicket-tableBox)', function(obj){
|
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox', {
|
|
||||||
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
|
|
||||||
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
|
|
||||||
orderField: obj.field, //排序字段
|
|
||||||
orderDirection: obj.type //排序方式
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
//监听行双击事件
|
|
||||||
table.on('rowDouble(LAY-app-CoreCmsUserServicesTicket-tableBox)', function (obj) {
|
|
||||||
//查看详情
|
|
||||||
doDetails(obj);
|
|
||||||
});
|
|
||||||
//头工具栏事件
|
|
||||||
table.on('toolbar(LAY-app-CoreCmsUserServicesTicket-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;
|
|
||||||
case 'queryExportExcel':
|
|
||||||
doQueryExportexcel();
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
//监听工具条
|
|
||||||
table.on('tool(LAY-app-CoreCmsUserServicesTicket-tableBox)',
|
|
||||||
function(obj) {
|
|
||||||
if (obj.event === 'detail') {
|
|
||||||
doDetails(obj);
|
|
||||||
} else if (obj.event === 'del') {
|
|
||||||
doDelete(obj);
|
|
||||||
} else if (obj.event === 'edit') {
|
|
||||||
doEdit(obj)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//执行创建操作
|
|
||||||
function doCreate(){
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicket/GetCreate", null, function (e) {
|
|
||||||
if (e.code === 0) {
|
|
||||||
admin.popup({ shadeClose: false,
|
|
||||||
title: '创建数据',
|
|
||||||
area: ['600px', '500px'],
|
|
||||||
id: 'LAY-popup-CoreCmsUserServicesTicket-create',
|
|
||||||
success: function (layero, index) {
|
|
||||||
view(this.id).render('serviceGoods/servicesTicketcreate', { data: e.data }).done(function () {
|
|
||||||
//监听提交
|
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesTicket-createForm-submit)',
|
|
||||||
function(data) {
|
|
||||||
var field = data.field; //获取提交的字段
|
|
||||||
|
|
||||||
field.isVerification = field.isVerification == 'on';
|
|
||||||
|
|
||||||
if (debug) { console.log(field); } //开启调试返回数据
|
|
||||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicket/DoCreate", field, function (e) {
|
|
||||||
console.log(e)
|
|
||||||
if (e.code === 0) {
|
|
||||||
layui.table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox'); //重载表格
|
|
||||||
layer.close(index); //再执行关闭
|
|
||||||
layer.msg(e.msg);
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
// 禁止弹窗出现滚动条
|
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//执行编辑操作
|
|
||||||
function doEdit(obj){
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicket/GetEdit", {id:obj.data.id}, function (e) {
|
|
||||||
if (e.code === 0) {
|
|
||||||
admin.popup({ shadeClose: false,
|
|
||||||
title: '编辑数据',
|
|
||||||
area: ['600px', '500px'],
|
|
||||||
id: 'LAY-popup-CoreCmsUserServicesTicket-edit',
|
|
||||||
success: function (layero, index) {
|
|
||||||
view(this.id).render('serviceGoods/servicesTicketedit', { data: e.data }).done(function () {
|
|
||||||
//监听提交
|
|
||||||
form.on('submit(LAY-app-CoreCmsUserServicesTicket-editForm-submit)',
|
|
||||||
function(data) {
|
|
||||||
var field = data.field; //获取提交的字段
|
|
||||||
|
|
||||||
field.isVerification = field.isVerification == 'on';
|
|
||||||
|
|
||||||
if (debug) { console.log(field); } //开启调试返回数据
|
|
||||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicket/DoEdit", field, function (e) {
|
|
||||||
console.log(e)
|
|
||||||
if (e.code === 0) {
|
|
||||||
layui.table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox'); //重载表格
|
|
||||||
layer.close(index); //再执行关闭
|
|
||||||
layer.msg(e.msg);
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})
|
|
||||||
// 禁止弹窗出现滚动条
|
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//执行预览操作
|
|
||||||
function doDetails(obj) {
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicket/GetDetails", { id: obj.data.id }, function (e) {
|
|
||||||
if (e.code === 0) {
|
|
||||||
admin.popup({ shadeClose: false,
|
|
||||||
title: '查看详情',
|
|
||||||
area: ['600px', '500px'],
|
|
||||||
id: 'LAY-popup-CoreCmsUserServicesTicket-details',
|
|
||||||
success: function (layero, index) {
|
|
||||||
view(this.id).render('serviceGoods/servicesTicketdetails', { data: e.data }).done(function () {
|
|
||||||
form.render();
|
|
||||||
});
|
|
||||||
// 禁止弹窗出现滚动条
|
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//执行单个删除
|
|
||||||
function doDelete(obj){
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicket/DoDelete", { id: obj.data.id }, function (e) {
|
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesTicket-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/CoreCmsUserServicesTicket/DoBatchDelete", { id: delidsStr }, function (e) {
|
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
|
||||||
table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox');
|
|
||||||
layer.msg(e.msg);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//执行查询条件导出excel
|
|
||||||
function doQueryExportexcel(){
|
|
||||||
layer.confirm('确定根据当前的查询条件导出数据吗?',
|
|
||||||
function(index) {
|
|
||||||
var field = searchwhere;
|
|
||||||
coreHelper.PostForm("Api/CoreCmsUserServicesTicket/QueryExportExcel", field, function (e) {
|
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
|
||||||
if (e.code === 0) {
|
|
||||||
window.open(e.data);
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//执行选择目录导出数据
|
|
||||||
function doSelectExportExcel(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);
|
|
||||||
});
|
|
||||||
layer.close(index);
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicket/SelectExportExcel", { id: delidsStr }, function (e) {
|
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
|
||||||
if (e.code === 0) {
|
|
||||||
window.open(e.data);
|
|
||||||
} else {
|
|
||||||
layer.msg(e.msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//监听 表格复选框操作
|
|
||||||
|
|
||||||
layui.form.on('switch(switch_isVerification)', function (obj) {
|
|
||||||
coreHelper.Post("Api/CoreCmsUserServicesTicket/DoSetisVerification", { id: this.value, data: obj.elem.checked }, function (e) {
|
|
||||||
if (debug) { console.log(e); } //开启调试返回数据
|
|
||||||
//table.reloadData('LAY-app-CoreCmsUserServicesTicket-tableBox');
|
|
||||||
layer.msg(e.msg);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<!--设置是否核销-->
|
|
||||||
<script type="text/html" id="switch_isVerification">
|
|
||||||
<input type="checkbox" name="switch_isVerification" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="switch_isVerification" {{ d.isVerification ? 'checked' : '' }}>
|
|
||||||
</script>
|
|
||||||
@@ -1,78 +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-CoreCmsUserServicesTicketVerificationLog-createForm" id="LAY-app-CoreCmsUserServicesTicketVerificationLog-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="storeId" class="layui-form-label layui-form-required">核销门店id</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="storeId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入核销门店id" lay-reqText="请输入核销门店id并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="verificationUserId" class="layui-form-label layui-form-required">核验人</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="verificationUserId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入核验人" lay-reqText="请输入核验人并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="ticketId" class="layui-form-label layui-form-required">服务券序列</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="ticketId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入服务券序列" lay-reqText="请输入服务券序列并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="ticketRedeemCode" class="layui-form-label layui-form-required">核验码</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="ticketRedeemCode" lay-verType="tips" lay-verify="required|verifyticketRedeemCode" class="layui-input" lay-reqText="请输入核验码" placeholder="请输入核验码" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="verificationTime" class="layui-form-label layui-form-required">核验时间</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="verificationTime" id="createTime-CoreCmsUserServicesTicketVerificationLog-verificationTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入核验时间" lay-reqText="请输入核验时间" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item text-right">
|
|
||||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserServicesTicketVerificationLog-createForm-submit" id="LAY-app-CoreCmsUserServicesTicketVerificationLog-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-CoreCmsUserServicesTicketVerificationLog-verificationTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
form.verify({
|
|
||||||
|
|
||||||
verifyticketRedeemCode: [/^[\S]{0,50}$/,'核验码最大只允许输入50位字符,且不能出现空格'],
|
|
||||||
});
|
|
||||||
//重载form
|
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesTicketVerificationLog-createForm');
|
|
||||||
})
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
|
||||||
<table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsUserServicesTicketVerificationLog-detailsForm" id="LAY-app-CoreCmsUserServicesTicketVerificationLog-detailsForm">
|
|
||||||
<colgroup>
|
|
||||||
<col width="150">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="id">序列</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.id || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="storeId">核销门店id</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.storeId || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="verificationUserId">核验人</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.verificationUserId || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="ticketId">服务券序列</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.ticketId || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="ticketRedeemCode">核验码</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.ticketRedeemCode || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="verificationTime">核验时间</label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ d.params.data.verificationTime || '' }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
var debug= layui.setter.debug;
|
|
||||||
layui.data.done = function (d) {
|
|
||||||
//开启调试情况下获取接口赋值数据
|
|
||||||
if (debug) { console.log(d.params.data); }
|
|
||||||
|
|
||||||
layui.use(['admin', 'form', 'coreHelper'], function () {
|
|
||||||
var $ = layui.$
|
|
||||||
, setter = layui.setter
|
|
||||||
, admin = layui.admin
|
|
||||||
, coreHelper = layui.coreHelper
|
|
||||||
, form = layui.form;
|
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesTicketVerificationLog-detailsForm');
|
|
||||||
});
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,78 +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-CoreCmsUserServicesTicketVerificationLog-editForm" id="LAY-app-CoreCmsUserServicesTicketVerificationLog-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="storeId" class="layui-form-label layui-form-required">核销门店id</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="storeId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.storeId || '' }}" placeholder="请输入核销门店id" lay-reqText="请输入核销门店id并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="verificationUserId" class="layui-form-label layui-form-required">核验人</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="verificationUserId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.verificationUserId || '' }}" placeholder="请输入核验人" lay-reqText="请输入核验人并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="ticketId" class="layui-form-label layui-form-required">服务券序列</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="number" min="0" max="999999" name="ticketId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.ticketId || '' }}" placeholder="请输入服务券序列" lay-reqText="请输入服务券序列并为数字" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="ticketRedeemCode" class="layui-form-label layui-form-required">核验码</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="ticketRedeemCode" lay-verType="tips" lay-verify="required|verifyticketRedeemCode" class="layui-input" placeholder="请输入核验码" lay-reqText="请输入核验码" value="{{d.params.data.ticketRedeemCode || '' }}" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label for="verificationTime" class="layui-form-label layui-form-required">核验时间</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="verificationTime" id="editTime-CoreCmsUserServicesTicketVerificationLog-verificationTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入核验时间" lay-reqText="请输入核验时间" value="{{d.params.data.verificationTime || '' }}" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item text-right">
|
|
||||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserServicesTicketVerificationLog-editForm-submit" id="LAY-app-CoreCmsUserServicesTicketVerificationLog-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-CoreCmsUserServicesTicketVerificationLog-verificationTime',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
|
||||||
form.verify({
|
|
||||||
|
|
||||||
verifyticketRedeemCode: [/^[\S]{0,50}$/,'核验码最大只允许输入50位字符,且不能出现空格'],
|
|
||||||
});
|
|
||||||
//重载form
|
|
||||||
form.render(null, 'LAY-app-CoreCmsUserServicesTicketVerificationLog-editForm');
|
|
||||||
})
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -389,7 +389,7 @@
|
|||||||
area: ['380px', '200px'],
|
area: ['380px', '200px'],
|
||||||
id: 'LAY-popup-CoreCmsStore-clerkEdit',
|
id: 'LAY-popup-CoreCmsStore-clerkEdit',
|
||||||
success: function (layero, index) {
|
success: function (layero, index) {
|
||||||
view(this.id).render('shop/store/clerkEdit', { data: e.data }).done(function () {
|
view(this.id).render('shop/store/clerkedit', { data: e.data }).done(function () {
|
||||||
//监听提交
|
//监听提交
|
||||||
form.on('submit(LAY-app-CoreCmsStore-clerkEdit-submit)',
|
form.on('submit(LAY-app-CoreCmsStore-clerkEdit-submit)',
|
||||||
function (data) {
|
function (data) {
|
||||||
|
|||||||
@@ -132,8 +132,33 @@
|
|||||||
[
|
[
|
||||||
{ type: "checkbox", fixed: "left" },
|
{ type: "checkbox", fixed: "left" },
|
||||||
{ field: 'id', title: '序列', width: 60, sort: false },
|
{ field: 'id', title: '序列', width: 60, sort: false },
|
||||||
{ field: 'third_cat_id', title: '类目ID', sort: false, width: 105 },
|
{
|
||||||
{ field: 'third_cat_name', title: '类目名称', sort: false, width: 105 },
|
field: 'first_cat_id',
|
||||||
|
title: '一级类目',
|
||||||
|
sort: false,
|
||||||
|
width: 150,
|
||||||
|
templet: function (data) {
|
||||||
|
return data.first_cat_name + "【" + data.first_cat_id + "】";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'second_cat_id',
|
||||||
|
title: '二级类目',
|
||||||
|
sort: false,
|
||||||
|
width: 150,
|
||||||
|
templet: function (data) {
|
||||||
|
return data.second_cat_name + "【" + data.second_cat_id + "】";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'third_cat_id',
|
||||||
|
title: '类目',
|
||||||
|
sort: false,
|
||||||
|
width: 250,
|
||||||
|
templet: function (data) {
|
||||||
|
return data.third_cat_name + "【" + data.third_cat_id + "】";
|
||||||
|
},
|
||||||
|
},
|
||||||
{ field: 'qualification', title: '类目资质', sort: false },
|
{ field: 'qualification', title: '类目资质', sort: false },
|
||||||
{
|
{
|
||||||
field: 'qualification_type', title: '类目资质类型', sort: false, width: 105, templet: function (data) {
|
field: 'qualification_type', title: '类目资质类型', sort: false, width: 105, templet: function (data) {
|
||||||
@@ -158,24 +183,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
field: 'second_cat_id',
|
|
||||||
title: '二级类目',
|
|
||||||
sort: false,
|
|
||||||
width: 150,
|
|
||||||
templet: function (data) {
|
|
||||||
return data.second_cat_name + "【" + data.second_cat_id + "】";
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'first_cat_id',
|
|
||||||
title: '一级类目',
|
|
||||||
sort: false,
|
|
||||||
width: 150,
|
|
||||||
templet: function (data) {
|
|
||||||
return data.first_cat_name + "【" + data.first_cat_id + "】";
|
|
||||||
},
|
|
||||||
},
|
|
||||||
//{ field: 'second_cat_name', title: '二级类目名称', sort: false, width: 105 },
|
//{ field: 'second_cat_name', title: '二级类目名称', sort: false, width: 105 },
|
||||||
//{ field: 'first_cat_id', title: '一级类目', sort: false, width: 65 },
|
//{ field: 'first_cat_id', title: '一级类目', sort: false, width: 65 },
|
||||||
//{ field: 'first_cat_name', title: '一级类目名称', sort: false, width: 105 },
|
//{ field: 'first_cat_name', title: '一级类目名称', sort: false, width: 105 },
|
||||||
|
|||||||
@@ -65,11 +65,12 @@ namespace CoreCms.Net.Web.WebApi.Controllers.PayNotify
|
|||||||
await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.WeChatPayNotice, JsonConvert.SerializeObject(notify));
|
await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.WeChatPayNotice, JsonConvert.SerializeObject(notify));
|
||||||
return WeChatPayNotifyResult.Success;
|
return WeChatPayNotifyResult.Success;
|
||||||
}
|
}
|
||||||
|
NLogUtil.WriteAll(LogLevel.Trace, LogType.Order, "微信支付成功回调", JsonConvert.SerializeObject(notify));
|
||||||
return NoContent();
|
return NoContent();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
NLogUtil.WriteAll(LogLevel.Trace, LogType.Refund, "微信支付成功回调", "统一下单支付结果通知", ex);
|
NLogUtil.WriteAll(LogLevel.Trace, LogType.Order, "微信支付成功回调", "统一下单支付结果通知", ex);
|
||||||
return NoContent();
|
return NoContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user