【新增】新增微信扫码支付功能,对接PC端。

【新增】增加DTO类库,将逐步完善dto层。
【修复】修复【分类】切换后,切换回来未清零原始数据,导致更新数据重复的问题。
【调整】移除模板库功能,防止出现审核因为模板库页面存在而导致的审核失败。暂将模板库的代码存放到会员QQ群内,方便下载使用。
【调整】代码生成器【Repository.tpl】移除Cache手动增删改,【SqlSugarSetup】增加sqlsugar自动检测增删改后清理二级缓存。
【调整】后端新增秒杀独立组件,用于区分团购及秒杀的差异,首页新增秒杀组件。
【优化】重写首页所有组件样式及接口数据获取效率。
【优化】优化拼团,秒杀,团购,接龙数据获取逻辑,提升列表及详情页面数据获取效率。
【优化】调整拼团,秒杀,团购,服务商品推广海报为新式海报效果。增加服务商品推广海报。
【优化】清理h5相关代码判断,移除h5支付组件,提高响应速度。
【优化】移除小程序前端冗余代码。加快代码执行效率。
This commit is contained in:
大灰灰
2022-10-31 05:28:16 +08:00
parent 6ae59c6af7
commit 81dcf814d1
173 changed files with 4172 additions and 3408 deletions

View File

@@ -21,6 +21,7 @@ using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Services;
using CoreCms.Net.Utility.Helper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
@@ -74,7 +75,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
//获取数据
var list = await _coreCmsArticleTypeServices.QueryListByClauseAsync(p => p.id > 0, p => p.sort,
OrderByType.Desc);
OrderByType.Desc, true, true);
//返回数据
jm.data = list;
jm.code = 0;
@@ -132,12 +133,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
[Description("创建提交")]
public async Task<AdminUiCallBack> DoCreate([FromBody] CoreCmsArticleType entity)
{
var jm = new AdminUiCallBack();
var bl = await _coreCmsArticleTypeServices.InsertAsync(entity) > 0;
jm.code = bl ? 0 : 1;
jm.msg = (bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure);
var jm = await _coreCmsArticleTypeServices.InsertAsync(entity);
return jm;
}
#endregion
@@ -194,15 +190,13 @@ namespace CoreCms.Net.Web.Admin.Controllers
return jm;
}
//事物处理过程开始
oldModel.id = entity.id;
//oldModel.id = entity.id;
oldModel.name = entity.name;
oldModel.parentId = entity.parentId;
oldModel.sort = entity.sort;
//事物处理过程结束
var bl = await _coreCmsArticleTypeServices.UpdateAsync(oldModel);
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
jm = await _coreCmsArticleTypeServices.UpdateAsync(oldModel);
return jm;
}
@@ -240,9 +234,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
return jm;
}
var bl = await _coreCmsArticleTypeServices.DeleteByIdAsync(entity.id);
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
jm = await _coreCmsArticleTypeServices.DeleteByIdAsync(entity.id);
return jm;
}

View File

@@ -1142,10 +1142,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
var jm = new AdminUiCallBack();
var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
var where = PredicateBuilder.True<CoreCmsPromotion>();
var dt = DateTime.Now;
where = where.And(p => p.isEnable == true && p.isDel == false && p.startTime < dt && p.endTime > dt && p.type == (int)GlobalEnumVars.PromotionType.Seckill);
where = where.And(p => p.isEnable == true && p.isDel == false && p.startTime < dt && p.endTime > dt && p.type == id);
//促销名称 nvarchar
var name = Request.Form["name"].FirstOrDefault();

View File

