chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
|
||||
@Name: 案例
|
||||
|
||||
*/
|
||||
|
||||
layui.define(['laypage', 'fly'], 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 upload = layui.upload;
|
||||
var fly = layui.fly;
|
||||
var device = layui.device();
|
||||
|
||||
|
||||
//求解管理
|
||||
var active = {
|
||||
//提交案例
|
||||
push: function(div){
|
||||
layer.open({
|
||||
type: 1
|
||||
,id: 'LAY_pushcase'
|
||||
,title: '提交案例'
|
||||
,area: (device.ios || device.android) ? ($(window).width() + 'px') : '660px'
|
||||
,content: ['<ul class="layui-form" style="margin: 20px;">'
|
||||
,'<li class="layui-form-item">'
|
||||
,'<label class="layui-form-label">案例名称</label>'
|
||||
,'<div class="layui-input-block">'
|
||||
,'<input required name="title" lay-verify="required" placeholder="一般为网站名称" value="" class="layui-input">'
|
||||
,'</div>'
|
||||
,'</li>'
|
||||
,'<li class="layui-form-item">'
|
||||
,'<label class="layui-form-label">案例网址</label>'
|
||||
,'<div class="layui-input-block">'
|
||||
,'<input required name="link" lay-verify="url" placeholder="必须是自己或自己参与过的项目" value="" class="layui-input">'
|
||||
,'</div>'
|
||||
,'</li>'
|
||||
,'<li class="layui-form-item layui-form-text">'
|
||||
,'<label class="layui-form-label">案例描述</label>'
|
||||
,'<div class="layui-input-block layui-form-text">'
|
||||
,'<textarea required name="desc" lay-verify="required" autocomplete="off" placeholder="大致介绍你的项目,也可以阐述你在该项目中使用 layui 的感受\n10-60个字" class="layui-textarea"></textarea>'
|
||||
,'</div>'
|
||||
,'</li>'
|
||||
,'<li class="layui-form-item">'
|
||||
,'<label class="layui-form-label">案例封面</label>'
|
||||
,'<div class="layui-input-inline" style="width:auto;">'
|
||||
,'<input type="hidden" name="cover" lay-verify="required" class="layui-input fly-case-image">'
|
||||
,'<button type="button" class="layui-btn layui-btn-primary" id="caseUpload">'
|
||||
,'<i class="layui-icon"></i>上传图片'
|
||||
,'</button>'
|
||||
,'</div>'
|
||||
,'<div class="layui-form-mid layui-word-aux" id="preview">推荐尺寸:478*300,大小不能超过 30kb</div>'
|
||||
,'</li>'
|
||||
,'<li class="layui-form-item">'
|
||||
,'<label class="layui-form-label"> </label>'
|
||||
,'<div class="layui-input-block">'
|
||||
,'<input type="checkbox" name="agree" id="agree" title="我同意(如果你进行了刷赞行为,你的案例将被立马剔除)" lay-skin="primary">'
|
||||
,'</div>'
|
||||
,'</li>'
|
||||
,'<li class="layui-form-item">'
|
||||
,'<div class="layui-input-block">'
|
||||
,'<button type="button" lay-submit lay-filter="pushCase" class="layui-btn">提交案例</button>'
|
||||
,'</div>'
|
||||
,'</li>'
|
||||
,'</ul>'].join('')
|
||||
,success: function(layero, index){
|
||||
var image = layero.find('.fly-case-image')
|
||||
,preview = $('#preview');
|
||||
|
||||
upload.render({
|
||||
url: '/api/upload/case/'
|
||||
,elem: '#caseUpload'
|
||||
,size: 30
|
||||
,done: function(res){
|
||||
if(res.status == 0){
|
||||
image.val(res.url);
|
||||
preview.html('<a href="'+ res.url +'" target="_blank" style="color: #5FB878;">封面已上传,点击可预览</a>');
|
||||
} else {
|
||||
layer.msg(res.msg, {icon: 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
form.render('checkbox').on('submit(pushCase)', function(data){
|
||||
if(!data.field.agree){
|
||||
return layer.tips('你需要同意才能提交', $('#agree').next(), {tips: 1});
|
||||
}
|
||||
|
||||
fly.json('/case/push/', data.field, function(res){
|
||||
layer.close(index);
|
||||
layer.alert(res.msg, {
|
||||
icon: 1
|
||||
})
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//点赞
|
||||
,praise: function(othis){
|
||||
var li = othis.parents('li')
|
||||
,PRIMARY = 'layui-btn-primary'
|
||||
,unpraise = !othis.hasClass(PRIMARY)
|
||||
,numElem = li.find('.fly-case-nums')
|
||||
|
||||
fly.json('/case/praise/', {
|
||||
id: li.data('id')
|
||||
,unpraise: unpraise ? true : null
|
||||
}, function(res){
|
||||
numElem.html(res.praise);
|
||||
if(unpraise){
|
||||
othis.addClass(PRIMARY).html('点赞');
|
||||
layer.tips('少了个赞囖', numElem, {
|
||||
tips: 1
|
||||
});
|
||||
} else {
|
||||
othis.removeClass(PRIMARY).html('已赞');
|
||||
layer.tips('成功获得个赞', numElem, {
|
||||
tips: [1, '#FF5722']
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//查看点赞用户
|
||||
,showPraise: function(othis){
|
||||
var li = othis.parents('li');
|
||||
if(othis.html() == 0) return layer.tips('该项目还没有收到赞', othis, {
|
||||
tips: 1
|
||||
});
|
||||
fly.json('/case/praise_user/', {
|
||||
id: li.data('id')
|
||||
}, function(res){
|
||||
var html = '';
|
||||
layer.open({
|
||||
type: 1
|
||||
,title: '项目【'+ res.title + '】获得的赞'
|
||||
,id: 'LAY_showPraise'
|
||||
,shade: 0.8
|
||||
,shadeClose: true
|
||||
,area: '305px'
|
||||
,skin: 'layer-ext-case'
|
||||
,content: function(){
|
||||
layui.each(res.data, function(_, item){
|
||||
html += '<li><a href="/u/'+ 168*item.id +'/" target="_blank" title="'+ item.username +'"><img src="'+ item.avatar +'"></a></li>'
|
||||
});
|
||||
return '<ul class="layer-ext-ul">' + html + '</ul>';
|
||||
}()
|
||||
})
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$('body').on('click', '.fly-case-active', function(){
|
||||
var othis = $(this), type = othis.data('type');
|
||||
active[type] && active[type].call(this, othis);
|
||||
});
|
||||
|
||||
exports('case', {});
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,624 @@
|
||||
/**
|
||||
|
||||
@Name: Fly社区主入口
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util'], function(exports){
|
||||
|
||||
var $ = layui.jquery
|
||||
,layer = layui.layer
|
||||
,laytpl = layui.laytpl
|
||||
,form = layui.form
|
||||
,element = layui.element
|
||||
,upload = layui.upload
|
||||
,util = layui.util
|
||||
,device = layui.device()
|
||||
|
||||
,DISABLED = 'layui-btn-disabled';
|
||||
|
||||
//阻止IE7以下访问
|
||||
if(device.ie && device.ie < 8){
|
||||
layer.alert('如果您非得使用 IE 浏览器访问Fly社区,那么请使用 IE8+');
|
||||
}
|
||||
|
||||
layui.focusInsert = function(obj, str){
|
||||
var result, val = obj.value;
|
||||
obj.focus();
|
||||
if(document.selection){ //ie
|
||||
result = document.selection.createRange();
|
||||
document.selection.empty();
|
||||
result.text = str;
|
||||
} else {
|
||||
result = [val.substring(0, obj.selectionStart), str, val.substr(obj.selectionEnd)];
|
||||
obj.focus();
|
||||
obj.value = result.join('');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//数字前置补零
|
||||
layui.laytpl.digit = function(num, length, end){
|
||||
var str = '';
|
||||
num = String(num);
|
||||
length = length || 2;
|
||||
for(var i = num.length; i < length; i++){
|
||||
str += '0';
|
||||
}
|
||||
return num < Math.pow(10, length) ? str + (num|0) : num;
|
||||
};
|
||||
|
||||
var fly = {
|
||||
|
||||
//Ajax
|
||||
json: function(url, data, success, options){
|
||||
var that = this, type = typeof data === 'function';
|
||||
|
||||
if(type){
|
||||
options = success
|
||||
success = data;
|
||||
data = {};
|
||||
}
|
||||
|
||||
options = options || {};
|
||||
|
||||
return $.ajax({
|
||||
type: options.type || 'post',
|
||||
dataType: options.dataType || 'json',
|
||||
data: data,
|
||||
url: url,
|
||||
success: function(res){
|
||||
if(res.status === 0) {
|
||||
success && success(res);
|
||||
} else {
|
||||
layer.msg(res.msg || res.code, {shift: 6});
|
||||
options.error && options.error();
|
||||
}
|
||||
}, error: function(e){
|
||||
layer.msg('请求异常,请重试', {shift: 6});
|
||||
options.error && options.error(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//计算字符长度
|
||||
,charLen: function(val){
|
||||
var arr = val.split(''), len = 0;
|
||||
for(var i = 0; i < val.length ; i++){
|
||||
arr[i].charCodeAt(0) < 299 ? len++ : len += 2;
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
,form: {}
|
||||
|
||||
//简易编辑器
|
||||
,layEditor: function(options){
|
||||
var html = ['<div class="layui-unselect fly-edit">'
|
||||
,'<span type="face" title="插入表情"><i class="iconfont icon-yxj-expression" style="top: 1px;"></i></span>'
|
||||
,'<span type="picture" title="插入图片:img[src]"><i class="iconfont icon-tupian"></i></span>'
|
||||
,'<span type="href" title="超链接格式:a(href)[text]"><i class="iconfont icon-lianjie"></i></span>'
|
||||
,'<span type="code" title="插入代码或引用"><i class="iconfont icon-emwdaima" style="top: 1px;"></i></span>'
|
||||
,'<span type="hr" title="插入水平线">hr</span>'
|
||||
,'<span type="yulan" title="预览"><i class="iconfont icon-yulan1"></i></span>'
|
||||
,'</div>'].join('');
|
||||
|
||||
var log = {}, mod = {
|
||||
face: function(editor, self){ //插入表情
|
||||
var str = '', ul, face = fly.faces;
|
||||
for(var key in face){
|
||||
str += '<li title="'+ key +'"><img src="'+ face[key] +'"></li>';
|
||||
}
|
||||
str = '<ul id="LAY-editface" class="layui-clear">'+ str +'</ul>';
|
||||
layer.tips(str, self, {
|
||||
tips: 3
|
||||
,time: 0
|
||||
,skin: 'layui-edit-face'
|
||||
});
|
||||
$(document).on('click', function(){
|
||||
layer.closeAll('tips');
|
||||
});
|
||||
$('#LAY-editface li').on('click', function(){
|
||||
var title = $(this).attr('title') + ' ';
|
||||
layui.focusInsert(editor[0], 'face' + title);
|
||||
});
|
||||
}
|
||||
,picture: function(editor){ //插入图片
|
||||
layer.open({
|
||||
type: 1
|
||||
,id: 'fly-jie-upload'
|
||||
,title: '插入图片'
|
||||
,area: 'auto'
|
||||
,shade: false
|
||||
,area: '465px'
|
||||
,fixed: false
|
||||
,offset: [
|
||||
editor.offset().top - $(window).scrollTop() + 'px'
|
||||
,editor.offset().left + 'px'
|
||||
]
|
||||
,skin: 'layui-layer-border'
|
||||
,content: ['<ul class="layui-form layui-form-pane" style="margin: 20px;">'
|
||||
,'<li class="layui-form-item">'
|
||||
,'<label class="layui-form-label">URL</label>'
|
||||
,'<div class="layui-input-inline">'
|
||||
,'<input required name="image" placeholder="支持直接粘贴远程图片地址" value="" class="layui-input">'
|
||||
,'</div>'
|
||||
,'<button type="button" class="layui-btn layui-btn-primary" id="uploadImg"><i class="layui-icon"></i>上传图片</button>'
|
||||
,'</li>'
|
||||
,'<li class="layui-form-item" style="text-align: center;">'
|
||||
,'<button type="button" lay-submit lay-filter="uploadImages" class="layui-btn">确认</button>'
|
||||
,'</li>'
|
||||
,'</ul>'].join('')
|
||||
,success: function(layero, index){
|
||||
var image = layero.find('input[name="image"]');
|
||||
|
||||
//执行上传实例
|
||||
upload.render({
|
||||
elem: '#uploadImg'
|
||||
,url: '/api/upload/'
|
||||
,size: 200
|
||||
,done: function(res){
|
||||
if(res.status == 0){
|
||||
image.val(res.url);
|
||||
} else {
|
||||
layer.msg(res.msg, {icon: 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(uploadImages)', function(data){
|
||||
var field = data.field;
|
||||
if(!field.image) return image.focus();
|
||||
layui.focusInsert(editor[0], 'img['+ field.image + '] ');
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
,href: function(editor){ //超链接
|
||||
layer.prompt({
|
||||
title: '请输入合法链接'
|
||||
,shade: false
|
||||
,fixed: false
|
||||
,id: 'LAY_flyedit_href'
|
||||
,offset: [
|
||||
editor.offset().top - $(window).scrollTop() + 'px'
|
||||
,editor.offset().left + 'px'
|
||||
]
|
||||
}, function(val, index, elem){
|
||||
if(!/^http(s*):\/\/[\S]/.test(val)){
|
||||
layer.tips('这根本不是个链接,不要骗我。', elem, {tips:1})
|
||||
return;
|
||||
}
|
||||
layui.focusInsert(editor[0], ' a('+ val +')['+ val + '] ');
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
,code: function(editor){ //插入代码
|
||||
layer.prompt({
|
||||
title: '请贴入代码或任意文本'
|
||||
,formType: 2
|
||||
,maxlength: 10000
|
||||
,shade: false
|
||||
,id: 'LAY_flyedit_code'
|
||||
,area: ['800px', '360px']
|
||||
}, function(val, index, elem){
|
||||
layui.focusInsert(editor[0], '[pre]\n'+ val + '\n[/pre]');
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
,hr: function(editor){ //插入水平分割线
|
||||
layui.focusInsert(editor[0], '[hr]');
|
||||
}
|
||||
,yulan: function(editor){ //预览
|
||||
var content = editor.val();
|
||||
|
||||
content = /^\{html\}/.test(content)
|
||||
? content.replace(/^\{html\}/, '')
|
||||
: fly.content(content);
|
||||
|
||||
layer.open({
|
||||
type: 1
|
||||
,title: '预览'
|
||||
,shade: false
|
||||
,area: ['100%', '100%']
|
||||
,scrollbar: false
|
||||
,content: '<div class="detail-body" style="margin:20px;">'+ content +'</div>'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
layui.use('face', function(face){
|
||||
options = options || {};
|
||||
fly.faces = face;
|
||||
$(options.elem).each(function(index){
|
||||
var that = this, othis = $(that), parent = othis.parent();
|
||||
parent.prepend(html);
|
||||
parent.find('.fly-edit span').on('click', function(event){
|
||||
var type = $(this).attr('type');
|
||||
mod[type].call(that, othis, this);
|
||||
if(type === 'face'){
|
||||
event.stopPropagation()
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
,escape: function(html){
|
||||
return String(html||'').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')
|
||||
.replace(/</g, '<').replace(/>/g, '>').replace(/'/g, ''').replace(/"/g, '"');
|
||||
}
|
||||
|
||||
//内容转义
|
||||
,content: function(content){
|
||||
//支持的html标签
|
||||
var html = function(end){
|
||||
return new RegExp('\\n*\\['+ (end||'') +'(pre|hr|div|span|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*', 'g');
|
||||
};
|
||||
content = fly.escape(content||'') //XSS
|
||||
.replace(/img\[([^\s]+?)\]/g, function(img){ //转义图片
|
||||
return '<img src="' + img.replace(/(^img\[)|(\]$)/g, '') + '">';
|
||||
}).replace(/@(\S+)(\s+?|$)/g, '@<a href="javascript:;" class="fly-aite">$1</a>$2') //转义@
|
||||
.replace(/face\[([^\s\[\]]+?)\]/g, function(face){ //转义表情
|
||||
var alt = face.replace(/^face/g, '');
|
||||
return '<img alt="'+ alt +'" title="'+ alt +'" src="' + fly.faces[alt] + '">';
|
||||
}).replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g, function(str){ //转义链接
|
||||
var href = (str.match(/a\(([\s\S]+?)\)\[/)||[])[1];
|
||||
var text = (str.match(/\)\[([\s\S]*?)\]/)||[])[1];
|
||||
if(!href) return str;
|
||||
var rel = /^(http(s)*:\/\/)\b(?!(\w+\.)*(sentsin.com|layui.com))\b/.test(href.replace(/\s/g, ''));
|
||||
return '<a href="'+ href +'" target="_blank"'+ (rel ? ' rel="nofollow"' : '') +'>'+ (text||href) +'</a>';
|
||||
}).replace(html(), '\<$1 $2\>').replace(html('/'), '\</$1\>') //转移HTML代码
|
||||
.replace(/\n/g, '<br>') //转义换行
|
||||
return content;
|
||||
}
|
||||
|
||||
//新消息通知
|
||||
,newmsg: function(){
|
||||
var elemUser = $('.fly-nav-user');
|
||||
if(layui.cache.user.uid !== -1 && elemUser[0]){
|
||||
fly.json('/message/nums/', {
|
||||
_: new Date().getTime()
|
||||
}, function(res){
|
||||
if(res.status === 0 && res.count > 0){
|
||||
var msg = $('<a class="fly-nav-msg" href="javascript:;">'+ res.count +'</a>');
|
||||
elemUser.append(msg);
|
||||
msg.on('click', function(){
|
||||
fly.json('/message/read', {}, function(res){
|
||||
if(res.status === 0){
|
||||
location.href = '/user/message/';
|
||||
}
|
||||
});
|
||||
});
|
||||
layer.tips('你有 '+ res.count +' 条未读消息', msg, {
|
||||
tips: 3
|
||||
,tipsMore: true
|
||||
,fixed: true
|
||||
});
|
||||
msg.on('mouseenter', function(){
|
||||
layer.closeAll('tips');
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
return arguments.callee;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//签到
|
||||
var tplSignin = ['{{# if(d.signed){ }}'
|
||||
,'<button class="layui-btn layui-btn-disabled">今日已签到</button>'
|
||||
,'<span>获得了<cite>{{ d.experience }}</cite>飞吻</span>'
|
||||
,'{{# } else { }}'
|
||||
,'<button class="layui-btn layui-btn-danger" id="LAY_signin">今日签到</button>'
|
||||
,'<span>可获得<cite>{{ d.experience }}</cite>飞吻</span>'
|
||||
,'{{# } }}'].join('')
|
||||
,tplSigninDay = '已连续签到<cite>{{ d.days }}</cite>天'
|
||||
|
||||
,signRender = function(data){
|
||||
laytpl(tplSignin).render(data, function(html){
|
||||
elemSigninMain.html(html);
|
||||
});
|
||||
laytpl(tplSigninDay).render(data, function(html){
|
||||
elemSigninDays.html(html);
|
||||
});
|
||||
}
|
||||
|
||||
,elemSigninHelp = $('#LAY_signinHelp')
|
||||
,elemSigninTop = $('#LAY_signinTop')
|
||||
,elemSigninMain = $('.fly-signin-main')
|
||||
,elemSigninDays = $('.fly-signin-days');
|
||||
|
||||
if(elemSigninMain[0]){
|
||||
/*
|
||||
fly.json('/sign/status', function(res){
|
||||
if(!res.data) return;
|
||||
signRender.token = res.data.token;
|
||||
signRender(res.data);
|
||||
});
|
||||
*/
|
||||
}
|
||||
$('body').on('click', '#LAY_signin', function(){
|
||||
var othis = $(this);
|
||||
if(othis.hasClass(DISABLED)) return;
|
||||
|
||||
fly.json('/sign/in', {
|
||||
token: signRender.token || 1
|
||||
}, function(res){
|
||||
signRender(res.data);
|
||||
}, {
|
||||
error: function(){
|
||||
othis.removeClass(DISABLED);
|
||||
}
|
||||
});
|
||||
|
||||
othis.addClass(DISABLED);
|
||||
});
|
||||
|
||||
//签到说明
|
||||
elemSigninHelp.on('click', function(){
|
||||
layer.open({
|
||||
type: 1
|
||||
,title: '签到说明'
|
||||
,area: '300px'
|
||||
,shade: 0.8
|
||||
,shadeClose: true
|
||||
,content: ['<div class="layui-text" style="padding: 20px;">'
|
||||
,'<blockquote class="layui-elem-quote">“签到”可获得社区飞吻,规则如下</blockquote>'
|
||||
,'<table class="layui-table">'
|
||||
,'<thead>'
|
||||
,'<tr><th>连续签到天数</th><th>每天可获飞吻</th></tr>'
|
||||
,'</thead>'
|
||||
,'<tbody>'
|
||||
,'<tr><td><5</td><td>5</td></tr>'
|
||||
,'<tr><td>≥5</td><td>10</td></tr>'
|
||||
,'<tr><td>≥15</td><td>15</td></tr>'
|
||||
,'<tr><td>≥30</td><td>20</td></tr>'
|
||||
,'</tbody>'
|
||||
,'</table>'
|
||||
,'<ul>'
|
||||
,'<li>中间若有间隔,则连续天数重新计算</li>'
|
||||
,'<li style="color: #FF5722;">不可利用程序自动签到,否则飞吻清零</li>'
|
||||
,'</ul>'
|
||||
,'</div>'].join('')
|
||||
});
|
||||
});
|
||||
|
||||
//签到活跃榜
|
||||
var tplSigninTop = ['{{# layui.each(d.data, function(index, item){ }}'
|
||||
,'<li>'
|
||||
,'<a href="/u/{{item.uid}}" target="_blank">'
|
||||
,'<img src="{{item.user.avatar}}">'
|
||||
,'<cite class="fly-link">{{item.user.username}}</cite>'
|
||||
,'</a>'
|
||||
,'{{# var date = new Date(item.time); if(d.index < 2){ }}'
|
||||
,'<span class="fly-grey">签到于 {{ layui.laytpl.digit(date.getHours()) + ":" + layui.laytpl.digit(date.getMinutes()) + ":" + layui.laytpl.digit(date.getSeconds()) }}</span>'
|
||||
,'{{# } else { }}'
|
||||
,'<span class="fly-grey">已连续签到 <i>{{ item.days }}</i> 天</span>'
|
||||
,'{{# } }}'
|
||||
,'</li>'
|
||||
,'{{# }); }}'
|
||||
,'{{# if(d.data.length === 0) { }}'
|
||||
,'{{# if(d.index < 2) { }}'
|
||||
,'<li class="fly-none fly-grey">今天还没有人签到</li>'
|
||||
,'{{# } else { }}'
|
||||
,'<li class="fly-none fly-grey">还没有签到记录</li>'
|
||||
,'{{# } }}'
|
||||
,'{{# } }}'].join('');
|
||||
|
||||
elemSigninTop.on('click', function(){
|
||||
var loadIndex = layer.load(1, {shade: 0.8});
|
||||
fly.json('../json/signin.js', function(res){ //实际使用,请将 url 改为真实接口
|
||||
var tpl = $(['<div class="layui-tab layui-tab-brief" style="margin: 5px 0 0;">'
|
||||
,'<ul class="layui-tab-title">'
|
||||
,'<li class="layui-this">最新签到</li>'
|
||||
,'<li>今日最快</li>'
|
||||
,'<li>总签到榜</li>'
|
||||
,'</ul>'
|
||||
,'<div class="layui-tab-content fly-signin-list" id="LAY_signin_list">'
|
||||
,'<ul class="layui-tab-item layui-show"></ul>'
|
||||
,'<ul class="layui-tab-item">2</ul>'
|
||||
,'<ul class="layui-tab-item">3</ul>'
|
||||
,'</div>'
|
||||
,'</div>'].join(''))
|
||||
,signinItems = tpl.find('.layui-tab-item');
|
||||
|
||||
layer.close(loadIndex);
|
||||
|
||||
layui.each(signinItems, function(index, item){
|
||||
var html = laytpl(tplSigninTop).render({
|
||||
data: res.data[index]
|
||||
,index: index
|
||||
});
|
||||
$(item).html(html);
|
||||
});
|
||||
|
||||
layer.open({
|
||||
type: 1
|
||||
,title: '签到活跃榜 - TOP 20'
|
||||
,area: '300px'
|
||||
,shade: 0.8
|
||||
,shadeClose: true
|
||||
,id: 'layer-pop-signintop'
|
||||
,content: tpl.prop('outerHTML')
|
||||
});
|
||||
|
||||
}, {type: 'get'});
|
||||
});
|
||||
|
||||
|
||||
//回帖榜
|
||||
var tplReply = ['{{# layui.each(d.data, function(index, item){ }}'
|
||||
,'<dd>'
|
||||
,'<a href="/u/{{item.uid}}">'
|
||||
,'<img src="{{item.user.avatar}}">'
|
||||
,'<cite>{{item.user.username}}</cite>'
|
||||
,'<i>{{item["count(*)"]}}次回答</i>'
|
||||
,'</a>'
|
||||
,'</dd>'
|
||||
,'{{# }); }}'].join('')
|
||||
,elemReply = $('#LAY_replyRank');
|
||||
|
||||
if(elemReply[0]){
|
||||
/*
|
||||
fly.json('/top/reply/', {
|
||||
limit: 20
|
||||
}, function(res){
|
||||
var html = laytpl(tplReply).render(res);
|
||||
elemReply.find('dl').html(html);
|
||||
});
|
||||
*/
|
||||
};
|
||||
|
||||
//相册
|
||||
if($(window).width() > 750){
|
||||
layer.photos({
|
||||
photos: '.photos'
|
||||
,zIndex: 9999999999
|
||||
,anim: -1
|
||||
});
|
||||
} else {
|
||||
$('body').on('click', '.photos img', function(){
|
||||
window.open(this.src);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//搜索
|
||||
$('.fly-search').on('click', function(){
|
||||
layer.open({
|
||||
type: 1
|
||||
,title: false
|
||||
,closeBtn: false
|
||||
//,shade: [0.1, '#fff']
|
||||
,shadeClose: true
|
||||
,maxWidth: 10000
|
||||
,skin: 'fly-layer-search'
|
||||
,content: ['<form action="http://cn.bing.com/search">'
|
||||
,'<input autocomplete="off" placeholder="搜索内容,回车跳转" type="text" name="q">'
|
||||
,'</form>'].join('')
|
||||
,success: function(layero){
|
||||
var input = layero.find('input');
|
||||
input.focus();
|
||||
|
||||
layero.find('form').submit(function(){
|
||||
var val = input.val();
|
||||
if(val.replace(/\s/g, '') === ''){
|
||||
return false;
|
||||
}
|
||||
input.val('site:layui.com '+ input.val());
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
//新消息通知
|
||||
fly.newmsg();
|
||||
|
||||
//发送激活邮件
|
||||
fly.activate = function(email){
|
||||
fly.json('/api/activate/', {}, function(res){
|
||||
if(res.status === 0){
|
||||
layer.alert('已成功将激活链接发送到了您的邮箱,接受可能会稍有延迟,请注意查收。', {
|
||||
icon: 1
|
||||
});
|
||||
};
|
||||
});
|
||||
};
|
||||
$('#LAY-activate').on('click', function(){
|
||||
fly.activate($(this).attr('email'));
|
||||
});
|
||||
|
||||
//点击@
|
||||
$('body').on('click', '.fly-aite', function(){
|
||||
var othis = $(this), text = othis.text();
|
||||
if(othis.attr('href') !== 'javascript:;'){
|
||||
return;
|
||||
}
|
||||
text = text.replace(/^@|([\s\S]+?)/g, '');
|
||||
othis.attr({
|
||||
href: '/jump?username='+ text
|
||||
,target: '_blank'
|
||||
});
|
||||
});
|
||||
|
||||
//表单提交
|
||||
form.on('submit(*)', function(data){
|
||||
var action = $(data.form).attr('action'), button = $(data.elem);
|
||||
fly.json(action, data.field, function(res){
|
||||
var end = function(){
|
||||
if(res.action){
|
||||
location.href = res.action;
|
||||
} else {
|
||||
fly.form[action||button.attr('key')](data.field, data.form);
|
||||
}
|
||||
};
|
||||
if(res.status == 0){
|
||||
button.attr('alert') ? layer.alert(res.msg, {
|
||||
icon: 1,
|
||||
time: 10*1000,
|
||||
end: end
|
||||
}) : end();
|
||||
};
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
//加载特定模块
|
||||
if(layui.cache.page && layui.cache.page !== 'index'){
|
||||
var extend = {};
|
||||
extend[layui.cache.page] = layui.cache.page;
|
||||
layui.extend(extend);
|
||||
layui.use(layui.cache.page);
|
||||
}
|
||||
|
||||
//加载IM
|
||||
if(!device.android && !device.ios){
|
||||
//layui.use('im');
|
||||
}
|
||||
|
||||
//加载编辑器
|
||||
fly.layEditor({
|
||||
elem: '.fly-editor'
|
||||
});
|
||||
|
||||
//手机设备的简单适配
|
||||
var treeMobile = $('.site-tree-mobile')
|
||||
,shadeMobile = $('.site-mobile-shade')
|
||||
|
||||
treeMobile.on('click', function(){
|
||||
$('body').addClass('site-mobile');
|
||||
});
|
||||
|
||||
shadeMobile.on('click', function(){
|
||||
$('body').removeClass('site-mobile');
|
||||
});
|
||||
|
||||
//获取统计数据
|
||||
$('.fly-handles').each(function(){
|
||||
var othis = $(this);
|
||||
$.get('/api/handle?alias='+ othis.data('alias'), function(res){
|
||||
othis.html('(下载量:'+ res.number +')');
|
||||
})
|
||||
});
|
||||
|
||||
//固定Bar
|
||||
util.fixbar({
|
||||
bar1: ''
|
||||
,bgcolor: '#009688'
|
||||
,click: function(type){
|
||||
if(type === 'bar1'){
|
||||
layer.msg('打开 index.js,开启发表新帖的路径');
|
||||
//location.href = 'jie/add.html';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
exports('fly', fly);
|
||||
|
||||
});
|
||||
|
||||
@@ -0,0 +1,241 @@
|
||||
/**
|
||||
|
||||
@Name: 求解板块
|
||||
|
||||
*/
|
||||
|
||||
layui.define('fly', function(exports){
|
||||
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var util = layui.util;
|
||||
var laytpl = layui.laytpl;
|
||||
var form = layui.form;
|
||||
var fly = layui.fly;
|
||||
|
||||
var gather = {}, dom = {
|
||||
jieda: $('#jieda')
|
||||
,content: $('#L_content')
|
||||
,jiedaCount: $('#jiedaCount')
|
||||
};
|
||||
|
||||
//监听专栏选择
|
||||
form.on('select(column)', function(obj){
|
||||
var value = obj.value
|
||||
,elemQuiz = $('#LAY_quiz')
|
||||
,tips = {
|
||||
tips: 1
|
||||
,maxWidth: 250
|
||||
,time: 10000
|
||||
};
|
||||
elemQuiz.addClass('layui-hide');
|
||||
if(value === '0'){
|
||||
layer.tips('下面的信息将便于您获得更好的答案', obj.othis, tips);
|
||||
elemQuiz.removeClass('layui-hide');
|
||||
} else if(value === '99'){
|
||||
layer.tips('系统会对【分享】类型的帖子予以飞吻奖励,但我们需要审核,通过后方可展示', obj.othis, tips);
|
||||
}
|
||||
});
|
||||
|
||||
//提交回答
|
||||
fly.form['/jie/reply/'] = function(data, required){
|
||||
var tpl = '<li>\
|
||||
<div class="detail-about detail-about-reply">\
|
||||
<a class="fly-avatar" href="/u/{{ layui.cache.user.uid }}" target="_blank">\
|
||||
<img src="{{= d.user.avatar}}" alt="{{= d.user.username}}">\
|
||||
</a>\
|
||||
<div class="fly-detail-user">\
|
||||
<a href="/u/{{ layui.cache.user.uid }}" target="_blank" class="fly-link">\
|
||||
<cite>{{d.user.username}}</cite>\
|
||||
</a>\
|
||||
</div>\
|
||||
<div class="detail-hits">\
|
||||
<span>刚刚</span>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="detail-body jieda-body photos">\
|
||||
{{ d.content}}\
|
||||
</div>\
|
||||
</li>'
|
||||
data.content = fly.content(data.content);
|
||||
laytpl(tpl).render($.extend(data, {
|
||||
user: layui.cache.user
|
||||
}), function(html){
|
||||
required[0].value = '';
|
||||
dom.jieda.find('.fly-none').remove();
|
||||
dom.jieda.append(html);
|
||||
|
||||
var count = dom.jiedaCount.text()|0;
|
||||
dom.jiedaCount.html(++count);
|
||||
});
|
||||
};
|
||||
|
||||
//求解管理
|
||||
gather.jieAdmin = {
|
||||
//删求解
|
||||
del: function(div){
|
||||
layer.confirm('确认删除该求解么?', function(index){
|
||||
layer.close(index);
|
||||
fly.json('/api/jie-delete/', {
|
||||
id: div.data('id')
|
||||
}, function(res){
|
||||
if(res.status === 0){
|
||||
location.href = '/jie/';
|
||||
} else {
|
||||
layer.msg(res.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//设置置顶、状态
|
||||
,set: function(div){
|
||||
var othis = $(this);
|
||||
fly.json('/api/jie-set/', {
|
||||
id: div.data('id')
|
||||
,rank: othis.attr('rank')
|
||||
,field: othis.attr('field')
|
||||
}, function(res){
|
||||
if(res.status === 0){
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//收藏
|
||||
,collect: function(div){
|
||||
var othis = $(this), type = othis.data('type');
|
||||
fly.json('/collection/'+ type +'/', {
|
||||
cid: div.data('id')
|
||||
}, function(res){
|
||||
if(type === 'add'){
|
||||
othis.data('type', 'remove').html('取消收藏').addClass('layui-btn-danger');
|
||||
} else if(type === 'remove'){
|
||||
othis.data('type', 'add').html('收藏').removeClass('layui-btn-danger');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$('body').on('click', '.jie-admin', function(){
|
||||
var othis = $(this), type = othis.attr('type');
|
||||
gather.jieAdmin[type] && gather.jieAdmin[type].call(this, othis.parent());
|
||||
});
|
||||
|
||||
//异步渲染
|
||||
var asyncRender = function(){
|
||||
var div = $('.fly-admin-box'), jieAdmin = $('#LAY_jieAdmin');
|
||||
//查询帖子是否收藏
|
||||
if(jieAdmin[0] && layui.cache.user.uid != -1){
|
||||
fly.json('/collection/find/', {
|
||||
cid: div.data('id')
|
||||
}, function(res){
|
||||
jieAdmin.append('<span class="layui-btn layui-btn-xs jie-admin '+ (res.data.collection ? 'layui-btn-danger' : '') +'" type="collect" data-type="'+ (res.data.collection ? 'remove' : 'add') +'">'+ (res.data.collection ? '取消收藏' : '收藏') +'</span>');
|
||||
});
|
||||
}
|
||||
}();
|
||||
|
||||
//解答操作
|
||||
gather.jiedaActive = {
|
||||
zan: function(li){ //赞
|
||||
var othis = $(this), ok = othis.hasClass('zanok');
|
||||
fly.json('/api/jieda-zan/', {
|
||||
ok: ok
|
||||
,id: li.data('id')
|
||||
}, function(res){
|
||||
if(res.status === 0){
|
||||
var zans = othis.find('em').html()|0;
|
||||
othis[ok ? 'removeClass' : 'addClass']('zanok');
|
||||
othis.find('em').html(ok ? (--zans) : (++zans));
|
||||
} else {
|
||||
layer.msg(res.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
,reply: function(li){ //回复
|
||||
var val = dom.content.val();
|
||||
var aite = '@'+ li.find('.fly-detail-user cite').text().replace(/\s/g, '');
|
||||
dom.content.focus()
|
||||
if(val.indexOf(aite) !== -1) return;
|
||||
dom.content.val(aite +' ' + val);
|
||||
}
|
||||
,accept: function(li){ //采纳
|
||||
var othis = $(this);
|
||||
layer.confirm('是否采纳该回答为最佳答案?', function(index){
|
||||
layer.close(index);
|
||||
fly.json('/api/jieda-accept/', {
|
||||
id: li.data('id')
|
||||
}, function(res){
|
||||
if(res.status === 0){
|
||||
$('.jieda-accept').remove();
|
||||
li.addClass('jieda-daan');
|
||||
li.find('.detail-about').append('<i class="iconfont icon-caina" title="最佳答案"></i>');
|
||||
} else {
|
||||
layer.msg(res.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
,edit: function(li){ //编辑
|
||||
fly.json('/jie/getDa/', {
|
||||
id: li.data('id')
|
||||
}, function(res){
|
||||
var data = res.rows;
|
||||
layer.prompt({
|
||||
formType: 2
|
||||
,value: data.content
|
||||
,maxlength: 100000
|
||||
,title: '编辑回帖'
|
||||
,area: ['728px', '300px']
|
||||
,success: function(layero){
|
||||
fly.layEditor({
|
||||
elem: layero.find('textarea')
|
||||
});
|
||||
}
|
||||
}, function(value, index){
|
||||
fly.json('/jie/updateDa/', {
|
||||
id: li.data('id')
|
||||
,content: value
|
||||
}, function(res){
|
||||
layer.close(index);
|
||||
li.find('.detail-body').html(fly.content(value));
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
,del: function(li){ //删除
|
||||
layer.confirm('确认删除该回答么?', function(index){
|
||||
layer.close(index);
|
||||
fly.json('/api/jieda-delete/', {
|
||||
id: li.data('id')
|
||||
}, function(res){
|
||||
if(res.status === 0){
|
||||
var count = dom.jiedaCount.text()|0;
|
||||
dom.jiedaCount.html(--count);
|
||||
li.remove();
|
||||
//如果删除了最佳答案
|
||||
if(li.hasClass('jieda-daan')){
|
||||
$('.jie-status').removeClass('jie-status-ok').text('求解中');
|
||||
}
|
||||
} else {
|
||||
layer.msg(res.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$('.jieda-reply span').on('click', function(){
|
||||
var othis = $(this), type = othis.attr('type');
|
||||
gather.jiedaActive[type].call(this, othis.parents('li'));
|
||||
});
|
||||
|
||||
|
||||
//定位分页
|
||||
if(/\/page\//.test(location.href) && !location.hash){
|
||||
var replyTop = $('#flyReply').offset().top - 80;
|
||||
$('html,body').scrollTop(replyTop);
|
||||
}
|
||||
|
||||
exports('jie', null);
|
||||
});
|
||||
@@ -0,0 +1,365 @@
|
||||
/**
|
||||
|
||||
@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: '/user/upload/'
|
||||
,size: 50
|
||||
,before: function(){
|
||||
avatarAdd.find('.loading').show();
|
||||
}
|
||||
,done: function(res){
|
||||
if(res.status == 0){
|
||||
$.post('/user/set/', {
|
||||
avatar: res.url
|
||||
}, 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: '/api/upload/cooperation/?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();
|
||||
});
|
||||
}
|
||||
|
||||
//帐号绑定
|
||||
$('.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');
|
||||
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);
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user