edit.html 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2. <div class="panel panel-default" style="margin-bottom: 20px;">
  3. <div class="panel-heading" style="padding: 10px 15px; border-left: 4px solid #18bc9c;">
  4. <h3 class="panel-title" style="font-size: 14px; font-weight: bold;">基本信息</h3>
  5. </div>
  6. </div>
  7. <div class="form-group">
  8. <label class="control-label col-xs-12 col-sm-2">{:__('活动名称')}:</label>
  9. <div class="col-xs-12 col-sm-8">
  10. <div class="input-group">
  11. <input id="c-name" data-rule="required" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}" maxlength="20">
  12. <span class="input-group-addon" id="name-count">0/20</span>
  13. <span class="msg-box n-right" for="c-name" style="position:absolute;display:inline-block;margin-top:5px;"></span>
  14. </div>
  15. </div>
  16. </div>
  17. <div class="form-group">
  18. <label class="control-label col-xs-12 col-sm-2">{:__('活动期限')}:</label>
  19. <div class="col-xs-12 col-sm-8">
  20. <div class="input-group">
  21. <input id="c-start_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[start_time]" type="text" value="{:$row.start_time?datetime($row.start_time):''}" placeholder="开始时间">
  22. <span class="input-group-addon">~</span>
  23. <input id="c-end_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[end_time]" type="text" value="{:$row.end_time?datetime($row.end_time):''}" placeholder="结束时间">
  24. </div>
  25. </div>
  26. </div>
  27. <div class="form-group">
  28. <label class="control-label col-xs-12 col-sm-2">{:__('活动渠道')}:</label>
  29. <div class="col-xs-12 col-sm-8">
  30. <label class="checkbox-inline">
  31. <input type="checkbox" name="row[channels][]" value="wechat" {in name="'wechat'|explode($row.channels)" value="wechat"}checked{/in}> 微信公众号
  32. </label>
  33. <label class="checkbox-inline">
  34. <input type="checkbox" name="row[channels][]" value="miniapp" {in name="'miniapp'|explode($row.channels)" value="miniapp"}checked{/in}> 微信小程序
  35. </label>
  36. <label class="checkbox-inline">
  37. <input type="checkbox" name="row[channels][]" value="h5" {in name="'h5'|explode($row.channels)" value="h5"}checked{/in}> 手机浏览器H5
  38. </label>
  39. <label class="checkbox-inline">
  40. <input type="checkbox" name="row[channels][]" value="tiktok" {in name="'tiktok'|explode($row.channels)" value="tiktok"}checked{/in}> 头条/抖音小程序
  41. </label>
  42. <label class="checkbox-inline">
  43. <input type="checkbox" name="row[channels][]" value="app" {in name="'app'|explode($row.channels)" value="app"}checked{/in}> APP
  44. </label>
  45. <label class="checkbox-inline">
  46. <input type="checkbox" name="row[channels][]" value="pc" {in name="'pc'|explode($row.channels)" value="pc"}checked{/in}> PC版
  47. </label>
  48. </div>
  49. </div>
  50. <div class="form-group">
  51. <label class="control-label col-xs-12 col-sm-2">{:__('选择商品')}:</label>
  52. <div class="col-xs-12 col-sm-8">
  53. <button type="button" id="select-goods" class="btn btn-primary">选择商品</button>
  54. <div id="selected-goods-container" class="margin-top-10"></div>
  55. <input type="hidden" name="row[goods_ids]" id="goods-ids" value="{$row.goods_ids|htmlentities}">
  56. <input type="hidden" name="row[goods_info]" id="goods-info" value="">
  57. <p class="help-block">提示:折扣价格将按照设置的折扣计算,折扣范围0.1~10折</p>
  58. </div>
  59. </div>
  60. <div class="panel panel-default" style="margin-bottom: 20px;">
  61. <div class="panel-heading" style="padding: 10px 15px; border-left: 4px solid #18bc9c;">
  62. <h3 class="panel-title" style="font-size: 14px; font-weight: bold;">规则设置</h3>
  63. </div>
  64. </div>
  65. <div class="form-group">
  66. <label class="control-label col-xs-12 col-sm-2">{:__('活动主图')}:</label>
  67. <div class="col-xs-12 col-sm-8">
  68. <div class="input-group">
  69. <input id="c-image" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}">
  70. <div class="input-group-addon no-border no-padding">
  71. <span><button type="button" id="faupload-image" class="btn btn-danger faupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  72. <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  73. </div>
  74. <span class="msg-box n-right" for="c-image"></span>
  75. </div>
  76. <ul class="row list-inline faupload-preview" id="p-image"></ul>
  77. <p class="help-block">活动落地页的顶部图片,建议尺寸750px*340px</p>
  78. </div>
  79. </div>
  80. <div class="form-group">
  81. <label class="control-label col-xs-12 col-sm-2">{:__('限购次数')}:</label>
  82. <div class="col-xs-12 col-sm-8">
  83. <div style="margin-bottom: 15px;">
  84. <label class="radio-inline" style="margin-right: 20px;">
  85. <input type="radio" name="row[purchase_limit_type]" value="0" {eq name="row.purchase_limit_type" value="0"}checked{/eq}> 不限制
  86. </label>
  87. </div>
  88. <div style="margin-bottom: 15px; display: flex; align-items: center;">
  89. <label class="radio-inline" style="margin-right: 20px; min-width: 220px;">
  90. <input type="radio" name="row[purchase_limit_type]" value="1" {eq name="row.purchase_limit_type" value="1"}checked{/eq}> 活动期内每人最多购买
  91. </label>
  92. <div style="display: flex; align-items: center;">
  93. <input type="number" class="form-control" name="row[purchase_limit_total]" placeholder="请输入" min="1" {eq name="row.purchase_limit_type" value="1"}{else}disabled{/eq} style="width: 300px;" value="{$row.purchase_limit_total|default=''}">
  94. <span style="margin-left: 10px;">件</span>
  95. </div>
  96. </div>
  97. <div style="margin-bottom: 15px; display: flex; align-items: center;">
  98. <label class="radio-inline" style="margin-right: 20px; min-width: 220px;">
  99. <input type="radio" name="row[purchase_limit_type]" value="2" {eq name="row.purchase_limit_type" value="2"}checked{/eq}> 活动期内每人每天最多购买
  100. </label>
  101. <div style="display: flex; align-items: center;">
  102. <input type="number" class="form-control" name="row[purchase_limit_daily]" placeholder="请输入" min="1" {eq name="row.purchase_limit_type" value="2"}{else}disabled{/eq} style="width: 300px;" value="{$row.purchase_limit_daily|default=''}">
  103. <span style="margin-left: 10px;">件</span>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. <div class="form-group">
  109. <label class="control-label col-xs-12 col-sm-2">{:__('活动描述')}:</label>
  110. <div class="col-xs-12 col-sm-8">
  111. <textarea id="c-desc" class="form-control editor" rows="5" name="row[desc]" cols="50">{$row.desc|htmlentities}</textarea>
  112. </div>
  113. </div>
  114. <div class="form-group layer-footer">
  115. <label class="control-label col-xs-12 col-sm-2"></label>
  116. <div class="col-xs-12 col-sm-8">
  117. <button type="submit" class="btn btn-primary btn-embossed">{:__('提交')}</button>
  118. <button type="reset" class="btn btn-default btn-embossed">{:__('重置')}</button>
  119. </div>
  120. </div>
  121. </form>
  122. <!-- 商品表格模板 -->
  123. <script id="goodsTableTpl" type="text/html">
  124. <div class="table-responsive">
  125. <table id="selected-goods-table" class="table table-striped table-bordered table-hover">
  126. </table>
  127. </div>
  128. </script>
  129. <script>
  130. var defaultDiscount = 9;
  131. // 商品数据
  132. Config.goodsData = {:json_encode($goodsData ?? [])};
  133. // 初始化
  134. $(function () {
  135. // 初始化编辑器
  136. var editor = CKEDITOR.replace('c-desc', {
  137. height: 300,
  138. filebrowserImageUploadUrl: Fast.api.fixurl('/ajax/upload')
  139. });
  140. // 活动渠道全选
  141. $('#select-all-channels').on('click', function() {
  142. $('input[name="row[channels][]"]').prop('checked', $(this).prop('checked'));
  143. });
  144. // 限购类型切换
  145. $('input[name="row[purchase_limit_type]"]').on('change', function() {
  146. var type = $(this).val();
  147. if(type == '0') {
  148. $('input[name="row[purchase_limit_total]"]').prop('disabled', true);
  149. $('input[name="row[purchase_limit_daily]"]').prop('disabled', true);
  150. } else if(type == '1') {
  151. $('input[name="row[purchase_limit_total]"]').prop('disabled', false);
  152. $('input[name="row[purchase_limit_daily]"]').prop('disabled', true);
  153. } else if(type == '2') {
  154. $('input[name="row[purchase_limit_total]"]').prop('disabled', true);
  155. $('input[name="row[purchase_limit_daily]"]').prop('disabled', false);
  156. }
  157. });
  158. // 名称字数统计
  159. $('#c-name').on('input', function() {
  160. var length = $(this).val().length;
  161. $('#name-count').text(length + '/20');
  162. }).trigger('input');
  163. });
  164. </script>