var $=require('jquery');
var util={
__ajax:function(options,callback,notip){
if(typeof options.data=="string"){
util.__tip(options.data,"warning");
return false;
}else{
$.ajax({
type: options.type||'POST',
url: options.url,
async: options.async,
dataType: 'json',
data:options.data||{},
success: function(res) {
res=res.data;
if (("" + res.code) === "200") {
notip?(callback&&callback.bind(this,res)()):util.__tip(res.message,"success",callback&&callback.bind(this,res)());
return true;
} else {
var $ = require('jquery');
var util = {
__ajax: function(options, callback, notip) {
if (typeof options.data == "string") {
util.__tip(options.data, "warning");
return false;
} else {
$.ajax({
type: options.type || 'POST',
url: options.url,
async: options.async,
dataType: 'json',
data: options.data || {},
success: function(res) {
res = res.data;
if (("" + res.code) === "200") {
notip ? (callback && callback.bind(this, res)()) : util.__tip(res.message, "success", callback && callback.bind(this, res)());
return true;
} else {
(!notip) && util.__tip(res.message, "danger");
return false;
}
},
error:function(err){
console.log("ajax.ERROR",err);
return false;
}
});
}
},
__ajax2:function(options,callback){
if(typeof options.data=="string"){
util.__tip(options.data,"warning");
}else{
$.ajax({
type: 'POST',
url: options.url,
async: options.async,
dataType: 'json',
data:options.data||{},
success: function(res) {
res=res.data;
if (res.code != 200) {
util.__tip(res.message,"danger");
} else {
return callback.bind(this,res)();
}
}
});
}
},
__tip:function(message,callback){
//danger
var options={};
options.class_name="growl-danger";
options.title=arguments[0];
if (arguments.length > 1) {
if (typeof (arguments[1]) === "string") {
options.class_name="growl-"+arguments[1];
}else{
options.class_name="growl-success";
},
error: function(err) {
console.log("ajax.ERROR", err);
return false;
}
var lastargs = Array.prototype.slice.call(arguments, arguments.length-1);
lastargs=lastargs[0];
if(typeof lastargs==="function"){
options.after_open=setTimeout(function() {
lastargs&&lastargs();
},600);
});
}
},
__ajax2: function(options, callback) {
if (typeof options.data == "string") {
util.__tip(options.data, "warning");
} else {
$.ajax({
type: 'POST',
url: options.url,
async: options.async,
dataType: 'json',
data: options.data || {},
success: function(res) {
res = res.data;
if (res.code != 200) {
util.__tip(res.message, "danger");
} else {
return callback.bind(this, res)();
}
}
}
options.sticky=false;
options.time=1000;
});
}
},
__tip: function(message, callback) {
//danger
var options = {};
options.class_name = "growl-danger";
options.title = arguments[0];
if (arguments.length > 1) {
if (typeof(arguments[1]) === "string") {
options.class_name = "growl-" + arguments[1];
} else {
options.class_name = "growl-success";
}
var lastargs = Array.prototype.slice.call(arguments, arguments.length - 1);
lastargs = lastargs[0];
if (typeof lastargs === "function") {
options.after_open = setTimeout(function() {
lastargs && lastargs();
}, 600);
}
}
options.sticky = false;
options.time = 1000;
$.gritter.add(options);
},
__template: function () {
var args = arguments, result;
if (args.length > 0) {
if (typeof args[0]==="string") {
result = args[0];
if (args.length == 2 && typeof args[1]=="object") {
for (var key in args[1]) {
if (args[1][key] != undefined) {
var regkey=((+key)==(+key))?"["+key+"]":key;
var reg = new RegExp("({" + regkey + "})", "g");
result = result.replace(reg, args[1][key]);
}
$.gritter.add(options);
},
__template: function() {
var args = arguments,
result;
if (args.length > 0) {
if (typeof args[0] === "string") {
result = args[0];
if (args.length == 2 && typeof args[1] == "object") {
for (var key in args[1]) {
if (args[1][key] != undefined) {
var regkey = ((+key) == (+key)) ? "[" + key + "]" : key;
var reg = new RegExp("({" + regkey + "})", "g");
result = result.replace(reg, args[1][key]);
}
}
var reg = new RegExp("({.*})", "g");
result = result.replace(reg, '');
}
}
var reg = new RegExp("({.*})", "g");
result = result.replace(reg, '');
}
return result;
}
return result;
},
__template2:function(str,source){
__template2: function(str, source) {
// console.log(str);
var result="";
var script=[];
script.push('var each=function(obj,fn){');
script.push(' var that=this;');
script.push(' if({}.toString.call(obj)=="[object Array]"){');
script.push(' for(var i=0;i<obj.length;i++){');
script.push(' fn.call(i,i,obj[i]);');
script.push(' }');
script.push(' return;');
script.push(' }');
script.push(' if(typeof obj=="function"||typeof obj=="object"&&!!obj){');
script.push(' for(var i in obj){');
script.push(' fn.call(i,i,obj[i]);');
script.push(' }');
script.push(' return;');
script.push(' }');
script.push('}');
result=script.join('')+";\n";
var result = "";
var script = [];
script.push('var each=function(obj,fn){');
script.push(' var that=this;');
script.push(' if({}.toString.call(obj)=="[object Array]"){');
script.push(' for(var i=0;i<obj.length;i++){');
script.push(' fn.call(i,i,obj[i]);');
script.push(' }');
script.push(' return;');
script.push(' }');
script.push(' if(typeof obj=="function"||typeof obj=="object"&&!!obj){');
script.push(' for(var i in obj){');
script.push(' fn.call(i,i,obj[i]);');
script.push(' }');
script.push(' return;');
script.push(' }');
script.push('}');
result = script.join('') + ";\n";
var formstr=function (code) {
var formstr = function(code) {
return "'" + code
.replace(/('|\\)/g, '\\$1')
.replace(/\r/g, '\\r')
.replace(/\n/g, '\\n') + "'";
.replace(/('|\\)/g, '\\$1')
.replace(/\r/g, '\\r')
.replace(/\n/g, '\\n') + "'";
}
//获取参数
//获取参数
var params=[];
var html="";
html=str.replace(/\[\[(.*?)\]\]/igm,function(name,$1){
var trim=$1.replace(/^\s+|\s+$/,'');
if(/^each/.test(trim))
{
trim=trim.replace(/^each\s+([a-zA-Z0-1.]+)\s+as\s+(\w+)\s+(\w+)/,function($0,$1,$2,$3){
params.push($1);
return 'each\( '+$1+',function('+$3+','+$2+'){';
});
return "[["+trim+"]]";
}else
if(/^\/each/.test(trim)){
trim=trim.replace(/^\/each/,'});')
return "[["+trim+"]]";
}
else if(/^if/.test(trim)){
trim=trim.replace(/^if(.+)/,function($0,$1){
params.push($1);
return 'if('+$1+'){';
});
return "[["+trim+"]]";
}
else if(/^\/if/.test(trim)){
trim=trim.replace(/^\/if/,'};')
return "[["+trim+"]]";
}
else if(/^else$/.test(trim)){
trim=trim.replace(/else/,'}else{');
return "[["+trim+"]]";
}
else{
params.push(trim);
return "[[+"+trim+"+]]";
}
});
console.log(params);
//.match(/(\w+)+/g)
for(var i in params){
var aps=params[i].split(/\+|\-|\*|\/|\=|\!|\~/g);
for(var j in aps){
var ap=aps[j].replace(/^\s+|\s+$/,'');
if(!/^[0-9]+$/.test(ap)&&!/^\s*$/.test(ap)&&!/\./g.test(ap)){
if(!source.hasOwnProperty(ap)){
source[ap]="";
var params = [];
var html = "";
html = str.replace(/\[\[(.*?)\]\]/igm, function(name, $1) {
var trim = $1.replace(/^\s+|\s+$/, '');
if (/^each/.test(trim)) {
trim = trim.replace(/^each\s+([a-zA-Z0-1.]+)\s+as\s+(\w+)\s+(\w+)/, function($0, $1, $2, $3) {
params.push($1);
return 'each\( ' + $1 + ',function(' + $3 + ',' + $2 + '){';
});
return "[[" + trim + "]]";
} else
if (/^\/each/.test(trim)) {
trim = trim.replace(/^\/each/, '});')
return "[[" + trim + "]]";
} else if (/^if/.test(trim)) {
trim = trim.replace(/^if(.+)/, function($0, $1) {
params.push($1);
return 'if(' + $1 + '){';
});
return "[[" + trim + "]]";
} else if (/^\/if/.test(trim)) {
trim = trim.replace(/^\/if/, '};')
return "[[" + trim + "]]";
} else if (/^else$/.test(trim)) {
trim = trim.replace(/else/, '}else{');
return "[[" + trim + "]]";
} else {
params.push(trim);
return "[[+" + trim + "+]]";
}
});
// console.log(params);
//.match(/(\w+)+/g)
for (var i in params) {
var aps = params[i].split(/\+|\-|\*|\/|\=|\!|\~|'|"/g);
for (var j in aps) {
var ap = aps[j].replace(/^\s+|\s+$/, '');
if (!/^[0-9]+$/.test(ap) && !/^\s*$/.test(ap) && !/\./g.test(ap)) {
if (!source.hasOwnProperty(ap)) {
source[ap] = "";
}
}
}
}
}
var keys=[];
for(var key in source){
if(typeof source[key]=="boolean"){
keys.push(key+"="+source[key]);
}else{
keys.push(key+"="+JSON.stringify(source[key]));
var keys = [];
for (var key in source) {
if (typeof source[key] == "boolean") {
keys.push(key + "=" + source[key]);
} else {
keys.push(key + "=" + JSON.stringify(source[key]));
}
}
}
var header="var "+keys.join(',')+";";
var header = "var " + keys.join(',') + ";";
html=html.replace(/(^|\]\])(.*?)(\[\[|$)/igm,function(name,$1,$2){
var trim=$2.replace(/^\s+|\s+$/,'');
return trim?formstr($2):'';
});
// var result="var result='';result+=";
var arr=html.split(/\n+/igm);
result+="var p=[];\n";
for(var i=0;i<arr.length;i++){
if(/^'/.test(arr[i])){
result+="p.push("+(arr[i])+");\n";
}else{
result+=(arr[i]);
html = html.replace(/(^|\]\])(.*?)(\[\[|$)/igm, function(name, $1, $2) {
var trim = $2.replace(/^\s+|\s+$/, '');
return trim ? formstr($2) : '';
});
// var result="var result='';result+=";
var arr = html.split(/\n+/igm);
result += "var p=[];\n";
for (var i = 0; i < arr.length; i++) {
if (/^'/.test(arr[i])) {
result += "p.push(" + (arr[i]) + ");\n";
} else {
result += (arr[i]);
}
}
}
result+="return p.join('');\n";
result += "return p.join('');\n";
var fn=new Function(header+result);
var b=fn.call(source);
return b;
var fn = new Function(header + result);
var b = fn.call(source);
return b;
},
__input:function(id){
return !!~$.trim($('#'+id).val())?$('#'+id).val():""
__input: function(id) {
return !!~$.trim($('#' + id).val()) ? $('#' + id).val() : ""
}
}
module.exports=util;
\ No newline at end of file
module.exports = util;
\ No newline at end of file
... ...
... ... @@ -7,9 +7,10 @@ require('../util/custom.js');
*/
window.NETSALEDATA = require('./partials/data.js');
//console.log(NETSALEDATA);
console.log(NETSALEDATA);
/*加载其他模块*/
require('./partials/basic-info');
require('./partials/editor_recommend');
require('./partials/model');
require('./partials/search-key.js');
... ... @@ -18,74 +19,6 @@ require('./partials/goods-sort.js')
var basicInfohtml = '',
convertObj = {
ageLevel: {
'1': '成人',
'2': '大童',
'3': '小童'
},
gender: {
1: '男',
2: '女',
3: '通用'
},
grade: {
'1': '是',
'null': '否'
},
isOutLets: {
'Y': '是',
'N': '否'
},
isLimited: {
'Y': '是',
'N': '否'
},
isPromotionalGifts: {
'Y': '是',
'N': '否'
},
isAdvance: {
'Y': '是',
'N': '否'
},
isLimitbuy: {
'Y': '是',
'N': '否'
},
attribute: {
1: '普通',
2: '赠品'
}
}
console.log(NETSALEDATA.baseProductInfo.baseProduct);
/*
* 基本信息value值转换
* @param: basicInfo(请求的要渲染的数据), obj(转换的对象)
*/
function convert(basicInfo, obj) {
$.each(basicInfo, function(key, value) {
if (convertObj[key]) {
basicInfo[key] = convertObj[key][value];
}
});
return basicInfo;
}
var basicInfoData = convert(NETSALEDATA.baseProductInfo.baseProduct, convertObj);
basicInfoData.renderType = $('#basicInfoForm').data('type');
basicInfohtml = common.util.__template2($('#basicInfo').html(), basicInfoData);
$('#basic-info').html(basicInfohtml);
// var e = new common.edit('#basicForm');
// e.init();
... ...
var $ = require('jquery'),
common = require('../../common/common');
var basicInfohtml = '',
convertObj = {
ageLevel: {
'1': '成人',
'2': '大童',
'3': '小童'
},
gender: {
1: '男',
2: '女',
3: '通用'
},
grade: {
'1': '是',
'null': '否'
},
isOutLets: {
'Y': '是',
'N': '否'
},
isLimited: {
'Y': '是',
'N': '否'
},
isPromotionalGifts: {
'Y': '是',
'N': '否'
},
isAdvance: {
'Y': '是',
'N': '否'
},
isLimitbuy: {
'Y': '是',
'N': '否'
},
attribute: {
1: '普通',
2: '赠品'
}
};
/*
* 基本信息value值转换
* @param: basicInfo(请求的要渲染的数据), obj(转换的对象)
*/
function convert(basicInfo, obj) {
$.each(basicInfo, function(key, value) {
if (convertObj[key]) {
basicInfo[key] = convertObj[key][value];
}
});
return basicInfo;
}
var basicInfoData = convert(NETSALEDATA.baseProductInfo.baseProduct, convertObj);
basicInfoData.renderType = $('#basicInfoForm').data('type');
basicInfohtml = common.util.__template2($('#basicInfo').html(), basicInfoData);
$('#basic-info').html(basicInfohtml);
$('#goods-table').html(common.util.__template2($('#goodsList').html(), {
goodsList: NETSALEDATA.goodsList
}));
\ No newline at end of file
... ...
... ... @@ -2,16 +2,16 @@
var $ = require('jquery'),
common = require('../../common/common');
var ENUM=null;
var param=location.href.match(/edit\/(\d+)/)[1];
var ENUM = null;
var param = location.href.match(/edit|info\/(\d+)/)[1];
common.util.__ajax({
url:'/goods/netsale/getdata',
async:false,
data:{
param:param
url: '/goods/netsale/getdata',
async: false,
data: {
param: param
}
},function(res){
ENUM=res.data;
},true);
}, function(res) {
ENUM = res.data;
}, true);
module.exports=ENUM;
module.exports = ENUM;
\ No newline at end of file
... ...
... ... @@ -76,28 +76,29 @@ var tableGird = new common.grid({
return obj;
},
columns: [{
display: "",
type: 'checkbox'
}, {
display: "名称",
name: "productName"
}, {
display: "限购商品code",
name: "limitProductCode"
}, {
display: "排序",
render: function(item) {
return ('<input class="order-input width50" data-id="' + item.id + '" data-type="orderBy" type="text" value="' + item.orderBy + '"/>');
}
},{
display: "",
type: 'checkbox'
}, {
display: "名称",
name: "productName"
}, {
display: "限购商品code",
name: "limitProductCode"
}, {
display: "排序",
render: function(item) {
return ('<input class="order-input width50" data-id="' + item.id + '" data-type="orderBy" type="text" value="' + item.orderBy + '"/>');
}
}, {
display: "封面图",
render: function(item) {
return ('<img class="cover-img" src="' + item.attachUrl + '" />');
}
}, {
display: "SKN",
name: "productSkn",render:function(item){
return item.productSkn||'待定';
name: "productSkn",
render: function(item) {
return item.productSkn || '待定';
}
}, {
display: "发售日期",
... ... @@ -109,59 +110,58 @@ var tableGird = new common.grid({
return item.saleTimeStr.slice(0, 7);
}
}
},{
display: "是否发售",
name: "saleFlag",
render: function(item) {
if (item.saleFlag == 1) {
return '是';
} else {
return '否';
}
}, {
display: "是否发售",
name: "saleFlag",
render: function(item) {
if (item.saleFlag == 1) {
return '是';
} else {
return '否';
}
}, {
display: "是否热门",
name: "hotFlag",
render: function(items) {
if (items.hotFlag) {
return '是';
} else {
return '否';
}
}
}, {
display: "是否热门",
name: "hotFlag",
render: function(items) {
if (items.hotFlag) {
return '是';
} else {
return '否';
}
}, {
display: "是否开启",
name: "showFlag",
render: function(items) {
if (items.showFlag) {
return '是';
} else {
return '否';
}
}
}, {
display: "是否开启",
name: "showFlag",
render: function(items) {
if (items.showFlag) {
return '是';
} else {
return '否';
}
}, {
display: "操作",
render: function(items) {
var HtmArr = [];
if (items.showFlag) {
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-info btn-xs close-btn">关闭</a>');
} else {
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-info btn-xs open-btn">开启</a>');
}
if (items.hotFlag) {
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-warning btn-xs hot-cancel">取消热门</a>');
} else {
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-warning btn-xs hot-btn">设为热门</a>');
}
HtmArr.push('<a href="/limit/edit/' + items.id + '" data-id="' + items.id + '" class="btn btn-info btn-xs">编辑</a>');
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-danger btn-xs delete-btn">删除</a>');
return HtmArr.join('');
}
}, {
display: "操作",
render: function(items) {
var HtmArr = [];
if (items.showFlag) {
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-info btn-xs close-btn">关闭</a>');
} else {
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-info btn-xs open-btn">开启</a>');
}
if (items.hotFlag) {
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-warning btn-xs hot-cancel">取消热门</a>');
} else {
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-warning btn-xs hot-btn">设为热门</a>');
}
HtmArr.push('<a href="/limit/edit/' + items.id + '" data-id="' + items.id + '" class="btn btn-info btn-xs">编辑</a>');
HtmArr.push('<a href="javascript:;" data-id="' + items.id + '" class="btn btn-danger btn-xs delete-btn">删除</a>');
return HtmArr.join('');
}
]
}]
});
tableGird.init('/limit/product/page');
... ... @@ -195,17 +195,17 @@ $('#export-btn').on('click', function() {
var selectedArr = tableGird.selected,
len = selectedArr.length,
queryConf = '';
/*if (len <= 0) {
if (len <= 0) {
common.util.__tip('请选择要导出的商品', 'warning');
return;
}*/
}
$.each(selectedArr, function(i, value) {
queryConf += value['limitProductCode'];
if (i < len - 1) {
queryConf += '|';
}
});
window.open("/ajax/down?queryConf="+queryConf+"&type=limitProductReminder");
window.open("/ajax/down?queryConf=" + queryConf + "&type=limitProductReminder");
// common.util.__ajax({
// url: '/ajax/down',
// type:'GET',
... ...
... ... @@ -37,30 +37,9 @@
<h2 class="panel-title">基本信息</h2>
</div>
<div class="panel-body nopadding">
<div id="basic-info">
</div>
<div class="form-group">
<h4>能否补货:</h4>
<table class="table table-bordered">
<thead>
<tr>
<th>SKC(厂家颜色)</th>
<th>SKU(尺码)</th>
<th>能否补货</th>
</tr>
</thead>
<tbody>
{{# goodsList}}
<tr>
<td>{{productSkc}}({{goodsName}})</td>
<td>{{# goodsSizeList}}{{productSku}}({{sizeName}})<br>{{/ goodsSizeList}}</td>
<td>{{# goodsSizeList}}{{isSuppled}}</br>{{/ goodsSizeList}}</td>
</tr>
{{/ goodsList}}
</tbody>
</table>
</div>
<div id="basic-info"></div>
<div id="goods-table"></div>
<div class="form-group">
<blockquote>上架必填:</blockquote>
... ... @@ -254,4 +233,36 @@
<div class="col-sm-3">预计上架时间:[[expectShelfTime]]</div>
</div>
</script>
<script type="text/template" id="goodsList">
<div class="form-group">
<h4>能否补货:</h4>
<table class="table table-bordered">
<thead>
<tr>
<th>SKC(厂家颜色)</th>
<th>SKU(尺码)</th>
<th>能否补货</th>
</tr>
</thead>
<tbody>
[[each goodsList as item index]]
<tr>
<td>[[item.productSkc]][[item.goodsName]]</td>
<td>
[[each item.goodsSizeList as b index]]
<p>[[b.productSku]][[b.sizeName]]<br></p>
[[/each]]
</td>
<td>
[[each item.goodsSizeList as b index]]
<p>[[b.isSuppled]]</br></p>
[[/each]]
</td>
</tr>
[[/each]]
</tbody>
</table>
</div>
</script>
\ No newline at end of file
... ...
... ... @@ -22,8 +22,6 @@
</div>
</div>
</div>
</div>
</div>
<div class="panel-footer">
<button class="btn btn-primary">保存</button>
</div>
... ...
... ... @@ -6,15 +6,17 @@
</div>
<h2 class="panel-title">视频</h2>
</div>
<div class="panel-body nopadding">
<div class="video-file-wrap">
<span>请上传视频</span>
<input id="videofile" name="videofile" type="file" extend="mp4,rmvb,avi,mov" class="btn btn-primary ml10">
<form class="form-horizontal form-bordered">
<div class="panel-body nopadding">
<div class="video-file-wrap">
<span>请上传视频</span>
<input id="videofile" name="videofile" type="file" extend="mp4,rmvb,avi,mov" class="btn btn-primary ml10">
</div>
</div>
</div>
<div class="panel-footer">
<button class="btn btn-primary">保存</button>
</div>
<div class="panel-footer">
<button class="btn btn-primary">保存</button>
</div>
</form>
</form>
</div>
\ No newline at end of file
... ...