create.php 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. {extend name="public/container"}
  2. {block name="head_top"}
  3. <link href="{__ADMIN_PATH}plug/umeditor/themes/default/css/umeditor.css" type="text/css" rel="stylesheet">
  4. <link href="{__ADMIN_PATH}module/wechat/news/css/style.css" type="text/css" rel="stylesheet">
  5. <link href="{__FRAME_PATH}css/plugins/chosen/chosen.css" rel="stylesheet">
  6. <script type="text/javascript" src="{__ADMIN_PATH}plug/umeditor/third-party/template.min.js"></script>
  7. <script type="text/javascript" charset="utf-8" src="{__ADMIN_PATH}plug/umeditor/umeditor.config.js"></script>
  8. <script type="text/javascript" charset="utf-8" src="{__ADMIN_PATH}plug/umeditor/umeditor.min.js"></script>
  9. <script src="{__ADMIN_PATH}frame/js/ajaxfileupload.js"></script>
  10. <script src="{__ADMIN_PATH}plug/validate/jquery.validate.js"></script>
  11. <script src="{__FRAME_PATH}js/plugins/chosen/chosen.jquery.js"></script>
  12. <script type="text/javascript" charset="utf-8" src="{__ADMIN_PATH}plug/ueditor/third-party/zeroclipboard/ZeroClipboard.js"></script>
  13. <script type="text/javascript" charset="utf-8" src="{__ADMIN_PATH}plug/ueditor/ueditor.config.js"></script>
  14. <script type="text/javascript" charset="utf-8" src="{__ADMIN_PATH}plug/ueditor/ueditor.all.min.js"></script>
  15. <style>
  16. .layui-form-item.event .layui-input-inline {
  17. width: 130px;
  18. }
  19. .layui-form-item.event .layui-inline:nth-child(4) .layui-input-inline {
  20. width: 500px;
  21. }
  22. .layui-form-item.event .layui-inline:nth-child(5) .layui-input-inline {
  23. width: 60px;
  24. }
  25. .layui-form-item.event .layui-form-label {
  26. width: 50px;
  27. }
  28. .layui-form-item.price .layui-input-inline {
  29. width: 130px;
  30. }
  31. .layui-form-item.price .layui-input-block .layui-form-label {
  32. width: 50px;
  33. }
  34. .layui-form-item.price .layui-inline:nth-child(4) .layui-form-label {
  35. width: 80px;
  36. }
  37. </style>
  38. {/block}
  39. {block name="content"}
  40. <div v-cloak id="app" class="layui-fluid">
  41. <div class="layui-card">
  42. <div class="layui-card-body">
  43. <form class="layui-form" action="">
  44. <div class="layui-tab layui-tab-brief">
  45. <ul class="layui-tab-title">
  46. <li class="layui-this">基本设置</li>
  47. <li>详情设置</li>
  48. <li>资料设置</li>
  49. <li>价格设置</li>
  50. </ul>
  51. <div class="layui-tab-content">
  52. <div class="layui-tab-item layui-show">
  53. <div class="layui-form-item required">
  54. <label class="layui-form-label">活动标题:</label>
  55. <div class="layui-input-block">
  56. <input type="text" required lay-verify="required" placeholder="请输入活动标题" maxlength="50" autocomplete="off" class="layui-input" v-model.trim="formData.title">
  57. </div>
  58. </div>
  59. <div class="layui-form-item required">
  60. <div class="layui-inline">
  61. <label class="layui-form-label">报名时间:</label>
  62. <div class="layui-input-inline" style="width: 380px;">
  63. <input type="text" class="layui-input" autocomplete="off" id="date1" placeholder=" - ">
  64. </div>
  65. </div>
  66. </div>
  67. <div class="layui-form-item required">
  68. <div class="layui-inline">
  69. <label class="layui-form-label">活动时间:</label>
  70. <div class="layui-input-inline" style="width: 380px;">
  71. <input type="text" class="layui-input" autocomplete="off" id="date2" placeholder=" - ">
  72. </div>
  73. </div>
  74. </div>
  75. <div class="layui-form-item required">
  76. <label class="layui-form-label">活动人数:</label>
  77. <div class="layui-input-inline">
  78. <input type="number" required lay-verify="required" min="1" placeholder="活动人数必须大于1" autocomplete="off" class="layui-input" v-model.number="formData.number">
  79. </div>
  80. <div class="layui-form-mid layui-word-aux">活动人数必须大于1</div>
  81. </div>
  82. <div class="layui-form-item required">
  83. <label class="layui-form-label">活动封面:(710*400)</label>
  84. <div class="layui-input-inline">
  85. <div v-show="formData.image" class="upload-image-box" @mousemove="mask.image = true" @mouseleave="mask.image = false">
  86. <img :src="formData.image">
  87. <div v-show="mask.image" class="mask" style="display: block;">
  88. <p>
  89. <i class="fa fa-eye" @click="look(formData.image)"></i>
  90. <i class="fa fa-trash-o" @click="delect('image')"></i>
  91. </p>
  92. </div>
  93. </div>
  94. <div v-show="!formData.image" class="upload-image" @click="upload('image')">
  95. <div class="fiexd"><i class="fa fa-plus"></i></div>
  96. <p>选择图片</p>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="layui-form-item required">
  101. <label class="layui-form-label">二维码:(200*200)</label>
  102. <div class="layui-input-inline" style="width: auto;">
  103. <div v-show="formData.qrcode_img" class="upload-image-box" @mousemove="mask.qrcode_img = true" @mouseleave="mask.qrcode_img = false">
  104. <img :src="formData.qrcode_img">
  105. <div v-show="mask.qrcode_img" class="mask" style="display: block;">
  106. <p>
  107. <i class="fa fa-eye" @click="look(formData.qrcode_img)"></i>
  108. <i class="fa fa-trash-o" @click="delect('qrcode_img')"></i>
  109. </p>
  110. </div>
  111. </div>
  112. <div v-show="!formData.qrcode_img" class="upload-image" @click="upload('qrcode_img')">
  113. <div class="fiexd"><i class="fa fa-plus"></i></div>
  114. <p>选择图片</p>
  115. </div>
  116. </div>
  117. </div>
  118. <div class="layui-form-item" id="area-picker">
  119. <label class="layui-form-label">活动地址:</label>
  120. <div class="layui-input-inline" style="width: 380px;">
  121. <select name="province" class="province-selector" data-value="" lay-filter="province-1" v-model="formData.province">
  122. <option value="">请选择省</option>
  123. </select>
  124. </div>
  125. <div class="layui-input-inline" style="width: 380px;">
  126. <select name="city" class="city-selector" data-value="" lay-filter="city-1" v-model="formData.city">
  127. <option value="">请选择市</option>
  128. </select>
  129. </div>
  130. <div class="layui-input-inline" style="width: 380px;">
  131. <select name="county" class="county-selector" data-value="" lay-filter="county-1" v-model="formData.district">
  132. <option value="">请选择区</option>
  133. </select>
  134. </div>
  135. </div>
  136. <div class="layui-form-item required">
  137. <label class="layui-form-label">详细地址:</label>
  138. <div class="layui-input-block">
  139. <input type="text" name="detail" required lay-verify="required" placeholder="请输入详细地址" maxlength="50" autocomplete="off" class="layui-input" v-model="formData.detail">
  140. </div>
  141. </div>
  142. <div class="layui-form-item">
  143. <label class="layui-form-label">排序:</label>
  144. <div class="layui-input-inline">
  145. <input type="number" name="sort" required lay-verify="required" min="0" autocomplete="off" class="layui-input" v-model.number="formData.sort">
  146. </div>
  147. </div>
  148. <div class="layui-form-item">
  149. <label class="layui-form-label">限购:</label>
  150. <div class="layui-input-inline">
  151. <input type="number" name="restrictions" required lay-verify="required" min="0" autocomplete="off" class="layui-input" v-model.number="formData.restrictions">
  152. </div>
  153. <div class="layui-form-mid layui-word-aux">设置每人可以购买的次数,0默认不限购</div>
  154. </div>
  155. <div class="layui-form-item">
  156. <label class="layui-form-label">活动状态:</label>
  157. <div class="layui-input-block">
  158. <input type="checkbox" lay-skin="switch" lay-text="开启|关闭" lay-filter="is_show" :checked="formData.is_show">
  159. </div>
  160. </div>
  161. </div>
  162. <div class="layui-tab-item">
  163. <div class="layui-form-item required">
  164. <label class="layui-form-label">活动规则:</label>
  165. <div class="layui-input-block">
  166. <script id="editor1" name="content1" type="text/plain">{{ formData.activity_rules }}</script>
  167. </div>
  168. </div>
  169. <div class="layui-form-item required">
  170. <label class="layui-form-label">活动详情:</label>
  171. <div class="layui-input-block">
  172. <script id="editor2" name="content2" type="text/plain">{{ formData.content }}</script>
  173. </div>
  174. </div>
  175. </div>
  176. <div class="layui-tab-item">
  177. <div class="layui-form-item">
  178. <label class="layui-form-label">填写资料:</label>
  179. <div class="layui-input-block">
  180. <input type="checkbox" lay-skin="switch" lay-text="开启|关闭" lay-filter="is_fill" :checked="formData.is_fill">
  181. </div>
  182. </div>
  183. <template v-if="formData.is_fill">
  184. <div v-for="(item, index) in event" :key="index" class="layui-form-item event">
  185. <div class="layui-input-block">
  186. <div class="layui-inline">
  187. <div class="layui-form-label">排序</div>
  188. <div class="layui-input-inline">
  189. <input v-model.trim="item.sort" type="text" autocomplete="off" class="layui-input" @change="sortChange(item)">
  190. </div>
  191. </div>
  192. <div class="layui-inline">
  193. <div class="layui-form-label">标题</div>
  194. <div class="layui-input-inline">
  195. <input v-model.trim="item.event_name" type="text" placeholder="4字以内" maxlength="4" autocomplete="off" class="layui-input">
  196. </div>
  197. </div>
  198. <div class="layui-inline">
  199. <div class="layui-form-label">类型</div>
  200. <div class="layui-input-inline">
  201. <div class="layui-unselect layui-form-select" :class="{ 'layui-form-selected': item.show }">
  202. <div class="layui-select-title" @click="onSelect(item)">
  203. <input type="text" placeholder="请选择类型" :value="item.event_type_name" readonly="" class="layui-input layui-unselect" @blur="selectBlur(item)">
  204. <i class="layui-edge"></i>
  205. </div>
  206. <dl class="layui-anim layui-anim-upbit" style="">
  207. <dd lay-value="" class="layui-select-tips" :class="{ 'layui-this': item.event_type === -1 }">请选择类型</dd>
  208. <dd lay-value="1" :class="{ 'layui-this': item.event_type === 1}" @click.stop="onSelectChange(1, item, $event)">文本框</dd>
  209. <dd lay-value="2" :class="{ 'layui-this': item.event_type === 2}" @click.stop="onSelectChange(2, item, $event)">单选框</dd>
  210. <dd lay-value="3" :class="{ 'layui-this': item.event_type === 3}" @click.stop="onSelectChange(3, item, $event)">多选框</dd>
  211. <dd lay-value="4" :class="{ 'layui-this': item.event_type === 4}" @click.stop="onSelectChange(4, item, $event)">手机号</dd>
  212. <dd lay-value="5" :class="{ 'layui-this': item.event_type === 5}" @click.stop="onSelectChange(5, item, $event)">下拉框</dd>
  213. </dl>
  214. </div>
  215. </div>
  216. </div>
  217. <div v-show="item.event_type !== 1 && item.event_type !== 4" class="layui-inline">
  218. <div class="layui-form-label">选项</div>
  219. <div class="layui-input-inline">
  220. <input v-model.trim="item.event_value" type="text" placeholder="请输入选项(不小于2项,以“#”隔开,如:选项一#选项二#选项三)" autocomplete="off" class="layui-input">
  221. </div>
  222. </div>
  223. <div class="layui-inline">
  224. <div class="layui-form-label">必填</div>
  225. <div class="layui-input-inline">
  226. <div :class="{ 'layui-form-onswitch': item.is_required }" class="layui-unselect layui-form-switch" @click="item.is_required = item.is_required ? 0 : 1">
  227. <em>{{ item.is_required ? '是' : '否' }}</em><i></i>
  228. </div>
  229. </div>
  230. </div>
  231. <div v-if="event.length > 1" class="layui-inline">
  232. <button type="button" class="layui-btn layui-btn-sm layui-btn-danger" @click="delEvent(index)">删除</button>
  233. </div>
  234. </div>
  235. </div>
  236. <div class="layui-form-item">
  237. <div class="layui-input-block">
  238. <button type="button" class="layui-btn layui-btn-sm layui-btn-normal" @click="addEvent">再加一项</button>
  239. </div>
  240. </div>
  241. </template>
  242. </div>
  243. <div class="layui-tab-item">
  244. <div v-for="(item, index) in price" class="layui-form-item price">
  245. <div v-if="!index" class="layui-form-label">价格设置:</div>
  246. <div class="layui-input-block">
  247. <div class="layui-inline">
  248. <div class="layui-form-label">排序</div>
  249. <div class="layui-input-inline">
  250. <input v-model.trim="item.sort" :readonly="!index" :min="index ? 1 : 0" type="number" autocomplete="off" class="layui-input" @change="sortChange2(item)">
  251. </div>
  252. </div>
  253. <div class="layui-inline">
  254. <div class="layui-form-label">人数</div>
  255. <div class="layui-input-inline">
  256. <input v-model.trim="item.event_number" :readonly="!index" type="text" autocomplete="off" class="layui-input" @change="peopleChange(item)">
  257. </div>
  258. </div>
  259. <div class="layui-inline">
  260. <div class="layui-form-label">价格</div>
  261. <div class="layui-input-inline">
  262. <input v-model.trim="item.event_price" type="text" autocomplete="off" class="layui-input" @change="priceChange(item, 'event_price')">
  263. </div>
  264. </div>
  265. <div class="layui-inline" style="display: none;">
  266. <div class="layui-form-label">会员价格</div>
  267. <div class="layui-input-inline">
  268. <input v-model.trim="item.event_mer_price" type="text" autocomplete="off" class="layui-input" @change="priceChange(item, 'event_mer_price')">
  269. </div>
  270. </div>
  271. <div v-show="index" class="layui-inline">
  272. <button type="button" class="layui-btn layui-btn-sm layui-btn-danger" @click="delPrice(index)">删除</button>
  273. </div>
  274. </div>
  275. </div>
  276. <div class="layui-form-item">
  277. <div class="layui-input-block">
  278. <button type="button" class="layui-btn layui-btn-sm layui-btn-normal" @click="addPrice">再加一项</button>
  279. </div>
  280. </div>
  281. </div>
  282. </div>
  283. </div>
  284. <div class="layui-form-item">
  285. <div class="layui-input-block">
  286. <button type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="submit">{$id ? '确认修改':'立即提交'}</button>
  287. <button type="button" class="layui-btn layui-btn-primary" @click="clone_form">取消</button>
  288. </div>
  289. </div>
  290. </form>
  291. </div>
  292. </div>
  293. </div>
  294. <script src="{__ADMIN_PATH}js/layuiList.js"></script>
  295. <script src="/static/plug/reg-verify.js"></script>
  296. {/block}
  297. {block name="script"}
  298. <script>
  299. var id = {$id}, news = {$news}, event = {$event}, price = {$price};
  300. if (Array.isArray(news)) {
  301. news = {};
  302. }
  303. require(['vue', 'moment', 'zh-cn','request','aliyun-oss','plupload','OssUpload'], function (Vue, moment) {
  304. var vm = new Vue({
  305. el: "#app",
  306. data: {
  307. formData: {
  308. id:id,
  309. title: news.title || '',
  310. image: news.image || '',
  311. qrcode_img: news.qrcode_img || '',
  312. start_time: news.start_time || '',
  313. end_time: news.end_time || '',
  314. signup_start_time: news.signup_start_time || '',
  315. signup_end_time: news.signup_end_time || '',
  316. province: news.province || '北京市',
  317. city: news.city || '北京市',
  318. district: news.district || '东城区',
  319. detail: news.detail || '',
  320. number: news.number || 1,
  321. activity_rules: news.activity_rules || '',
  322. content: news.content || '',
  323. sort: news.sort || 0,
  324. restrictions: news.restrictions || 0,
  325. is_show: news.is_show || 0,
  326. is_fill: news.is_fill || 0
  327. },
  328. mask: {
  329. image: false,
  330. qrcode_img: false
  331. },
  332. event: [
  333. {
  334. event_name: '',
  335. event_type: 1,
  336. event_type_name: '文本框',
  337. event_value: '',
  338. sort: 0,
  339. is_required: 1,
  340. show: false
  341. }
  342. ],
  343. price: [
  344. {
  345. sort: 0,
  346. event_number: 1,
  347. event_price: 0,
  348. event_mer_price: 0
  349. }
  350. ],
  351. priceVerify: true
  352. },
  353. methods: {
  354. sortChange: function (item) {
  355. var sort = parseInt(item.sort);
  356. item.sort = isNaN(sort) ? 0 : Math.abs(sort);
  357. },
  358. sortChange2: function (item) {
  359. var sort = parseInt(item.sort);
  360. item.sort = isNaN(sort) ? 1 : Math.abs(sort);
  361. },
  362. peopleChange: function (item) {
  363. var eventNumber = parseInt(item.event_number);
  364. eventNumber = isNaN(eventNumber) ? 2 : Math.abs(eventNumber);
  365. if (eventNumber < 2) {
  366. eventNumber = 2;
  367. }
  368. item.event_number = eventNumber;
  369. },
  370. priceChange: function (item, key) {
  371. var price = item[key];
  372. var label = key === 'event_price' ? '价格' : '会员价格';
  373. this.priceVerify = true;
  374. if (price) {
  375. if (isNaN(price)) {
  376. this.priceVerify = false;
  377. layer.msg('请正确输入' + label);
  378. } else {
  379. var index = price.indexOf('.');
  380. if (index === -1) {
  381. price = parseInt(price);
  382. } else {
  383. var number = price.length - index -1;
  384. if (number) {
  385. if (number > 2) {
  386. this.priceVerify = false;
  387. layer.msg('小数点后最多保留2位小数');
  388. return;
  389. } else {
  390. price = parseFloat(price);
  391. }
  392. } else {
  393. this.priceVerify = false;
  394. layer.msg('小数点后最少保留1位小数');
  395. return;
  396. }
  397. }
  398. if (price < 0) {
  399. this.priceVerify = false;
  400. layer.msg(label + '不能为负数');
  401. }
  402. }
  403. } else {
  404. this.priceVerify = false;
  405. layer.msg('请输入' + label);
  406. }
  407. },
  408. // 添加价格
  409. addPrice: function () {
  410. this.price.push({
  411. sort: 1,
  412. event_number: 2,
  413. event_price: 0,
  414. event_mer_price: 0
  415. });
  416. },
  417. // 删除价格
  418. delPrice: function (index) {
  419. this.price.splice(index, 1);
  420. },
  421. // 添加资料
  422. addEvent: function () {
  423. this.event.push({
  424. event_name: '',
  425. event_type: 1,
  426. event_type_name: '文本框',
  427. event_value: '',
  428. sort: 0,
  429. is_required: 1,
  430. show: false
  431. });
  432. },
  433. // 删除资料
  434. delEvent: function (index) {
  435. this.event.splice(index, 1);
  436. },
  437. // 显示、隐藏下拉框
  438. onSelect: function (item) {
  439. item.show = !item.show;
  440. },
  441. // 改变下拉框的值
  442. onSelectChange: function (value, item, event) {
  443. item.event_type = value;
  444. item.event_type_name = event.target.innerHTML;
  445. },
  446. // 下拉框失焦
  447. selectBlur: function (item) {
  448. setTimeout(function () {
  449. item.show = false;
  450. }, 200);
  451. },
  452. //删除图片
  453. delect: function (key, index) {
  454. var that = this;
  455. if (index != undefined) {
  456. that.formData[key].splice(index, 1);
  457. that.$set(that.formData, key, that.formData[key]);
  458. } else {
  459. that.$set(that.formData, key, '');
  460. }
  461. },
  462. //查看图片
  463. look: function (pic) {
  464. parent.$eb.openImage(pic);
  465. },
  466. changeIMG: function (key, value, multiple) {
  467. if (multiple) {
  468. var that = this;
  469. value.map(function (v) {
  470. that.formData[key].push({pic: v, is_show: false});
  471. });
  472. this.$set(this.formData, key, this.formData[key]);
  473. } else {
  474. this.$set(this.formData, key, value);
  475. }
  476. },
  477. //上传图片
  478. upload: function (key, count) {
  479. ossUpload.createFrame('请选择图片', {fodder: key, max_count: count === undefined ? 0 : count},{w:800,h:550});
  480. },
  481. clone_form: function () {
  482. var that = this;
  483. if (parseInt(id) == 0) {
  484. parent.layer.closeAll();
  485. }
  486. parent.layer.closeAll();
  487. },
  488. // 验证资料组件
  489. verifyFormEvent: function (formData) {
  490. var status = true;
  491. if (formData.is_fill) {
  492. var formEvent = this.event;
  493. for (var i = formEvent.length; i--;) {
  494. if (formEvent[i].event_name) {
  495. if (formEvent[i].event_type === -1) {
  496. layer.msg('资料设置中存在未选择类型项,请检查');
  497. status = false;
  498. break;
  499. } else {
  500. if (formEvent[i].event_type !== 1 && formEvent[i].event_type !== 4) {
  501. if (formEvent[i].event_value) {
  502. var index = formEvent[i].event_value.indexOf('#');
  503. if (index === -1) {
  504. layer.msg('资料设置中存在选项格式不正确或小于2个的项<br>请检查');
  505. status = false;
  506. break;
  507. } else {
  508. if (!index || index === formEvent[i].event_value.length - 1) {
  509. layer.msg('资料设置中存在选项以#为首尾的项,请检查');
  510. status = false;
  511. break;
  512. }
  513. }
  514. } else {
  515. layer.msg('资料设置中存在未输入选项的项,请检查');
  516. status = false;
  517. break;
  518. }
  519. }
  520. }
  521. } else {
  522. layer.msg('资料设置中存在未输入标题的项,请检查');
  523. status = false;
  524. break;
  525. }
  526. }
  527. }
  528. return status;
  529. }
  530. },
  531. created: function () {
  532. if (event.length) {
  533. event.forEach(function (item) {
  534. switch (item.event_type) {
  535. case 1:
  536. item.event_type_name = '文本框';
  537. break;
  538. case 2:
  539. item.event_type_name = '单选框';
  540. break;
  541. case 3:
  542. item.event_type_name = '多选框';
  543. break;
  544. case 4:
  545. item.event_type_name = '手机号';
  546. break;
  547. case 5:
  548. item.event_type_name = '下拉框';
  549. break;
  550. }
  551. item.show = false;
  552. });
  553. this.event = event;
  554. }
  555. if (price.length) {
  556. this.price = price;
  557. }
  558. },
  559. mounted: function () {
  560. this.$nextTick(function () {
  561. var vm = this;
  562. layui.config({
  563. base: '{__ADMIN_PATH}mods/',
  564. version: '1.0'
  565. });
  566. layui.use([
  567. 'layarea',
  568. 'laydate',
  569. 'form'
  570. ], function () {
  571. var layarea = layui.layarea;
  572. var laydate = layui.laydate;
  573. var form = layui.form;
  574. var layer = layui.layer;
  575. var dateOption1 = {
  576. elem: '#date1',
  577. type: 'datetime',
  578. range: true,
  579. done: function (value) {
  580. var arr = value.split(' - ');
  581. vm.formData.signup_start_time = arr[0];
  582. vm.formData.signup_end_time = arr[1];
  583. }
  584. };
  585. var dateOption2 = {
  586. elem: '#date2',
  587. type: 'datetime',
  588. range: true,
  589. done: function (value) {
  590. var arr = value.split(' - ');
  591. vm.formData.start_time = arr[0];
  592. vm.formData.end_time = arr[1];
  593. }
  594. };
  595. var areaPicker = {
  596. elem: '#area-picker',
  597. change: function (res) {
  598. vm.formData.province = res.province;
  599. vm.formData.city = res.city;
  600. vm.formData.district = res.county;
  601. }
  602. };
  603. if (news.signup_start_time) {
  604. dateOption1.value = vm.formData.signup_start_time + ' - ' + vm.formData.signup_end_time;
  605. dateOption2.value = vm.formData.start_time + ' - ' + vm.formData.end_time;
  606. areaPicker.data = {
  607. province: vm.formData.province,
  608. city: vm.formData.city,
  609. district: vm.formData.district
  610. };
  611. }
  612. laydate.render(dateOption1);
  613. laydate.render(dateOption2);
  614. layarea.render(areaPicker);
  615. form.render();
  616. form.on('switch(is_show)', function (data) {
  617. vm.formData.is_show = Number(data.elem.checked);
  618. });
  619. form.on('switch(is_fill)', function (data) {
  620. vm.formData.is_fill = Number(data.elem.checked);
  621. });
  622. form.on('switch(pay_type)', function (data) {
  623. vm.formData.pay_type = Number(data.elem.checked);
  624. });
  625. form.on('switch(member_pay_type)', function (data) {
  626. vm.formData.member_pay_type = Number(data.elem.checked);
  627. });
  628. form.on('submit(submit)', function () {
  629. var formData = vm.formData;
  630. var activity_rules = vm.editor1.getContent();
  631. var content = vm.editor2.getContent();
  632. if (!formData.signup_start_time) {
  633. layer.msg('请选择报名时间');
  634. } else if (!formData.start_time) {
  635. layer.msg('请选择活动时间');
  636. } else if (formData.number <= 1 || parseInt(formData.number) !== parseFloat(formData.number)) {
  637. layer.msg('请输入正确的活动人数');
  638. } else if (!formData.image) {
  639. layer.msg('请上传活动封面');
  640. } else if (!formData.qrcode_img) {
  641. layer.msg('请上传二维码');
  642. } else if (!formData.detail) {
  643. layer.msg('请输入详细地址');
  644. } else if (!activity_rules) {
  645. layer.msg('请输入活动规则');
  646. } else if (!content) {
  647. layer.msg('请输入活动详情');
  648. } else {
  649. if (vm.verifyFormEvent(formData)) {
  650. for (var i = 0, len = vm.price.length; i < len; i++) {
  651. if (vm.price[i].event_number > vm.formData.number) {
  652. layer.msg('价格设置中输入的人数不能大于输入的活动人数');
  653. return;
  654. }
  655. }
  656. if (!vm.priceVerify) {
  657. layer.msg('请检查价格设置中的价格或会员价格');
  658. return;
  659. }
  660. formData.activity_rules = activity_rules;
  661. formData.content = content;
  662. if (formData.is_fill) {
  663. formData.event = JSON.stringify(vm.event);
  664. }
  665. formData.event_price = JSON.stringify(vm.price);
  666. formData.price = vm.price[0].event_price;
  667. formData.member_price = vm.price[0].event_mer_price;
  668. var loadIndex = layer.load(1);
  669. layList.basePost(layList.U({
  670. a: 'add_new',
  671. }), formData, function (res) {
  672. layer.close(loadIndex);
  673. if (parseInt(id) === 0) {
  674. layer.confirm('添加成功,您要继续添加活动吗?', {
  675. btn: ['继续添加', '立即提交']
  676. }, function (index) {
  677. layer.close(index);
  678. window.location.reload();
  679. }, function () {
  680. parent.layer.closeAll();
  681. });
  682. } else {
  683. layList.msg('修改成功', function () {
  684. parent.layer.closeAll();
  685. window.location.reload();
  686. })
  687. }
  688. }, function (res) {
  689. layer.close(loadIndex);
  690. layer.msg(res.msg)
  691. });
  692. }
  693. }
  694. return false;
  695. });
  696. });
  697. UE.registerUI('选择图片', function (editor, uiName) {
  698. var btn = new UE.ui.Button({
  699. name: uiName,
  700. title: uiName,
  701. cssRules: 'background-position: -380px 0;',
  702. onclick: function() {
  703. ossUpload.createFrame(uiName, { fodder: editor.key }, { w: 800, h: 550 });
  704. }
  705. });
  706. return btn;
  707. });
  708. var scripts = document.scripts;
  709. var scriptId = '';
  710. for (var i = scripts.length; i--;) {
  711. if (scripts[i].type != 'text/plain') {
  712. continue;
  713. }
  714. scriptId = scripts[i].id;
  715. this[scriptId] = UE.getEditor(scriptId);
  716. }
  717. function changeIMG(index, pic) {
  718. $(".image_img").css('background-image', "url(" + pic + ")");
  719. $(".active").css('background-image', "url(" + pic + ")");
  720. $('#image_input').val(pic);
  721. };
  722. window.insertEditor = function (list, fodder) {
  723. vm[fodder].execCommand('insertimage', list);
  724. };
  725. window.changeIMG = vm.changeIMG;
  726. });
  727. }
  728. })
  729. })
  730. </script>
  731. {/block}