edit.html 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <style>
  4. .gift-box{padding: 20px;}
  5. .gift-box .layui-form{padding: 0!important;}
  6. .form-wrap{margin-top: 0;}
  7. .layui-input {display: inline-block;}
  8. .forbidden {cursor: not-allowed;}
  9. .layui-table-body{max-height: 480px !important;}
  10. .goods-title{display: flex;align-items: center;}
  11. .goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
  12. .goods-title .goods-img img{max-height: 100%;max-width: 100%;}
  13. .goods-title .goods-name{flex: 1;line-height: 1.6;}
  14. .forbidden{cursor:not-allowed;background-color: #eee;}
  15. .prompt-block .prompt-box{
  16. top:unset;bottom:30px;left:-85px;
  17. }
  18. .layui-table-cell{overflow:inherit;}
  19. .layui-table-box{overflow:inherit;}
  20. .layui-table-header{overflow:inherit;}
  21. .prompt-block .prompt-box:before{
  22. transform:rotate(-90deg);left:84px;top:104px;
  23. }
  24. .prompt-block .prompt-box:after{
  25. transform:rotate(-90deg);left:84px;top:103px;
  26. }
  27. .delivery_model{width:20%;display: inline-block;}
  28. .layui-input-block{margin-bottom:16px;}
  29. .print.delivery_model .layui-anim-upbit{z-index:1000}
  30. </style>
  31. {/block}
  32. {block name="main"}
  33. {if $exchange_info['type'] == 1}
  34. <!-- 商品 -->
  35. <div class="exchange-gift content layui-form form-wrap">
  36. <div class="layui-form-item">
  37. <label class="layui-form-label">商品图片:</label>
  38. <div class="layui-input-block img-upload">
  39. <div class="upload-img-block square">
  40. <div class="upload-img-box">
  41. {if condition="$exchange_info.image"}
  42. <img layer-src src="{:img($exchange_info.image)}" >
  43. {else/}
  44. <img layer-src src="__STATIC__/img/shape.png" />
  45. {/if}
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="layui-form-item">
  51. <label class="layui-form-label">商品名称:</label>
  52. <div class="layui-input-block">
  53. <p class="input-text">{$exchange_info.name}</p>
  54. </div>
  55. </div>
  56. <div class="layui-form-item">
  57. <label class="layui-form-label">是否上架:</label>
  58. <div class="layui-input-block">
  59. <p class="input-text len-long"><input id="state" type="checkbox" name="state" lay-skin="switch" {if $exchange_info['state'] == 1}checked {/if} value="1" lay-filter="state"></p>
  60. </div>
  61. </div>
  62. <div class="layui-form-item">
  63. <label class="layui-form-label">是否免邮:</label>
  64. <div class="layui-input-block">
  65. <input type="checkbox" name="is_free_shipping" {if $exchange_info['exchange_goods'][0]['is_free_shipping'] == 1}checked {/if} value="1" lay-filter="shipping" class="shipping" lay-skin="switch" >
  66. </div>
  67. </div>
  68. <div class="layui-form-item ems_block" style="display:{if $exchange_info['exchange_goods'][0]['is_free_shipping'] == 1}none{else/}block{/if};padding-left:100px;">
  69. <div class="layui-input-block">
  70. <input type="checkbox" name="delivery_type" title="按照商品设置" lay-skin="primary" lay-filter="delivery_type" class="delivery_type" value="2" {if $exchange_info['exchange_goods'][0]['delivery_type'] == 2}checked {/if}>
  71. <div class="word-aux" style="margin-left: 28px;margin-top: 0">
  72. <p>如果选择按照商品设置,那么积分商城商品将会根据商品中设置的运费模版进行</p>
  73. <p>计算运费</p>
  74. </div>
  75. </div>
  76. <div class="layui-input-block">
  77. <input type="checkbox" name="delivery_type" title="固定运费" lay-skin="primary" lay-filter="delivery_type" class="delivery_type" value="0" {if $exchange_info['exchange_goods'][0]['delivery_type'] == 0}checked {/if}>
  78. <input class="layui-input len-short print" type="number" style="display:{if $exchange_info['exchange_goods'][0]['delivery_type'] == 0}inline-block{else/}none{/if};" name="delivery_price" {if $exchange_info['exchange_goods'][0]['delivery_type'] == 0}value="{$exchange_info['exchange_goods'][0]['delivery_price']}"{/if} onblur="checkInput(this)">
  79. <div class="word-aux" style="margin-left: 28px;margin-top: 0">
  80. <p>如果选择固定运费,积分商城的商品无论购买几件,将会按照设置的固定运费收取,</p>
  81. <p>如:固定运费设置为12元,客户兑换A商品时无论一次兑换几件,运费都是12元.</p>
  82. </div>
  83. </div>
  84. <div class="layui-input-block">
  85. <input type="checkbox" name="delivery_type" title="运费模版" lay-skin="primary" lay-filter="delivery_type" class="delivery_type layui-form-label" value="1" {if $exchange_info['exchange_goods'][0]['delivery_type'] == 1}checked {/if}>
  86. <div class="print delivery_model" style="display:{if $exchange_info['exchange_goods'][0]['delivery_type'] == 1}inline-block{else/}none{/if};">
  87. <select name="shipping_template" lay-filter="delivery_model">
  88. <option value="0">请选择运费模版</option>
  89. {foreach name="$express_template_list" item="vo"}
  90. <option value="{$vo['template_id']}" {if $exchange_info['exchange_goods'][0]['shipping_template'] == $vo['template_id']} selected {/if}>{$vo['template_name']}</option>
  91. {/foreach}
  92. </select>
  93. </div>
  94. <div class="word-aux" style="margin-left: 28px;margin-top: 0">
  95. <p>如果选择运费模版,积分商城的商品将会按照该处选择的运费模版进行单独计算</p>
  96. <p>运费,与商品本身设置的是否包邮以及运费模版无关.</p>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="layui-form-item">
  101. <label class="layui-form-label">兑换规则:</label>
  102. <div class="layui-input-block special-length">
  103. <script id="containerG" name="containerG" type="text/plain" style="width:100%;height:500px;"></script>
  104. </div>
  105. </div>
  106. <div class="layui-form-item goods_list">
  107. <label class="layui-form-label"><span class="required">*</span>规格选择:</label>
  108. <div class="layui-input-block">
  109. <table id="selected_goods_list" lay-filter="selected_goods_list"></table>
  110. </div>
  111. </div>
  112. <div class="form-row">
  113. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  114. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  115. </div>
  116. <!-- 操作 -->
  117. <script type="text/html" id="operation">
  118. <div class="table-btn">
  119. {{# if (d.is_select == 1){ }}
  120. <a class="layui-btn no-participation" >不参与</a>
  121. {{# }else{ }}
  122. <a class="layui-btn participation" >参与</a>
  123. {{# } }}
  124. </div>
  125. </script>
  126. <script type="text/html" id="exchangePoint">
  127. {{# if (d.is_select == 1){ }}
  128. <input type="number" class="layui-input len-input exchange_point expoint" onchange="setSkulist('point', {{d.sku_id}}, this , 'integral')" value="{{d.point ? d.point : 0.00}}" lay-verify="exchange_point" min="0.00"/>
  129. {{# }else{ }}
  130. <input type="number" class="layui-input len-input exchange_point forbidden" disabled="disabled" onchange="setSkulist('point', {{d.sku_id}}, this, 'integral')" value="{{d.point ? d.point : 0.00}}" lay-verify="exchange_point" min="0.00"/>
  131. {{# } }}
  132. </script>
  133. <script type="text/html" id="exchangeLimit">
  134. {{# if (d.is_select == 1){ }}
  135. <input type="number" class="layui-input len-input exchange_limit_num expoint" onchange="setSkulist('limit_num', {{d.sku_id}}, this, 'integral')" value="{{d.limit_num ? d.limit_num : 0}}" lay-verify="exchange_point" min="0.00"/>
  136. {{# }else{ }}
  137. <input type="number" class="layui-input len-input exchange_limit_num forbidden" disabled="disabled" onchange="setSkulist('limit_num', {{d.sku_id}}, this, 'integral')" value="{{d.limit_num ? d.limit_num : 0}}" lay-verify="exchange_point" min="0.00"/>
  138. {{# } }}
  139. </script>
  140. <script type="text/html" id="exchangeMoney">
  141. {{# if (d.is_select == 1){ }}
  142. <input type="number" class="layui-input len-input exchange_money" onchange="setSkulist('exchange_price', {{d.sku_id}}, this, 'positiveNumber')" value="{{d.exchange_price ? d.exchange_price : 0.00}}" lay-verify="exchange_money" min="0.00"/>
  143. {{# }else{ }}
  144. <input type="number" class="layui-input len-input exchange_money forbidden" disabled="disabled" onchange="setSkulist('exchange_price', {{d.sku_id}}, this, 'positiveNumber')" value="{{d.exchange_price ? d.exchange_price : 0.00}}" lay-verify="exchange_money" min="0.00"/>
  145. {{# } }}
  146. </script>
  147. <input type="hidden" name="type" value="1">
  148. <input type="hidden" name="id" value="{$exchange_info.id}">
  149. <input type="hidden" id="contentG" value="{$exchange_info.rule}" />
  150. </div>
  151. {/if}
  152. {if $exchange_info['type'] == 2}
  153. <!-- 优惠券 -->
  154. <div class="exchange-coupon content layui-form form-wrap">
  155. <div class="layui-form-item">
  156. <label class="layui-form-label">优惠券图片:</label>
  157. <div class="layui-input-block img-upload">
  158. <div class="upload-img-block square">
  159. <div class="upload-img-box">
  160. {if condition="$exchange_info.image"}
  161. <img layer-src src="{:img($exchange_info.image)}" id="exchange_type_2_img">
  162. {else/}
  163. <img layer-src src="__STATIC__/img/shape.png" />
  164. {/if}
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. <div class="layui-form-item">
  170. <label class="layui-form-label">优惠券名称:</label>
  171. <div class="layui-input-block" id="exchange_type_2_name">
  172. <p class="input-text">{$exchange_info.name}</p>
  173. </div>
  174. </div>
  175. {if condition="$exchange_info['coupon_type'] == 'reward'"}
  176. <div class="layui-form-item">
  177. <label class="layui-form-label">优惠券面值:</label>
  178. <div class="layui-input-block" id="exchange_type_2_price">
  179. <p class="input-text">¥{$exchange_info.market_price}</p>
  180. </div>
  181. </div>
  182. {elseif condition="$exchange_info['coupon_type'] == 'discount'"}
  183. <div class="layui-form-item js-coupon-discount">
  184. <label class="layui-form-label">优惠券折扣:</label>
  185. <div class="layui-input-block" id="coupon_discount">
  186. <p class="input-text text-empty">{$exchange_info.market_price}折</p>
  187. </div>
  188. </div>
  189. {/if}
  190. <div class="layui-form-item">
  191. <label class="layui-form-label"><span class="required">*</span>兑换积分:</label>
  192. <div class="layui-input-block">
  193. <input type="number" name="point" lay-verify="required|required_point" placeholder="请输入所需的兑换积分数" value="{$exchange_info.point}" onchange="detectionNumType(this,'integral')" class="layui-input len-short expoint">
  194. </div>
  195. </div>
  196. <div class="layui-form-item">
  197. <label class="layui-form-label"><span class="required">*</span>可兑换数量:</label>
  198. <div class="layui-input-block">
  199. <input type="number" name="stock" min="0" lay-verify="required|required_coupon_stock" placeholder="可兑换数量" value="{$exchange_info.stock}" onchange="detectionNumType(this,'integral')" class="layui-input len-short stock">
  200. </div>
  201. </div>
  202. <div class="layui-form-item">
  203. <label class="layui-form-label">是否上架:</label>
  204. <div class="layui-input-block">
  205. <input id="state" type="checkbox" name="state" lay-skin="switch" {if $exchange_info['state'] == 1}checked {/if} value="1" lay-filter="state">
  206. </div>
  207. </div>
  208. <div class="layui-form-item">
  209. <label class="layui-form-label">兑换规则:</label>
  210. <div class="layui-input-block special-length">
  211. <script id="container" name="content" type="text/plain" style="width: 800px; height: 300px;"></script>
  212. </div>
  213. </div>
  214. <div class="form-row">
  215. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  216. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  217. </div>
  218. <input type="hidden" name="type" value="2">
  219. <input type="hidden" name="id" value="{$exchange_info.id}">
  220. <input type="hidden" name="coupon_type_id" value="{$exchange_info.type_id}">
  221. <input type="hidden" id="content" value="{$exchange_info.content}" />
  222. </div>
  223. {/if}
  224. {if $exchange_info['type'] == 3}
  225. <!-- 红包 -->
  226. <div class="exchange-red-packet content layui-form form-wrap">
  227. <div class="layui-form-item">
  228. <label class="layui-form-label"><span class="required">*</span>红包名称:</label>
  229. <div class="layui-input-block">
  230. <input type="text" name="name" lay-verify="required" placeholder="请输入红包名称" value="{$exchange_info.name}" class="layui-input len-long">
  231. </div>
  232. </div>
  233. <div class="layui-form-item">
  234. <label class="layui-form-label">红包封面:</label>
  235. <div class="layui-input-inline img-upload">
  236. <div class="upload-img-block icon square">
  237. <div class="upload-img-box {if condition="$exchange_info.image"}hover{/if}">
  238. <div class="upload-default" id="redPacket">
  239. {if condition="$exchange_info.image"}
  240. <div id="preview_redPacket" class="preview_img">
  241. <img src="{:img($exchange_info.image)}" alt="" class="img_prev">
  242. </div>
  243. {else/}
  244. <div class="upload">
  245. <i class="iconfont iconshangchuan"></i>
  246. <p>点击上传</p>
  247. </div>
  248. {/if}
  249. </div>
  250. <div class="operation">
  251. <div>
  252. <i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
  253. <i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
  254. </div>
  255. <div class="replace_img js-replace">点击替换</div>
  256. </div>
  257. <input type="hidden" name="image" value="{$exchange_info.image}" />
  258. </div>
  259. <!-- <p id="redPacket" class='{if condition="$exchange_info.image"}replace {else/} no-replace{/if}'>替换</p>
  260. <i class="del {if condition="$exchange_info.image"}show{/if}">x</i> -->
  261. </div>
  262. </div>
  263. </div>
  264. <div class="layui-form-item">
  265. <label class="layui-form-label"><span class="required">*</span>兑换积分:</label>
  266. <div class="layui-input-block">
  267. <input type="number" name="point" lay-verify="required|required_point" placeholder="请输入所需的兑换积分数" value="{$exchange_info.point}" onchange="detectionNumType(this,'integral')" class="layui-input len-short expoint">
  268. </div>
  269. </div>
  270. <div class="layui-form-item">
  271. <label class="layui-form-label"><span class="required">*</span>可兑换数量:</label>
  272. <div class="layui-input-block">
  273. <input type="number" name="stock" min="0" lay-verify="required|required_balance_stock" placeholder="可兑换数量" value="{$exchange_info.stock}" onchange="detectionNumType(this,'integral')" class="layui-input len-short stock">
  274. </div>
  275. </div>
  276. <div class="layui-form-item">
  277. <label class="layui-form-label"><span class="required">*</span>余额:</label>
  278. <div class="layui-input-block">
  279. <input type="number" name="balance" lay-verify="required|required_balance" placeholder="请输入红包余额" value="{$exchange_info.balance}" onchange="detectionNumType(this,'positiveNumber')" class="layui-input len-short">
  280. </div>
  281. <p class="word-aux">兑换的红包会以余额的形式发放给指定会员</p>
  282. </div>
  283. <div class="layui-form-item">
  284. <label class="layui-form-label">是否上架:</label>
  285. <div class="layui-input-block">
  286. <input id="state" type="checkbox" name="state" lay-skin="switch" {if $exchange_info['state'] == 1}checked {/if} value="1" lay-filter="state">
  287. </div>
  288. </div>
  289. <div class="layui-form-item">
  290. <label class="layui-form-label">兑换规则:</label>
  291. <div class="layui-input-block special-length">
  292. <script id="containerT" name="content" type="text/plain" style="height: 300px;"></script>
  293. </div>
  294. </div>
  295. <div class="form-row">
  296. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  297. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  298. </div>
  299. <input type="hidden" name="type" value="3">
  300. <input type="hidden" name="id" value="{$exchange_info.id}">
  301. <input type="hidden" id="contentT" value="{$exchange_info.content}" />
  302. </div>
  303. {/if}
  304. <input type="hidden" id="type" value="{$exchange_info.type}" />
  305. <a id="redPacketImage"></a>
  306. {/block}
  307. {block name="script"}
  308. <script type="text/html" id="toolbarOperation">
  309. <button class="layui-btn layui-btn-primary" lay-event="change-number">兑换次数</button>
  310. <button class="layui-btn layui-btn-primary" lay-event="goods-integral">所需积分</button>
  311. <button class="layui-btn layui-btn-primary" lay-event="goods-price">所需金额</button>
  312. </script>
  313. <!-- 优惠券 -->
  314. <script type="text/html" id="couponList">
  315. <div class="gift-box">
  316. <div class="layui-form">
  317. <div class="layui-input-inline len-mid">
  318. <input type="text" name="coupon_name" placeholder="请输入礼品名称/关键字" class="layui-input">
  319. <button type="button" class="layui-btn layui-btn-primary" lay-filter="coupon-search" lay-submit>
  320. <i class="layui-icon">&#xe615;</i>
  321. </button>
  322. </div>
  323. </div>
  324. <table id="coupon_list" lay-filter="coupon_list"></table>
  325. </div>
  326. </script>
  327. <!-- 优惠券-名称 -->
  328. <script type="text/html" id="couponName">
  329. <div class="table-tuwen-box">
  330. <div class="img-box">
  331. <img src="{{ns.img(d.image)}}" alt="">
  332. </div>
  333. <div class="font-box">
  334. <p class="multi-line-hiding">{{d.coupon_name}}</p>
  335. </div>
  336. </div>
  337. </script>
  338. <!-- 优惠券-操作 -->
  339. <script type="text/html" id="couponOperation">
  340. <a class="layui-btn" lay-event="add">添加</a>
  341. </script>
  342. <script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.config.js"></script>
  343. <script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.all.js"></script>
  344. <script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/lang/zh-cn/zh-cn.js"></script>
  345. <script>
  346. var _time = $(".coupon-create-time input").val();
  347. $(".coupon-create-time").text(ns.time_to_date(_time));
  348. var _type = $("#type").val();
  349. var saveData = null;
  350. var totalUploadNum = 0;
  351. var completeUploadNum = 0;
  352. var upload;
  353. //实例化富文本
  354. var ue, html = '';
  355. if (_type == 2) {
  356. ue = UE.getEditor('container');
  357. ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
  358. var con = $("#content").val();
  359. ue.setContent(con); //获取html内容,返回: <p>hello</p>
  360. });
  361. } else if (_type == 3) {
  362. ue = UE.getEditor('containerT');
  363. ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
  364. var con = $("#contentT").val();
  365. ue.setContent(con); //获取html内容,返回: <p>hello</p>
  366. });
  367. } else if(_type == 1){
  368. ue = UE.getEditor('containerG');
  369. ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
  370. var con = $("#contentG").val();
  371. ue.setContent(con); //获取html内容,返回: <p>hello</p>
  372. });
  373. }
  374. var giftTable, couponTable, form, laytpl,sku_list;
  375. {if $exchange_info['type'] == 1}
  376. sku_list = {:json_encode($exchange_info.goods_sku, JSON_UNESCAPED_UNICODE)};
  377. {/if}
  378. layui.use(['form', 'laytpl'], function() {
  379. form = layui.form;
  380. laytpl = layui.laytpl;
  381. form.render();
  382. upload = new Upload({
  383. elem: '#redPacket',
  384. auto:false,
  385. bindAction:'#redPacketImage',
  386. callback: function(res) {
  387. uploadComplete('image', res.data.pic_path);
  388. }
  389. });
  390. renderTable(sku_list);
  391. //监听兑换方式
  392. form.on('radio(pay_type)', function(data){
  393. var value = data.value;
  394. var html = '';
  395. if(value == 1){
  396. html = '<input type="number" name="point" min="0" lay-verify="required_point" autocomplete="off" class="layui-input len-short"> 积分' +
  397. '&nbsp;&nbsp;+ &nbsp;&nbsp;<input type="number" name="price" min="0" lay-verify="required_money" autocomplete="off" class="layui-input len-short"> 元';
  398. }
  399. if(value == 0){
  400. html = '<input type="number" name="point" min="0" lay-verify="required_point" autocomplete="off" class="layui-input len-short"> 积分';
  401. }
  402. $('.pay_price').html(html);
  403. });
  404. /**
  405. * 商品列表搜索
  406. */
  407. form.on('submit(gift-search)', function(data) {
  408. giftTable.reload({
  409. page: {
  410. curr: 1
  411. },
  412. where: data.field
  413. });
  414. });
  415. form.on('switch(shipping)', function(data){
  416. if(data.elem.checked){
  417. $(".ems_block").hide();
  418. }else{
  419. $(".ems_block").show();
  420. }
  421. });
  422. //监听邮费设置
  423. form.on('checkbox(delivery_type)', function(data){
  424. if(data.elem.checked){
  425. $("input[name='delivery_type']").prop("checked", false);
  426. $(this).prop("checked", true);
  427. form.render('checkbox');
  428. $(this).siblings(".print").show();
  429. $(this).parent().siblings().children(".print").hide()
  430. }else{
  431. $(this).siblings(".print").hide();
  432. }
  433. });
  434. /**
  435. * 优惠券列表搜索
  436. */
  437. form.on('submit(coupon-search)', function(data) {
  438. couponTable.reload({
  439. page: {
  440. curr: 1
  441. },
  442. where: data.field
  443. });
  444. });
  445. /**
  446. * 监听表单提交
  447. */
  448. form.on('submit(save)', function(data) {
  449. if (_type == 1) {
  450. var goods_list = [];
  451. for (var i in sku_list){
  452. if(sku_list[i]['is_select'] == 1){
  453. goods_list.push(sku_list[i]);
  454. }
  455. }
  456. if(goods_list.length == 0){
  457. layer.msg('请选择商品', {icon: 5, anim: 6});
  458. return false;
  459. }
  460. for (var i in sku_list){
  461. if (parseFloat(sku_list[i]['point']) <= 0 && sku_list[i]['is_select'] == 1) {
  462. layer.msg('兑换积分不能小于等于0', {icon: 5, anim: 6});
  463. return false;
  464. }
  465. }
  466. data.field.goods_data = goods_list;
  467. ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
  468. html = ue.getContent(); //获取html内容,返回: <p>hello</p>
  469. });
  470. }else if (_type == 2) {
  471. ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
  472. html = ue.getContent(); //获取html内容,返回: <p>hello</p>
  473. });
  474. } else if (_type == 3) {
  475. ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
  476. html = ue.getContent(); //获取html内容,返回: <p>hello</p>
  477. });
  478. }
  479. data.field.content = html;
  480. //不免邮
  481. if(data.field.is_free_shipping==undefined){
  482. data.field.is_free_shipping = 0;
  483. }
  484. if(data.field.is_free_shipping == 0 && data.field.type == 1){
  485. data.field.delivery_type = $('[name="delivery_type"]:checked').val();
  486. if(data.field.delivery_type==undefined){
  487. layer.msg('请选择运费类型', {icon: 5, anim: 6});
  488. return false;
  489. }else if(data.field.delivery_type==0){
  490. if(data.field.delivery_price==""){
  491. layer.msg('请填写固定邮费', {icon: 5, anim: 6});
  492. return false;
  493. }
  494. }else if(data.field.delivery_type==1){
  495. if(data.field.shipping_template<=0){
  496. layer.msg('请选择运费模版', {icon: 5, anim: 6});
  497. return false;
  498. }
  499. }
  500. }else{
  501. data.field.delivery_type = "";
  502. data.field.delivery_price = "";
  503. data.field.shipping_template = 0;
  504. }
  505. saveData = data;
  506. var obj = $("img.img_prev[data-prev='1']");
  507. totalUploadNum = obj.length;
  508. if(totalUploadNum > 0){
  509. obj.each(function(){
  510. var actionId = $(this).attr('data-action-id');
  511. $(actionId).click();
  512. })
  513. }else{
  514. saveFunc();
  515. }
  516. });
  517. function uploadComplete(field, pic_path) {
  518. saveData.field[field] = pic_path;
  519. completeUploadNum += 1;
  520. if(completeUploadNum == totalUploadNum){
  521. saveFunc();
  522. }
  523. }
  524. function saveFunc(){
  525. var data = saveData;
  526. // 删除图片
  527. if(!data.field.image) upload.delete();
  528. $.ajax({
  529. url: ns.url("pointexchange://shop/exchange/edit"),
  530. data: data.field,
  531. dataType: 'JSON',
  532. type: 'POST',
  533. async: false,
  534. success: function(res) {
  535. if (res.code == 0) {
  536. layer.confirm('编辑成功', {
  537. title: '操作提示',
  538. btn: ['返回列表', '继续操作'],
  539. yes: function() {
  540. location.href = ns.url("pointexchange://shop/exchange/lists")
  541. },
  542. btn2: function() {
  543. location.reload();
  544. }
  545. });
  546. } else {
  547. layer.msg(res.message);
  548. }
  549. }
  550. });
  551. }
  552. form.verify({
  553. required_point: function(value) {
  554. if (value == "") {
  555. return '积分不能为空';
  556. }
  557. if (Number(value) <= 0){
  558. return '积分必须大于0!';
  559. }
  560. },
  561. required_money: function(value) {
  562. if (value == "") {
  563. return '金额不能为空';
  564. }
  565. if (Number(value) <= 0){
  566. return '价格必须大于0!';
  567. }
  568. },
  569. required_limit: function(value) {
  570. if (Number(value) < 1){
  571. return '兑换限制不能小于1!';
  572. }
  573. },
  574. required_coupon_stock: function(value) {
  575. if (Number(value) <= 0){
  576. return '可兑换数量必须大于0!';
  577. }
  578. },
  579. required_balance_stock: function(value) {
  580. if (Number(value) <= 0){
  581. return '可兑换数量必须大于0!';
  582. }
  583. },
  584. required_balance: function(value) {
  585. if (Number(value) <= 0){
  586. return '红包余额必须大于0!';
  587. }
  588. }
  589. })
  590. });
  591. function setSelect(status,id) {
  592. for (var i = 0; i < sku_list.length; i++){
  593. if (sku_list[i].sku_id == parseInt(id)){
  594. sku_list[i]['is_select'] = status;
  595. }
  596. }
  597. renderTable(sku_list);
  598. return false;
  599. }
  600. // 表格渲染
  601. function renderTable(sku_list) {
  602. //展示已知数据
  603. table = new Table({
  604. elem: '#selected_goods_list',
  605. page: false,
  606. limit: Number.MAX_VALUE,
  607. cols: [
  608. [{
  609. width: "3%",
  610. type: 'checkbox',
  611. unresize: 'false'
  612. },{
  613. field: 'sku_name',
  614. title: '商品名称',
  615. width: '23%',
  616. unresize: 'false',
  617. templet: function(data) {
  618. var html = '';
  619. html += `
  620. <div class="goods-title">
  621. <div class="goods-img">
  622. <img layer-src src="${data.sku_image ? ns.img(data.sku_image) : ''}" alt="">
  623. </div>
  624. <p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" data-sku_id="${data.sku_id}" title="${data.sku_name}">${data.sku_name}</p>
  625. </div>
  626. `;
  627. return html;
  628. }
  629. }, {
  630. field: 'price',
  631. title: '商品价格',
  632. unresize: 'false',
  633. align: 'left',
  634. width: '10%',
  635. templet: function(data) {
  636. return '<p class="line-hiding" title="'+ data.price +'">¥<span>' + data.price +'</span></p>';
  637. }
  638. }, {
  639. field: 'stock',
  640. title: '库存',
  641. unresize: 'false',
  642. width: '10%',
  643. templet: function(data) {
  644. return '<p class="stock">' + data.stock +'</p>';
  645. }
  646. }, {
  647. title: '<span title="兑换次数(0为不限次)">兑换次数(0为不限次)</span>',
  648. unresize: 'false',
  649. width: '14%',
  650. templet: '#exchangeLimit'
  651. }, {
  652. title: '<span title="兑换所需积分">所需积分</span>',
  653. unresize: 'false',
  654. width: '12%',
  655. templet: '#exchangePoint'
  656. }, {
  657. title: '<span title="兑换所需金额">所需金额</span>',
  658. unresize: 'false',
  659. width: '12%',
  660. templet: '#exchangeMoney'
  661. }, {
  662. title: '操作',
  663. toolbar: '#operation',
  664. unresize: 'false',
  665. align:'right'
  666. }]
  667. ],
  668. data: sku_list,
  669. toolbar: '#toolbarOperation'
  670. });
  671. table.toolbar(function(obj) {
  672. if (obj.data.length < 1) {
  673. layer.msg('请选择要操作的数据');
  674. return;
  675. }
  676. switch (obj.event) {
  677. case "change-number":
  678. editInput(0,obj);
  679. break;
  680. case "goods-integral":
  681. editInput(1,obj);
  682. break;
  683. case "goods-price":
  684. editInput(2,obj);
  685. break;
  686. }
  687. });
  688. }
  689. function editInput(textIndex=0,data) {
  690. var text = [{
  691. name: '兑换次数',
  692. value: 'limit_num'
  693. },{
  694. name: '所需积分',
  695. value: 'point'
  696. },{
  697. name: '所需金额',
  698. value: 'exchange_price'
  699. }];
  700. layer.open({
  701. type: 1,
  702. title:"修改"+text[textIndex].name,
  703. area:['600px'],
  704. btn:["保存","返回"],
  705. content: `
  706. <div class="layui-form-item">
  707. <label class="layui-form-label"><span class="required">*</span>${text[textIndex].name}:</label>
  708. <div class="layui-input-block">
  709. <input type="text" name="bargain_edit_input" lay-verify="required" autocomplete="off" class="layui-input len-mid" placeholder="请输入${text[textIndex].name}">
  710. </div>
  711. </div>
  712. `,
  713. yes: function(index, layero){
  714. var val = $("input[name='bargain_edit_input']").val();
  715. if (!val){
  716. layer.msg("请输入" + text[textIndex].name);
  717. return false;
  718. }
  719. data.data.forEach(function (item,index) {
  720. sku_list.forEach(function (skuItem,skuIndex) {
  721. if (item.sku_id == skuItem.sku_id){
  722. sku_list[skuIndex][text[textIndex].value] = val;
  723. }
  724. })
  725. });
  726. renderTable(sku_list);
  727. layer.closeAll();
  728. }
  729. });
  730. }
  731. function setSkulist(type, sku_id, obj, num_type){
  732. var value = $(obj).val();
  733. //大于零 且 不是小数
  734. if (value < 0 && num_type == 'integral')
  735. $(obj).val(0);
  736. else if (num_type == 'integral')
  737. $(obj).val(Math.round(value));
  738. //大于1 且 不是小数
  739. if (value < 1 && num_type == 'positiveInteger')
  740. $(obj).val(1);
  741. else if (num_type == 'positiveInteger')
  742. $(obj).val(Math.round(value));
  743. //大于零可以是小数
  744. if (num_type == 'positiveNumber') {
  745. value = parseFloat(value).toFixed(2);
  746. if (value < 0)
  747. $(obj).val(0);
  748. else
  749. $(obj).val(value);
  750. }
  751. $.each(sku_list, function (i, e) {
  752. if(sku_id == e.sku_id){
  753. sku_list[i][type] = $(obj).val();
  754. }
  755. })
  756. }
  757. $("body").on("click",".no-participation",function(){
  758. $(this).text("参与");
  759. $(this).parents("tr").find("input").each(function (index,item) {
  760. $(item).attr("readonly",true);
  761. $(item).attr("disabled",true);
  762. $(item).addClass("forbidden");
  763. $(item).attr("lay-verify","");
  764. });
  765. // pintuan_price promotion_price lay-verify
  766. $(this).addClass("participation").removeClass("no-participation");
  767. sku_list[$(this).parents("tr").attr("data-index")].is_select = 0;
  768. });
  769. $("body").on("click",".participation",function(){
  770. $(this).text("不参与");
  771. $(this).parents("tr").find("input").each(function (index,item) {
  772. $(item).attr("readonly",false);
  773. $(item).attr("disabled",false);
  774. $(item).removeClass("forbidden");
  775. // if($(item).hasClass(".pintuan-price")){
  776. // $(item).attr("lay-verify","pintuan_price");
  777. // }else{
  778. // $(item).attr("lay-verify","promotion_price");
  779. // }
  780. // console.log($(item))
  781. });
  782. $(this).removeClass("participation").addClass("no-participation");
  783. sku_list[$(this).parents("tr").attr("data-index")].is_select = 1;
  784. });
  785. //返回
  786. function back() {
  787. location.href = ns.url("pointexchange://shop/exchange/lists");
  788. }
  789. $("body").on('keyup', '.stock', function() {
  790. var value = $(this).val();
  791. if(value % 1 !== 0){
  792. layer.msg("红包数量请输入整数");
  793. $(this).val(0);
  794. }
  795. });
  796. $("body").on('keyup', '.expoint', function() {
  797. var value = $(this).val() ;
  798. if(value % 1 !== 0){
  799. layer.msg("兑换积分请输入整数");
  800. $(this).val(0);
  801. }
  802. });
  803. //检测数据类型
  804. function detectionNumType(el, type) {
  805. var value = $(el).val();
  806. //大于零 且 不是小数
  807. if (value < 0 && type == 'integral')
  808. $(el).val(0);
  809. else if (type == 'integral')
  810. $(el).val(Math.round(value));
  811. //大于1 且 不是小数
  812. if (value < 1 && type == 'positiveInteger')
  813. $(el).val(1);
  814. else if (type == 'positiveInteger')
  815. $(el).val(Math.round(value));
  816. //大于零可以是小数
  817. if (type == 'positiveNumber') {
  818. value = parseFloat(value).toFixed(2);
  819. if (value < 0)
  820. $(el).val(0);
  821. else
  822. $(el).val(value);
  823. }
  824. }
  825. function checkInput(obj){
  826. $(obj).val(Math.abs($(obj).val()));
  827. }
  828. </script>
  829. {/block}