add.html 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .upload-img-block .upload-img-box .upload-default{position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}
  5. </style>
  6. {/block}
  7. {block name="main"}
  8. <div class="layui-form form-wrap">
  9. <div class="layui-form-item">
  10. <label class="layui-form-label short-label"><span class="required">*</span>文章标题:</label>
  11. <div class="layui-input-inline">
  12. <input type="text" name="article_title" lay-verify="required" maxlength="40" autocomplete="off" placeholder="文章标题最多40个字" class="layui-input len-long">
  13. </div>
  14. </div>
  15. <div class="layui-form-item">
  16. <label class="layui-form-label"><span class="required">*</span>文章分类:</label>
  17. <div class="layui-input-inline">
  18. <select name="category_id" lay-verify="required">
  19. <option value="">请选择</option>
  20. {foreach $category_list as $v}
  21. <option value="{$v['category_id']}">{$v['category_name']}</option>
  22. {/foreach}
  23. </select>
  24. </div>
  25. </div>
  26. <div class="layui-form-item">
  27. <label class="layui-form-label short-label">摘要:</label>
  28. <div class="layui-input-block">
  29. <textarea name="article_abstract" class="layui-textarea len-long" maxlength="100"></textarea>
  30. </div>
  31. <div class="word-aux">文章摘要最多可输入100个字</div>
  32. </div>
  33. <div class="layui-form-item">
  34. <label class="layui-form-label"><span class="required">*</span>封面:</label>
  35. <div class="layui-input-block img-upload">
  36. <div class="upload-img-block square simple-uploading">
  37. <div class="upload-img-box" id="img">
  38. <div class="upload-default">
  39. <i class="iconfont iconshangchuan"></i>
  40. <p>点击上传</p>
  41. </div>
  42. </div>
  43. <input type="hidden" name="image" />
  44. <i class="del">x</i>
  45. </div>
  46. </div>
  47. <div class="word-aux">推荐使用 750x420 像素的图片</div>
  48. </div>
  49. <div class="layui-form-item">
  50. <label class="layui-form-label"><span class="required">*</span>正文:</label>
  51. <div class="layui-input-inline">
  52. <script id="editor" type="text/plain" class="special-length" style="height:500px;"></script>
  53. <input type="hidden" name="article_content" id="article_content" />
  54. </div>
  55. </div>
  56. <div class="layui-form-item">
  57. <label class="layui-form-label">发布时间:</label>
  58. <div class="layui-input-inline">
  59. <input type="radio" name="is_show_release_time" value="1" title="显示" checked>
  60. <input type="radio" name="is_show_release_time" value="0" title="不显示">
  61. </div>
  62. </div>
  63. <div class="layui-form-item">
  64. <label class="layui-form-label">阅读次数:</label>
  65. <div class="layui-input-inline">
  66. <input type="radio" name="is_show_read_num" value="1" title="显示" checked>
  67. <input type="radio" name="is_show_read_num" value="0" title="不显示">
  68. </div>
  69. </div>
  70. <div class="layui-form-item">
  71. <label class="layui-form-label">点赞次数:</label>
  72. <div class="layui-input-inline">
  73. <input type="radio" name="is_show_dianzan_num" value="1" title="显示" checked>
  74. <input type="radio" name="is_show_dianzan_num" value="0" title="不显示">
  75. </div>
  76. </div>
  77. <div class="layui-form-item">
  78. <label class="layui-form-label">虚拟阅读数:</label>
  79. <div class="layui-input-inline">
  80. <input type="number" min="0" name="initial_read_num" onchange="detectionNumType(this,'integral')" class="layui-input">
  81. </div>
  82. </div>
  83. <div class="layui-form-item">
  84. <label class="layui-form-label">虚拟点赞数:</label>
  85. <div class="layui-input-inline">
  86. <input type="number" min="0" name="initial_dianzan_num" onchange="detectionNumType(this,'integral')" class="layui-input">
  87. </div>
  88. </div>
  89. <div class="layui-form-item">
  90. <label class="layui-form-label">排序:</label>
  91. <div class="layui-input-inline">
  92. <input type="number" min="0" name="sort" class="layui-input">
  93. </div>
  94. </div>
  95. <div class="form-row">
  96. <button class="layui-btn" lay-submit lay-filter="save">立即发布</button>
  97. <button class="layui-btn" lay-submit lay-filter="saveDrafts">保存至草稿箱</button>
  98. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  99. </div>
  100. </div>
  101. {/block}
  102. {block name="script"}
  103. <script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.config.js"></script>
  104. <script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.all.js"></script>
  105. <script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/lang/zh-cn/zh-cn.js"></script>
  106. <script>
  107. //实例化富文本
  108. var ue = UE.getEditor('editor');
  109. if($("#article_content").val()){
  110. ue.ready(function() {
  111. ue.setContent($("#article_content").val());
  112. });
  113. }
  114. var form,repeat_flag,
  115. IMAGE_MAX = 9, //最多可以上传多少张图片
  116. imageCollection = [], //图片集合
  117. selectedGoodsId = [],
  118. goods_id = [],
  119. goods_list =[];
  120. layui.use(['form'], function() {
  121. form = layui.form;
  122. repeat_flag = false;
  123. form.render();
  124. // 单图上传
  125. $("body").on("click", "#img", function () {
  126. openAlbum(function (data) {
  127. imageCollection = [];
  128. imageCollection.push(data[0].pic_path);
  129. imageCollection.splice(1, imageCollection.length);
  130. var val = '<img src="' + ns.img(imageCollection[0]) + '" alt="">';
  131. $("#img").html(val);
  132. }, 1);
  133. });
  134. /**
  135. * 表单提交(立即发布)
  136. */
  137. form.on('submit(save)', function(data){
  138. field = data.field;
  139. field.status = 1;
  140. formSubmit(field)
  141. });
  142. /**
  143. * 表单提交(草稿箱)
  144. */
  145. form.on('submit(saveDrafts)', function(data){
  146. field = data.field;
  147. field.status = 0;
  148. formSubmit(field)
  149. });
  150. });
  151. /**
  152. * 提交
  153. */
  154. function formSubmit(data){
  155. if (!imageCollection.length){
  156. layer.msg('请选择封面图!', {icon: 5, anim: 6});
  157. return;
  158. }
  159. data.cover_img = imageCollection.join();
  160. if (!ue.getContent()){
  161. layer.msg("文章内容不能为空");
  162. return false;
  163. }
  164. if(data.sort < 0){
  165. layer.msg("排序号不能小于0");
  166. return false;
  167. }
  168. data.article_content = ue.getContent();
  169. if(repeat_flag) return;
  170. repeat_flag = true;
  171. $.ajax({
  172. type: 'POST',
  173. dataType: 'JSON',
  174. url: ns.url("shop/article/add"),
  175. data: data,
  176. async: false,
  177. success: function(res){
  178. repeat_flag = false;
  179. if (res.code == 0) {
  180. layer.confirm('添加成功', {
  181. title:'操作提示',
  182. btn: ['返回列表', '继续添加'],
  183. closeBtn: 0,
  184. yes: function(){
  185. if(data.status == 1){
  186. location.href = ns.url("shop/article/lists");
  187. }else{
  188. location.href = ns.url("shop/article/drafts");
  189. }
  190. },
  191. btn2: function() {
  192. location.href = ns.url("shop/article/add");
  193. }
  194. });
  195. }else{
  196. layer.msg(res.message);
  197. }
  198. }
  199. })
  200. }
  201. function back() {
  202. location.href = ns.url("shop/article/lists");
  203. }
  204. //检测数据类型
  205. function detectionNumType(el, type) {
  206. var value = $(el).val();
  207. //大于零 且 不是小数
  208. if (value < 0 && type == 'integral')
  209. $(el).val(0);
  210. else if (type == 'integral')
  211. $(el).val(Math.round(value));
  212. //大于1 且 不是小数
  213. if (value < 1 && type == 'positiveInteger')
  214. $(el).val(1);
  215. else if (type == 'positiveInteger')
  216. $(el).val(Math.round(value));
  217. //大于零可以是小数
  218. if (type == 'positiveNumber') {
  219. value = parseFloat(value).toFixed(2);
  220. if (value < 0)
  221. $(el).val(0);
  222. else
  223. $(el).val(value);
  224. }
  225. }
  226. </script>
  227. {/block}