Authored by 陶雨

Merge branch 'develop' of http://git.dev.yoho.cn/platform/yohobuy-portal-fe into develop

... ... @@ -240,6 +240,17 @@ var util = {
} else {
return "";
}
},
// 判断是否是有效的json字串
__isJsonString: function (str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
}
module.exports = util;
\ No newline at end of file
... ...
/**
* Created by wangqianjun on 16/3/22.
*/
var $ = require('jquery');
common = require('../common/common');
var ENUM = {
GenderEnum: {
'1': '男',
'2': '女',
'3': '通用',
},
StatusEnum: {
0:'关闭',
1:'开启',
},
}
var g = new common.grid({
el: '#list',
size: 10,
parms: function () {
return {
//articleTitle: common.util.__input('articleTitle'),
//articleGender: common.util.__input('articleGender'),
//authorId: common.util.__input('authorId'),
//maxSortId: common.util.__input('maxSortId'),
//status: common.util.__input('status'),
//orderBy: common.util.__input('orderBy'),
//startTime: common.util.__input('starttime'),
//endTime: common.util.__input('endtime'),
};
},
columns: [
{
display: 'ID',
name: "id"
},
{
display: '排序',
name: "orderBy"
}, {
display: '状态',
render: function (item) {
return "<p>" + ENUM.StatusEnum[item.status] + "</p>";
}
}, {
display: '分类',
name: "name"
}, {
display: '操作',
//}
name: "status",
render: function (items) {
var HtmArr = [];
HtmArr.push('<a data-index="' + items.__index + '" href="JavaScript:;" class="btn btn-primary btn-xs info-modify">编辑</a>');
HtmArr.push('<a data-index="' + items.__index + '" href="JavaScript:;" class="btn btn-danger btn-xs info-del">删除</a>');
return HtmArr.join('');
}
}]
})
g.init('/guang/article/categoryist');
//==================== 按钮点击事件 =====================//
//编辑
$(document).on('click', '.info-modify', function() {
var item = g.rows[$(this).data("index")];
common.util.__ajax({
url: '/guang/article/operation',
data: {
id: item.id,
status: -1
}
}, function(res) {
if (res.code == 200) {
common.util.__tip('关闭资讯成功', 'success');
g.reload();
} else {
common.util.__tip(res.message);
}
}, true);
});
//删除
$(document).on('click', '.info-del', function() {
var item = g.rows[$(this).data("index")];
common.util.__ajax({
url: '/guang/article/operation',
data: {
id: item.id,
status: 1
}
}, function(res) {
if (res.code == 200) {
common.util.__tip('开启资讯成功', 'success');
g.reload();
} else {
common.util.__tip(res.message);
}
}, true);
});
\ No newline at end of file
... ...
... ... @@ -157,7 +157,7 @@ g.init('/guang/article/list');
// 按钮点击事件
//==================== 按钮点击事件 =====================//
$("#filter-btn").click(function() {
g.reload(1);
});
... ...
... ... @@ -13,27 +13,26 @@ var g = new common.grid({
hash: false,
//查询参数
parms: function () {
//return {
// modelName: common.util.__input('content-filter1'),
// englishName: common.util.__input('content-filter2'),
// status: common.util.__input('status-filter')
//};
return {
productSku: common.util.__input('content-filter1'),
productSkn: common.util.__input('content-filter2'),
productName: common.util.__input('content-filter3')
};
},
//列表显示
columns: [
{
display: "图片", name: "avatar", render: function (item) {
return '<img src="' + item.avatar + '" width="100" height="60"/>'
display: "图片", name: "defaultImg", render: function (item) {
return '<img src="' + item.defaultImg + '" width="100" height="60"/>'
}
},//图片显示
{display: "skn", name: "skn"},
{display: "产品名称",name:"name"},
{display: "品牌",name:"brand"},
{display: "skn", name: "productSkn"},
{display: "产品名称", name: "productName"},
{display: "品牌", name: "brandName"},
{
display: "操作", name: "", render: function (item) {
var arr = [];
arr.push('<a class="btn btn-info update" data-index="' + item.__index + '">试穿信息</a>');
arr.push('<a class="btn btn-info info" data-index="' + item.__index + '">试穿信息</a>');
return arr.join('');
}
}
... ... @@ -41,5 +40,8 @@ var g = new common.grid({
});
g.init("/meterManage/tryInfo/index2");
//查询按钮--点击事件
$(document).on('click', '#filter-btn', function () {
g.reload(1);
});
... ...
... ... @@ -25,7 +25,25 @@ var tableGird = new common.grid({
},
columns: [
{display: "属性名称", name: "attributeName"},
{display: "属性类型", name: "attributeValues"},
{display: "属性类型",
//name: "attributeValues"
render: function (item) {
var propType = item.attributeValues;
var propsStr="";
if (common.util.__isJsonString(propType)) {
var props = JSON.parse(propType);
props.forEach(function(prop){
propsStr += prop.name + ",";
});
} else {
propsStr = propType;
}
return '<p> '+propsStr+'</p>';
}
},
{display: "输入类型", name: "inputType"},
{
display: "是否必选",
... ... @@ -78,8 +96,15 @@ var propValueGrid = new common.grid({
if (items.__index == propValueGrid.__rows.length-1) {
html.push('<button data-index="' + items.__index + '" class="btn btn-success btn-xs prop-add-btn">添加</button>');
}
html.push('<button data-index="' + items.__index + '" class="btn btn-success btn-xs prop-del-btn">删除</button>');
if (items.__index == 0 ) {
if (propValueGrid.__rows.length != 1) {
html.push('<button data-index="' + items.__index + '" class="btn btn-success btn-xs prop-del-btn">删除</button>');
}
} else {
html.push('<button data-index="' + items.__index + '" class="btn btn-success btn-xs prop-del-btn">删除</button>');
}
return html.join("");
}
}
... ... @@ -146,7 +171,13 @@ function attributeOp(prefix, url, item) {
var a = new common.edit(".confirm");
if(item.attributeValues) {
propValueGrid.__rows = JSON.parse(item.attributeValues);
if (common.util.__isJsonString(item.attributeValues)) {
propValueGrid.__rows = JSON.parse(item.attributeValues);
} else {
propValueGrid.__rows=[{ 'name':"", 'id':"1"}];
}
} else {
propValueGrid.__rows=[{ 'name':"", 'id':"1"}];
}
... ... @@ -221,9 +252,13 @@ function showORHidePropValue () {
if (inputType == 'textarea' || inputType == 'text' || inputType =="") {
$('#attributeValues').show();
$('#prop-value-table').hide();
$('.propValue').removeAttr("required");
} else {
$('#attributeValues').hide();
$('#prop-value-table').show();
$('.propValue').attr("required");
}
}
... ...
... ... @@ -11,7 +11,6 @@ var common = require('../common/common');
var g = new common.grid({
el: '#content-list',
hash: false,
//查询参数
parms: function () {
return {
//查询参数
... ... @@ -26,26 +25,26 @@ var g = new common.grid({
columns: [
{display: "SKN", name: "productSkn"},
{
display: "最后上传时间", name: "updateTime",
display: "最后上传时间", name: "lastAddTime",
render: function (item) {
var t = new Date(item.updateTime * 1000);
var t = new Date(item.lastAddTime * 1000);
var formatted = common.util.__dateFormat(t, "yyyy-MM-dd hh:mm:ss");
return "<p>" + formatted + "</p>";
}
},
{
display: "图片", name: "pictureBoList", render: function (item) {
var a=item.pictureBoList;
if(a.length>0){
var a = item.pictureBoList || [];
if (a.length > 0) {
var b;
for(var i=0;i< a.length;i++){
b=b+'<img src="' + item.pictureBoList[i].fileName + '" width="100" height="60"/>'
for (var i = 0; i < a.length; i++) {
b = b + '<img src="' + item.pictureBoList[i].fileName + '" width="100" height="60"/>'
}
return b.substr(9);
}
//return '<img src="' + item.pictureBoList[0].fileName + '" width="100" height="60"/>'
//console.log("item.pictureBoList", item.pictureBoList);
else {
return ""
}
}
},
{
... ... @@ -59,8 +58,70 @@ var g = new common.grid({
]
});
g.init("/shotManage/proPhoto/index2");
var pictureBoList = [];
var Bll = {
toast: function (url, item, hint) {
var a = common.dialog.confirm(hint,
common.util.__template2($("#template1").html(), item),
function () {
common.util.__ajax({
url: url,
data: {
productSku: parseInt($("#Sku").val()),
productPhotoAddBoList: JSON.stringify(pictureBoList)
}
}, function (res) {
g.reload();
//a.close();
});
return false;
});
common.edit.ajaxfileupload(".picfile", {
params: {
__type: "upload",
bucket: "goodsimg"
},
valid_extensions: ['png', 'jpg', 'jpeg'],
onComplete: function (response) {
if (response.status && response.code == 200) {
var item = pictureBoList || [];
var data = {
"fileName": response.data
};
item.push(data);
console.log(JSON.stringify(pictureBoList))
$("#addPic").html(common.util.__template2($("#template2").html(),
{
pictureBoList: item
}
));
}
else {
common.util.__tip(response.message, 'warning');
}
}
});
}
};
//上传图片--点击事件
$('#upload-btn').on('click', function () {
var item = {};
Bll.toast('/shotManage/proPhoto/add', item, "上传图片");
});
//查询按钮--点击事件
$(document).on('click', '#filter-btn', function () {
g.reload(1);
});
//封面图删除
$(document).on('click', '.remove-item-btn', function() {
//界面删除
$(this).parents('.cover-image-item').remove();
//TODO 数组中删除
});
... ...
/**
* Created by JiangMin on 2016/3/17.
* 拍摄商品列表管理
*/
var $ = require('jquery');
var common = require('../common/common');
/**
* 列表显示数据
* @type {common.grid}
*/
var g = new common.grid({
el: '#content-list',
hash: false,
//查询参数
parms: function () {
//return {
// modelName: common.util.__input('content-filter1'),
// englishName: common.util.__input('content-filter2'),
// status: common.util.__input('status-filter')
//};
},
//列表显示
columns: [
{display: "SKN", name: "SKN"},
{display: "SKC/颜色", name: "skc"},
{display: "SKU", name: "sku"},
{display: "名称", name: "name"},
{display: "品牌", name: "brand"},
{display: "分类", name: "shoeSize"},
{display: "性别", name: "sex"},
{display: "尺码", name: "sex"},
{display: "状态", name: "sex"},
{display: "返回原因", name: "sex"},
{display: "库存", name: "sex"},
{display: "预计到货时间", name: "sex"},
{display: "到货时间", name: "sex"},
{display: "拍摄要求", name: "sex"}
]
});
g.init("/shotManage/shotGoods/index1");
... ... @@ -83,13 +83,92 @@ exports.res = [
//【文章分类管理】
{//逛-> 文章分类管理 空白页
route:'/guang/article/sortindex',
method:'GET',
view:'pages/guang/articleCategoryManager',
src: '/guang/articleCategoryManager',
data:{
iscreate:true
}
}, {
// 文章分类管理列表数据
route:'/guang/article/categoryist',
method:'POST',
url: '/guang/article/sort/getList',
params:[
{name: 'page',type: 'Number'},
{name: 'size',type: 'Number'},
]
}, {
// 文章分类管理-编辑
route:'/guang/article/sort/update',
method:'POST',
url: '/guang/article/sort/updateSort',
params:[
{name: 'id',type: 'Number'},
{name: 'parentId',type: 'Number'},
{name: 'orderBy',type: 'Number'},
{name: 'status',type: 'Number'},
{name: 'name',type: 'String'},
{name: 'advertCode',type: 'String'},
]
}, {
// 文章分类管理-删除
route:'/guang/article/sort/del',
method:'POST',
url: '/guang/article/sort/delSort',
params:[
{name: 'id',type: 'Number'}
]
},
//【标签管理】
{//逛-> 标签管理 空白页
route:'/guang/tags/index',
method:'GET',
view:'pages/guang/tagManager',
src: '/guang/tagManager',
data:{
iscreate:true
}
},
//【标签分类管理】
{//逛-> 标签分类管理 空白页
route:'/guang/tags/sort',
method:'GET',
view:'pages/guang/tagCategoryManager',
src: '/guang/tagCategoryManager',
data:{
iscreate:true
}
},
//【评论管理】
{//逛-> 评论管理 空白页
route:'/guang/comments/index',
method:'GET',
view:'pages/guang/commentManager',
src: '/guang/commentManager',
data:{
iscreate:true
}
},
//【作者管理】
{//逛-> 作者管理 空白页
route:'/guang/author/index',
method:'GET',
view:'pages/guang/authorManager',
src: '/guang/authorManager',
data:{
iscreate:true
}
},
// [下拉框调用的接口]
... ...
... ... @@ -33,22 +33,14 @@ exports.res = [
},
//新增图片
{
route: '/shotManage/model/addModel',
route: '/shotManage/proPhoto/add',
method: 'POST',
url: '/model/addModel',
url: '/productPhoto/addProductPhoto',
params: [
{name: 'englishName', type: 'string'},//英文名
{name: 'height', type: 'Number'},//身高
{name: 'dressSize', type: 'string'},//穿衣尺码
{name: 'modelName', type: 'string'},//名称
{name: 'modelType', type: 'Number'},//模特类型:1 拍摄模特 2 试穿模特
{name: 'nationality', type: 'string'},//国籍
{name: 'status', type: 'Number'},//模特状态:0 禁用 1 启用
{name: 'shoeSize', type: 'string'},//鞋尺码
{name: 'vitalStatistics', type: 'string'},//三围
{name: 'weight', type: 'Number'},//体重
{name: 'avatar', type: 'string'},//头像
{name: 'modelCard', type: 'string'}//模特卡
{name: 'productSkn', type: 'Number'},
{name: 'productSkc', type: 'Number'},
{name: 'productSku', type: 'Number'},
{name: 'productPhotoAddBoList', type: 'string'}
]
}
];
\ No newline at end of file
... ...
/**
* Created by JiangMin on 2016/3/22.
* 拍摄商品列表
*/
//exports.domain = require('../config/common.js').domain;
//exports.domain = 'http://172.16.6.162:8080/platform'; //李建
exports.domain = 'http://192.168.102.216:8180/platform'; //测试环境
exports.res = [
//主界面
{
route: '/shotManage/shotGoods/index',//访问路由
method: 'GET',//方法
view: 'pages/shotManage/shotGoods',//视图
src: '/shotManage/shotGoods'//控制层
},
//api请求数据
{
route: '/shotManage/shotGoods/index1',
method: 'POST',
//url: '/model/queryModelList',
params: [
{name: 'page', type: 'Number'},
{name: 'size', type: 'Number'}
]
}
];
\ No newline at end of file
... ... @@ -19,8 +19,11 @@ exports.res = [
{
route: '/meterManage/tryInfo/index2',
method: 'POST',
//url: '/model/queryModelList',
url: '/productExtraInfo/queryProdExtraList',
params: [
{name: 'productSkn', type: 'Number'},
{name: 'productSku', type: 'Number'},
{name: 'productName', type: 'String'},
{name: 'page', type: 'Number'},
{name: 'size', type: 'Number'}
]
... ...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
\ No newline at end of file
<div class="pageheader">
<div class="media">
<div class="pageicon pull-left">
<i class="fa fa-th-list"></i>
</div>
<div class="media-body">
<ul class="breadcrumb">
<li><a href=""><i class="glyphicon glyphicon-home"></i></a></li>
<li><a href="">文章分类管理</a></li>
<li>文章分类管理</li>
</ul>
<div>
<div style="width: 30%;float: left;">
<h4>文章分类管理</h4>
</div>
</div>
</div>
</div>
</div>
<div class="contentpanel">
<div class="panel panel-default" style="margin-bottom:10px;">
<div class="panel-body">
<div class="row">
<a class="btn btn-info" id="add">添加</a>
</div>
</div>
<input type="hidden" id="url" value="/erpproduct/sizeattribute/sizeList"/>
<div id="list">
</div>
</div>
</div>
<script type="text/template" id="template">
<div class="form-group">
<label for="input" class="col-sm-2 control-label">尺码名:</label>
<div class="col-sm-10">
<input type="hidden" name="" value="{id}" id="id" class="form-control" value="" required="required" pattern="" title="">
<input type="text" name="" value="{input}" id="input" class="form-control" value="" required="required" pattern="" title="" maxlength="20">
</div>
</div>
</script>
\ No newline at end of file
... ...
... ... @@ -27,15 +27,15 @@
<div class="panel-body">
<div class="row">
<div class="panel-col">
<input type="text" value="" name="sku" id="content-filter1" placeholder="sku"
class="form-control">
<input type="text" value="" name="productSku" id="content-filter1" placeholder="SKU"
class="form-control">
</div>
<div class="panel-col">
<input type="text" value="" name="skn" id="content-filter2" placeholder="skn"
class="form-control">
<input type="text" value="" name="productSkn" id="content-filter2" placeholder="SKN"
class="form-control">
</div>
<div class="panel-col">
<input type="text" value="" name="name" id="content-filter3" placeholder="name"
<input type="text" value="" name="productName" id="content-filter3" placeholder="产品名称"
class="form-control">
</div>
<div class="panel-col">
... ...
... ... @@ -24,10 +24,12 @@
<div class="panel-body">
<div class="row">
<div class="panel-col2">
<input type="text" id="startTime" class="form-control panel-input hasDatepicker" name="start_time" placeholder="开始时间" value="">
<input type="text" id="startTime" class="form-control panel-input hasDatepicker" name="start_time"
placeholder="开始时间" value="">
</div>
<div class="panel-col2">
<input type="text" id="endTime" class="form-control panel-input hasDatepicker" name="end_time" placeholder="结束时间" value="">
<input type="text" id="endTime" class="form-control panel-input hasDatepicker" name="end_time"
placeholder="结束时间" value="">
</div>
<div class="panel-col">
<input type="text" value="" name="productSkn" id="content-filter1" placeholder="skn"
... ... @@ -52,3 +54,43 @@
<div id="content-list"></div>
</div>
<!--上传图片-->
<script type="text/template" id="template1">
<div class="form-group">
<label class="col-sm-2 control-label" for="Sku">SKU</label>
<div class="col-sm-6">
<input type="text" value="[[productSku]]" class="form-control" id="Sku" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">图片</label>
<div class="cover-image-list col-sm-10" id="addPic">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">图片</label>
<ul class="cover-image-list col-sm-10" style="padding: 0;margin: 0;">
<li class="cover-image-item fileinput-button">
<div class="goods-img">
<a class="fileinput-button-icon" href="javascript:void(0);">+</a>
<input type="file" class="goods-img-upload picfile" name="picfile">
</div>
</li>
</ul>
</div>
</script>
<script type="text/template" id="template2">
<ul class="cover-image-list col-sm-10" style="padding: 0;margin: 0;">
[[each pictureBoList as _item _index]]
<li class="cover-image-item" data-index=[[_index]]>
<div class="goods-img">
<a class="fileinput-button-icon" href="javascript:void(0);">
<img src="[[_item.fileName]]">
</a>
<i class="remove-item-btn glyphicon glyphicon-remove-circle"></i>
</div>
</li>
[[/each]]
</ul>
</script>
... ...
<!--拍摄商品管理界面-->
<div class="pageheader">
<div class="media">
<div class="pageicon pull-left">
<i class="fa fa-th-list"></i>
</div>
<div class="media-body">
<ul class="breadcrumb">
<li><a href=""><i class="glyphicon glyphicon-home"></i></a></li>
<li><a href="">拍摄管理</a></li>
<li>拍摄商品管理</li>
</ul>
<div>
<div style="width: 30%;float: left;">
<h4>拍摄商品列表</h4>
</div>
</div>
</div>
</div>
</div>
<div class="contentpanel">
<div class="panel panel-default" style="...">
<div class="panel-body">
<div class="row">
<div class="panel-col">
<select name="brand" id="brand-filter" tabindex="-1" title=""
class="form-control">
<option value="">品牌搜索</option>
</select>
</div>
<div class="panel-col">
<select name="liebie" id="liebie-filter" tabindex="-1" title=""
class="form-control">
<option value="">分类搜索</option>
</select>
</div>
<div class="panel-col">
<select name="type" id="type-filter" tabindex="-1" title=""
class="form-control">
<option value="">全部</option>
<option value="">单品拍摄</option>
<option value="">模特拍摄</option>
<option value="">集合拍摄</option>
</select>
</div>
<div class="panel-col">
<select name="status" id="status-filter" tabindex="-1" title=""
class="form-control">
<option value="">全部</option>
<option value="">未拍摄</option>
<option value="">返回拍摄</option>
<option value="">已拍摄</option>
</select>
</div>
<div class="panel-col2">
<input type="text" id="starttime" class="form-control panel-input hasDatepicker" name="start_time"
placeholder="开始时间" value="">
</div>
<div class="panel-col2">
<input type="text" id="endtime" class="form-control panel-input hasDatepicker" name="end_time"
placeholder="结束时间" value="">
</div>
<div class="panel-col2">
<a id="filter-btn" href="javascript:;" class="btn btn-info">查询</a>
</div>
</div>
</div>
</div>
<div id="content-list"></div>
</div>