redbbs-pro/root/res/mods/user.js
2018-06-13 00:05:06 +08:00

475 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
@Name: 用户模块
*/
layui.define(['laypage', 'fly', 'element', 'flow'], 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 flow = layui.flow;
var element = layui.element;
var upload = layui.upload;
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++){ }}\
<li>\
{{# if(d.rows[i].collection_time){ }}\
<a class="jie-title" href="/jie/{{d.rows[i].id}}/" target="_blank">{{= d.rows[i].title}}</a>\
<i>{{ d.rows[i].collection_time }} 收藏</i>\
{{# } else { }}\
{{# if(d.rows[i].status == 1){ }}\
<span class="fly-jing layui-hide-xs">精</span>\
{{# } }}\
{{# if(d.rows[i].accept >= 0){ }}\
<span class="jie-status jie-status-ok">已结</span>\
{{# } else { }}\
<span class="jie-status">未结</span>\
{{# } }}\
{{# if(d.rows[i].status == -1){ }}\
<span class="jie-status">审核中</span>\
{{# } }}\
<a class="jie-title" href="/jie/{{d.rows[i].id}}/" target="_blank">{{= d.rows[i].title}}</a>\
<i class="layui-hide-xs">{{ layui.util.timeAgo(d.rows[i].time, 1) }}</i>\
{{# if(d.rows[i].accept == -1){ }}\
<a class="mine-edit layui-hide-xs" href="/jie/edit/{{d.rows[i].id}}" target="_blank">编辑</a>\
{{# } }}\
<em class="layui-hide-xs">{{d.rows[i].hits}}阅/{{d.rows[i].comment}}答</em>\
{{# } }}\
</li>\
{{# } }}'
];
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 ? '<div class="fly-msg">没有相关数据</div>' : 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 = layui.sort(res.rows, 'collection_timestamp', 'desc')
,render = function(curr){
var data = []
,start = curr*nums - nums
,last = start + nums - 1;
if(last >= rows.length){
last = curr > 1 ? start + (rows.length - start - 1) : 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.render({
elem: 'LAY_page1'
,count: rows.length
,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.render({
elem: 'LAY_page'
,count: res.count
,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'));
});
}
//显示当前tab
if(location.hash){
element.tabChange('user', location.hash.replace(/^#/, ''));
}
element.on('tab(user)', function(){
var othis = $(this), layid = othis.attr('lay-id');
if(layid){
location.hash = layid;
}
});
//根据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');
upload.render({
elem: '.upload-img'
,url: '/os/file/upload'
,size: 50
,before: function(){
avatarAdd.find('.loading').show();
}
,done: function(res){
if(res.retcode == 0){
fly.json('/os/user/update', {
bean:JSON.stringify({avatar: res.retinfo})
,columns:JSON.stringify(["avatar"])
}, function(res){
location.reload();
});
} else {
layer.msg(res.msg, {icon: 5});
}
avatarAdd.find('.loading').hide();
}
,error: function(){
avatarAdd.find('.loading').hide();
}
});
});
}
//合作平台
if($('#LAY_coop')[0]){
//资源上传
$('#LAY_coop .uploadRes').each(function(index, item){
var othis = $(this);
upload.render({
elem: item
,url: '/os/file/upload?filename='+ othis.data('filename')
,accept: 'file'
,exts: 'zip'
,size: 30*1024
,before: function(){
layer.msg('正在上传', {
icon: 16
,time: -1
,shade: 0.7
});
}
,done: function(res){
if(res.code == 0){
layer.msg(res.msg, {icon: 6})
} else {
layer.msg(res.msg)
}
}
});
});
//成效展示
var effectTpl = ['{{# layui.each(d.data, function(index, item){ }}'
,'<tr>'
,'<td><a href="/u/{{ item.uid }}" target="_blank" style="color: #01AAED;">{{ item.uid }}</a></td>'
,'<td>{{ item.authProduct }}</td>'
,'<td>¥{{ item.rmb }}</td>'
,'<td>{{ item.create_time }}</td>'
,'</tr>'
,'{{# }); }}'].join('');
var effectView = function(res){
var html = laytpl(effectTpl).render(res);
$('#LAY_coop_effect').html(html);
$('#LAY_effect_count').html('你共有 <strong style="color: #FF5722;">'+ (res.count||0) +'</strong> 笔合作授权订单');
};
var effectShow = function(page){
fly.json('/cooperation/effect', {
page: page||1
}, function(res){
effectView(res);
laypage.render({
elem: 'LAY_effect_page'
,count: res.count
,curr: page
,jump: function(e, first){
if(!first){
effectShow(e.curr);
}
}
});
});
};
effectShow();
}
//提交成功后刷新
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) {
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) {
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) {
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) {
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;
});
form.on('submit(set-blog)', function (data) {
var bean = {},columns = ['site', 'git'];
columns.forEach(function (value) {
bean[value] = data.field[value]
});
$.post("/os/user/update",{
bean:JSON.stringify(bean)
,columns:JSON.stringify(columns)
},function (res) {
if(res.retcode != 0){
layer.msg(res.retinfo);
return false;
}
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){ }}\
<div class="fly-none">您暂时没有最新消息</div>\
{{# } else { }}\
<ul class="mine-msg">\
{{# for(var i = 0; i < len; i++){ }}\
<li data-id="{{d.rows[i].id}}">\
<blockquote class="layui-elem-quote">{{ d.rows[i].content}}</blockquote>\
<p><span>{{d.rows[i].time}}</span><a href="javascript:;" class="layui-btn layui-btn-sm layui-btn-danger fly-delete">删除</a></p>\
</li>\
{{# } }}\
</ul>\
{{# } }}'
,delEnd = function(clear){
if(clear || dom.minemsg.find('.mine-msg li').length === 0){
dom.minemsg.html('<div class="fly-none">您暂时没有最新消息</div>');
}
}
/*
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);
});