Authored by liuyue

文件上传

var $=require('jquery');
var $ = require('jquery');
$.fn.ajaxfileupload = function(options) {
var settings = {
params: {},
action: '',
onStart: function() { },
onComplete: function(response) { },
onCancel: function() { },
validate_extensions : true,
valid_extensions : ['gif','png','jpg','jpeg'],
submit_button : null
};
var settings = {
params: {},
action: '',
onStart: function() {},
onComplete: function(response) {},
onCancel: function() {},
validate_extensions: true,
valid_extensions: ['gif', 'png', 'jpg', 'jpeg'],
submit_button: null
};
var uploading_file = false;
var uploading_file = false;
if ( options ) {
$.extend( settings, options );
}
if (options) {
$.extend(settings, options);
}
return this.each(function() {
var $element = $(this);
if($element.data('ajaxUploader-setup') === true) return;
return this.each(function() {
var $element = $(this);
if ($element.data('ajaxUploader-setup') === true) return;
$element.change(function()
{
uploading_file = false;
if (settings.submit_button == null)
{
upload_file();
}
});
$element.change(function() {
uploading_file = false;
if (settings.submit_button == null) {
upload_file();
}
});
if (settings.submit_button == null)
{
} else
{
settings.submit_button.click(function(e)
{
e.preventDefault();
if (!uploading_file)
{
upload_file();
}
});
}
if (settings.submit_button == null) {} else {
settings.submit_button.click(function(e) {
e.preventDefault();
if (!uploading_file) {
upload_file();
}
});
}
var upload_file = function()
{
if($element.val() == '') return settings.onCancel.apply($element, [settings.params]);
var upload_file = function() {
if ($element.val() == '') return settings.onCancel.apply($element, [settings.params]);
var ext = $element.val().split('.').pop().toLowerCase();
if(true === settings.validate_extensions && $.inArray(ext, settings.valid_extensions) == -1)
{
settings.onComplete.apply($element, [{status: false, message: '文件类型无效.只支持'+settings.valid_extensions.join(',')}, settings.params]);
} else
{
uploading_file = true;
wrapElement($element);
var ret = settings.onStart.apply($element, [settings.params]);
if(ret !== false)
{
$element.parent('form').submit(function(e) { e.stopPropagation(); }).submit();
}
}
};
$element.data('ajaxUploader-setup', true);
var handleResponse = function(loadedFrame, element) {
var response, responseStr = $(loadedFrame).contents().text();
try {
response = JSON.parse(responseStr);
} catch(e) {
response = responseStr;
}
element.siblings().remove();
element.unwrap();
var ext = $element.val().split('.').pop().toLowerCase();
if (true === settings.validate_extensions && $.inArray(ext, settings.valid_extensions) == -1) {
settings.onComplete.apply($element, [{
status: false,
message: '文件类型无效.只支持' + settings.valid_extensions.join(',')
}, settings.params]);
} else {
uploading_file = true;
wrapElement($element);
var ret = settings.onStart.apply($element, [settings.params]);
if (ret !== false) {
$element.parent('form').submit(function(e) {
e.stopPropagation();
}).submit();
}
}
};
$element.data('ajaxUploader-setup', true);
var handleResponse = function(loadedFrame, element) {
var response, responseStr = $(loadedFrame).contents().text();
try {
response = JSON.parse(responseStr);
} catch (e) {
response = responseStr;
}
element.siblings().remove();
element.unwrap();
uploading_file = false;
uploading_file = false;
settings.onComplete.apply(element, [response, settings.params]);
var _$element=$element.clone();
var _$parent=$element.parent();
$element.remove();
_$parent.append(_$element);
_$element.ajaxfileupload(settings);
};
var wrapElement = function(element) {
var frame_id = 'ajaxUploader-iframe-' + Math.round(new Date().getTime() / 1000)
$('body').after('<iframe width="0" height="0" style="display:none;" name="'+frame_id+'" id="'+frame_id+'"/>');
$('#'+frame_id).get(0).onload = function() {
handleResponse(this, element);
};
element.wrap(function() {
return '<form action="' + settings.action + '" method="POST" enctype="multipart/form-data" target="'+frame_id+'" />'
})
.before(function() {
var key, html = '';
for(key in settings.params) {
var paramVal = settings.params[key];
if (typeof paramVal === 'function') {
paramVal = paramVal();
}
html += '<input type="hidden" name="' + key + '" value="' + paramVal + '" />';
}
html+='<input type="hidden" name="filename" value="' + $element.attr("name") + '" />'
return html;
});
settings.onComplete.apply(element, [response, settings.params]);
var _$element = $element.clone();
var _$parent = $element.parent();
$element.remove();
_$parent.append(_$element);
_$element.ajaxfileupload(settings);
};
var wrapElement = function(element) {
var frame_id = 'ajaxUploader-iframe-' + Math.round(new Date().getTime() / 1000)
$('body').after('<iframe width="0" height="0" style="display:none;" name="' + frame_id + '" id="' + frame_id + '"/>');
$('#' + frame_id).get(0).onload = function() {
handleResponse(this, element);
};
element.wrap(function() {
return '<form action="' + settings.action + '" method="POST" enctype="multipart/form-data" target="' + frame_id + '" />'
})
.before(function() {
var key, html = '';
for (key in settings.params) {
var paramVal = settings.params[key];
if (typeof paramVal === 'function') {
paramVal = paramVal();
}
html += '<input type="hidden" name="' + key + '" value="' + paramVal + '" />';
}
html += '<input type="hidden" name="filename" value="' + $element.attr("name") + '" />'
return html;
});
}
}
});
}
module.exports=$;
\ No newline at end of file
module.exports = $;
\ No newline at end of file
... ...
'use strict';
var $ = require('jquery'),
common=require('../common/common');
common = require('../common/common');
var ENUM={
cooperateTypeId:{0:'未设置',1:'代销',2:'经销',3:'自主'}
var ENUM = {
cooperateTypeId: {
0: '未设置',
1: '代销',
2: '经销',
3: '自主'
}
}
new common.dropDown({el:'#brandCooperation'});
new common.dropDown({el:'#brandCooperationSet'});
new common.dropDown({
el: '#brandCooperation'
});
new common.dropDown({
el: '#brandCooperationSet'
});
var g = new common.grid({
el:"#basicTable",
parms:function(){
el: "#basicTable",
parms: function() {
return {
brandName:common.util.__input("brand"),
brandName: common.util.__input("brand"),
cooperateTypeId: common.util.__input("brandCooperation"),
setFlag: common.util.__input("brandCooperationSet")
};
},
columns:[
{display: 'ID', name: 'brandId'},
{display: '品牌', name:'brandName'},
{display: '合作模式', name: 'cooperateTypeName'},
{display: '是否设置', render: function(item) {
if (item.cooperateTypeId == 0) {
return '未设置';
} else {
return '已设置';
columns: [{
display: 'ID',
name: 'brandId'
}, {
display: '品牌',
name: 'brandName'
}, {
display: '合作模式',
name: 'cooperateTypeName'
}, {
display: '是否设置',
render: function(item) {
if (item.cooperateTypeId == 0) {
return '未设置';
} else {
return '已设置';
}
}
}},
{display: '操作信息', render: function(item) {
var html = '';
if (item.addUserName) {
html += '<p>' + item.addUserName + '</p>';
},
{
display: '操作信息',
render: function(item) {
var html = '';
if (item.addUserName) {
html += '<p>' + item.addUserName + '</p>';
}
if (item.updateTime) {
html += '<p>' + item.updateTime + '</p>';
}
return html;
}
}, {
display: '操作',
render: function(item) {
var htmlArr = [];
if (item.updateTime) {
html += '<p>' + item.updateTime + '</p>';
}
return html;
}},
{display: '操作', render:function(item){
var htmlArr = [];
if (item.cooperateTypeId != 1) {
htmlArr.push('<a href="javascript:;" class="btn btn-info btn-xs cooperate-type" data-brandid="' + item.brandId + '" data-id="' + item.id + '" data-type="1">代销</a>');
}
if (item.cooperateTypeId != 1) {
htmlArr.push('<a href="javascript:;" class="btn btn-info btn-xs cooperate-type" data-brandid="' + item.brandId + '" data-id="' + item.id + '" data-type="1">代销</a>');
}
if (item.cooperateTypeId != 2) {
htmlArr.push('<a href="javascript:;" class="btn btn-info btn-xs cooperate-type" data-brandid="' + item.brandId + '" data-id="' + item.id + '" data-type="2">经销</a>');
}
if (item.cooperateTypeId != 2) {
htmlArr.push('<a href="javascript:;" class="btn btn-info btn-xs cooperate-type" data-brandid="' + item.brandId + '" data-id="' + item.id + '" data-type="2">经销</a>');
}
if (item.cooperateTypeId != 3) {
htmlArr.push('<a href="javascript:;" class="btn btn-info btn-xs cooperate-type" data-brandid="' + item.brandId + '" data-id="' + item.id + '" data-type="3">自主</a>');
}
if (item.cooperateTypeId != 3) {
htmlArr.push('<a href="javascript:;" class="btn btn-info btn-xs cooperate-type" data-brandid="' + item.brandId + '" data-id="' + item.id + '" data-type="3">自主</a>');
}
return htmlArr.join('');
}}
return htmlArr.join('');
}
}
]
});
... ... @@ -72,20 +94,20 @@ $('#basicTable').on('click', '.cooperate-type', function() {
brandType = $(this).data('type');
common.util.__ajax({
url:'/goods/brandCooperation/update',
data:{
url: '/goods/brandCooperation/update',
data: {
brandId: $brandId,
id: $id,
cooperateTypeId: brandType
}
},function(res){
}, function(res) {
g.reload();
});
});
//筛选
$("#filter-btn").click(function(){
$("#filter-btn").click(function() {
g.reload(1);
});
... ... @@ -100,29 +122,39 @@ $('#brand').on('keyup', function(event) {
$('#import-btn').on('click', function() {
if ($('#basicTable').css('display') == 'none') {
g.reload();
}
}
$('#basicTable, .bulk-import').toggle();
});
$(' #sure-change, .priceTable-wrap').hide();
common.edit.ajaxfileupload("#upload-input",{
params:{type:"brandCooperation",__type:"batch-import"},
$('#upload-input').after('<div class="file-name btn btn-default">请选择文件</div>');
common.edit.ajaxfileupload("#upload-input", {
params: {
type: "brandCooperation",
__type: "batch-import"
},
onStart: function() {
$('.load-modal').show();
$('.file-name').text($('#upload-input').val().replace("C:\\fakepath\\", ""));
},
onComplete:function(response){
onComplete: function(response) {
console.log(response);
$('.load-modal').hide();
if (response.code == 200) {
common.util.__tip(response.message, 'success');
$('.load-modal').hide();
if (response.data.failFileReason.length > 0) {
var li = '';
$.each(response.data.failFileReason, function(i, value) {
li += '<li>' + value + '</li>';
});
$('#error-msg').html(li);
}
var data = response.data,
li = '';
$('#priceTable').show();
$('.success-wrap').hide();
successList = data.successList;
$.each(data.failFileReason, function(i, value) {
li += '<li>' + value + '</li>';
});
$error.empty().html(li);
p.init(successList);
} else {
common.util.__tip(response.message, 'danger');
}
}
});
});
\ No newline at end of file
... ...
'use strict';
var $ = require('jquery'),
common=require('../common/common');
var ENUM={
vipType:{1:'正常折扣',2:'统一折扣',3:'无折扣',4:'固定折扣',5:'自定义折扣'},
gender: {1: '男', 2: '女', 3: '通用'}
common = require('../common/common');
var ENUM = {
vipType: {
1: '正常折扣',
2: '统一折扣',
3: '无折扣',
4: '固定折扣',
5: '自定义折扣'
},
gender: {
1: '男',
2: '女',
3: '通用'
}
}
new common.dropDown({
el:'#shop',
ajax:'shopsRest'
el: '#shop',
ajax: 'shopsRest'
});
new common.dropDown({
el: '#supplier',
ajax: 'supplier'
});
new common.dropDown({
el:'#supplier',
ajax:'supplier'
el: '#brand',
ajax: 'brand'
});
new common.dropDown({
el:'#brand',
ajax:'brand'
el: '#cate',
ajax: 'maxSort'
});
new common.dropDown({
el:'#cate',
ajax:'maxSort'
el: "#jit"
});
new common.dropDown({
el: "#status"
});
new common.dropDown({
el: "#stock"
});
new common.dropDown({
el: "#sex"
});
new common.dropDown({el:"#jit"});
new common.dropDown({el:"#status"});
new common.dropDown({el:"#stock"});
new common.dropDown({el:"#sex"});
var g = new common.grid({
el:"#basicTable",
parms:function(){
el: "#basicTable",
parms: function() {
return {
product_skn: common.util.__input("skn"),
shop_id:common.util.__input("shop"),
brand_id:common.util.__input("brand"),
supplier_id:common.util.__input("supplier"),
is_jit:common.util.__input("jit"),
is_auditing:common.util.__input("status"),
stock:common.util.__input("stock"),
gender:common.util.__input("sex"),
max_sort_id:common.util.__input("cate")
shop_id: common.util.__input("shop"),
brand_id: common.util.__input("brand"),
supplier_id: common.util.__input("supplier"),
is_jit: common.util.__input("jit"),
is_auditing: common.util.__input("status"),
stock: common.util.__input("stock"),
gender: common.util.__input("sex"),
max_sort_id: common.util.__input("cate")
};
},
columns:[
{display: 'SKN', name: 'product_skn'},
{display: '商品信息', name:'info', render: function(item) {
columns: [{
display: 'SKN',
name: 'product_skn'
}, {
display: '商品信息',
name: 'info',
render: function(item) {
return '<p>名称:' + item.product_name + '</p><p>品牌:' + item.brand_name + '</p><p>类目:' + item.middle_sort_name + '/' + item.small_sort_name + '</p>';
}},
{display: '供应商/店铺', name: 'supplier_name'},
{display: '性别', name: 'gender', render: function(item) {
}
}, {
display: '供应商/店铺',
name: 'supplier_name'
}, {
display: '性别',
name: 'gender',
render: function(item) {
return ENUM.gender[item.gender];
}},
{display: '吊牌价', name: 'retail_price'},
{display: '销售价', name: 'sales_price'},
{display: 'VIP折扣类型', name: 'vip_discount_type', render: function(item) {
}
}, {
display: '吊牌价',
name: 'retail_price'
}, {
display: '销售价',
name: 'sales_price'
}, {
display: 'VIP折扣类型',
name: 'vip_discount_type',
render: function(item) {
return ENUM.vipType[item.vip_discount_type];
}},
{display: 'VIP价', name: 'vip_price'},
{display: '白金', name: 'vip3_price'},
{display: '金卡', name: 'vip2_price'},
{display: '银卡', name: 'vip1_price'},
{display: '返币金额', name: 'return_coin'},
{display: '操作信息', name: 'operateInfo', render: function(item) {
}
}, {
display: 'VIP价',
name: 'vip_price'
}, {
display: '白金',
name: 'vip3_price'
}, {
display: '金卡',
name: 'vip2_price'
}, {
display: '银卡',
name: 'vip1_price'
}, {
display: '返币金额',
name: 'return_coin'
}, {
display: '操作信息',
name: 'operateInfo',
render: function(item) {
var html = '';
if (item.founder_name) {
html += '<p>' + item.founder_name + '</p>';
... ... @@ -75,11 +121,13 @@ var g = new common.grid({
html += '<p>' + item.updateTime + '</p>';
}
return html;
}},
{display: '操作', render:function(item){
}
}, {
display: '操作',
render: function(item) {
return '<a href="javascript:;" class="btn btn-info btn-xs modify-btn" data-skn="' + item.product_skn + '">修改</a>'
}}
]
}
}]
});
g.init($("#gridurl").val());
... ... @@ -153,7 +201,7 @@ $('#basicTable').on('click', '.modify-btn', function() {
}
}
vipPrice();
$select.on('change', function() {
vipPrice();
... ... @@ -168,10 +216,8 @@ $('#basicTable').on('click', '.modify-btn', function() {
});
$submitBtn.on('click', function() {
$.ajax({
type: 'POST',
common.util.__ajax({
url: '/goods/updatePrice',
dataType: 'json',
data: {
product_skn: skn,
sales_price: $price.val(),
... ... @@ -182,34 +228,18 @@ $('#basicTable').on('click', '.modify-btn', function() {
vip2_price: $vip2Price.val(),
vip3_price: $vip3Price.val()
}
}).then(function(res) {
if (res.data.code == 200) {
prompt('修改成功', 'success', function() {
g.reload();
});
} else {
prompt(res.data.message, 'danger');
}, function(res) {
if (res.code == 200) {
g.reload();
}
});
})
});
});
});
function prompt(msg, type, callback) {
$.gritter.add({
title: msg,
class_name: 'growl-' + type,
sticky: false,
time: '1000',
after_open: function() {
callback && callback();
}
});
}
//筛选
$("#filter-btn").click(function(){
$("#filter-btn").click(function() {
g.reload(1);
});
... ... @@ -224,19 +254,25 @@ $('#skn').on('keyup', function(event) {
$('#import-btn').on('click', function() {
if ($('#basicTable').css('display') == 'none') {
g.reload();
}
}
$('#basicTable, .bulk-import').toggle();
});
//upload-input
var successList = null,
$error = $('#error-msg');
common.edit.ajaxfileupload("#upload-input",{
params:{type:"price",__type:"batch-import"},
$('#upload-input').after('<div class="file-name btn btn-default">请选择文件</div>');
common.edit.ajaxfileupload("#upload-input", {
params: {
type: "price",
__type: "batch-import"
},
onStart: function() {
$('.load-modal').show();
$('.file-name').text($('#upload-input').val().replace("C:\\fakepath\\", ""));
},
onComplete:function(response){
onComplete: function(response) {
console.log(response);
$('.load-modal').hide();
if (response.code == 200) {
... ... @@ -252,7 +288,7 @@ common.edit.ajaxfileupload("#upload-input",{
$error.empty().html(li);
p.init(successList);
} else {
alert(response.message);
common.util.__tip(response.message, 'danger');
}
}
});
... ... @@ -262,15 +298,20 @@ common.edit.ajaxfileupload("#upload-input",{
var isFirst = false,
tableHtml = '';
var p = new common.grid({
el:"#priceTable",
columns:[
{display: 'SKN', render: function(item) {
el: "#priceTable",
columns: [{
display: 'SKN',
render: function(item) {
return item.newProductPriceBo.product_skn;
}},
{display: '吊牌价', render: function(item) {
}
}, {
display: '吊牌价',
render: function(item) {
return item.newProductPriceBo.retail_price + '<p style="color: #ccc;">' + item.oldProductPriceBo.retail_price + '</p>';
}},
{display: '销售价', render: function(item) {
}
}, {
display: '销售价',
render: function(item) {
var newPrice = item.newProductPriceBo,
newPriceHtml = newPrice.sales_price;
... ... @@ -279,12 +320,16 @@ var p = new common.grid({
}
return newPriceHtml + '<p style="color: #ccc;">' + item.oldProductPriceBo.sales_price + '</p>';
}},
{display: 'VIP折扣类型', render: function(item) {
return ENUM.vipType[item.newProductPriceBo.vip_discount_type] +
}
}, {
display: 'VIP折扣类型',
render: function(item) {
return ENUM.vipType[item.newProductPriceBo.vip_discount_type] +
'<p style="color: #ccc;">' + ENUM.vipType[item.oldProductPriceBo.vip_discount_type] + '</p>';
}},
{display: 'VIP价', render: function(item) {
}
}, {
display: 'VIP价',
render: function(item) {
var newPrice = item.newProductPriceBo,
newPriceHtml = '';
... ... @@ -298,8 +343,10 @@ var p = new common.grid({
newPriceHtml = '-'
}
return newPriceHtml + '<p style="color: #ccc;">' + item.oldProductPriceBo.vip_price + '</p>';
}},
{display: '白金价', render: function(item) {
}
}, {
display: '白金价',
render: function(item) {
var newPrice = item.newProductPriceBo,
newPriceHtml = newPrice.vip3_price;
... ... @@ -308,8 +355,10 @@ var p = new common.grid({
}
return newPriceHtml + '<p style="color: #ccc;">' + item.oldProductPriceBo.vip3_price + '</p>';
}},
{display: '金卡价', render: function(item) {
}
}, {
display: '金卡价',
render: function(item) {
var newPrice = item.newProductPriceBo,
newPriceHtml = newPrice.vip2_price;
... ... @@ -318,8 +367,10 @@ var p = new common.grid({
}
return newPriceHtml + '<p style="color: #ccc;">' + item.oldProductPriceBo.vip2_price + '</p>';
}},
{display: '银卡价', render: function(item) {
}
}, {
display: '银卡价',
render: function(item) {
var newPrice = item.newProductPriceBo,
newPriceHtml = newPrice.vip1_price;
... ... @@ -328,26 +379,31 @@ var p = new common.grid({
}
return newPriceHtml + '<p style="color: #ccc;">' + item.oldProductPriceBo.vip2_price + '</p>';
}},
{display: '返币金额', render: function(item) {
}
}, {
display: '返币金额',
render: function(item) {
return item.newProductPriceBo.return_coin + '<p style="color: #ccc;">' + item.oldProductPriceBo.return_coin + '</p>';
}},
{display: '操作', render: function(item) {
}
}, {
display: '操作',
render: function(item) {
return '<a class="btn btn-info delete-btn" data-index="' + item.__index + '" href="javascript:;">删除</a>';
}}
]
}
}]
});
$('#delete-all').on('click', function() {
$('#priceTable').empty();
$error.empty();
successList.length = 0;
})
//批量变价列表单个删除
$('#priceTable').on('click', '.delete-btn', function() {
//var index = p.rows[$(this).data('index')];
successList.splice($(this).data('index'),1);
successList.splice($(this).data('index'), 1);
p.reload();
// console.log(p.rows);
... ... @@ -367,15 +423,15 @@ $('#sure-change').on('click', function() {
$.each(successList, function(i, value) {
arr.push(value.newProductPriceBo);
});
data = JSON.stringify(arr);
common.util.__ajax({
url:'/goods/batchUpdatePrice',
data:{
url: '/goods/batchUpdatePrice',
data: {
batchList: data
}
},function(res){
}, function(res) {
console.log(res);
$('#priceTable').hide();
$('.success-wrap').show();
... ... @@ -396,5 +452,4 @@ $('#download-btn').on('click', function() {
//$('#download-btn').attr('href', )
});*/
location.href = $(this).data('domain') + '/batch/download?path=' + path;
});
});
\ No newline at end of file
... ...
... ... @@ -123,14 +123,34 @@
display: none;
}
#upload-input {
display: inline-block;
position: static;
opacity: 1;
width: auto;
height: auto;
}
.excel-upload-wrap {
display:inline-block;
position: relative;
.excel-upload {
display: inline-block;
position: static;
opacity: 1;
width: auto;
height: auto;
}
#upload-input {
position: absolute;
top: 0;
right: 0;
z-index: 2;
opacity: 0;
}
.file-name {
display: inline-block;
width: 302px;
height: 38px;
}
}
.excel-model {
display: inline-block;
width: 110px;
... ...
... ... @@ -9,13 +9,13 @@ exports.uploadFile=function(req,res){
// TODO 代理上传
// 方法1
if(env==="development"){
if (env === "development") {
res.json({
"code":200,
"data" : "https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1444256491,538988776&fm=80",
"message":"success"
"code": 200,
"data": "https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1444256491,538988776&fm=80",
"message": "success"
});
}else{
} else {
if(req.is("multipart/form-data")){
req.body.file=fs.createReadStream(req.files[req.body.filename].path);
if(req.body.__type=="batch-import"){
... ...
... ... @@ -165,9 +165,9 @@
{{# bulkImport}}
<div class="panel bulk-import">
<div class="import-hd">
<span>
<span class="excel-upload-wrap">
<label>选择文件</label>
<input id="upload-input" name="file" class="btn btn-default" type="file">
<input id="upload-input" name="file" class="btn btn-default excel-upload" type="file">
</span>
<a class="excel-model" href="{{domain}}{{download}}">表头下载</a>
... ...