| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- {extend name="base"/}
- {block name="resources"}
- <link rel="stylesheet" type="text/css" href="__STATIC__/ext/layui/extend/cascader/cascader.css"/>
- <style>
- .contraction{display: inline-block;margin-right: 5px;}
- .contraction span{cursor: pointer;display: inline-block;width: 17px;height: 17px;text-align: center;line-height: 14px;/* border: 1px solid #e9e9e9; */user-select: none;/* background: #fff; */}
- .sku-list{overflow: hidden;padding: 0 45px;}
- .sku-list li{float: left;display: flex;padding: 10px;margin-right: 10px;margin-bottom: 10px;border: 1px solid #EFEFEF;width: 294px;height: 140px;align-items: center;}
- .sku-list li .img-wrap{vertical-align: middle;margin-right: 8px;width: 120px;height: 120px;text-align: center;line-height: 120px;}
- .sku-list li .img-wrap img{max-width: 100%;max-height: 100%;}
- /* .sku-list li .info-wrap span:first-of-type{font-weight: bold;} */
- .sku-list li .info-wrap span{display: -webkit-box;margin-bottom: 5px;overflow: hidden;text-overflow: ellipsis;white-space: normal;word-break: break-all;-webkit-box-orient: vertical;-webkit-line-clamp: 1;}
- .sku-list li .info-wrap span.sku-name{-webkit-line-clamp: 2;margin-bottom: 5px;}
- .sku-list li .info-wrap span:last-child{margin-bottom: 0;}
- .screen{margin-top: 15px;}
- .category-wrap {width:185px!important;display: inline-block}
- .el-input__inner {height:34px;line-height:34px;border-radius:2px;}
- </style>
- {/block}
- {block name="main"}
- <!-- 筛选面板 -->
- <div class="screen layui-collapse" lay-filter="selection_panel">
- <div class="layui-colla-item">
- <form class="layui-colla-content layui-form layui-show">
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label">商品名称</label>
- <div class="layui-input-inline">
- <input type="text" name="search_text" placeholder="请输入商品名称" autocomplete="off" class="layui-input">
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">商品分类</label>
- <div class="layui-input-inline category-wrap">
- <input type="text" autocomplete="off" show="false" class="layui-input select-category" placeholder="请选择" readonly="">
- <input type="hidden" name="category_id">
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">商品类型</label>
- <div class="layui-input-inline">
- <select name="goods_class" lay-filter="goods_class">
- <option value="">全部</option>
- <option value="1">实物商品</option>
- <option value="2">虚拟商品</option>
- {if $virtualcard_exit}<option value="3">电子卡密</option>{/if}
- </select>
- </div>
- </div>
- </div>
- <div class="form-row">
- <button class="layui-btn" lay-submit lay-filter="search">筛选</button>
- <button type="reset" class="layui-btn layui-btn-primary">重置</button>
- </div>
- </form>
- </div>
- </div>
- <!-- 列表 -->
- <table id="goods_list" lay-filter="goods_list"></table>
- <!-- 商品信息 -->
- <script type="text/html" id="goods_info">
- <div class="table-title">
- <div class="contraction" data-goods-id="{{d.goods_id}}" data-open="0">
- <span>+</span>
- </div>
- <div class="title-pic">
- <img layer-src="{{ns.img(d.goods_image.split(',')[0], 'big')}}" src="{{ns.img(d.goods_image.split(',')[0], 'small')}}"/>
- </div>
- <div class="title-content">
- <a href="javascript:;" class="multi-line-hiding text-color-sub" title="{{d.goods_name}}">{{d.goods_name}}</a>
- </div>
- </div>
- </script>
- <!-- 操作 -->
- <script type="text/html" id="operation">
- <div class="table-btn">
- <a class="layui-btn" lay-event="delete">删除</a>
- <a class="layui-btn" lay-event="recovery">恢复</a>
- </div>
- </script>
- <!-- 批量操作 -->
- <script type="text/html" id="toolbarOperation">
- <button class="layui-btn layui-btn-primary" lay-event="delete">批量删除</button>
- <button class="layui-btn layui-btn-primary" lay-event="recovery">恢复</button>
- </script>
- <!-- 批量操作 -->
- <script type="text/html" id="batchOperation">
- <button class="layui-btn layui-btn-primary" lay-event="delete">批量删除</button>
- <button class="layui-btn layui-btn-primary" lay-event="recovery">恢复</button>
- </script>
- <!-- SKU商品列表 -->
- <script type="text/html" id="skuList">
- <tr class="js-sku-list-{{d.index}}">
- <td></td>
- <td colspan="8">
- <ul class="sku-list">
- {{# for(var i=0;i<d.list.length;i++){ }}
- <li>
- <div class="img-wrap">
- <img src="{{ns.img(d.list[i].sku_image, 'small')}}">
- </div>
- <div class="info-wrap">
- <span class="sku-name">{{d.list[i].sku_name}}</span>
- <span class="price">价格:¥{{d.list[i].price}}</span>
- <span class="stock">库存:{{d.list[i].stock}}</span>
- <span class="sale_num">销量:{{d.list[i].sale_num}}</span>
- </div>
- </li>
- {{# } }}
- </ul>
- </td>
- </tr>
- </script>
- {/block}
- {block name="script"}
- <script>
- layui.extend({
- layCascader: '__STATIC__/ext/layui/extend/cascader/cascader'
- })
- var laytpl, layCascader;
- $(function () {
- $("body").on("click", ".contraction",function () {
- var goods_id = $(this).attr("data-goods-id");
- var open = $(this).attr("data-open");
- var tr = $(this).parent().parent().parent().parent();
- var index = tr.attr("data-index");
-
- if(open == 1){
- $(this).children("span").text("+");
- $(".js-sku-list-"+index).remove();
- }else{
- $(this).children("span").text("-");
- $.ajax({
- url: ns.url("shop/goods/getGoodsSkuList"),
- data: {goods_id:goods_id},
- dataType: 'JSON',
- type: 'POST',
- async: false,
- success: function (res) {
- var list = res.data;
- var sku_list = $("#skuList").html();
- var data ={
- list : list,
- index : index
- };
- laytpl(sku_list).render(data, function(html) {
- tr.after(html);
- });
-
- }
- });
- }
- $(this).attr("data-open",(open == 0 ? 1 : 0));
-
- })
- });
- layui.use(['form','laytpl', 'layCascader'], function () {
- var form = layui.form,
- repeat_flag = false; //防重复标识
- laytpl = layui.laytpl;
- layCascader = layui.layCascader;
- form.render();
- var table = new Table({
- elem: '#goods_list',
- url: ns.url("shop/goods/recycle"),
- cols: [
- [
- {
- type: 'checkbox',
- unresize: 'false',
- width: '3%'
- },
- {
- title: '商品信息',
- unresize: 'false',
- width: '39%',
- templet: '#goods_info'
- },
- {
- field: 'price',
- title: '价格',
- unresize: 'false',
- width: '6%',
- align: 'right',
- templet: function(data) {
- return '¥'+ data.price;
- }
- },
- {
- unresize: 'false',
- width: '2%'
- },
- {
- field: 'goods_stock',
- title: '库存',
- unresize: 'false',
- width: '8%'
- },
- {
- field: 'sale_num',
- title: '销量',
- unresize: 'false',
- width: '7%'
- },
- {
- title: '商品状态',
- unresize: 'false',
- width: '8%',
- templet: function (data) {
- var str = '';
- if (data.goods_state == 1) {
- str = '正常';
- } else if (data.goods_state == 0) {
- str = '下架';
- }
- return str;
- }
- },
- {
- title: '创建时间',
- unresize: 'false',
- width: '15%',
- templet: function (data) {
- return ns.time_to_date(data.create_time);
- }
- },
- {
- title: '操作',
- toolbar: '#operation',
- unresize: 'false',
- align : 'right'
- }
- ]
- ],
- toolbar: '#toolbarOperation',
- bottomToolbar: "#batchOperation"
- });
-
- /**
- * 监听工具栏操作
- */
- table.tool(function (obj) {
- var data = obj.data;
- switch (obj.event) {
- case 'delete':
- //删除
- deleteRecycleGoods(data.goods_id);
- break;
- case 'recovery':
- //恢复
- recoveryRecycle(data.goods_id);
- break;
- }
- });
-
- /**
- * 删除
- */
- function deleteRecycleGoods(goods_ids) {
- layer.confirm('确定要删除该商品吗?', function () {
- if (repeat_flag) return;
- repeat_flag = true;
-
- $.ajax({
- url: ns.url("shop/goods/deleteRecycleGoods"),
- data: {goods_ids : goods_ids.toString()},
- dataType: 'JSON',
- type: 'POST',
- success: function (res) {
- layer.msg(res.message);
- repeat_flag = false;
- if (res.code == 0) {
- table.reload();
- }
- }
- });
- });
- }
-
- //商品恢复
- function recoveryRecycle(goods_ids) {
-
- if (repeat_flag) return;
- repeat_flag = true;
-
- $.ajax({
- url: ns.url("shop/goods/recoveryRecycle"),
- data: {goods_ids: goods_ids.toString()},
- dataType: 'JSON',
- type: 'POST',
- success: function (res) {
- layer.msg(res.message);
- repeat_flag = false;
- if (res.code == 0) {
- table.reload();
- }
- }
- });
- }
-
- /**
- * 批量操作
- */
- table.bottomToolbar(function (obj) {
-
- if (obj.data.length < 1) {
- layer.msg('请选择要操作的数据');
- return;
- }
- var id_array = new Array();
- for (i in obj.data) id_array.push(obj.data[i].goods_id);
- switch (obj.event) {
- case "delete":
- deleteRecycleGoods(id_array.toString());
- break;
- case 'recovery':
- //恢复
- recoveryRecycle(id_array.toString());
- break;
- }
- });
-
- /**
- * 批量操作
- */
- table.toolbar(function (obj) {
-
- if (obj.data.length < 1) {
- layer.msg('请选择要操作的数据');
- return;
- }
- var id_array = new Array();
- for (i in obj.data) id_array.push(obj.data[i].goods_id);
- switch (obj.event) {
- case "delete":
- deleteRecycleGoods(id_array.toString());
- break;
- case 'recovery':
- //恢复
- recoveryRecycle(id_array.toString());
- break;
- }
- });
- // 搜索功能
- form.on('submit(search)', function (data) {
- table.reload({
- page: {
- curr: 1
- },
- where: data.field
- });
- return false;
- });
- $.ajax({
- url : ns.url("shop/goodscategory/lists"),
- dataType: 'JSON',
- type: 'POST',
- success: function(res) {
- var _cascader = layCascader({
- elem: '.select-category',
- options: res.data,
- props: {
- value: 'category_id',
- label: 'category_name',
- children: 'child_list'
- }
- });
- _cascader.changeEvent(function (value, node) {
- $('[name="category_id"]').val(value)
- });
- }
- })
- });
- </script>
- {/block}
|