/**
@Name: 用户模块
*/
layui.define(['laypage', 'fly','form', 'element'], function(exports){
var $ = layui.jquery;
var layer = layui.layer;
var util = layui.util;
var laytpl = layui.laytpl;
var form = layui.form();
var laypage = layui.laypage;
var fly = layui.fly;
var element = layui.element();
var gather = {}, dom = {
mine: $('#LAY_mine')
,mineview: $('.mine-view')
,minemsg: $('#LAY_minemsg')
,infobtn: $('#LAY_btninfo')
};
//我的相关数据
var elemUC = $('#LAY_uc'), elemUCM = $('#LAY_ucm');
gather.minelog = {};
gather.mine = function(index, type, url){
var tpl = [
//求解
'{{# for(var i = 0; i < d.rows.length; i++){ }}\
\
{{# if(d.rows[i].collection_time){ }}\
{{= d.rows[i].title}}\
收藏于{{ d.rows[i].collection_time }}\
{{# } else { }}\
{{# if(d.rows[i].status == 1){ }}\
精\
{{# } }}\
{{# if(d.rows[i].accept >= 0){ }}\
已解决\
{{# } }}\
{{= d.rows[i].title}}\
{{new Date(d.rows[i].time).toLocaleString()}}\
{{# if(d.rows[i].accept == -1){ }}\
编辑\
{{# } }}\
{{d.rows[i].hits}}阅/{{d.rows[i].comment}}答\
{{# } }}\
\
{{# } }}'
];
var view = function(res){
var html = laytpl(tpl[0]).render(res);
dom.mine.children().eq(index).find('span').html(res.count);
elemUCM.children().eq(index).find('ul').html(res.rows.length === 0 ? '没有相关数据
' : html);
};
var page = function(now){
var curr = now || 1;
if(gather.minelog[type + '-page-' + curr]){
view(gather.minelog[type + '-page-' + curr]);
} else {
//我收藏的帖
if(type === 'collection'){
var nums = 10; //每页出现的数据量
fly.json(url, {}, function(res){
res.count = res.rows.length;
var rows = fly.sort(res.rows, 'collection_timestamp')
,render = function(curr){
var data = []
,start = curr*nums - nums
,last = start + nums - 1;
if(last >= rows.length){
last = curr > 1 ? rows.length - (last - rows.length) : rows.length - 1;
}
for(var i = start; i <= last; i++){
data.push(rows[i]);
}
res.rows = data;
view(res);
};
render(curr)
gather.minelog['collect-page-' + curr] = res;
now || laypage({
cont: 'LAY_page1'
,pages: Math.ceil(rows.length/nums) //得到总页数
,skin: 'fly'
,curr: curr
,jump: function(e, first){
if(!first){
render(e.curr);
}
}
});
});
} else {
fly.json('/api/'+ type +'/', {
page: curr
}, function(res){
view(res);
gather.minelog['mine-jie-page-' + curr] = res;
now || laypage({
cont: 'LAY_page'
,pages: res.pages
,skin: 'fly'
,curr: curr
,jump: function(e, first){
if(!first){
page(e.curr);
}
}
});
});
}
}
};
if(!gather.minelog[type]){
page();
}
};
if(elemUC[0]){
layui.each(dom.mine.children(), function(index, item){
var othis = $(item)
gather.mine(index, othis.data('type'), othis.data('url'));
});
}
//Hash地址的定位
var layid = location.hash.replace(/^#/, '');
element.tabChange('user', layid);
element.on('tab(user)', function(elem){
location.hash = ''+ $(this).attr('lay-id');
});
//根据ip获取城市
if($('#L_city').val() === ''){
$.getScript('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js', function(){
$('#L_city').val(remote_ip_info.city);
});
}
//上传图片
if($('.upload-img')[0]){
layui.use('upload', function(upload){
var avatarAdd = $('.avatar-add');
layui.upload({
elem: '.upload-img input'
,method: 'post'
,url: '/os/file/upload'
,before: function(){
avatarAdd.find('.loading').show();
}
,success: function(res){
//res = JSON.parse(res);
if(res.retcode == 0){
$.post('/os/user/update', {
bean:JSON.stringify({avatar: res.retinfo})
,columns:JSON.stringify(["avatar"])
}, function(res){
res = JSON.parse(res);
if(res.retcode != 0){
layer.msg(res.retinfo);
return false;
}
location.reload();
});
} else {
layer.msg(res.msg, {icon: 5});
}
avatarAdd.find('.loading').hide();
}
,error: function(){
avatarAdd.find('.loading').hide();
}
});
});
}
//提交成功后刷新
fly.form['set-mine'] = function(data, required){
layer.msg('修改成功', {
icon: 1
,time: 1000
,shade: 0.1
}, function(){
location.reload();
});
};
//表单验证
form.verify({
repass: function(value, item){ //value:表单的值、item:表单的DOM对象
var pass = $("input[name='pass']").val();
if (value != pass){
return "重复密码不一致";
}
}
});
//登录
form.on('submit(login)', function(data){
var fdata = data.field;
$.post("/os/user/login",{
bean:JSON.stringify({username:fdata.username, password:fdata.password})
,vercode:fdata.vercode
},function (data) {
data = JSON.parse(data);
if(data.retcode != 0){
layer.msg(data.retinfo);
return false;
}
location.href = "/";
});
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
form.on('submit(reg)', function(data){
data = data.field;
var bean = {
email:data.email
,password:data.pass
,nickname:data.nickname
};
$.post("/os/user/register",{
bean:JSON.stringify(bean)
},function (data) {
data = JSON.parse(data);
if(data.retcode != 0){
layer.msg(data.retinfo);
return false;
}
layer.msg("注册成功",{icon:16, shade: 0.1, time:0});
location.href = "/user/login";
});
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
form.on('submit(set-info)', function (data) {
var bean = {},columns = ['email', 'nickname', 'sex', 'city', 'sign'];
columns.forEach(function (value) {
bean[value] = data.field[value]
});
$.post("/os/user/update",{
bean:JSON.stringify(bean)
,columns:JSON.stringify(columns)
},function (res) {
res = JSON.parse(res);
if(res.retcode != 0){
layer.msg(res.retinfo);
return false;
}
location.reload();
});
return false;
});
form.on('submit(set-changepwd)', function (data) {
$.post("/os/user/changepwd",{
nowpass:data.field.nowpass
,pass:data.field.pass
},function (res) {
res = JSON.parse(res);
if(res.retcode != 0){
layer.msg(res.retinfo);
return false;
}
layer.msg('密码修改成功,重新登录', {
time: 2000 //2秒关闭(如果不配置,默认是3秒)
}, function(){
$.post('/os/user/logout',{},function () {
location.reload();
});
});
});
return false;
});
//帐号绑定
$('.acc-unbind').on('click', function(){
var othis = $(this), type = othis.attr('type');
layer.confirm('整的要解绑'+ ({
qq_id: 'QQ'
,weibo_id: '微博'
})[type] + '吗?', {icon: 5}, function(){
fly.json('/api/unbind', {
type: type
}, function(res){
if(res.status === 0){
layer.alert('已成功解绑。', {
icon: 1
,end: function(){
location.reload();
}
});
} else {
layer.msg(res.msg);
}
});
});
});
//我的消息
gather.minemsg = function(){
var delAll = $('#LAY_delallmsg')
,tpl = '{{# var len = d.rows.length;\
if(len === 0){ }}\
您暂时没有最新消息
\
{{# } else { }}\
\
{{# for(var i = 0; i < len; i++){ }}\
- \
{{ d.rows[i].content}}
\
{{d.rows[i].time}}删除
\
\
{{# } }}\
\
{{# } }}'
,delEnd = function(clear){
if(clear || dom.minemsg.find('.mine-msg li').length === 0){
dom.minemsg.html('您暂时没有最新消息
');
}
}
// fly.json('/message/find/', {}, function(res){
// var html = laytpl(tpl).render(res);
// dom.minemsg.html(html);
// if(res.rows.length > 0){
// delAll.removeClass('layui-hide');
// }
// });
//阅读后删除
dom.minemsg.on('click', '.mine-msg li .fly-delete', function(){
var othis = $(this).parents('li'), id = othis.data('id');
layer.confirm('确定删除该消息吗?', function(index){
fly.json('/message/remove/', {
id: id
}, function(res){
if(res.status === 0){
othis.remove();
delEnd();
}
});
});
});
//删除全部
$('#LAY_delallmsg').on('click', function(){
var othis = $(this);
layer.confirm('确定清空吗?', function(index){
fly.json('/message/remove/', {
all: true
}, function(res){
if(res.status === 0){
layer.close(index);
othis.addClass('layui-hide');
delEnd(true);
}
});
});
});
};
dom.minemsg[0] && gather.minemsg();
exports('user', null);
});