作者 何书鹏
1 个管道 的构建 通过 耗费 1 秒

优惠券类型选择

... ... @@ -22,7 +22,7 @@ class Coupon extends Backend
{
parent::_initialize();
$this->model = new \app\admin\model\Coupon;
$this->view->assign("typeList", $this->model->getTypeList());
}
public function import()
... ...
... ... @@ -26,7 +26,8 @@ class Coupon extends Model
// 追加属性
protected $append = [
'expiretime_text',
'category_names'
'category_names',
'type_text'
];
... ... @@ -53,4 +54,16 @@ class Coupon extends Model
}
return '全场通用';
}
public function getTypeList()
{
return ['1' => __('全场通用'), '2' => __('指定分类')];
}
public function getTypeTextAttr($value, $data)
{
$value = $value ? $value : (isset($data['type']) ? $data['type'] : '');
$list = $this->getTypeList();
return isset($list[$value]) ? $list[$value] : '';
}
}
... ...
... ... @@ -19,9 +19,21 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('券类型')}:</label>
<div class="col-xs-12 col-sm-8">
<select id="c-type" data-rule="required" data-rule-type="2" class="form-control selectpicker" name="row[type]">
{foreach name="typeList" item="vo"}
<option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
{/foreach}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Category_ids')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-category_ids" data-rule="required" data-source="category/selectpage" data-params='{"custom[type]":"goods"}' data-multiple="true" class="form-control selectpage" name="row[category_ids]" type="text" value="">
<input id="c-category_ids" data-source="category/selectpage" data-params='{"custom[type]":"goods"}' data-multiple="true" class="form-control selectpage" name="row[category_ids]" type="text" value="">
</div>
</div>
<div class="form-group">
... ...
... ... @@ -19,9 +19,21 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('券类型')}:</label>
<div class="col-xs-12 col-sm-8">
<select id="c-type" data-rule="required" class="form-control selectpicker" name="row[type]">
{foreach name="typeList" item="vo"}
<option value="{$key}" {in name="key" value="$row.type"}selected{/in}>{$vo}</option>
{/foreach}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Category_ids')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-category_ids" data-rule="required" data-source="category/selectpage" data-params='{"custom[type]":"goods"}' data-multiple="true" class="form-control selectpage" name="row[category_ids]" type="text" value="{$row.category_ids|htmlentities}">
<input id="c-category_ids" data-source="category/selectpage" data-params='{"custom[type]":"goods"}' data-multiple="true" class="form-control selectpage" name="row[category_ids]" type="text" value="{$row.category_ids|htmlentities}">
</div>
</div>
<div class="form-group">
... ...
... ... @@ -319,7 +319,7 @@ class Cart extends Model
$filter[] = "find_in_set($val,category_ids)";
}
}
$where = implode(' or ',$filter)." or category_ids = '' or category_ids = 0";
$where = implode(' or ',$filter)." or category_ids = ''";
$coupon_id_arr = array_unique(
array_merge(
... ...
... ... @@ -48,6 +48,29 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
// 验证分类是否必选
$(document).on("change", "#c-type", function(){
category_ids();
})
function category_ids(){
var formGroup = $("#c-category_ids").parent().parent();
if($("#c-type").val() == '2'){
$("form[role=form]").validator("setField", "#c-category_ids", "required;");
if(formGroup.hasClass('form-group')){
formGroup.show();
}else{
formGroup.parent().show();
}
}else{
$("form[role=form]").validator("setField", "#c-category_ids", null);
$("#c-category_ids").val('');
if(formGroup.hasClass('form-group')){
formGroup.hide();
}else{
formGroup.parent().hide();
}
}
}category_ids();
}
}
};
... ...
... ... @@ -65,45 +65,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'backend/goods.spec']
Table.api.bindevent(table);
},
add: function () {
Controller.api.bindevent();
// 规格
var specMany = new GoodsSpec({
container: '.goods-spec-many'
});
Form.api.bindevent($("form[role=form]"), function(data, ret){
//如果我们需要在提交表单成功后做跳转,可以在此使用location.href="链接";进行跳转
Toastr.success("成功");
}, function(data, ret){
Toastr.error("失败");
}, function(success, error){
//bindevent的第三个参数为提交前的回调
//如果我们需要在表单提交前做一些数据处理,则可以在此方法处理
//注意如果我们需要阻止表单,可以在此使用return false;即可
//如果我们处理完成需要再次提交表单则可以使用submit提交,如下
//Form.api.submit(this, success, error);
var specType = $('select[name="row[spec_type]"]').val();
if (specType === '2') {
var isEmpty = specMany.isEmptySkuList();
isEmpty === true && Toastr.error('商品规格不能为空');
$('input[name="row[spec_many]"]').val(JSON.stringify(specMany.getData()));
return !isEmpty;
}
return true;
});
// 切换单/多规格
$('select[name="row[spec_type]"]').change(function (e) {
var $goodsSpecMany = $('.goods-spec-many')
, $goodsSpecSingle = $('.goods-spec-single');
if (e.currentTarget.value === '1') {
$goodsSpecMany.hide() && $goodsSpecSingle.show();
} else {
$goodsSpecMany.show() && $goodsSpecSingle.hide();
}
});
},
edit: function () {
Controller.api.bindevent();
setTimeout(function () {
$('select[name="row[spec_type]"]').trigger("change");
}, 100);
... ... @@ -111,41 +80,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'backend/goods.spec']
var specMany = new GoodsSpec({
container: '.goods-spec-many'
}, Config.specData);
Form.api.bindevent($("form[role=form]"), function(data, ret){
//如果我们需要在提交表单成功后做跳转,可以在此使用location.href="链接";进行跳转
Toastr.success("成功");
}, function(data, ret){
Toastr.error("失败");
}, function(success, error){
//bindevent的第三个参数为提交前的回调
//如果我们需要在表单提交前做一些数据处理,则可以在此方法处理
//注意如果我们需要阻止表单,可以在此使用return false;即可
//如果我们处理完成需要再次提交表单则可以使用submit提交,如下
//Form.api.submit(this, success, error);
var specType = $('select[name="row[spec_type]"]').val();
if (specType === '2') {
var isEmpty = specMany.isEmptySkuList();
isEmpty === true && Toastr.error('商品规格不能为空');
$('input[name="row[spec_many]"]').val(JSON.stringify(specMany.getData()));
return !isEmpty;
}
return true;
});
// 切换单/多规格
$('select[name="row[spec_type]"]').change(function (e) {
var $goodsSpecMany = $('.goods-spec-many')
, $goodsSpecSingle = $('.goods-spec-single');
if (e.currentTarget.value === '1') {
$goodsSpecMany.hide() && $goodsSpecSingle.show();
} else {
$goodsSpecMany.show() && $goodsSpecSingle.hide();
}
});
},
style: function () {
Controller.api.bindevent();
Form.api.bindevent($("form[role=form]"));
setTimeout(function () {
$("#c-style_template_id").trigger("change");
... ... @@ -264,7 +201,37 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'backend/goods.spec']
},
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
Form.api.bindevent($("form[role=form]"), function(data, ret){
//如果我们需要在提交表单成功后做跳转,可以在此使用location.href="链接";进行跳转
Toastr.success("成功");
}, function(data, ret){
Toastr.error("失败");
}, function(success, error){
//bindevent的第三个参数为提交前的回调
//如果我们需要在表单提交前做一些数据处理,则可以在此方法处理
//注意如果我们需要阻止表单,可以在此使用return false;即可
//如果我们处理完成需要再次提交表单则可以使用submit提交,如下
//Form.api.submit(this, success, error);
var specType = $('select[name="row[spec_type]"]').val();
if (specType === '2') {
var isEmpty = specMany.isEmptySkuList();
isEmpty === true && Toastr.error('商品规格不能为空');
$('input[name="row[spec_many]"]').val(JSON.stringify(specMany.getData()));
return !isEmpty;
}
return true;
});
// 切换单/多规格
$('select[name="row[spec_type]"]').change(function (e) {
var $goodsSpecMany = $('.goods-spec-many')
, $goodsSpecSingle = $('.goods-spec-single');
if (e.currentTarget.value === '1') {
$goodsSpecMany.hide() && $goodsSpecSingle.show();
} else {
$goodsSpecMany.show() && $goodsSpecSingle.hide();
}
});
}
}
};
... ...