@@ -16,7 +16,7 @@
"AppConfig": {
"AppUrl": "https://admin.test.pro.coreshop.cn/", //后端管理地址
"AppInterFaceUrl": "https://api.test.pro.coreshop.cn/", //接口请求地址
"AppVersion": "CoreShopProfessional v0.6.2"
"AppVersion": "CoreShopProfessional v0.6.4"
},
//redis为必须启动项请保持redis为正常可用
"RedisConfig": {

View File

@@ -1045,7 +1045,8 @@ template {
#selectGoods li .icon-delete:hover {
color: #000;
}
#selectGroupPurchaseGoods li {
#selectGroupPurchaseGoods li,
#selectSeckillGoods li {
float: left;
margin: 10px;
height: 100px;
@@ -1055,23 +1056,27 @@ template {
border-radius: 3px;
cursor: move;
}
#selectGroupPurchaseGoods li .left {
#selectGroupPurchaseGoods li .left,
#selectSeckillGoods li .left {
float: left;
width: 170px;
height: 90px;
}
#selectGroupPurchaseGoods li .left img {
#selectGroupPurchaseGoods li .left img,
#selectSeckillGoods li .left img {
width: 170px;
height: 90px;
object-fit: cover;
}
#selectGroupPurchaseGoods li .right {
#selectGroupPurchaseGoods li .right,
#selectSeckillGoods li .right {
float: left;
width: calc(100% - 180px);
height: 90px;
margin-left: 10px;
}
#selectGroupPurchaseGoods li .icon-delete {
#selectGroupPurchaseGoods li .icon-delete,
#selectSeckillGoods li .icon-delete {
position: absolute;
top: -6px;
right: -6px;
@@ -1082,7 +1087,8 @@ template {
transition: background-color 0.3s ease-out, border-color 0.3s ease-out;
-webkit-transition: background-color 0.3s ease-out, border-color 0.3s ease-out;
}
#selectGroupPurchaseGoods li .icon-delete:hover {
#selectGroupPurchaseGoods li .icon-delete:hover,
#selectSeckillGoods li .icon-delete:hover {
color: #000;
}
.divider {

View File

@@ -289,7 +289,7 @@ template { display: none; }
}
}
}
#selectGroupPurchaseGoods {
#selectGroupPurchaseGoods, #selectSeckillGoods {
li { float: left; margin: 10px; height: 100px; width: calc(100% - 20px); background: #f7fafc; position: relative; border-radius: 3px; cursor: move;
.left { float: left; width: 170px; height: 90px;
img { width: 170px; height: 90px; object-fit: cover; }

File diff suppressed because one or more lines are too long

View File

@@ -296,9 +296,30 @@ var allWidget = {
},
{
"type": "groupPurchase",
"name": "团购秒杀",
"name": "团购",
"value": {
"title": '活动名称',
"title": '团购活动名称',
"limit": '10',
"list": [
{
"image": "/static/images/common/empty-banner.png",
"name": '',
"price": ''
},
{
"image": "/static/images/common/empty-banner.png",
"name": '',
"price": ''
},
]
},
"icon": "icon-tuangou"
},
{
"type": "seckill",
"name": "秒杀",
"value": {
"title": '秒杀活动名称',
"limit": '10',
"list": [
{
@@ -780,7 +801,10 @@ Vue.component('layout-config', {
return '商品选项卡'
break;
case 'groupPurchase':
return '团购秒杀'
return '团购'
break;
case 'seckill':
return '秒杀'
break;
case 'pinTuan':
return '拼团'
@@ -1202,7 +1226,7 @@ Vue.component('layout-config', {
var that = this;
layui.use(['form', 'table'], function () {
layui.admin.popup({
title: '团购秒杀列表',
title: '团购列表',
area: ['1200px', '90%'],
id: 'LAY-app-CoreCmsCommon-getGroupIds',
success: function (layero, index) {
@@ -1218,9 +1242,36 @@ Vue.component('layout-config', {
for (let i in ids) {
arr.push(ids[i]);
}
console.log(arr);
that.$set(that.selectWg.value, 'list', arr)
layer.close(index);
});
});
}
});
});
},
selectSeckillGoods: function () {
var that = this;
layui.use(['form', 'table'], function () {
layui.admin.popup({
title: '秒杀列表',
area: ['1200px', '90%'],
id: 'LAY-app-CoreCmsCommon-getSeckillIds',
success: function (layero, index) {
layui.view(this.id).render('common/getSeckillIds', null).done(function () {
layui.form.on('submit(LAY-app-CoreCmsCommon-GetSeckillIds-submit)',
function (data) {
//判断个数是否满足
if (Object.getOwnPropertyNames(ids).length > that.maxSelectGoods) {
layer.msg("最多只能选择" + that.maxSelectGoods + "个");
return false;
}
var arr = []
for (let i in ids) {
arr.push(ids[i]);
}
console.log(arr);
that.$set(that.selectWg.value, 'list', arr)
layer.close(index);
});

View File

@@ -12,7 +12,7 @@ layui.define(['laytpl', 'layer', 'element', 'util'], function (exports) {
, pageTabs: false //是否开启页面选项卡功能。单页版不推荐开启
, name: '核心商城系统'
, version: 'CoreShopProfessional v0.6.2'
, version: '0.6.4'
, tableName: 'CoreCms' //本地存储表名
, MOD_NAME: 'admin' //模块事件名

View File

@@ -1,2 +1,2 @@
/** layuiAdmin.pro-v1.7.0 LPPL License */
; layui.extend({ setter: "config", admin: "lib/admin", view: "lib/view", breadcrumb: 'controller/breadcrumb' }).define(["setter", "admin", "breadcrumb"],function(e){var a=layui.setter,n=layui.element,i=layui.admin,t=i.tabsPage,l=layui.view,r=function(){var e=layui.router(),o=e.path,y=i.correctRouter(e.path.join("/"));o.length||(o=[""]),""===o[o.length-1]&&(o[o.length-1]=a.entry);var h=function(e){r.haveInit&&d(".layui-layer").each(function(){var e=d(this),a=e.attr("times");e.hasClass("layui-layim")||layer.close(a)}),r.haveInit=!0,d(s).scrollTop(0),delete t.type};return"tab"===t.type&&("/"!==y||"/"===y&&i.tabsBody().html())?(i.tabsBodyChange(t.index),h(t.type)):(l().render(o.join("/")).then(function(l){var r,o=d("#LAY_app_tabsheader>li");o.each(function(e){var a=d(this),n=a.attr("lay-id");n===y&&(r=!0,t.index=e)}),a.pageTabs&&"/"!==y&&(r||(d(s).append('<div class="layadmin-tabsbody-item layui-show"></div>'),t.index=o.length,n.tabAdd(u,{title:"<span>"+(l.title||"新标签页")+"</span>",id:y,attr:e.href}))),this.container=i.tabsBody(t.index),a.pageTabs||this.container.scrollTop(0),n.tabChange(u,y),i.tabsBodyChange(t.index)}).done(function(){layui.use("common",layui.cache.callback.common),c.on("resize",layui.data.resize),n.render("breadcrumb","breadcrumb"),i.tabsBody(t.index).on("scroll",function(){var e=d(this),a=d(".layui-laydate"),n=d(".layui-layer")[0];a[0]&&(a.each(function(){var e=d(this);e.hasClass("layui-laydate-static")||e.remove()}),e.find("input").blur()),n&&layer.closeAll("tips")})}),void h())},o=function(e){var n,t=layui.router(),o=l(a.container),s=i.correctRouter(t.path.join("/"));if(layui.each(a.indPage,function(e,a){if(s===a)return n=!0}),layui.config({base:a.base+"controller/"}),n||"/user/login"===s)o.render(t.path.join("/")).done(function(){i.pageType="alone"});else{if(a.interceptor){var u=layui.data(a.tableName);if(!u[a.request.tokenName])return location.hash="/user/login/redirect="+encodeURIComponent(s)}"console"===i.pageType?r():o.render("layout").done(function(){r(),layui.element.render(),i.screen()<2&&i.sideFlexible(),i.pageType="console"})}},s="#LAY_app_body",u="layadmin-layout-tabs",d=layui.$,c=d(window);layui.link(a.base+"style/admin.css?v="+(i.v+"-1"),function(){o()},"layuiAdmin"),window.onhashchange=function(){o(),layui.event.call(this,a.MOD_NAME,"hash({*})",layui.router())},layui.each(a.extend,function(e,n){var i={},t=a.extend.constructor===Array;i[t?n:e]="{/}"+a.base+"lib/extend/"+n,layui.extend(i)}),e("index",{render:r})});
; layui.extend({ setter: "config", admin: "lib/admin", view: "lib/view", breadcrumb: 'controller/breadcrumb' }).define(["setter", "admin", "breadcrumb"],function(e){console.log(`\n %c \u6838\u5fc3\u5546\u57ce\u7cfb\u7edf\u0020\u0043\u006f\u0072\u0065\u0053\u0068\u006f\u0070 V${layui.setter.version} %c \u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0077\u0077\u0077\u002e\u0063\u006f\u0072\u0065\u0073\u0068\u006f\u0070\u002e\u0063\u006e\u002f \n\n`, 'color: #ffffff; background: #3c9cff; padding:5px 0;', 'color: #3c9cff;background: #f1f1f1; padding:5px 0;');var a=layui.setter,n=layui.element,i=layui.admin,t=i.tabsPage,l=layui.view,r=function(){var e=layui.router(),o=e.path,y=i.correctRouter(e.path.join("/"));o.length||(o=[""]),""===o[o.length-1]&&(o[o.length-1]=a.entry);var h=function(e){r.haveInit&&d(".layui-layer").each(function(){var e=d(this),a=e.attr("times");e.hasClass("layui-layim")||layer.close(a)}),r.haveInit=!0,d(s).scrollTop(0),delete t.type};return"tab"===t.type&&("/"!==y||"/"===y&&i.tabsBody().html())?(i.tabsBodyChange(t.index),h(t.type)):(l().render(o.join("/")).then(function(l){var r,o=d("#LAY_app_tabsheader>li");o.each(function(e){var a=d(this),n=a.attr("lay-id");n===y&&(r=!0,t.index=e)}),a.pageTabs&&"/"!==y&&(r||(d(s).append('<div class="layadmin-tabsbody-item layui-show"></div>'),t.index=o.length,n.tabAdd(u,{title:"<span>"+(l.title||"新标签页")+"</span>",id:y,attr:e.href}))),this.container=i.tabsBody(t.index),a.pageTabs||this.container.scrollTop(0),n.tabChange(u,y),i.tabsBodyChange(t.index)}).done(function(){layui.use("common",layui.cache.callback.common),c.on("resize",layui.data.resize),n.render("breadcrumb","breadcrumb"),i.tabsBody(t.index).on("scroll",function(){var e=d(this),a=d(".layui-laydate"),n=d(".layui-layer")[0];a[0]&&(a.each(function(){var e=d(this);e.hasClass("layui-laydate-static")||e.remove()}),e.find("input").blur()),n&&layer.closeAll("tips")})}),void h())},o=function(e){var n,t=layui.router(),o=l(a.container),s=i.correctRouter(t.path.join("/"));if(layui.each(a.indPage,function(e,a){if(s===a)return n=!0}),layui.config({base:a.base+"controller/"}),n||"/user/login"===s)o.render(t.path.join("/")).done(function(){i.pageType="alone"});else{if(a.interceptor){var u=layui.data(a.tableName);if(!u[a.request.tokenName])return location.hash="/user/login/redirect="+encodeURIComponent(s)}"console"===i.pageType?r():o.render("layout").done(function(){r(),layui.element.render(),i.screen()<2&&i.sideFlexible(),i.pageType="console"})}},s="#LAY_app_body",u="layadmin-layout-tabs",d=layui.$,c=d(window);layui.link(a.base+"style/admin.css?v="+(i.v+"-1"),function(){o()},"layuiAdmin"),window.onhashchange=function(){o(),layui.event.call(this,a.MOD_NAME,"hash({*})",layui.router())},layui.each(a.extend,function(e,n){var i={},t=a.extend.constructor===Array;i[t?n:e]="{/}"+a.base+"lib/extend/"+n,layui.extend(i)}),e("index",{render:r})});

View File

@@ -61,7 +61,7 @@
method: 'POST',
toolbar: '#LAY-app-getGroupIds-toolbar',
defaultToolbar: null,
where: { types: 3 },
where: { id: 3 },
height: 'full-260',//无面包屑127,搜索框189,1行62
page: true,
limit: 30,
@@ -70,8 +70,8 @@
cols: [
[
{ type: "checkbox", fixed: "left" },
{ field: 'id', title: '', width: 60, sort: false },
{ field: 'name', title: '团购(秒杀)名称', sort: false },
{ field: 'id', title: '序列', width: 60, sort: false },
{ field: 'name', title: '团购名称', sort: false },
{ field: 'sort', title: '权重', sort: false, width: 105 },
]
],

View File

@@ -0,0 +1,132 @@
<script type="text/html" template lay-done="layui.data.done(d);">
</script>
<script type="text/html" id="LAY-app-GetSeckillIds-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="name" id="name" placeholder="请输入秒杀名称" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsPromotion-search"><i class="layui-icon layui-icon-search"></i></button>
</div>
<div class="layui-inline"><div class="layui-form-mid">您选择了:<span id="tagGroupsNum">0</span></div></div>
<button class="layui-btn layui-btn-sm float-right" lay-submit lay-filter="LAY-app-CoreCmsCommon-GetSeckillIds-submit" style="float: right"><i class="layui-icon layui-icon-add-1"></i></button>
</div>
</div>
</script>
<div class="noDefaultToolbar">
<table id="LAY-app-CoreCmsPromotion-tableBox" lay-filter="LAY-app-CoreCmsPromotion-tableBox"></table>
</div>
<script>
var ids = {};
var table_data = new Array();
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', '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-CoreCmsPromotion-search)',
function (data) {
var field = data.field;
searchwhere = field;
//执行重载
table.reloadData('LAY-app-CoreCmsPromotion-tableBox', { where: field });
});
//数据绑定
table.render({
elem: '#LAY-app-CoreCmsPromotion-tableBox',
url: layui.setter.apiUrl + 'Api/Tools/TagPromotions',
method: 'POST',
toolbar: '#LAY-app-GetSeckillIds-toolbar',
defaultToolbar: null,
where: { id: 4 },
height: 'full-260',//无面包屑127,搜索框189,1行62
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: 'name', title: '秒杀名称', sort: false },
{ field: 'sort', title: '权重', sort: false, width: 105 },
]
],
done: function (res, curr, count) {
//数据表格加载完成时调用此函数
//如果是异步请求数据方式res即为你接口返回的信息。
//如果是直接赋值的方式res即为{data: [], count: 99} data为当前页数据、count为数据总长度
//设置全部数据到全局变量
table_data = res.data;
//在缓存中找到id ,然后设置data表格中的选中状态
//循环所有数据找出对应关系设置checkbox选中状态
for (var i = 0; i < res.data.length; i++) {
if (ids[res.data[i].id]) {
//这里才是真正的有效勾选
res.data[i]["LAY_CHECKED"] = 'true';
//找到对应数据改变勾选样式,呈现出选中效果
var index = res.data[i]['LAY_TABLE_INDEX'];
$('#LAY-app-CoreCmsPromotion-tableBox + div .layui-table-body tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
$('#LAY-app-CoreCmsPromotion-tableBox + div .layui-table-body tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
}
}
//设置全选checkbox的选中状态只有改变LAY_CHECKED的值 table.checkStatus才能抓取到选中的状态
var checkStatus = layui.table.checkStatus('LAY-app-CoreCmsPromotion-tableBox');
if (checkStatus.isAll) {
$('#LAY-app-CoreCmsPromotion-tableBox + div .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', true);
$('#LAY-app-CoreCmsPromotion-tableBox + div .layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass('layui-form-checked');
}
}
});
//监听表格复选框选择
layui.table.on('checkbox(LAY-app-CoreCmsPromotion-tableBox)', function (obj) {
if (obj.checked) {
if (obj.type == 'one') {
ids[obj.data.id] = obj.data;
} else {
for (var i = 0; i < table_data.length; i++) {
ids[table_data[i].id] = table_data[i];
}
}
//the_val[obj.data.id] = obj.data;
} else {
if (obj.type == 'one') {
delete ids[obj.data.id];
} else {
for (var i = 0; i < table_data.length; i++) {
delete ids[table_data[i].id];
}
}
}
$('#tagGroupsNum').html(Object.getOwnPropertyNames(ids).length);
});
});
};
</script>

View File

@@ -225,7 +225,7 @@
</div>
</div>
</div>
<!-- 团购秒杀 -->
<!-- 团购 -->
<div v-if="item.type === 'groupPurchase'" class="drag clearfix lay-goods slide group">
<div class="goods-head">
<div>{{item.value.title}}</div>
@@ -248,6 +248,29 @@
</div>
</div>
</div>
<!-- 秒杀 -->
<div v-if="item.type === 'seckill'" class="drag clearfix lay-goods slide group">
<div class="goods-head">
<div>{{item.value.title}}</div>
</div>
<div class="group-item" v-for="(goods,key) in item.value.list" :key="key">
<div class="group-image">
<img src="/static/images/common/empty-banner.png" alt="">
</div>
<div class="group-detail">
<p class="group-name twolist-hidden">
{{goods.name||'此处显示商品名称'}}
</p>
<p class="group-price">{{goods.price||'¥99.00'}}</p>
<p class="group-time">
<span>剩余:</span><span class="time">21</span>:<span class="time">30</span>:<span class="time">45</span>
</p>
<span class="buy-icon">
<img src="/static/images/common/ic-car.png" alt="">
</span>
</div>
</div>
</div>
<!-- 拼团 -->
<div v-if="item.type === 'pinTuan'" class="drag clearfix lay-goods slide group">
<div class="goods-head">
@@ -684,7 +707,7 @@
</div>
</div>
</template>
<!-- 团购秒杀 -->
<!-- 团购 -->
<template v-if="selectWg.type=='groupPurchase'">
<div>
<div class="select_seller_goods_box">
@@ -718,7 +741,46 @@
</el-form-item>
<div class="pl25">
<p class="layout-tip">
团购秒杀数据请到 促销管理 - <a href="javascript:;" lay-href="/promotion/group/">团购秒杀列表</a>中管理
团购数据请到 促销管理 - <a href="javascript:;" lay-href="/promotion/group/">团购秒杀列表</a>中管理
</p>
</div>
</div>
</template>
<!-- 秒杀 -->
<template v-if="selectWg.type=='seckill'">
<div>
<div class="select_seller_goods_box">
<input type="hidden" name="params[goodsId]" value="">
<ul id="selectSeckillGoods" class="sellect_seller_goods_list clearfix">
<draggable element="ul" :list="selectWg.value.list" :options="{group:{ name:'selectGoodsList'}, ghostClass: 'ghost',animation: 150}">
<li v-for="(goods,key) in selectWg.value.list" :key="key">
<i class="layui-icon layui-icon-close-fill icon-delete" @click="handleDeleteGoods(key)"></i>
<!--<img :src="goods.image" alt="">-->
<div class="left">
<img src="/static/images/common/empty-banner.png" alt="">
</div>
<div class="right">
<p>{{goods.name}}</p>
</div>
</li>
</draggable>
</ul>
<div class="addImg" @click="selectSeckillGoods">
<i class="iconfontCustom icon-icon-test"></i>
<span>选择商品</span>
</div>
</div>
<hr class="divider">
</hr>
<el-form-item label="商品组名称">
<input type="text" v-model="selectWg.value.title" class="selectLinkVal">
</el-form-item>
<el-form-item label="显示数量">
<input type="number" v-model.number="selectWg.value.limit" min="1" class="number-input">
</el-form-item>
<div class="pl25">
<p class="layout-tip">
秒杀数据请到 促销管理 - <a href="javascript:;" lay-href="/promotion/group/">团购秒杀列表</a>中管理
</p>
</div>
</div>