Authored by 陶雨

新增优惠券界面

... ... @@ -44,6 +44,7 @@ components.prototype={
this.__dropDownRender();
this.__checkboxRadioRender();
this.__timeRender();
this.bind();
return this;
},
validate:function(){
... ... @@ -183,6 +184,28 @@ components.prototype={
}
});
},
bind: function() {
var that = this;
var cr = {};
$(":checkbox", that.el).add(":radio", that.el).change(function() {
var $this = $(this);
var id = $this.attr("name"),
value = $this.val();
cr[id] = [];
if ($this.is(":checkbox")) {
$(":checked[name=" + id + "]", that.el).each(function() {
cr[id].push($(this).val())
});
}
if ($this.is(":radio")) {
cr[id][0] = value;
}
$("#" + id, that.el).val(cr[id].join('|'));
});
that.__listen("bind");
},
__timeRender:function() {
/*时间插件初始化*/
var that = this;
... ...
... ... @@ -12,7 +12,7 @@ var couponTypes = ["A券", "B券", "公开券", "生日券", "免邮券"];
new common.dropDown({el: '#filter-dep'});
var ENUM={
status:{0:'待审核',1:'审核通过',2:'驳回',3:'过期',4:'作废'},//全部
status:{0:'待审核',1:'审核通过',2:'驳回','-1':'过期',3:'作废'},//全部
tips:{"0":0,"1":0,"2":0,"3":0,"4":0,"all":0}
}
... ... @@ -26,8 +26,8 @@ var t = new common.tab({
{name:"1",display:"已通过"},
{name:"0",display:"待审核"},
{name:"2",display:"已驳回"},
{name:"4",display:"已作废"},
{name:"3",display:"已过期"}
{name:"3",display:"已作废"},
{name:"-1",display:"已过期"}
]
}).init(ENUM.tips);
... ... @@ -81,16 +81,15 @@ var g = new common.grid({
}},
{display:"操作",render:function(item){
var HtmArr=[];
//限购码状态0:待审核 1:审核通过 2:驳回 3:过期 4:作废
//限购码状态0:待审核 1:审核通过 2:驳回 3:作废 -1:作废
HtmArr.push('<a href="/market/limitcode/info/'+ item.id+'" class="btn btn-info btn-xs">查看详情</a>');
if(item.status == 0){
HtmArr.push('<a class="btn btn-primary btn-xs apply-success" data-index="'+ item.__index+'" href="javascript:;">通过</a>');
HtmArr.push('<a class="btn btn-warning btn-xs apply-back" data-index="'+ item.__index+'" href="javascript:;">驳回</a>');
HtmArr.push('<a class="btn btn-danger btn-xs apply-cancel" data-index="'+ item.__index+'" href="javascript:;">作废</a>');
}else if(item.status==1){
HtmArr.push('<a class="btn btn-danger btn-xs apply-cancel" data-index="'+ item.__index+'" href="javascript:;">作废</a>');
HtmArr.push('<a class="btn btn-info btn-xs" data-index="'+ item.__index+'" href="/market/limitcode/edit/'+ item.id+'">编辑</a>');
}else if(item.status==2){
HtmArr = [];
HtmArr.push('<a class="btn btn-info btn-xs apply-modify" href="/market/limitcode/update/'+ item.id+'">修改</a>');
}
return HtmArr.join('');
... ...
... ... @@ -3,74 +3,38 @@
*/
var $ = require('jquery');
var common = require('../common/common');
var editBean = require('./partials/limitcode-edit-bean');
var couponBean = require('./partials/couponList-bean');
var e = new common.edit2("#basicForm");
var type = $("#basicForm").attr("role"),
action = $("#basicForm").data("action");
var isFirst = true;
var limitDateFromObj;
var limitDateToObj;
var startTimeObj;
var endTimeObj;
var Bll = {
__render:function() {
editBean.currTime = common.util.__dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss");
$("#basicForm").html(common.util.__template2($("#couponListAdd-template").html(), editBean));
$("#basicForm").html(common.util.__template2($("#couponListAdd-template").html(), couponBean));
e.init();
limitDateFromObj = $("#limitDateFrom").fdatepicker({
startTimeObj = $("#startTime").fdatepicker({
format: 'yyyy-mm-dd hh:ii:ss',
pickTime: true
}).data("datepicker");
limitDateToObj = $("#limitDateTo").fdatepicker({
endTimeObj = $("#endTime").fdatepicker({
format: 'yyyy-mm-dd hh:ii:ss',
pickTime: true
}).data("datepicker");
limitDateFromObj.setEndDate(editBean.limitDateTo);
if(editBean.limitDateFrom) {
limitDateToObj.setStartDate(editBean.currTime);
} else if(new Date(editBean.currTime).getTime() < new Date(editBean.limitDateFrom)){
limitDateToObj.setStartDate(editBean.limitDateFrom);
} else {
limitDateToObj.setStartDate(editBean.currTime);
}
if(type == "edit") {
$('input[name="skn_sku"]').prop('disabled', true);
$(".noEdit").prop("disabled", true);
$('input[name="userTypeLimit"]').prop('disabled', true);
if((new Date(editBean.limitDateFrom).getTime() <= new Date().getTime()) && isFirst) {
$("#limitDateFrom").prop("disabled", true);
}
isFirst = false;
}
},
__checkSkn:function(callback) {
var flag = false;
if(editBean.limitSkn) {
common.util.__ajax2({
async: false,
url: "/limitCode/checkSknValidity",
data: {
skn: editBean.limitSkn,
id: editBean.id
}
}, function (res) {
if (!res.data.isExist) {
flag = true;
common.util.__tip("SKN不存在");
} else if (res.data.isConflict) {
flag = true;
common.util.__tip("SKN与其他限购冲突");
} else if (res.data.isOnSales) {
flag = true;
common.util.__tip("SKN已上架,请先下架");
}
callback && callback(res);
}, function() {
flag = true;
common.util.__tip("网络请求异常");
});
}
return flag;
//if(type == "edit") {
// $('input[name="skn_sku"]').prop('disabled', true);
// $(".noEdit").prop("disabled", true);
// $('input[name="userTypeLimit"]').prop('disabled', true);
// if((new Date(editBean.limitDateFrom).getTime() <= new Date().getTime()) && isFirst) {
// $("#limitDateFrom").prop("disabled", true);
// }
// isFirst = false;
//}
new common.dropDown({el: '#filter-couponType'});
new common.dropDown({el: '#filter-department'});
}
};
... ... @@ -110,18 +74,9 @@ if(type != "add") {
$(document).on("change", ".observe", function () {
var $this = $(this);
var name = $this.data("field");
editBean = common.util.__buildobj(name, '.', editBean, function (obj, name) {
couponBean = common.util.__buildobj(name, '.', couponBean, function (obj, name) {
obj[name] = $this.val();
});
if($this.prop("id") == "limitDateFrom" && new Date($this.val()).getTime() ) {
if(new Date(editBean.currTime).getTime() > new Date(editBean.limitDateFrom)) {
limitDateToObj.setStartDate(editBean.currTime);
} else {
limitDateToObj.setStartDate(editBean.limitDateFrom);
}
//console.log(editBean.limitDateFrom);
}
//console.log(editBean);
});
... ... @@ -130,80 +85,17 @@ $(document).on("keyup", ".number", function() {
$(this).val($(this).val().replace(/\D/g, ''));
});
//单选框点击事件
$(document).on("click", ".limitProduct", function() {
editBean.limitCodeType = $(this).val();
$("#limitSkn").attr("required", !(editBean.limitCodeType == "N"));
Bll.__render();
//console.log(editBean);
});
$(document).on("click", ".delSku", function () {
var index = $(this).data("index");
editBean.skusInfo.splice(index, 1);
Bll.__render();
$(".addSku").attr("disabled", false);
});
$(document).on("click", ".addSku", function () {
editBean.skusInfo.push({
"sku": "",
"skuTimes": ""
});
Bll.__render();
});
$(document).on("blur", "#limitSkn", function() {
Bll.__checkSkn(function(res) {
if (res.data.skuList) {
editBean.skusInfo = [];
for (var i = 0; i < res.data.skuList.length; i++) {
editBean.skusInfo.push({
"sku": res.data.skuList[i],
"skuTimes": ""
});
}
Bll.__render();
$(".addSku").attr("disabled", false);
}
});
});
$(document).on("click","#save_brand", function() {
// 限购码状态0:待审核 1:审核通过 2:驳回 3:过期 4:作废
if(e.validate() && (type == "add" ? (!editBean.limitSkn || !Bll.__checkSkn()) : true)) {
if(editBean.limitCodeType == "U") {
for (var i in editBean.skusInfo) {
if(!editBean.skusInfo[i].skuTimes || editBean.skusInfo[i].skuTimes == "0") {
common.util.__tip("SKU数量不能为0");
return;
}
}
}
editBean.reqDepartment = editBean.reqDepartment.join("/");
editBean.creatorId = $("#auth_id").val();
editBean.creatorName = $("#auth_name").val();
if (editBean.status != 1) {
editBean.status = 0;
}
if(editBean.limitCodeType == "U") {
editBean.skus = "";
editBean.skuTimes = "";
for(var item in editBean.skusInfo) {
if(item != 0) {
editBean.skus+=";";
editBean.skuTimes+=";";
}
editBean.skus += editBean.skusInfo[item].sku;
editBean.skuTimes+=editBean.skusInfo[item].skuTimes;
}
}
console.log(couponBean);
if(e.validate()) {
//console.log(JSON.stringify(editBean));
common.util.__ajax({
url: action,
data: editBean
}, function (res) {
location.href = "/market/limitcode/index";
});
//common.util.__ajax({
// url: action,
// data: editBean
//}, function (res) {
// location.href = "/market/limitcode/index";
//});
}
return false;
});
\ No newline at end of file
... ...
/**
* Created by ty on 2016/5/24.
*/
var couponBean = {
id:"",
couponType:"",
couponName:"",
couponNum:"",
useNum:"",
department:"",
startTime:"",
endTime:"",
explains:"",
useLimitType:0,
useLimit:"",
couponAmount:"",
brandLimit:"",
sortLimit:"",
customType:""
};
module.exports = couponBean;
\ No newline at end of file
... ...
... ... @@ -743,6 +743,10 @@ exports.res = [
route: "/market/couponList/add",
method: "GET",
view: "pages/market/couponListAdd",
src: "/market/couponListAdd"
src: "/market/couponListAdd",
data: {
type: "add",
actions: ""
}
}
]
\ No newline at end of file
... ...
... ... @@ -31,6 +31,19 @@
<script type="text/template" id="couponListAdd-template">
<div class="panel panel-default">
<div class="form-group">
<label class="col-sm-2 control-label">类型 <span class="red">*</span></label>
<div class="col-sm-8">
<select id="filter-couponType" tabindex="-1" class="select2-offscreen brandBtn-group observe" value="[[couponType]]" data-field="couponType" required>
<option value="-1">优惠券类型</option>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">公开券</option>
<option value="4">生日券</option>
<option value="5">免邮券</option>
</select>
</div>
</div>
<div class="panel-heading">
<h4 class="panel-title">基本信息</h4>
</div><!-- panel-heading -->
... ... @@ -39,34 +52,40 @@
<div class="form-group">
<label class="col-sm-2 control-label">名称 <span class="red">*</span></label>
<div class="col-sm-8">
<input type="text" placeholder="名称建议30字以内" prompt="名称" class="form-control observe noEdit" data-field="name" required maxlength="30" value="[[name]]">
<input type="text" placeholder="名称建议30字以内" prompt="名称" class="form-control observe" data-field="couponName" required maxlength="30" value="[[couponName]]">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">数量<i class="red">*</i></label>
<div class="col-sm-8">
<input type="text" placeholder="数量" class="form-control observe noEdit number" data-field="limitTimes" required value="[[limitTimes]]">
<input type="text" placeholder="数量" class="form-control observe number" data-field="couponNum" required value="[[couponNum]]">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">申请部门</label>
<div class="col-sm-3">
<select value="[[reqDepartment[0] ]]" class="form-control observe noEdit" data-field="reqDepartment[0]">
<option value="零售部">零售部</option>
<option value="市场部">市场部</option>
<option value="会员部">会员部</option>
<option value="品牌合作部">品牌合作部</option>
<option value="潮流资源部">潮流资源部</option>
<option value="其他">其他</option>
</select>
<label class="col-sm-2 control-label">使用次数<i class="red">*</i></label>
<div class="col-sm-8">
<input type="text" placeholder="使用次数" class="form-control observe number" data-field="useNum" required value="[[useNum]]">
</div>
<div class="col-sm-3">
<select value="[[reqDepartment[1] ]]" class="form-control observe noEdit" data-field="reqDepartment[1]">
<option value="营销策划">营销策划</option>
<option value="类目运营">类目运营</option>
<option value="店铺运营">店铺运营</option>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">申请部门</label>
<div class="col-sm-8">
<select id="filter-department" tabindex="-1" class="select2-offscreen brandBtn-group observe" value="[[department]]" data-field="department" required>
<option value="-1">申请部门</option>
<option value="1">渠道二部</option>
<option value="2">渠道一部</option>
<option value="3">零售部</option>
<option value="4">品牌资源部</option>
<option value="5">店铺运营部</option>
<option value="6">类目运营部</option>
<option value="7">营销部</option>
<option value="8">市场部</option>
<option value="9">会员部</option>
<option value="10">客服部</option>
<option value="11">内容营销部</option>
</select>
</div>
</div>
... ... @@ -75,19 +94,18 @@
<label class="col-sm-2 control-label">使用期限<span class="red">*</span></label>
<div class="col-sm-6">
<div class="col-sm-6">
<input type="text" class="form-control observe" data-field="limitDateFrom" id="limitDateFrom" placeholder="开始时间" value="[[limitDateFrom]]" readonly required>
<input type="text" class="form-control observe" data-field="startTime" id="startTime" placeholder="开始时间" value="[[startTime]]" readonly required>
</div>
<div class="col-sm-6">
<input type="text" class="form-control observe" data-field="limitDateTo" id="limitDateTo" placeholder="结束时间" value="[[limitDateTo]]" readonly required>
<input type="text" class="form-control observe" data-field="endTime" id="endTime" placeholder="结束时间" value="[[endTime]]" readonly required>
</div>
</div>
<input type="hidden" jsaction="time" id="limitDateCurr" value="[[currTime]]" readonly>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">限购码说明<i class="red">*</i></label>
<label class="col-sm-2 control-label">优惠券说明<i class="red">*</i></label>
<div class="col-sm-8">
<textarea class="form-control observe" prompt="限购码说明" data-field="describe" maxlength="100" placeholder="限购码使用条件简介,最多100个字" required>[[describe]]</textarea>
<textarea class="form-control observe" prompt="优惠券说明" data-field="explains" maxlength="100" placeholder="优惠券使用条件简介" required>[[explains]]</textarea>
</div>
</div>
</div>
... ... @@ -97,74 +115,65 @@
<h4 class="panel-title">使用条件</h4>
</div>
<div class="form-group" hidden>
<div class="form-group">
<label class="col-sm-2 control-label">优惠条件<i class="red">*</i></label>&emsp;
<select value="[[useLimitType]]" class="form-control input-form observe" data-field="useLimitType">
<option value="0">无限制</option>
<option value="1">件数</option>
<option value="2">金额</option>
</select>&emsp;&emsp;
<label id="useLimitLabel" class="control-label">金额满</label>
<input value="[[useLimit]]" class="form-control input-form observe" data-field="useLimit">
</div>
<div class="form-group">
<label class="col-sm-2 control-label">优惠结果<i class="red">*</i></label>
<div class="col-sm-4">
<label class="col-sm-2 control-label">面额</label>
<div class="col-sm-8">
<input type="text" class="form-control observe" data-field="couponAmount" value="[[couponAmount]]">
</div>
<label class="col-sm-2 control-label"></label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">适用范围</label>
<div class="col-sm-4">
<div class="col-sm-10">
</div>
</div>
</div>
<div class="panel-heading">
<h4 class="panel-title">领券条件</h4>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">会员身份<i class="red">*</i></label>
<div class="col-sm-10">
<label class="checkbox-inline">
<input type="checkbox" value="新注册" name="userTypeLimit" > 新注册
</label>
<label class="checkbox-inline">
<input type="checkbox" value="注册未购买" name="userTypeLimit"> 注册未购买
</label>
<label class="checkbox-inline">
<input type="checkbox" value="普通会员" name="userTypeLimit"> 普通会员
<input type="checkbox" value="1" name="customType" > 新客户 (注册未购买)
</label>
<label class="checkbox-inline">
<input type="checkbox" value="银卡会员" name="userTypeLimit"> 银卡会员
<input type="checkbox" value="5" name="customType"> 普通会员 (不包含新客户)
</label>
<label class="checkbox-inline">
<input type="checkbox" value="金卡会员" name="userTypeLimit"> 卡会员
<input type="checkbox" value="2" name="customType"> 卡会员
</label>
<label class="checkbox-inline">
<input type="checkbox" value="白金会员" name="userTypeLimit"> 白金会员
<input type="checkbox" value="3" name="customType"> 金卡会员
</label>
<label class="checkbox-inline">
<input type="checkbox" value="指定用户" name="userTypeLimit"> 指定用户
<input type="checkbox" value="4" name="customType"> 白金会员
</label>
</div>
<div class="col-sm-2">
<input type="text" class="form-control observe noEdit" data-field="UID" value="[[UID]]" placeholder="UID">
</div>
<input type="hidden" value="[[userTypeLimit]]" id="userTypeLimit" for="checkbox" required placeholder="会员身份">
</div>
<div class="form-group" hidden>
<label class="col-sm-2 control-label">限用次数<i class="red">*</i></label>
<div class="col-sm-8">
<input type="text" prompt="限用次数" placeholder="0 表示不限制" class="form-control observe noEdit" data-field="userUseLimit" required pattern="^[0-9]+$" value="[[userUseLimit]]">
</div>
<input type="hidden" value="[[customType]]" id="customType" for="checkbox" required placeholder="会员身份">
</div>
<div class="form-group">
<label class="col-sm-2 control-label">指定商品<i class="red">*</i></label>
<div class="col-sm-4">
<div class="col-sm-10">
<input type="radio" class="limitProduct" value="N" name="skn_sku" checked />SKN
<input type="radio" class="limitProduct" value="U" name="skn_sku" />SKU
<input type="hidden" id="skn_sku" for="radio" value="[[limitCodeType]]"/><br>
</div>
<label class="col-sm-3 control-label">SKN值:</label>
<div class="col-sm-4">
<input id="limitSkn" type="text" maxlength="8" placeholder="SKN" class="form-control observe number noEdit" data-field="limitSkn" value="[[limitSkn]]" [[limitCodeType=="N"?'':'required']]>
</div><br>
<div id="skus" class="col-sm-10" [[limitCodeType=="U"?"":"hidden"]]>
<table class="table table-bordered responsive dataTable no-footer">
[[each skusInfo as item index]]
<tr>
<td><input type="text" class="form-control observe skus number noEdit" placeholder="sku值" data-field="skusInfo.[[index]].sku" value="[[item.sku]]" [[limitCodeType=="N"?"":"required"]]></td>
<td><input type="text" class="form-control observe number noEdit" prompt="sku数量" placeholder="数量" data-field="skusInfo.[[index]].skuTimes" value="[[item.skuTimes]]" [[limitCodeType=="N"?"":"required"]]></td>
<td><a href="javascript:;" class="btn btn-danger btn-xs delSku noEdit" data-index="[[index]]">删除</a></td>
</tr>
[[/each]]
<tr>
<td>sku</td>
<td>数量</td>
<td><a href="javascript:;" class="btn btn-info btn-xs addSku" disabled>添加</a></td>
</tr>
</table>
</div>
</div>
<div class="panel-heading">
<h4 class="panel-title"></h4>
</div>
<input type="hidden" value="[[status]]">
... ...