TaoLer/public/static/res/mods/case.js
2020-01-01 13:17:19 +08:00

165 lines
5.8 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'], 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">&#xe67c;</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', {});
});