plan.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>次数设置</title>
  6. </head>
  7. <body class="laytp-container">
  8. <div class="layui-card">
  9. <div class="layui-card-body">
  10. <form class="layui-form" lay-filter="layui-form">
  11. <div class="table-container">
  12. </div>
  13. <div class="bottom">
  14. <div class="button-container">
  15. <button type="submit" class="laytp-btn laytp-btn-primary laytp-btn-sm" lay-submit="" lay-filter="add">
  16. <i class="layui-icon layui-icon-ok"></i>
  17. 保存配置
  18. </button>
  19. <button type="reset" class="laytp-btn laytp-btn-sm">
  20. <i class="layui-icon layui-icon-refresh"></i>
  21. 重置
  22. </button>
  23. </div>
  24. </div>
  25. </form>
  26. </div>
  27. </div>
  28. <script id="confTableHtml" type="text/html">
  29. <input type="hidden" name="group" id="group" value="{{=d.group}}" />
  30. <div class="layui-card">
  31. <div class="layui-card-header">次数设置</div>
  32. <div class="layui-card-body">
  33. <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
  34. <ul class="layui-tab-title">
  35. <li lay-id="1" class="layui-this">增加次数</li>
  36. <li lay-id="2">消费次数</li>
  37. <li lay-id="3">支付策略</li>
  38. </ul>
  39. <div class="layui-tab-content" style="height: 30px;">
  40. <!-- 奖励次数 -->
  41. <div class="layui-tab-item layui-show">
  42. <table class="layui-table" style="margin: 0;" lay-skin="nob">
  43. <colgroup>
  44. <col width="15%">
  45. <col width="40%">
  46. <col width="45%">
  47. </colgroup>
  48. <tbody>
  49. <tr>
  50. <td style="text-align:right;">
  51. 观看激励视频(小程序)
  52. </td>
  53. <td>
  54. <input autocomplete="off" type="text" name="video" id="input" value="{{=d.video}}" placeholder="请输入单行文本输入框" class="layui-input" lay-verify="required">
  55. <input type="hidden" name="form_type[video]" value="input" />
  56. </td>
  57. <td>
  58. <div class="conf-des layui-form-mid layui-word-aux">
  59. <label title="APP_ID">观看激励视频</label>
  60. <br />
  61. <code title="{{=d.group}}.input">{{=d.group}}.video</code>
  62. </div>
  63. </td>
  64. </tr>
  65. <tr>
  66. <td style="text-align:right;">
  67. 用户每天最多观看多少次
  68. </td>
  69. <td>
  70. <input autocomplete="off" type="text" name="video_limit" id="input" value="{{=d.video_limit}}" placeholder="请输入单行文本输入框" class="layui-input" lay-verify="required">
  71. <input type="hidden" name="form_type[video_limit]" value="input" />
  72. </td>
  73. <td>
  74. <div class="conf-des layui-form-mid layui-word-aux">
  75. <label title="APP_ID">用户每天最多分享多少次</label>
  76. <br />
  77. <code title="{{=d.group}}.input">{{=d.group}}.video_limit</code>
  78. </div>
  79. </td>
  80. </tr>
  81. <tr>
  82. <td style="text-align:right;">
  83. 用户注册奖励
  84. </td>
  85. <td>
  86. <input autocomplete="off" type="text" name="register" id="input" value="{{=d.register}}" placeholder="请输入单行文本输入框" class="layui-input" lay-verify="required">
  87. <input type="hidden" name="form_type[register]" value="input" />
  88. </td>
  89. <td>
  90. <div class="conf-des layui-form-mid layui-word-aux">
  91. <label title="APP_ID">用户注册</label>
  92. <br />
  93. <code title="{{=d.group}}.input">{{=d.group}}.register</code>
  94. </div>
  95. </td>
  96. </tr>
  97. <tr>
  98. <td style="text-align:right;">
  99. 用户每日签到奖励
  100. </td>
  101. <td>
  102. <input autocomplete="off" type="text" name="sign" id="input" value="{{=d.sign}}" placeholder="请输入单行文本输入框" class="layui-input" lay-verify="required">
  103. <input type="hidden" name="form_type[sign]" value="input" />
  104. </td>
  105. <td>
  106. <div class="conf-des layui-form-mid layui-word-aux">
  107. <label title="APP_ID">用户每日签到</label>
  108. <br />
  109. <code title="{{=d.group}}.input">{{=d.group}}.sign</code>
  110. </div>
  111. </td>
  112. </tr>
  113. <tr>
  114. <td style="text-align:right;">
  115. 用户单次分享奖励
  116. </td>
  117. <td>
  118. <input autocomplete="off" type="text" name="share" id="input" value="{{=d.share}}" placeholder="请输入单行文本输入框" class="layui-input" lay-verify="required">
  119. <input type="hidden" name="form_type[share]" value="input" />
  120. </td>
  121. <td>
  122. <div class="layui-form-mid layui-word-aux">
  123. <label title="APP_ID">请注意,受微信规则限制,这里的分享指用户调用分享按钮即可获得</label>
  124. <br />
  125. <code title="{{=d.group}}.input">{{=d.group}}.share</code>
  126. </div>
  127. </td>
  128. </tr>
  129. <tr>
  130. <td style="text-align:right;">
  131. 用户每天最多分享多少次
  132. </td>
  133. <td>
  134. <input autocomplete="off" type="text" name="share_limit" id="input" value="{{=d.share_limit}}" placeholder="请输入单行文本输入框" class="layui-input" lay-verify="required">
  135. <input type="hidden" name="form_type[share_limit]" value="input" />
  136. </td>
  137. <td>
  138. <div class="conf-des layui-form-mid layui-word-aux">
  139. <label title="APP_ID">用户每天最多分享多少次</label>
  140. <br />
  141. <code title="{{=d.group}}.input">{{=d.group}}.share_limit</code>
  142. </div>
  143. </td>
  144. </tr>
  145. </tbody>
  146. </table>
  147. </div>
  148. <!-- 消费次数 -->
  149. <div class="layui-tab-item">
  150. <table class="layui-table" style="margin: 0;" lay-skin="nob">
  151. <colgroup>
  152. <col width="15%">
  153. <col width="70%">
  154. <col width="15%">
  155. </colgroup>
  156. <tbody>
  157. <tr>
  158. <td style="text-align:right;">
  159. 提问一次chatgpt3.5需要消耗
  160. </td>
  161. <td>
  162. <input type="hidden" name="unlock_gpt3" value="1" />
  163. <input autocomplete="off" disabled type="text" name="unlock_gpt3" id="input" value="{{d.unlock_gpt3?d.unlock_gpt3:1}}" placeholder="请输入单行文本输入框" class="layui-input">
  164. <input type="hidden" name="form_type[unlock_gpt3]" value="input" />
  165. </td>
  166. <td>
  167. <div class="conf-des layui-form-mid layui-word-aux">
  168. <label title="配置说明">默认1</label>
  169. <br />
  170. <code title="{{=d.group}}.input">{{=d.group}}.unlock_gpt3</code>
  171. </div>
  172. </td>
  173. </tr>
  174. <tr>
  175. <td style="text-align:right;">
  176. 提问一次chatgpt4.0需要消耗
  177. </td>
  178. <td>
  179. <input autocomplete="off" type="text" name="lock_gpt4" id="input" value="{{d.lock_gpt4?d.lock_gpt4:0}}" placeholder="请输入单行文本输入框" class="layui-input">
  180. <input type="hidden" name="form_type[lock_gpt4]" value="input" />
  181. </td>
  182. <td>
  183. <div class="conf-des layui-form-mid layui-word-aux">
  184. <label title="配置说明">消耗的点数</label>
  185. <br />
  186. <code title="{{=d.group}}.input">{{=d.group}}.lock_gpt4</code>
  187. </div>
  188. </td>
  189. </tr>
  190. <tr>
  191. <td style="text-align:right;">
  192. 生成一次sd ai绘画需要消耗
  193. </td>
  194. <td>
  195. <input autocomplete="off" type="text" name="unlock_aipainting" id="input" value="{{=d.unlock_aipainting}}" placeholder="请输入单行文本输入框" class="layui-input">
  196. <input type="hidden" name="form_type[unlock_aipainting]" value="input" />
  197. </td>
  198. <td>
  199. <div class="conf-des layui-form-mid layui-word-aux">
  200. <label title="配置说明">消耗的点数</label>
  201. <br />
  202. <code title="{{=d.group}}.input">{{=d.group}}.unlock_aipainting</code>
  203. </div>
  204. </td>
  205. </tr>
  206. <tr>
  207. <td style="text-align:right;">
  208. 生成一次mj ai绘画需要消耗
  209. </td>
  210. <td>
  211. <input autocomplete="off" type="text" name="unlock_mj_aipainting" id="input" value="{{=d.unlock_mj_aipainting}}" placeholder="请输入单行文本输入框" class="layui-input">
  212. <input type="hidden" name="form_type[unlock_mj_aipainting]" value="input" />
  213. </td>
  214. <td>
  215. <div class="conf-des layui-form-mid layui-word-aux">
  216. <label title="配置说明">消耗的点数</label>
  217. <br />
  218. <code title="{{=d.group}}.input">{{=d.group}}.unlock_mj_aipainting</code>
  219. </div>
  220. </td>
  221. </tr>
  222. </tbody>
  223. </table>
  224. </div>
  225. <!-- 支付策略 -->
  226. <div class="layui-tab-item">
  227. <table class="layui-table" style="margin: 0;" lay-skin="nob">
  228. <colgroup>
  229. <col width="15%">
  230. <col width="50%">
  231. <col width="35%">
  232. </colgroup>
  233. <tbody>
  234. <tr>
  235. <td style="text-align:right;">
  236. 小程序IOS支付
  237. </td>
  238. <td>
  239. <!-- 隐藏域设置开关未选中时需要传递的参数值 -->
  240. <input type="hidden" name="is_ios_pay" value="2" />
  241. <input type="checkbox" name="is_ios_pay" lay-skin="switch" lay-filter="iosPay" lay-text="打开|关闭" value="1" {{# if(d.is_ios_pay == 1){ }}checked="checked" {{# } }} />
  242. <input type="hidden" name="form_type[is_ios_pay]" value="switch" />
  243. </td>
  244. <td>
  245. <div class="conf-des layui-form-mid layui-word-aux">
  246. <label title="配置说明">IOS虚拟支付在小程序内是违规行为</label>
  247. <br />
  248. <code title="{{=d.group}}.input">{{=d.group}}.is_ios_pay</code>
  249. </div>
  250. </td>
  251. </tr>
  252. <tr class="open-period" style="{{# if(d.is_ios_pay == 2 || !d.is_ios_pay){ }} display:none {{# } }}">
  253. <td style="text-align:right;">
  254. 分时段开启IOS支付
  255. </td>
  256. <td>
  257. <input type="hidden" name="open_period" value="1" />
  258. <input type="radio" name="open_period" value="1" title="不限制时段开启"
  259. {{# if(d.open_period==='1'){ }}checked="checked" {{# } }} />
  260. <input type="radio" name="open_period" value="2" title="晚8点到早8点自动开启"
  261. {{# if(d.open_period==='2'){ }}checked="checked" {{# } }} />
  262. <input type="hidden" name="form_type[open_period]" value="radio" />
  263. </td>
  264. <td>
  265. <div class="conf-des layui-form-mid layui-word-aux">
  266. <label title="配置说明">IOS虚拟支付在小程序内是违规行为</label>
  267. <br />
  268. <code title="{{=d.group}}.input">{{=d.group}}.open_period</code>
  269. </div>
  270. </td>
  271. </tr>
  272. <tr>
  273. <td style="text-align:right;">
  274. IOS端激励视频弹框提示
  275. </td>
  276. <td>
  277. <!-- 隐藏域设置开关未选中时需要传递的参数值 -->
  278. <input type="hidden" name="is_ios_ad_popup" value="2" />
  279. <input type="checkbox" name="is_ios_ad_popup" lay-skin="switch" lay-text="打开|关闭" value="1" {{# if(d.is_ios_ad_popup == 1){ }}checked="checked" {{# } }} />
  280. <input type="hidden" name="form_type[is_ios_ad_popup]" value="switch" />
  281. </td>
  282. <td>
  283. <div class="conf-des layui-form-mid layui-word-aux">
  284. <label title="配置说明">提示用户可以观看视频获得次数,关闭则直接拉取,但违规</label>
  285. <br />
  286. <code title="{{=d.group}}.input">{{=d.group}}.is_ios_ad_popup</code>
  287. </div>
  288. </td>
  289. </tr>
  290. </tbody>
  291. </table>
  292. </div>
  293. </div>
  294. </div>
  295. </div>
  296. </div>
  297. </script>
  298. <script type="application/javascript">
  299. document.write("<link rel='stylesheet' href='" + localStorage.getItem("staticDomain") + "/component/layui/css/layui.css?v=" + localStorage.getItem("version") + "'>");
  300. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/layui/layui.js?v=" + localStorage.getItem("version") + "'><\/script>");
  301. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/laytp/layuiConfig.js?v=" + localStorage.getItem("version") + "'><\/script>");
  302. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/jquery_3.3.1.js?v=" + localStorage.getItem("version") + "'><\/script>");
  303. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/jquery.tablednd.js?v=" + localStorage.getItem("version") + "'><\/script>");
  304. </script>
  305. <script>
  306. layui.use(['laytp', 'element'], function() {
  307. var group = "system.plan";
  308. var element = layui.element;
  309. // 先获取数据,渲染表单
  310. // 渲染完表单之后,设置滚动条
  311. facade.ajax({
  312. route: "/admin.conf/getGroupConf",
  313. data: {
  314. "group": group
  315. },
  316. successAlert: false,
  317. showLoading: true
  318. }).done(function(res) {
  319. if (res.code === 0) {
  320. res.data.group = group;
  321. layui.laytpl($("#confTableHtml").html()).render(res.data, function(string) {
  322. $(".table-container").html(string);
  323. layui.laytpForm.render();
  324. layui.form.render();
  325. var windowHeight = $(window).height();
  326. var maxHeight = parseInt(windowHeight) - 86;
  327. var minHeight = parseInt(windowHeight) - 86;
  328. // 设置table-container的最大高度和超过高度后展示滚动条
  329. $(".table-container").css("margin-bottom", '40px');
  330. $(".table-container").css("max-height", maxHeight + 'px');
  331. $(".table-container").css("min-height", minHeight + 'px');
  332. $(".table-container").css("overflow-y", "auto");
  333. $('.bottom').css("background-color", "#f6f6f6");
  334. });
  335. }
  336. });
  337. // 选项卡
  338. var layid = location.hash.replace(/^#docDemoTabBrief=/, '');
  339. element.tabChange('test1', layid);
  340. element.on('tab(docDemoTabBrief)', function(data) {
  341. location.hash = 'test1=' + this.getAttribute('lay-id');
  342. });
  343. layui.form.on('switch(iosPay)', function (data){
  344. if(data.elem.checked){
  345. $('.open-period').show()
  346. }else{
  347. $('.open-period').hide()
  348. }
  349. })
  350. layui.form.on('submit(add)', function(data) {
  351. var btnAnim = layui.button.load({
  352. elem: $(this)
  353. });
  354. try {
  355. data = facade.setEditorField(data);
  356. } catch (e) {
  357. facade.error(e);
  358. return false;
  359. }
  360. data.field.group = group;
  361. facade.ajax({
  362. route: '/admin.conf/saveGroupConf',
  363. data: data.field
  364. }).done(function(res) {
  365. btnAnim.stop();
  366. }).fail(function() {
  367. btnAnim.stop();
  368. });
  369. return false;
  370. });
  371. })
  372. </script>
  373. </body>
  374. </html>