229 lines
6.4 KiB
HTML
229 lines
6.4 KiB
HTML
{extend name="app/shop/view/base.html"/}
|
|
{block name="resources"}
|
|
<link rel="stylesheet" type="text/css" href="STATIC_EXT/searchable_select/searchable_select.css" />
|
|
<link rel="stylesheet" href="STATIC_EXT/layui/extend/formSelects-v4.css" />
|
|
<link rel="stylesheet" type="text/css" href="__STATIC__/ext/layui/extend/cascader/cascader.css"/>
|
|
<link rel="stylesheet" href="__ADDON__/stock/site/css/goods_lists.css">
|
|
{/block}
|
|
{block name="main"}
|
|
<div class="main-wrap">
|
|
<div class="content_full">
|
|
<div class="screen layui-collapse margin-bot" lay-filter="selection_panel">
|
|
<div class="layui-colla-item">
|
|
<form class="layui-colla-content layui-form layui-show" lay-filter="order_list">
|
|
<div class="layui-form-item">
|
|
<div class="classification">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">商品名称/编码:</label>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="search_text" autocomplete="off" placeholder="请输入商品名称/编码" 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>
|
|
<div class="classification">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">库存:</label>
|
|
<div class="layui-input-inline">
|
|
<input type="number" name="min_stock" id="start_sale" lay-verify="int" min="0" placeholder="最低库存" class="layui-input" autocomplete="off">
|
|
</div>
|
|
<div class="layui-form-mid">-</div>
|
|
<div class="layui-input-inline">
|
|
<input type="number" name="max_stock" id="end_sale" lay-verify="int" min="0" placeholder="最高库存" class="layui-input" autocomplete="off">
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">门店:</label>
|
|
<div class="layui-input-inline">
|
|
<select name="store_id" lay-filter="store_list" class="len-mid">
|
|
{foreach $store_list as $store_k => $store_v}
|
|
<option value="{$store_v.store_id}">{$store_v.store_name}</option>
|
|
{/foreach}
|
|
</select>
|
|
</div>
|
|
</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>
|
|
|
|
<!-- 批量操作时判断是否为当前选项,防止重复点击 -->
|
|
<input type="hidden" name="openSwitch" lay-type="grouping" value="">
|
|
</div>
|
|
|
|
<div class="layui-tab table-tab" lay-filter="promition_list_tab">
|
|
<div class="table-tab-list">
|
|
<table id="team_list" lay-filter="team_list"></table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script type="text/html" id="goods_detail">
|
|
<div class='table-title'>
|
|
<div class='title-pic'>
|
|
<img layer-src src="{{ns.img(d.sku_image, 'small')}}">
|
|
</div>
|
|
<div class='title-content'>
|
|
<p class="layui-elip">{{d.goods_name}}</p>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
|
|
<script type="text/html" id="operation">
|
|
<div class="table-btn">
|
|
<a class="layui-btn" lay-event="records">查看记录</a>
|
|
</div>
|
|
</script>
|
|
{/block}
|
|
{block name="script"}
|
|
<script src="STATIC_EXT/searchable_select/searchable_select.js"></script>
|
|
<script>
|
|
// layui.config({
|
|
// base: 'STATIC_EXT/layui/extend/' //此处路径请自行处理, 可以使用绝对路径
|
|
// }).extend({
|
|
// formSelects: 'formSelects-v4'
|
|
// });
|
|
|
|
//全局定义一次, 加载formSelects
|
|
layui.extend({
|
|
formSelects: 'STATIC_EXT/layui/extend/formSelects-v4',
|
|
layCascader: '__STATIC__/ext/layui/extend/cascader/cascader'
|
|
});
|
|
</script>
|
|
<script>
|
|
var table,form,layCascader;
|
|
var initStore = {$store_list[0]['store_id']} || "";
|
|
layui.use(['form', 'element','layCascader'], function() {
|
|
form = layui.form;
|
|
layCascader = layui.layCascader;
|
|
form.render();
|
|
|
|
table = new Table({
|
|
elem: '#team_list',
|
|
url: ns.url("stock://shop/stock/manage",{'store_id': initStore}),
|
|
cols: [
|
|
[{
|
|
field: 'sku_name',
|
|
title: '商品名称',
|
|
width: '20%',
|
|
templet: '#goods_detail'
|
|
},{
|
|
field: 'spec_name',
|
|
title: '规格',
|
|
width: '10%',
|
|
}, {
|
|
field: 'sku_no',
|
|
title: '编码',
|
|
width: '10%',
|
|
}, {
|
|
field: 'stock',
|
|
title: '销售库存',
|
|
width: '10%',
|
|
}, {
|
|
field: 'stock',
|
|
title: '实物库存',
|
|
width: '10%',
|
|
templet: function (data){
|
|
if(!data.real_stock){
|
|
return 0;
|
|
}
|
|
return data.real_stock;
|
|
}
|
|
}, {
|
|
field: 'cost_price',
|
|
title: '成本',
|
|
width: '10%',
|
|
}, {
|
|
field: 'create_time',
|
|
title: '添加时间',
|
|
width: '10%',
|
|
templet: function (data) {
|
|
return ns.time_to_date(data.create_time);
|
|
}
|
|
},
|
|
{
|
|
title: '操作',
|
|
width: '20%',
|
|
toolbar: '#operation',
|
|
align: 'right',
|
|
}
|
|
]
|
|
],
|
|
|
|
});
|
|
|
|
/**
|
|
* 监听工具栏操作
|
|
*/
|
|
table.tool(function (obj) {
|
|
var data = obj.data;
|
|
switch (obj.event) {
|
|
case 'records': //查看
|
|
window.open(ns.url("stock://shop/stock/records?sku_id=" + data.sku_id));
|
|
break;
|
|
}
|
|
});
|
|
|
|
//监听筛选事件
|
|
form.on('submit(search)', function (data) {
|
|
table.reload({
|
|
page: {
|
|
curr: 1
|
|
},
|
|
where: data.field
|
|
});
|
|
return false;
|
|
});
|
|
|
|
var goodsCategory = [];
|
|
fetchCategory('.select-category', function (value, node) {
|
|
$('[name="category_id"]').val(value)
|
|
});
|
|
|
|
/**
|
|
* 渲染分类选择
|
|
* @param elem
|
|
* @param callback
|
|
*/
|
|
function fetchCategory(elem, callback){
|
|
if (!goodsCategory.length) {
|
|
$.ajax({
|
|
url : ns.url("shop/goodscategory/lists"),
|
|
dataType: 'JSON',
|
|
type: 'POST',
|
|
async: false,
|
|
success: function(res) {
|
|
goodsCategory = res.data;
|
|
}
|
|
})
|
|
}
|
|
var _cascader = layCascader({
|
|
elem: elem,
|
|
options: goodsCategory,
|
|
props: {
|
|
value: 'category_id',
|
|
label: 'category_name',
|
|
children: 'child_list'
|
|
}
|
|
});
|
|
_cascader.changeEvent(function (value, node) {
|
|
typeof callback == 'function' && callback(value, node)
|
|
});
|
|
|
|
$("form").unbind().bind("reset", function(event){
|
|
_cascader.clearCheckedNodes()
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
{/block} |