edit.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. <form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2. <div class="form-group">
  3. <label class="control-label col-xs-12 col-sm-2">{:__('活动名称')}:</label>
  4. <div class="col-xs-12 col-sm-8">
  5. <input id="c-name" data-rule="required" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
  6. </div>
  7. </div>
  8. <div class="form-group">
  9. <label class="control-label col-xs-12 col-sm-2">{:__('活动描述')}:</label>
  10. <div class="col-xs-12 col-sm-8">
  11. <textarea id="c-description" class="form-control" rows="5" name="row[description]">{$row.description|htmlentities}</textarea>
  12. </div>
  13. </div>
  14. <div class="form-group">
  15. <label class="control-label col-xs-12 col-sm-2">{:__('活动封面')}:</label>
  16. <div class="col-xs-12 col-sm-8">
  17. <div class="input-group">
  18. <input id="c-cover_image" class="form-control" size="50" name="row[cover_image]" type="text" value="{$row.cover_image|htmlentities}">
  19. <div class="input-group-addon no-border no-padding">
  20. <span><button type="button" id="plupload-cover_image" class="btn btn-danger plupload" data-input-id="c-cover_image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-cover_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  21. <span><button type="button" id="fachoose-cover_image" class="btn btn-primary fachoose" data-input-id="c-cover_image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  22. </div>
  23. <span class="msg-box n-right" for="c-cover_image"></span>
  24. </div>
  25. <ul class="row list-inline plupload-preview" id="p-cover_image"></ul>
  26. </div>
  27. </div>
  28. <div class="form-group">
  29. <label class="control-label col-xs-12 col-sm-2">{:__('活动类型')}:</label>
  30. <div class="col-xs-12 col-sm-8">
  31. {foreach name="typeList" item="vo"}
  32. <label for="row[type]-{$key}" class="radio-inline">
  33. <input id="row[type]-{$key}" name="row[type]" type="radio" value="{$key}" {if condition="$key eq $row.type"}checked{/if}> {$vo}
  34. </label>
  35. {/foreach}
  36. </div>
  37. </div>
  38. <!-- 活动渠道 -->
  39. <div class="form-group">
  40. <label class="control-label col-xs-12 col-sm-2">活动渠道:</label>
  41. <div class="col-xs-12 col-sm-8">
  42. <!-- 渠道选择 -->
  43. <div class="channel-list">
  44. {foreach name="channelList" item="vo" key="key"}
  45. <label class="checkbox-inline">
  46. <input type="checkbox" name="row[channels][]" value="{$key}" {if condition="in_array($key, json_decode($row.channels, true) ?: [])"}checked{/if}>
  47. {$vo}
  48. </label>
  49. {/foreach}
  50. </div>
  51. <span class="help-block">请选择本次活动投放的渠道,至少选择一个</span>
  52. </div>
  53. </div>
  54. <div class="form-group">
  55. <label class="control-label col-xs-12 col-sm-2">{:__('活动状态')}:</label>
  56. <div class="col-xs-12 col-sm-8">
  57. {foreach name="statusList" item="vo"}
  58. <label for="row[status]-{$key}" class="radio-inline">
  59. <input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {if condition="$key eq $row.status"}checked{/if}> {$vo}
  60. </label>
  61. {/foreach}
  62. </div>
  63. </div>
  64. <div class="form-group">
  65. <label class="control-label col-xs-12 col-sm-2">{:__('开始时间')}:</label>
  66. <div class="col-xs-12 col-sm-8">
  67. <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|htmlentities}">
  68. </div>
  69. </div>
  70. <div class="form-group">
  71. <label class="control-label col-xs-12 col-sm-2">{:__('结束时间')}:</label>
  72. <div class="col-xs-12 col-sm-8">
  73. <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|htmlentities}">
  74. </div>
  75. </div>
  76. <div class="form-group">
  77. <label class="control-label col-xs-12 col-sm-2">{:__('开奖方式')}:</label>
  78. <div class="col-xs-12 col-sm-8">
  79. {foreach name="lotteryTypeList" item="vo"}
  80. <label for="row[lottery_type]-{$key}" class="radio-inline">
  81. <input id="row[lottery_type]-{$key}" name="row[lottery_type]" type="radio" value="{$key}" {if condition="$key eq $row.lottery_type"}checked{/if}> {$vo}
  82. </label>
  83. {/foreach}
  84. </div>
  85. </div>
  86. <div class="form-group lottery-time-group" {if condition="$row.lottery_type neq 2"}style="display:none;"{/if}>
  87. <label class="control-label col-xs-12 col-sm-2">{:__('开奖时间')}:</label>
  88. <div class="col-xs-12 col-sm-8">
  89. <input id="c-lottery_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" name="row[lottery_time]" type="text" value="{$row.lottery_time|htmlentities}">
  90. </div>
  91. </div>
  92. <div class="form-group lottery-people-group" {if condition="$row.lottery_type neq 3"}style="display:none;"{/if}>
  93. <label class="control-label col-xs-12 col-sm-2">{:__('开奖人数')}:</label>
  94. <div class="col-xs-12 col-sm-8">
  95. <input id="c-lottery_people_num" class="form-control" name="row[lottery_people_num]" type="number" value="{$row.lottery_people_num|htmlentities}">
  96. </div>
  97. </div>
  98. <div class="form-group">
  99. <label class="control-label col-xs-12 col-sm-2">{:__('适用人群')}:</label>
  100. <div class="col-xs-12 col-sm-8">
  101. {foreach name="userLimitTypeList" item="vo"}
  102. <label for="row[user_limit_type]-{$key}" class="radio-inline">
  103. <input id="row[user_limit_type]-{$key}" name="row[user_limit_type]" type="radio" value="{$key}" {if condition="$key eq $row.user_limit_type"}checked{/if}> {$vo}
  104. </label>
  105. {/foreach}
  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. <input id="c-person_limit_num" class="form-control" name="row[person_limit_num]" type="number" value="{$row.person_limit_num|default='1'}">
  112. </div>
  113. </div>
  114. <div class="form-group">
  115. <label class="control-label col-xs-12 col-sm-2">{:__('引导样式')}:</label>
  116. <div class="col-xs-12 col-sm-8">
  117. {foreach name="guideStyleList" item="vo"}
  118. <label for="row[guide_style]-{$key}" class="radio-inline">
  119. <input id="row[guide_style]-{$key}" name="row[guide_style]" type="radio" value="{$key}" {if condition="$key eq $row.guide_style"}checked{/if}> {$vo}
  120. </label>
  121. {/foreach}
  122. </div>
  123. </div>
  124. <div class="form-group guide-custom-group" {if condition="$row.guide_style neq 2"}style="display:none;"{/if}>
  125. <label class="control-label col-xs-12 col-sm-2">{:__('自定义引导图片')}:</label>
  126. <div class="col-xs-12 col-sm-8">
  127. <div class="input-group">
  128. <input id="c-guide_image" class="form-control" name="row[guide_image]" type="text" value="{$row.guide_image|htmlentities}">
  129. <div class="input-group-addon no-border no-padding">
  130. <span><button type="button" id="plupload-guide_image" class="btn btn-danger plupload" data-input-id="c-guide_image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. <div class="form-group guide-custom-group" {if condition="$row.guide_style neq 2"}style="display:none;"{/if}>
  136. <label class="control-label col-xs-12 col-sm-2">{:__('引导文案')}:</label>
  137. <div class="col-xs-12 col-sm-8">
  138. <input id="c-guide_text" class="form-control" name="row[guide_text]" type="text" value="{$row.guide_text|htmlentities}">
  139. </div>
  140. </div>
  141. <div class="form-group">
  142. <label class="control-label col-xs-12 col-sm-2">{:__('抽奖介绍内容')}:</label>
  143. <div class="col-xs-12 col-sm-8">
  144. <textarea id="c-intro_content" class="form-control editor" rows="5" name="row[intro_content]">{$row.intro_content|htmlentities}</textarea>
  145. </div>
  146. </div>
  147. <!-- 奖品配置 -->
  148. <div class="form-group">
  149. <label class="control-label col-xs-12 col-sm-2">奖品配置:</label>
  150. <div class="col-xs-12 col-sm-10">
  151. <!-- 奖品设置 -->
  152. <div class="panel panel-default">
  153. <div class="panel-heading">
  154. <h3 class="panel-title">奖品设置(必须设置8个奖品位)</h3>
  155. <div class="panel-tools">
  156. <button type="button" class="btn btn-primary btn-xs" id="add-prize-btn">
  157. <i class="fa fa-plus"></i> 添加奖品
  158. </button>
  159. <span class="badge" style="margin-left: 10px;">
  160. 已添加 <span id="prize-count">0</span>/8 个奖品,还需添加 <span id="prize-need">8</span> 个奖品
  161. </span>
  162. </div>
  163. </div>
  164. <div class="panel-body">
  165. <div class="alert alert-info">
  166. <i class="fa fa-info-circle"></i>
  167. 所有奖品总概率必须等于100%(包含未中奖),当前总概率:<strong id="total-probability">0.00%</strong>
  168. </div>
  169. <div class="table-responsive">
  170. <table class="table table-bordered prize-list">
  171. <thead>
  172. <tr>
  173. <th width="60">排序</th>
  174. <th width="150">奖品名称</th>
  175. <th width="120">奖品详情</th>
  176. <th width="80">奖品图片</th>
  177. <th width="80">奖品数量 <i class="fa fa-question-circle" title="设置该奖品的总数量,0表示无限制"></i></th>
  178. <th width="120">中奖概率 <i class="fa fa-question-circle" title="设置该奖品的中奖概率"></i></th>
  179. <th width="80">已发放</th>
  180. <th width="120">操作</th>
  181. </tr>
  182. </thead>
  183. <tbody>
  184. <!-- 默认未中奖项 -->
  185. <tr class="prize-item" data-type="no-prize" data-index="0" data-prize-id="system-no-prize">
  186. <td class="text-center">
  187. <i class="fa fa-bars prize-sort-handle" style="cursor: move; color: #ccc;" title="拖拽排序"></i>
  188. <input type="hidden" class="prize-type-input" value="1">
  189. <input type="hidden" class="prize-name-input" value="谢谢参与">
  190. <input type="hidden" class="prize-image-input" value="">
  191. </td>
  192. <td>
  193. <div class="prize-info">
  194. <strong class="prize-name">谢谢参与</strong>
  195. </div>
  196. </td>
  197. <td class="text-center">
  198. <span class="label label-default">未中奖</span>
  199. </td>
  200. <td class="text-center">
  201. <img src="/assets/img/qrcode.png" class="prize-image img-rounded" alt="谢谢参与">
  202. </td>
  203. <td class="text-center">
  204. <span class="text-muted">-</span>
  205. </td>
  206. <td class="text-center">
  207. <div class="input-group prize-rate-group">
  208. <input type="number" class="form-control input-sm prize-rate text-center" value="0.00" min="0" max="100" step="0.01">
  209. <span class="input-group-addon">%</span>
  210. </div>
  211. </td>
  212. <td class="text-center">
  213. <span class="text-muted">-</span>
  214. </td>
  215. <td class="text-center">
  216. <button type="button" class="btn btn-xs btn-primary edit-prize" style="margin-right: 5px;">编辑</button>
  217. <br><span class="text-muted" style="font-size: 11px;">系统默认</span>
  218. </td>
  219. </tr>
  220. </tbody>
  221. </table>
  222. </div>
  223. <div class="alert alert-danger" id="prize-validation-error" style="display: none;">
  224. <i class="fa fa-exclamation-triangle"></i>
  225. <span id="prize-error-text">奖品总概率必须等于100%,当前为0.00%</span>
  226. </div>
  227. </div>
  228. </div>
  229. </div>
  230. </div>
  231. <!-- 参与规则配置 -->
  232. <div class="form-group">
  233. <label class="control-label col-xs-12 col-sm-2">参与规则:</label>
  234. <div class="col-xs-12 col-sm-10">
  235. <!-- 任务类型选择 -->
  236. <div class="panel panel-default">
  237. <div class="panel-heading">
  238. <h3 class="panel-title">抽奖参与条件设置(至少选择一项)</h3>
  239. </div>
  240. <div class="panel-body">
  241. <div class="form-group">
  242. <label class="control-label">选择任务类型:</label>
  243. <div class="checkbox-list">
  244. <label class="checkbox-inline">
  245. <input type="checkbox" name="row[task_type][]" value="1"> 购买指定商品
  246. </label>
  247. <label class="checkbox-inline">
  248. <input type="checkbox" name="row[task_type][]" value="2"> 单笔订单消费满额
  249. </label>
  250. <label class="checkbox-inline">
  251. <input type="checkbox" name="row[task_type][]" value="3"> 单次充值满额
  252. </label>
  253. <label class="checkbox-inline">
  254. <input type="checkbox" name="row[task_type][]" value="4"> 活动期间累计消费满额
  255. </label>
  256. </div>
  257. <div class="help-block">用户满足以上任一条件即可参与抽奖</div>
  258. </div>
  259. <!-- 购买指定商品设置 -->
  260. <div id="task-setting-1" class="task-setting" style="display: none;">
  261. <h4><i class="fa fa-shopping-cart"></i> 购买指定商品设置</h4>
  262. <div class="form-group">
  263. <label class="control-label">参与规则:</label>
  264. <div class="radio-list">
  265. <label class="radio-inline">
  266. <input type="radio" name="condition[1][goods_rule]" value="1" checked> 购买以下任意一件商品
  267. </label>
  268. <label class="radio-inline">
  269. <input type="radio" name="condition[1][goods_rule]" value="2"> 购买以下全部商品
  270. </label>
  271. </div>
  272. </div>
  273. <div class="form-group">
  274. <label class="control-label">选择商品:</label>
  275. <div class="input-group">
  276. <input type="hidden" id="task-goods-ids-1" name="condition[1][goods_ids]" value="">
  277. <button type="button" class="btn btn-primary" id="select-task-goods-btn">
  278. <i class="fa fa-plus"></i> 选择商品
  279. </button>
  280. </div>
  281. <div id="selected-goods" class="selected-goods-container" style="margin-top: 10px;"></div>
  282. </div>
  283. </div>
  284. <!-- 单笔订单消费满额设置 -->
  285. <div id="task-setting-2" class="task-setting" style="display: none;">
  286. <h4><i class="fa fa-money"></i> 单笔订单消费满额设置</h4>
  287. <div class="form-group">
  288. <label class="control-label">消费金额:</label>
  289. <div class="input-group" style="width: 200px;">
  290. <span class="input-group-addon">¥</span>
  291. <input type="number" class="form-control" name="condition[2][condition_value]" min="0.01" step="0.01" placeholder="请输入金额">
  292. </div>
  293. <div class="help-block">用户单笔订单消费满此金额即可参与抽奖</div>
  294. </div>
  295. </div>
  296. <!-- 单次充值满额设置 -->
  297. <div id="task-setting-3" class="task-setting" style="display: none;">
  298. <h4><i class="fa fa-credit-card"></i> 单次充值满额设置</h4>
  299. <div class="form-group">
  300. <label class="control-label">充值金额:</label>
  301. <div class="input-group" style="width: 200px;">
  302. <span class="input-group-addon">¥</span>
  303. <input type="number" class="form-control" name="condition[3][condition_value]" min="0.01" step="0.01" placeholder="请输入金额">
  304. </div>
  305. <div class="help-block">用户单次充值满此金额即可参与抽奖</div>
  306. </div>
  307. </div>
  308. <!-- 活动期间累计消费满额设置 -->
  309. <div id="task-setting-4" class="task-setting" style="display: none;">
  310. <h4><i class="fa fa-line-chart"></i> 活动期间累计消费满额设置</h4>
  311. <div class="form-group">
  312. <label class="control-label">累计消费金额:</label>
  313. <div class="input-group" style="width: 200px;">
  314. <span class="input-group-addon">¥</span>
  315. <input type="number" class="form-control" name="condition[4][condition_value]" min="0.01" step="0.01" placeholder="请输入金额">
  316. </div>
  317. <div class="help-block">用户在活动期间累计消费满此金额即可参与抽奖</div>
  318. </div>
  319. </div>
  320. </div>
  321. </div>
  322. </div>
  323. </div>
  324. <div class="form-group layer-footer">
  325. <label class="control-label col-xs-12 col-sm-2"></label>
  326. <div class="col-xs-12 col-sm-8">
  327. <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
  328. <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  329. </div>
  330. </div>
  331. </form>
  332. <!-- 传递后台数据给前端 -->
  333. <div id="backend-data"
  334. data-prizes="{$prizes|json_encode|htmlentities}"
  335. data-conditions="{$conditions|json_encode|htmlentities}"
  336. data-task-types="{$taskTypes|json_encode|htmlentities}"
  337. style="display: none;"></div>
  338. <script type="text/javascript">
  339. // 从DOM中获取后台数据
  340. $(document).ready(function() {
  341. var dataContainer = $('#backend-data');
  342. try {
  343. window.existingPrizes = JSON.parse(dataContainer.attr('data-prizes') || '[]');
  344. window.existingConditions = JSON.parse(dataContainer.attr('data-conditions') || '[]');
  345. window.existingTaskTypes = JSON.parse(dataContainer.attr('data-task-types') || '[]');
  346. console.log('后台数据已传递到前端:', {
  347. prizes: window.existingPrizes,
  348. conditions: window.existingConditions,
  349. taskTypes: window.existingTaskTypes
  350. });
  351. } catch (e) {
  352. console.error('解析后台数据失败:', e);
  353. window.existingPrizes = [];
  354. window.existingConditions = [];
  355. window.existingTaskTypes = [];
  356. }
  357. });
  358. </script>
  359. <!-- 引入JavaScript模板 -->
  360. {include file="lottery/activity/scripttpl" /}