|
@@ -9,33 +9,30 @@
|
|
|
<form class="layui-form layui-card" action="{:request()->url()}" data-auto="true" method="post" autocomplete="off">
|
|
|
<div class="layui-card-body">
|
|
|
{notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
|
|
|
- <input type='hidden' value='{$category_list_json}' id='category_list_json'>
|
|
|
|
|
|
<div class="layui-form-item">
|
|
|
<label class="layui-form-label color-green font-w7">商品分类</label>
|
|
|
<div class="layui-input-block">
|
|
|
<div class="layui-input-inline">
|
|
|
- <select class="layui-select" name="goods_category_first" id="c-goods_category_first"
|
|
|
- lay-filter="goods_category_first" lay-search>
|
|
|
- <option value="">请选择</option>
|
|
|
+ <select class="layui-select" name="first_classify" id="first_classify" lay-filter="first_classify" lay-search>
|
|
|
+ <option selected data-first_key="-1" value="0">请选择</option>
|
|
|
{foreach $category_list as $kk=>$vv}
|
|
|
- {if isset_full_check($vo,'goods_category_first',$vv.id)}
|
|
|
- <option selected value="{$vv.id}">{$vv.name}</option>
|
|
|
+ {if isset_full_check($vo,'first_classify',$vv.id)}
|
|
|
+ <option selected data-first_key="{$kk}" value="{$vv.id}">{$vv.name}</option>
|
|
|
{else}
|
|
|
- <option value="{$vv.id}">{$vv.name}</option>
|
|
|
+ <option data-first_key="{$kk}" value="{$vv.id}">{$vv.name}</option>
|
|
|
{/if}
|
|
|
{/foreach}
|
|
|
</select>
|
|
|
</div>
|
|
|
- <div class="layui-input-inline c-goods_category_id">
|
|
|
- <select class="layui-select" name="goods_category_id" id="c-goods_category_id" lay-filter="goods_category_id">
|
|
|
- <option value="">请选择</option>
|
|
|
- </select>
|
|
|
- <div id="c-goods_category_id_layui"></div>
|
|
|
+ <div class="layui-input-inline">
|
|
|
+ <select class="layui-select" name="second_classify" id="second_classify" lay-filter="second_classify" lay-search></select>
|
|
|
</div>
|
|
|
- <p class="help-block"></p>
|
|
|
+ <input type="hidden" id="first" value="{$vo.first_classify|default='-1'}"/>
|
|
|
+ <input type="hidden" id="second" value="{$vo.second_classify|default='-1'}"/>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
<div class="layui-form-item">
|
|
|
<label class="layui-form-label color-green font-w7">商品编号</label>
|
|
|
<div class="layui-input-block">
|
|
@@ -64,6 +61,48 @@
|
|
|
<p class="help-block"></p>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <div class="layui-form-item">
|
|
|
+ <label class="layui-form-label color-green font-w7">商品规格</label>
|
|
|
+ <div class="layui-input-block"></div>
|
|
|
+ </div>
|
|
|
+ <div class="paramsData">
|
|
|
+ {notempty name='vo.goods_stock'}
|
|
|
+ {foreach name="vo.goods_stock" item="val" key="key"}
|
|
|
+ <div class="layui-form-item paramsItem{$key}">
|
|
|
+ <label class="layui-form-label"></label>
|
|
|
+ <div class="layui-input-block">
|
|
|
+ <div class="layui-input-inline" style="width: 50px">规格名称</div>
|
|
|
+ <div class="layui-input-inline">
|
|
|
+ <input type="text" name="goods_stock[{$key}][name]" placeholder="请输入规格名称"
|
|
|
+ value="{$val.name|default=''}" class="layui-input goods_stock_name" required>
|
|
|
+ </div>
|
|
|
+ <div class="layui-input-inline" style="width: 50px">库存数量</div>
|
|
|
+ <div class="layui-input-inline">
|
|
|
+ <input type="number" name="goods_stock[{$key}][stock]" placeholder="请输入库存数量"
|
|
|
+ value="{$val.stock|default=''}" class="layui-input goods_stock_stock" required>
|
|
|
+ </div>
|
|
|
+ <div class="layui-input-inline" style="width: 50px">冻结库存</div>
|
|
|
+ <div class="layui-input-inline">
|
|
|
+ <input type="number" placeholder="" value="{$val.freeze_stock|default=''}" class="layui-input layui-bg-gray goods_stock_freeze_stock" readonly>
|
|
|
+ </div>
|
|
|
+ <div class="layui-input-inline">
|
|
|
+ <button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="delParams('{$key}');">删除</button>
|
|
|
+ </div>
|
|
|
+ <input type="hidden" name="goods_stock[{$key}][id]" value="{$val.id|default=''}"
|
|
|
+ class="goods_stock_id">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ {/foreach}
|
|
|
+ {/notempty}
|
|
|
+ </div>
|
|
|
+ <div class="layui-form-item">
|
|
|
+ <label class="layui-form-label color-green font-w7"></label>
|
|
|
+ <div class="layui-input-block">
|
|
|
+ <button type="button" class="layui-btn layui-btn-sm layui-btn-primary" onclick="addParams();">+ 添加规格</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
</div>
|
|
|
<div class="hr-line-dashed"></div>
|
|
|
<div class="layui-form-item text-center">
|
|
@@ -79,42 +118,118 @@
|
|
|
{block name="style"}{/block}
|
|
|
{block name='script'}
|
|
|
<script>
|
|
|
- form.on('select(goods_category_first)', function(data){
|
|
|
- var value = data.value;
|
|
|
- var category_list_json = $.parseJSON($("#category_list_json").val());
|
|
|
- var category_id_json = '';
|
|
|
- if(value){
|
|
|
- $.each(category_list_json,function (index,element) {
|
|
|
- if(element.id == value){
|
|
|
- category_id_json = element.childlist;
|
|
|
+ // 商品分类联动 start
|
|
|
+ var sel_second = {:isset($vo['second_classify']) ? $vo['second_classify']:0};
|
|
|
+ var goods_spec = {:json_encode($category_list)};
|
|
|
+ first(1);
|
|
|
+ function first(source){
|
|
|
+ // 将其他选择框置空
|
|
|
+ var first_key = $("select[name='first_classify']").find("option:selected").data("first_key")
|
|
|
+ $("#first").val(first_key);
|
|
|
+ $("select[name='second_classify']").html('');
|
|
|
+ // 没有下级不继续
|
|
|
+ if(first_key == -1 || !("childlist" in goods_spec[first_key])){
|
|
|
+ $("#second").val(-1);
|
|
|
+ window.form.render();
|
|
|
+ return true;
|
|
|
+ }else{
|
|
|
+ var second_html = '<option data-second_key="-1" selected value="0">请选择分类</option>';
|
|
|
+ var to_each = goods_spec[first_key]['childlist'];
|
|
|
+ $.each(to_each,function (ck,cv) {
|
|
|
+ if(source == 1 && sel_second == cv.id){
|
|
|
+ second_html +='<option selected data-second_key="'+ck+'" value="'+cv.id+'">'+cv.name+'</option>';
|
|
|
+ $("#second").val(ck);
|
|
|
+ }else{
|
|
|
+ second_html +='<option data-second_key="'+ck+'" value="'+cv.id+'">'+cv.name+'</option>';
|
|
|
}
|
|
|
})
|
|
|
- if(category_id_json){
|
|
|
- var category_id_html = '';
|
|
|
- var category_id_html2 = '';
|
|
|
- $.each(category_id_json,function (index,element) {
|
|
|
- category_id_html += '<option value='+element.id+'>'+element.name+'</option>';
|
|
|
- category_id_html2 += '<dd lay-value='+element.id+' class="">'+element.name+'</dd>';
|
|
|
- })
|
|
|
- var html = '<select class="layui-select" name="goods_category_id" id="c-goods_category_id" lay-filter="goods_category_id">' +
|
|
|
- '<option value="">请选择</option>'+category_id_html+
|
|
|
- '</select>' +
|
|
|
- '<div class="layui-unselect layui-form-select">' +
|
|
|
- '<div class="layui-select-title">' +
|
|
|
- '<input type="text" placeholder="请选择" value="" readonly="" class="layui-input layui-unselect">' +
|
|
|
- '<i class="layui-edge"></i>' +
|
|
|
- '</div> ' +
|
|
|
- '<dl class="layui-anim layui-anim-upbit">'+category_id_html2+'</dl>' +
|
|
|
- '</div>';
|
|
|
- $('.c-goods_category_id').html('');
|
|
|
- $('.c-goods_category_id').append(html);
|
|
|
- form.render();
|
|
|
+ $("select[name='second_classify']").html(second_html);
|
|
|
+ second()
|
|
|
+ window.form.render();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ function second(){
|
|
|
+ var first_key = $("select[name='first_classify']").find("option:selected").data("first_key");
|
|
|
+ var second_key = $("select[name='second_classify']").find("option:selected").data("second_key");
|
|
|
+ // 将其他选择框置空
|
|
|
+ $("#second").val(second_key);
|
|
|
+ // 没有下级不继续
|
|
|
+ if(second_key == -1 || !("childlist" in goods_spec[first_key]['childlist'][second_key])){
|
|
|
+ $("#third").val(-1);
|
|
|
+ window.form.render();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ window.form.render();
|
|
|
+ }
|
|
|
+ // 一级分类监听
|
|
|
+ form.on('select(first_classify)', function(data){
|
|
|
+ var first_key = data.elem[data.elem.selectedIndex].dataset.first_key;
|
|
|
+ //与之前选择的一样不处理
|
|
|
+ if($("#first").val() == first_key){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ first(2);
|
|
|
+ })
|
|
|
+ // 二级分类监听
|
|
|
+ form.on('select(second_classify)', function(data){
|
|
|
+ var second_key = data.elem[data.elem.selectedIndex].dataset.second_key;
|
|
|
+ //与之前选择的一样不处理
|
|
|
+ if($("#second").val() == second_key){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ second()
|
|
|
+ })
|
|
|
+ // 商品分类end
|
|
|
+
|
|
|
+ // 商品规格 start
|
|
|
+ function addParams() {
|
|
|
+ var length = $('.paramsData').children().length;
|
|
|
+ var key = length;
|
|
|
+ var html = '<div class="layui-form-item paramsItem'+key+'"> ' +
|
|
|
+ '<label class="layui-form-label"></label> ' +
|
|
|
+ '<div class="layui-input-block"> ' +
|
|
|
+ '<div class="layui-input-inline" style="width: 50px">规格名称</div>' +
|
|
|
+ '<div class="layui-input-inline">' +
|
|
|
+ '<input type="text" name="goods_stock['+key+'][name]" placeholder="请输入规格名称" value="" class="layui-input goods_stock_name" required>'+
|
|
|
+ '</div> ' +
|
|
|
+ '<div class="layui-input-inline" style="width: 50px">库存数量</div>' +
|
|
|
+ '<div class="layui-input-inline paramsItemvalue paramsItemvalue'+key+'"> ' +
|
|
|
+ '<input type="number" name="goods_stock['+key+'][stock]" placeholder="请输入库存数量" value="" class="layui-input goods_stock_stock" required>' +
|
|
|
+ '</div>' +
|
|
|
+ '<div class="layui-input-inline" style="width: 50px">冻结库存</div>' +
|
|
|
+ '<div class="layui-input-inline">' +
|
|
|
+ '<input type="number" placeholder="" value="0" class="layui-input layui-bg-gray goods_stock_freeze_stock" readonly></div>' +
|
|
|
+ '<div class="layui-input-inline"> ' +
|
|
|
+ '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="delParams('+key+');">删除</button> ' +
|
|
|
+ '</div> ' +
|
|
|
+ '<input type="hidden" name="goods_stock['+key+'][id]" value="" class="goods_stock_id">'+
|
|
|
+ '</div> ' +
|
|
|
+ '</div>';
|
|
|
+ $(".paramsData").append(html);
|
|
|
+ form.render();
|
|
|
+ }
|
|
|
+
|
|
|
+ function delParams(key) {
|
|
|
+ var length = $('.paramsData').children().length;
|
|
|
+ var count = length-1;
|
|
|
+ console.log(length);
|
|
|
+ if(key > 0 && key == count){
|
|
|
+ //删除的是最后一步(不是唯一一步)
|
|
|
+ $(".paramsItem" + key).remove();
|
|
|
+ } else{
|
|
|
+ //删除的是中间的一步,所有步骤序号重新排列
|
|
|
+ $(".paramsItem" + key).remove();
|
|
|
+ for(var i=key;i < length;i++){
|
|
|
+ var ii = i-1;
|
|
|
+ $(".paramsData .layui-form-item").eq(ii).attr("class","layui-form-item paramsItem"+ii);
|
|
|
+ $(".paramsData .layui-form-item").eq(ii).find(".goods_stock_name").attr('name',"goods_stock["+ii+"][name]");
|
|
|
+ $(".paramsData .layui-form-item").eq(ii).find(".goods_stock_stock").attr('name',"goods_stock["+ii+"][stock]");
|
|
|
+ $(".paramsData .layui-form-item").eq(ii).find(".goods_stock_id").attr('name',"goods_stock["+ii+"][id]");
|
|
|
+ $(".paramsData .layui-form-item").eq(ii).find(".layui-btn-danger").attr("onclick","delParams("+ii+");");
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
|
|
|
- $(function(){
|
|
|
- console.log('121111111111111111111');
|
|
|
- })
|
|
|
+ // 商品规格 end
|
|
|
</script>
|
|
|
{/block}
|