case.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /**
  2. @Name: 案例
  3. */
  4. layui.define(['laypage', 'fly'], function(exports){
  5. var $ = layui.jquery;
  6. var layer = layui.layer;
  7. var util = layui.util;
  8. var laytpl = layui.laytpl;
  9. var form = layui.form;
  10. var laypage = layui.laypage;
  11. var upload = layui.upload;
  12. var fly = layui.fly;
  13. var device = layui.device();
  14. //求解管理
  15. var active = {
  16. //提交案例
  17. push: function(div){
  18. layer.open({
  19. type: 1
  20. ,id: 'LAY_pushcase'
  21. ,title: '提交案例'
  22. ,area: (device.ios || device.android) ? ($(window).width() + 'px') : '660px'
  23. ,content: ['<ul class="layui-form" style="margin: 20px;">'
  24. ,'<li class="layui-form-item">'
  25. ,'<label class="layui-form-label">案例名称</label>'
  26. ,'<div class="layui-input-block">'
  27. ,'<input required name="title" lay-verify="required" placeholder="一般为网站名称" value="" class="layui-input">'
  28. ,'</div>'
  29. ,'</li>'
  30. ,'<li class="layui-form-item">'
  31. ,'<label class="layui-form-label">案例网址</label>'
  32. ,'<div class="layui-input-block">'
  33. ,'<input required name="link" lay-verify="url" placeholder="必须是自己或自己参与过的项目" value="" class="layui-input">'
  34. ,'</div>'
  35. ,'</li>'
  36. ,'<li class="layui-form-item layui-form-text">'
  37. ,'<label class="layui-form-label">案例描述</label>'
  38. ,'<div class="layui-input-block layui-form-text">'
  39. ,'<textarea required name="desc" lay-verify="required" autocomplete="off" placeholder="大致介绍你的项目,也可以阐述你在该项目中使用 layui 的感受\n10-60个字" class="layui-textarea"></textarea>'
  40. ,'</div>'
  41. ,'</li>'
  42. ,'<li class="layui-form-item">'
  43. ,'<label class="layui-form-label">案例封面</label>'
  44. ,'<div class="layui-input-inline" style="width:auto;">'
  45. ,'<input type="hidden" name="cover" lay-verify="required" class="layui-input fly-case-image">'
  46. ,'<button type="button" class="layui-btn layui-btn-primary" id="caseUpload">'
  47. ,'<i class="layui-icon">&#xe67c;</i>上传图片'
  48. ,'</button>'
  49. ,'</div>'
  50. ,'<div class="layui-form-mid layui-word-aux" id="preview">推荐尺寸:478*300,大小不能超过 30kb</div>'
  51. ,'</li>'
  52. ,'<li class="layui-form-item">'
  53. ,'<label class="layui-form-label"> </label>'
  54. ,'<div class="layui-input-block">'
  55. ,'<input type="checkbox" name="agree" id="agree" title="我同意(如果你进行了刷赞行为,你的案例将被立马剔除)" lay-skin="primary">'
  56. ,'</div>'
  57. ,'</li>'
  58. ,'<li class="layui-form-item">'
  59. ,'<div class="layui-input-block">'
  60. ,'<button type="button" lay-submit lay-filter="pushCase" class="layui-btn">提交案例</button>'
  61. ,'</div>'
  62. ,'</li>'
  63. ,'</ul>'].join('')
  64. ,success: function(layero, index){
  65. var image = layero.find('.fly-case-image')
  66. ,preview = $('#preview');
  67. upload.render({
  68. url: '/api/upload/case/'
  69. ,elem: '#caseUpload'
  70. ,size: 30
  71. ,done: function(res){
  72. if(res.status == 0){
  73. image.val(res.url);
  74. preview.html('<a href="'+ res.url +'" target="_blank" style="color: #5FB878;">封面已上传,点击可预览</a>');
  75. } else {
  76. layer.msg(res.msg, {icon: 5});
  77. }
  78. }
  79. });
  80. form.render('checkbox').on('submit(pushCase)', function(data){
  81. if(!data.field.agree){
  82. return layer.tips('你需要同意才能提交', $('#agree').next(), {tips: 1});
  83. }
  84. fly.json('/case/push/', data.field, function(res){
  85. layer.close(index);
  86. layer.alert(res.msg, {
  87. icon: 1
  88. })
  89. });
  90. });
  91. }
  92. });
  93. }
  94. //点赞
  95. ,praise: function(othis){
  96. var li = othis.parents('li')
  97. ,PRIMARY = 'layui-btn-primary'
  98. ,unpraise = !othis.hasClass(PRIMARY)
  99. ,numElem = li.find('.fly-case-nums')
  100. fly.json('/case/praise/', {
  101. id: li.data('id')
  102. ,unpraise: unpraise ? true : null
  103. }, function(res){
  104. numElem.html(res.praise);
  105. if(unpraise){
  106. othis.addClass(PRIMARY).html('点赞');
  107. layer.tips('少了个赞囖', numElem, {
  108. tips: 1
  109. });
  110. } else {
  111. othis.removeClass(PRIMARY).html('已赞');
  112. layer.tips('成功获得个赞', numElem, {
  113. tips: [1, '#FF5722']
  114. });
  115. }
  116. });
  117. }
  118. //查看点赞用户
  119. ,showPraise: function(othis){
  120. var li = othis.parents('li');
  121. if(othis.html() == 0) return layer.tips('该项目还没有收到赞', othis, {
  122. tips: 1
  123. });
  124. fly.json('/case/praise_user/', {
  125. id: li.data('id')
  126. }, function(res){
  127. var html = '';
  128. layer.open({
  129. type: 1
  130. ,title: '项目【'+ res.title + '】获得的赞'
  131. ,id: 'LAY_showPraise'
  132. ,shade: 0.8
  133. ,shadeClose: true
  134. ,area: '305px'
  135. ,skin: 'layer-ext-case'
  136. ,content: function(){
  137. layui.each(res.data, function(_, item){
  138. html += '<li><a href="/u/'+ 168*item.id +'/" target="_blank" title="'+ item.username +'"><img src="'+ item.avatar +'"></a></li>'
  139. });
  140. return '<ul class="layer-ext-ul">' + html + '</ul>';
  141. }()
  142. })
  143. });
  144. }
  145. };
  146. $('body').on('click', '.fly-case-active', function(){
  147. var othis = $(this), type = othis.data('type');
  148. active[type] && active[type].call(this, othis);
  149. });
  150. exports('case', {});
  151. });