mengbao.html 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. <!-- header start -->
  2. <include file="Public/Header" />
  3. <!-- header end -->
  4. <!-- right content start -->
  5. <div class="content-right">
  6. <div class="content">
  7. <!-- form start -->
  8. <div id="success" style="color:#fff;display: none;background: limegreen;height: 3rem;text-align: center;"></div>
  9. <form class="am-form form-validation view-save" action="{{:U('Admin/ActivityV2/Save')}}" method="POST" request-type="ajax-reload" enctype="multipart/form-data">
  10. <legend>
  11. <span class="fs-16">
  12. <if condition="empty($data['id'])">
  13. 新增活动
  14. <else />
  15. 编辑活动
  16. </if>
  17. </span>
  18. <a href="{{:U('Admin/Activity/Index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
  19. </legend>
  20. <div class="am-form-group">
  21. <label>活动名称</label>
  22. <input type="text" name="activity_name" placeholder="活动名称" autocomplete="off" data-validation-message="请填名称" class="am-form-field am-radius"
  23. <notempty name="data"> value="{{$data.activity_name}}" </notempty>/>
  24. </div>
  25. <div class="am-form-group">
  26. <label>开始时间</label>
  27. <input type="text" name="start_at" placeholder="开始时间" autocomplete="off" class="am-form-field am-radius date"
  28. <notempty name="data"> value="{{$data.start_at}}" </notempty>/>
  29. <label>结束时间</label>
  30. <input style="clear: both;" type="text" name="end_at" autocomplete="off" placeholder="结束时间" class="am-form-field am-radius date"
  31. <notempty name="data"> value="{{$data.end_at}}" </notempty>/>
  32. </div>
  33. <div class="am-g">
  34. <label for="doc-ipt-email-1">奖品设置</label><a><button type="button" id="doc-prompt-toggle-1"> 新增奖品 </button></a>
  35. </div>
  36. <div class="am-modal am-modal-prompt" tabindex="-1" id="my-prompt-1">
  37. <div class="am-modal-dialog">
  38. <div class="am-modal-hd">新增奖品</div>
  39. <div class="am-modal-bd">
  40. <input type="text" name="prize_name_dom" class="am-modal-prompt-input" placeholder="设定奖品名称">
  41. <input type="text" name="prize_num_dom" class="am-modal-prompt-input" placeholder="设定奖品数量">
  42. <input type="text" name="prize_level_dom" class="am-modal-prompt-input" placeholder="设定奖品等级">
  43. <input type="file" style="border: hidden;" id="file1" name='file' placeholder="上传图片" class="am-form-field am-radius" />
  44. <input type="hidden" name="prize_img_dom" class="prize_img" value="" />
  45. <p><img id="img1" alt="上传成功啦" src="" width="100px" style="display: none;"/></p>
  46. </div>
  47. <div class="am-modal-footer">
  48. <span class="am-modal-btn" data-am-modal-cancel>取消</span>
  49. <span class="am-modal-btn" data-am-modal-confirm>提交</span>
  50. </div>
  51. </div>
  52. </div>
  53. <div class="am-g">
  54. <input type="hidden" id="hidden_dom" value=""/>
  55. <input type="file" style="display:none;" id="file2" name='file' placeholder="上传图片" class="am-form-field am-radius" />
  56. </div>
  57. <div class="am-g">
  58. <table class="am-table am-table-bordered am-table-striped am-table-hove">
  59. <thead>
  60. <tr>
  61. <th>序号</th>
  62. <th>奖品名</th>
  63. <th>属性</th>
  64. <th>奖品数量</th>
  65. <th>奖品等级</th>
  66. <th>奖品图片</th>
  67. <th>操作</th>
  68. </tr>
  69. </thead>
  70. <tbody id="tbody1">
  71. <if condition="$data['prize_list']">
  72. <foreach name="data['prize_list']" item="prize" key="k1">
  73. <tr>
  74. <td><input type="text" name="prize_id[]" value="{{$prize['prize_id']}}" class="prize_id_class"/></td>
  75. <td><input type="text" name="prize_name[]" class="prize_name_class" value="{{$prize.prize_name}}"/></td>
  76. <td>
  77. <select name="prize_object[]">
  78. <option value="real" <if condition="$prize['prize_object'] eq 'real'">selected</if>>实体奖品</option>
  79. <option value="vitual" <if condition="$prize['prize_object'] eq 'vitual'">selected</if>>虚拟奖品</option>
  80. <option value="none" <if condition="$prize['prize_object'] eq 'none'">selected</if>>不中奖</option>
  81. </select>
  82. </td>
  83. <td><input type="text" name="prize_num[]" value="{{$prize.prize_num}}"/></td>
  84. <td><input type="text" name="prize_level[]"value="{{$prize.prize_level}}"/></td>
  85. <th class="listenImg">
  86. <input type="hidden" name="prize_img[]" class="prize_img" id="{{$prize['prize_id']}}" value="{{$prize.prize_img}}"/>
  87. <img id="show_img_{{$prize.prize_id}}" src="{{$prize.prize_img}}" width="100px;"/>
  88. </th>
  89. <th>
  90. <select name="prize_status[]">
  91. <option value="1" <if condition="$prize['prize_status'] eq 1">selected</if>>有效</option>
  92. <option value="0" <if condition="$prize['prize_status'] eq 0">selected</if>>失效</option>
  93. </select>
  94. </th>
  95. </tr>
  96. </foreach>
  97. </if>
  98. </tbody>
  99. </table>
  100. </div>
  101. <div class="am-g">
  102. <label for="doc-ipt-email-1">出奖规则</label><a><button type="button" id="doc-prompt-toggle-2"> 新增规则 </button></a>
  103. </div>
  104. <div class="am-modal am-modal-prompt" tabindex="-1" id="my-prompt-2">
  105. <div class="am-modal-dialog">
  106. <div class="am-modal-hd">新增出奖规则</div>
  107. <div class="am-modal-bd">
  108. <select id="prize_name_select">
  109. </select>
  110. <select id="rule_role">
  111. <option value="会员">会员</option>
  112. <option value="普通用户">普通用户</option>
  113. <option value="虚拟用户">虚拟用户</option>
  114. <option value="不限">不限</option>
  115. </select>
  116. <select id="rule_mode">
  117. <option value="a">活动期间每一天</option>
  118. <option value="b">自定义单日设置</option>
  119. <option value="c">自定义多日设置</option>
  120. </select>
  121. <input type="hidden" id="rule_date" value="" placeholder="中间值"/>
  122. <input type="text" style="display: none" id="rule_onedate" value="" placeholder="设定中奖日期,单选"/>
  123. <input type="text" style="display: none" id="rule_moredate" value="" placeholder="设定中奖日期,多选"/>
  124. <input type="text" id="rule_hour" value="" placeholder="设定中奖时段"/>
  125. <select id="rule_cycle">
  126. <option value="days">每天</option>
  127. <option value="total">总共</option>
  128. </select>
  129. <input type="text" id="rule_num" value="" placeholder="设定中奖数量"/>
  130. <input type="text" id="rule_probability" value="" placeholder="设定中奖概率,除不中奖0外,其余转化成分数填写,如1/2表示中奖概率50%"/>
  131. </div>
  132. <div class="am-modal-footer">
  133. <span class="am-modal-btn" data-am-modal-cancel>取消</span>
  134. <span class="am-modal-btn" data-am-modal-confirm>提交</span>
  135. </div>
  136. </div>
  137. </div>
  138. <div class="am-g">
  139. <table class="am-table am-table-bordered am-table-striped am-table-hove">
  140. <thead>
  141. <tr>
  142. <th>序号</th>
  143. <th>奖品名</th>
  144. <th>中奖数量</th>
  145. <th>中奖概率</th>
  146. <th>中奖身份</th>
  147. <th>中奖日期</th>
  148. <th>中奖时段</th>
  149. <th>计数策略</th>
  150. <th>操作</th>
  151. </tr>
  152. </thead>
  153. <tbody id="tbody2">
  154. <if condition="$data['prize_rule']">
  155. <foreach name="data['prize_rule']" item="rule">
  156. <tr>
  157. <td><input type="text" name="rule_id[]" class="rule_id_class" value="{{$rule.rule_id}}"/></td>
  158. <td><input type="text" name="rule_prize_name[]" value="{{$rule.rule_prize_name}}"/></td>
  159. <td><input type="text" name="rule_num[]" value="{{$rule.rule_num}}"/></td>
  160. <td><input type="text" name="rule_probability[]"value="{{$rule.rule_probability}}"/></td>
  161. <td><input type="text" name="rule_role[]"value="{{$rule.rule_role}}"/></td>
  162. <td><input type="text" name="rule_date[]"value="{{$rule.rule_date}}"/></td>
  163. <td><input type="text" name="rule_hour[]"value="{{$rule.rule_hour}}"/></td>
  164. <td><input type="text" name="rule_cycle[]"value="{{$rule.rule_cycle|default='每天'}}"/></td>
  165. <th>
  166. <select name="rule_status[]">
  167. <option value="1" <if condition="$rule['rule_status'] eq 1">selected</if>>有效</option>
  168. <option value="0" <if condition="$rule['rule_status'] eq 0">selected</if>>失效</option>
  169. </select>
  170. </th>
  171. </tr>
  172. </foreach>
  173. </if>
  174. </tbody>
  175. </table>
  176. </div>
  177. <div class="am-form-group">
  178. <label>活动模式</label>
  179. <input type="text" name="logic" placeholder="后台开发配置此项" readonly=true class="am-form-field am-radius"
  180. value="{{$data.logic}}"/>
  181. </div>
  182. <div class="am-form-group">
  183. <label>视图位置</label>
  184. <input type="text" name="view" placeholder="后台开发配置此项" readonly=true class="am-form-field am-radius"
  185. value="{{$data.view}}"/>
  186. </div>
  187. <div class="am-form-group">
  188. <label>日志记录表</label>
  189. <input type="text" name="prize_log_table" placeholder="后台开发配置此项" readonly=true class="am-form-field am-radius"
  190. value="{{$data.prize_log_table}}"/>
  191. </div>
  192. <div class="am-form-group">
  193. <label>vip用户每日参与活动次数</label>
  194. <input type="text" name="vip_chance" placeholder="默认3次" class="am-form-field am-radius"
  195. <notempty name="data"> value="{{$data.vip_chance}}" </notempty>/>
  196. <label>普通用户每日参与活动次数</label>
  197. <input style="clear: both;" type="text" name="novip_chance" placeholder="默认一次" class="am-form-field am-radius"
  198. <notempty name="data"> value="{{$data.novip_chance}}" </notempty>/>
  199. </div>
  200. <div class="am-form-group">
  201. <label>鉴权方式</label>
  202. <label class="am-radio-inline">
  203. <input type="radio" value="1" name="checkvip_style" <if condition= "$data['checkvip_style'] eq 1">checked</if>> 前端传递
  204. </label>
  205. <label class="am-radio-inline">
  206. <input type="radio" value="2" name="checkvip_style" <if condition= "$data['checkvip_style'] eq 2">checked</if>> 后台鉴权
  207. </label>
  208. </div>
  209. <div class="am-form-group">
  210. <label>活动是否开启</label>
  211. <if condition= "$data['is_enable']">
  212. <label class="am-radio-inline">
  213. <input type="radio" value="1" name="is_enable" checked="checked"> 开启
  214. </label>
  215. <label class="am-radio-inline">
  216. <input type="radio" value="0" name="is_enable"> 关闭
  217. </label>
  218. <else />
  219. <label class="am-radio-inline">
  220. <input type="radio" value="1" name="is_enable"> 开启
  221. </label>
  222. <label class="am-radio-inline">
  223. <input type="radio" value="0" name="is_enable" checked="checked"> 关闭
  224. </label>
  225. </if>
  226. </div>
  227. <div class="am-form-group">
  228. <label>是否启用测试模式</label>
  229. <if condition= "$data['is_test']">
  230. <label class="am-radio-inline">
  231. <input type="radio" value="1" name="is_test" checked="checked"> 启用
  232. </label>
  233. <label class="am-radio-inline">
  234. <input type="radio" value="0" name="is_test"> 关闭
  235. </label>
  236. <else />
  237. <label class="am-radio-inline">
  238. <input type="radio" value="1" name="is_test"> 启用
  239. </label>
  240. <label class="am-radio-inline">
  241. <input type="radio" value="0" name="is_test" checked="checked"> 关闭
  242. </label>
  243. </if>
  244. </div>
  245. <div class="am-form-group">
  246. <label>活动细则<span class="fs-12 fw-100 cr-999">(<if condition="IsMobile()">{{:L('article_content_format_mobile')}}<else />{{:L('article_images_upload_format')}}</if>)</span></label>
  247. <textarea class="am-radius am-validate" name="introduce" rows="5" minlength="50" maxlength="105000" <if condition="!IsMobile()">id="editor-tag" data-url="{{:U('Admin/Ueditor/Index', ['path_type'=>'Article'])}}" placeholder="{{:L('article_content_format')}}" <else /> placeholder="{{:L('article_content_format')}}{{:L('article_content_format_mobile')}}" </if> data-validation-message="{{:L('article_content_format')}}" required><notempty name="data">{{$data.introduce}}</notempty></textarea>
  248. </div>
  249. <div class="am-form-group" style="padding-top: 2rem">
  250. <input type="hidden" name="id" <notempty name="data"> value="{{$data.id}}"</notempty>" />
  251. <button class="am-btn am-btn-primary">保存</button>
  252. </div>
  253. </form>
  254. <!-- form end -->
  255. </div>
  256. </div>
  257. <!-- right content end -->
  258. <!-- footer start -->
  259. <include file="Public/Footer" />
  260. <!-- footer end -->
  261. <script src="__PUBLIC__/Common/Lib/uploader/ajaxfileupload.js" type="text/javascript"></script>
  262. <script>
  263. function abc(){
  264. var prize_size = Number($('.prize_id_class').length) + Number(1);
  265. alert(prize_size);return false;
  266. }
  267. $(function() {
  268. $('#doc-prompt-toggle-1').on('click', function() {
  269. $('#my-prompt-1').modal({
  270. relatedTarget: this,
  271. onConfirm: function(e) {
  272. var prize_name = $('input[name=prize_name_dom]').val();
  273. var prize_num = $('input[name=prize_num_dom]').val();
  274. var prize_level = $('input[name=prize_level_dom]').val();
  275. var prize_img = $('input[name=prize_img_dom]').val();
  276. var prize_size = Number($('.prize_id_class').length) + Number(1);
  277. $("#tbody1").append('<tr><td><input type=text readonly name=prize_id[] value='+prize_size+' class=prize_id_class></td><td><input type=text name=prize_name[] value='+prize_name+' class=prize_name_class></td><td><select name=prize_object[]><option value="real" selected>实体奖品</option><option value="vitual">虚拟奖品</option><option value="none">不中奖</option></select></td><td><input type=text name=prize_num[] value='+prize_num+'></td><td><input type=text name=prize_level[] value='+prize_level+'></td><td><input type=hidden name=prize_img[] value='+prize_img+'><img src='+prize_img+' width="100px;"></td><th><select name=prize_status[]><option value="1" selected>有效</option><option value="0">失效</option></select></th></tr>');
  278. $('input[name=prize_name_dom]').val('');
  279. $('input[name=prize_num_dom]').val('');
  280. $('input[name=prize_level_dom]').val('');
  281. $('input[name=prize_img_dom]').val('');
  282. $("#img1").attr("src", '');
  283. $("#img1").hide();
  284. $('input[name=file]').val('');
  285. },
  286. onCancel: function(e) {
  287. $('input[name=prize_name_dom]').val('');
  288. $('input[name=prize_num_dom]').val('');
  289. $('input[name=prize_level_dom]').val('');
  290. $('input[name=prize_img_dom]').val('');
  291. $("#img1").attr("src", '');
  292. $("#img1").hide();
  293. $('input[name=file]').val('');
  294. }
  295. });
  296. });
  297. $('#doc-prompt-toggle-2').on('click', function() {
  298. var html = '';
  299. $('.prize_name_class').each(function(index){
  300. var prize_name = $(this).val();
  301. var prize_id= $('.prize_id_class').eq(index).val();
  302. html += "<option value="+prize_id+'#'+prize_name+">"+prize_id+"#"+prize_name+"</option>";
  303. });
  304. $("#prize_name_select").html(html);
  305. $('#my-prompt-2').modal({
  306. relatedTarget: this,
  307. onConfirm: function(e) {
  308. var rule_prize_name = $('#prize_name_select').val();
  309. var rule_num = $('#rule_num').val();
  310. var rule_probability = $('#rule_probability').val();
  311. var rule_role = $('#rule_role').val();
  312. var rule_date = $('#rule_date').val() ? $('#rule_date').val(): '每日';
  313. var rule_hour = $('#rule_hour').val();
  314. var rule_cycle = $('#rule_cycle').val();
  315. var rule_size = Number($('.rule_id_class').length) + Number(1);
  316. $("#tbody2").append('<tr><td><input type=text readonly class="rule_id_class" name=rule_id[] value='+rule_size+'></td><td><input type=text name=rule_prize_name[] value='+rule_prize_name+'></td><td><input type=text name=rule_num[] value='+rule_num+'></td><td><input type=text name=rule_probability[] value='+rule_probability+'></td><td><input type=text name=rule_role[] value='+rule_role+'></td><td><input type=text name=rule_date[] value="'+rule_date+'"></td><td><input type=text name=rule_hour[] value="'+rule_hour+'"></td><td><input type=text name=rule_cycle[] value="'+rule_cycle+'"></td><th><select name=rule_status[]><option value="1" selected>有效</option><option value="0">失效</option></select></th></tr>');
  317. $('#rule_num').val('');
  318. $('#rule_probability').val('');
  319. $('#rule_date').val('');
  320. $('#rule_hour').val('');
  321. },
  322. onCancel: function(e) {
  323. $('#rule_num').val('');
  324. $('#rule_probability').val('');
  325. $('#rule_date').val('');
  326. $('#rule_hour').val('');
  327. }
  328. });
  329. });
  330. });
  331. </script>
  332. <script type="text/javascript">
  333. $("body").on("change","#file1",function () {
  334. ajaxFileUpload();
  335. });
  336. function ajaxFileUpload() {
  337. $.ajaxFileUpload
  338. (
  339. {
  340. url: "{{:U('Admin/ActivityV2/Uploader')}}&model=one", //用于文件上传的服务器端请求地址
  341. secureuri: false, //是否需要安全协议,一般设置为false
  342. fileElementId: 'file1', //文件上传域的ID
  343. dataType: 'text', //返回值类型 一般设置为json
  344. success: function (data, status) //服务器成功响应处理函数
  345. {
  346. data = eval('(' + data + ')');
  347. $(".prize_img").attr("value", data.imgurl);
  348. $("#img1").attr("src", data.imgurl);
  349. $("#img1").show();
  350. },
  351. error: function (data, status, e)//服务器响应失败处理函数
  352. {
  353. alert(status);
  354. }
  355. }
  356. )
  357. return false;
  358. }
  359. jeDate("input[name=start_at]",{
  360. //onClose:false,
  361. format: "YYYY-MM-DD hh:00:00"
  362. });
  363. jeDate("input[name=end_at]",{
  364. //onClose:false,
  365. format: "YYYY-MM-DD hh:00:00"
  366. });
  367. jeDate("#rule_moredate",{
  368. range:" 至 ",
  369. minDate:$('input[name=start_at]').val() ? $('input[name=start_at]').val() : '2019-01-01',
  370. maxDate:$('input[name=end_at]').val() ? $('input[name=end_at]').val() : '2099-12-31',
  371. format: 'YYYY-MM-DD',
  372. donefun: function(obj){
  373. $('#rule_date').val(obj.val);
  374. }
  375. });
  376. jeDate("#rule_onedate",{
  377. minDate:$('input[name=start_at]').val()? $('input[name=start_at]').val() : '2019-01-01',
  378. maxDate:$('input[name=end_at]').val() ? $('input[name=end_at]').val() : '2099-12-31',
  379. format: 'YYYY-MM-DD',
  380. donefun: function(obj){
  381. $('#rule_date').val(obj.val);
  382. }
  383. });
  384. jeDate("#rule_hour",{
  385. format: "hh:mm",
  386. multiPane:false,
  387. range:" 至 "
  388. });
  389. </script>
  390. <script>
  391. $("#rule_mode").change(function(){
  392. // $(this).css("background-color","#FFFFCC");
  393. var mode = $(this).val();
  394. // alert(mode);//return ;
  395. console.log(mode);
  396. if(mode === 'a'){
  397. $('#rule_onedate').hide();
  398. $('#rule_moredate').hide();
  399. }
  400. if(mode === 'b'){
  401. $('#rule_onedate').show();
  402. $('#rule_moredate').hide();
  403. }
  404. if(mode === 'c'){
  405. $('#rule_onedate').hide();
  406. $('#rule_moredate').show();
  407. }
  408. });
  409. </script>
  410. <script>
  411. $("body").on("change","#file2",function () {
  412. ajaxFileUploadReplace();
  413. });
  414. $('.listenImg').on('click',function(){
  415. var trigger_dom_id = $(this).children("input.prize_img").attr('id');
  416. $('#hidden_dom').val(trigger_dom_id);
  417. $('#file2').click();
  418. });
  419. function ajaxFileUploadReplace() {
  420. $.ajaxFileUpload
  421. (
  422. {
  423. url: "{{:U('Admin/ActivityV2/Uploader')}}&model=one", //用于文件上传的服务器端请求地址
  424. secureuri: false, //是否需要安全协议,一般设置为false
  425. fileElementId: 'file2', //文件上传域的ID
  426. dataType: 'text', //返回值类型 一般设置为json
  427. success: function (data, status) //服务器成功响应处理函数
  428. {
  429. data = eval('(' + data + ')');
  430. console.log(data.imgurl);
  431. var trigger_dom_id = $('#hidden_dom').val();
  432. var show_img_dom = 'show_img_'+trigger_dom_id;
  433. $("#"+show_img_dom).attr("src", data.imgurl);
  434. $("#"+trigger_dom_id).val(data.imgurl);
  435. $('#hidden_dom').val('');
  436. },
  437. error: function (data, status, e)//服务器响应失败处理函数
  438. {
  439. alert(status);
  440. }
  441. }
  442. )
  443. return false;
  444. }
  445. </script>