461 lines
12 KiB
JavaScript
461 lines
12 KiB
JavaScript
/**
|
||
|
||
@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) {
|
||
console.log(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){ }}\
|
||
<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);
|
||
|
||
}); |