create.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573
  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. .wrapper-content {
  17. padding: 0 !important;
  18. }
  19. .layui-form-item .special-label {
  20. width: 50px;
  21. float: left;
  22. height: 30px;
  23. line-height: 38px;
  24. margin-left: 10px;
  25. margin-top: 5px;
  26. border-radius: 5px;
  27. background-color: #0092DC;
  28. text-align: center;
  29. }
  30. .layui-form-item .special-label i {
  31. display: inline-block;
  32. width: 18px;
  33. height: 18px;
  34. font-size: 18px;
  35. color: #fff;
  36. }
  37. .layui-form-item .label-box {
  38. border: 1px solid;
  39. border-radius: 10px;
  40. position: relative;
  41. padding: 10px;
  42. height: 30px;
  43. color: #fff;
  44. background-color: #393D49;
  45. text-align: center;
  46. cursor: pointer;
  47. display: inline-block;
  48. line-height: 10px;
  49. }
  50. .layui-form-item .label-box p {
  51. line-height: inherit;
  52. }
  53. .layui-form-mid {
  54. margin-left: 18px;
  55. }
  56. .m-t-5 {
  57. margin-top: 5px;
  58. }
  59. .edui-default .edui-for-image .edui-icon {
  60. background-position: -380px 0px;
  61. }
  62. .layui-input-block{line-height: 36px;}
  63. .layui-form-select dl {z-index: 1000;}
  64. </style>
  65. {/block}
  66. {block name="content"}
  67. <div class="row">
  68. <div class="col-sm-12 panel panel-default" id="app">
  69. <div class="panel-body" style="padding: 20px 60px;">
  70. <form class="form-horizontal" id="signupForm">
  71. <div class="form-group">
  72. <div class="col-md-12">
  73. <div class="input-group">
  74. <span class="input-group-addon">标题</span>
  75. <input maxlength="64" placeholder="请在这里输入标题" name="title" class="layui-input" id="title" v-model="formData.title">
  76. </div>
  77. </div>
  78. </div>
  79. <div class="layui-inline">
  80. <label class="layui-form-label">活动报名时间:</label>
  81. <div class="layui-input-inline" style="width: 200px;">
  82. <input type="text" name="signup_start_time" placeholder="报名开始时间" id="signup_start_time" class="layui-input" v-model="formData.signup_start_time">
  83. </div>
  84. <div class="layui-form-mid">-</div>
  85. <div class="layui-input-inline" style="width: 200px;">
  86. <input type="text" name="signup_end_time" placeholder="报名结束时间" id="signup_end_time" class="layui-input" v-model="formData.signup_end_time">
  87. </div>
  88. </div>
  89. <div class="layui-inline">
  90. <label class="layui-form-label">活动时间:</label>
  91. <div class="layui-input-inline" style="width: 200px;">
  92. <input type="text" name="start_time" placeholder="活动开始时间" id="start_time" class="layui-input" v-model="formData.start_time">
  93. </div>
  94. <div class="layui-form-mid">-</div>
  95. <div class="layui-input-inline" style="width: 200px;">
  96. <input type="text" name="end_time" placeholder="活动结束时间" id="end_time" class="layui-input" v-model="formData.end_time">
  97. </div>
  98. </div>
  99. <div class="form-group">
  100. <div class="col-md-12">
  101. <div class="input-group">
  102. <span class="input-group-addon">人数</span>
  103. <input maxlength="8" placeholder="人数" name="number" class="layui-input" id="number" v-model="formData.number">
  104. </div>
  105. </div>
  106. </div>
  107. <div class="form-group">
  108. <div class="col-md-12">
  109. <div class="form-control" style="height:auto">
  110. <label style="color:#ccc">图文封面大图片设置(710*400px)</label>
  111. <div class="row nowrap">
  112. <div class="col-xs-3" style="width:160px">
  113. <img :src="formData.image" alt="" style="width:100px">
  114. </div>
  115. <div class="col-xs-6" @click="upload('image')">
  116. <br>
  117. <a class="btn btn-sm add_image upload_span">上传图片</a>
  118. <br>
  119. <br>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. <div class="form-group">
  126. <div class="col-md-12">
  127. <div class="form-control" style="height:auto">
  128. <label style="color:#ccc">群聊二维码设置(200*200px)</label>
  129. <div class="row nowrap">
  130. <div class="col-xs-3" style="width:160px">
  131. <img :src="formData.qrcode_img" alt="" style="width:100px">
  132. </div>
  133. <div class="col-xs-6" @click="upload('qrcode_img')">
  134. <br>
  135. <a class="btn btn-sm add_image upload_span">上传图片</a>
  136. <br>
  137. <br>
  138. </div>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <div class="form-group">
  144. <div class="col-md-12">
  145. <label style="color:#aaa">地址</label>
  146. <div class="col-md-12">
  147. <div class="layui-form">
  148. <div class="layui-form-item col-md-6" id="area-picker">
  149. <div class="layui-input-inline col-md-4">
  150. <select name="province" v-model="formData.province" class="province-selector" :data-value="formData.province" lay-filter="province-1" >
  151. <option value="">请选择省</option>
  152. </select>
  153. </div>
  154. <div class="layui-input-inline col-md-4">
  155. <select name="city" v-model="formData.city" class="city-selector" :data-value="formData.city" lay-filter="city-1">
  156. <option value="">请选择市</option>
  157. </select>
  158. </div>
  159. <div class="layui-input-inline col-md-4">
  160. <select name="county" v-model="formData.district" class="county-selector" :data-value="formData.district" lay-filter="county-1">
  161. <option value="">请选择区</option>
  162. </select>
  163. </div>
  164. </div>
  165. <input id="address" class="layui-input col-md-6" v-model="formData.detail" placeholder="详细地址" style="height:30px;resize:none;line-height:20px;color:#333;width:auto;">
  166. </div>
  167. </div>
  168. </div>
  169. </div>
  170. <div class="form-group">
  171. <div class="col-md-12">
  172. <label style="color:#aaa">活动规则</label>
  173. <textarea type="text/plain" id="myEditor1" style="width:100%;">{{formData.activity_rules}}</textarea>
  174. </div>
  175. </div>
  176. <div class="form-group">
  177. <div class="col-md-12">
  178. <label style="color:#aaa">活动详情</label>
  179. <textarea type="text/plain" id="myEditor" style="width:100%;">{{formData.content}}</textarea>
  180. </div>
  181. </div>
  182. <div class="form-group">
  183. <div class="col-md-6">
  184. <label style="display:block"><span style="color:#aaa;">排序</span>
  185. <input maxlength="5" type="number" v-model="formData.sort" name="sort" class="layui-input" id="sort" >
  186. </label>
  187. </div>
  188. </div>
  189. <div class="form-group">
  190. <div class="col-md-6">
  191. <label style="display:block"><span style="color:#aaa;">限购(设置每人可购买的次数,0为不限购)</span>
  192. <input type="text" v-model="formData.restrictions" name="restrictions" class="layui-input" id="restrictions" >
  193. </label>
  194. </div>
  195. </div>
  196. <div class="form-group">
  197. <div class="col-md-12">
  198. <div class="col-md-6">
  199. <label style="color:#aaa">活动状态</label><br/>
  200. <input type="radio" name="is_show" class="layui-radio" value="0" v-model="formData.is_show" >不显示
  201. <input type="radio" name="is_show" class="layui-radio" value="1" v-model="formData.is_show" >显示
  202. </div>
  203. <div class="col-md-6">
  204. <label style="color:#aaa">是否填写资料</label><br/>
  205. <input type="radio" name="is_fill" class="layui-radio" value="0" v-model="formData.is_fill" >不填写
  206. <input type="radio" name="is_fill" class="layui-radio" value="1" v-model="formData.is_fill" >填写
  207. </div>
  208. </div>
  209. </div>
  210. <div class="form-group">
  211. <div class="col-md-12">
  212. <div class="layui-card">
  213. <div class="layui-card-header">付费信息</div>
  214. <div class="layui-card-body" style="padding: 10px 150px;">
  215. <div class="layui-form-item">
  216. <label class="layui-form-label">付费方式</label>
  217. <div class="layui-input-block">
  218. <input type="radio" name="pay_type" v-model="formData.pay_type" value="1" title="付费">付费
  219. <input type="radio" name="pay_type" v-model="formData.pay_type" value="0" title="免费">免费
  220. </div>
  221. </div>
  222. <div class="layui-form-item" v-show="formData.pay_type == 1">
  223. <label class="layui-form-label">购买金额</label>
  224. <div class="layui-input-block">
  225. <input style="width: 20%" type="number" name="money" lay-verify="number" v-model="formData.price" autocomplete="off" class="layui-input" min="0">
  226. </div>
  227. <div class="layui-form-item">
  228. <label class="layui-form-label">会员付费方式</label>
  229. <div class="layui-input-block">
  230. <input type="radio" name="member_pay_type" v-model="formData.member_pay_type" value="1" title="付费">付费
  231. <input type="radio" name="member_pay_type" v-model="formData.member_pay_type" value="0" title="免费">免费
  232. </div>
  233. </div>
  234. <div class="layui-form-item" v-show="formData.member_pay_type == 1">
  235. <label class="layui-form-label">会员购买金额</label>
  236. <div class="layui-input-block">
  237. <input style="width: 20%" type="number" name="member_money" lay-verify="number" v-model="formData.member_price" autocomplete="off" class="layui-input" min="0">
  238. </div>
  239. </div>
  240. </div>
  241. </div>
  242. </div>
  243. </div>
  244. </div>
  245. <div class="form-actions">
  246. <div class="row">
  247. <div class="col-md-offset-4 col-md-9">
  248. <button type="button" class="btn btn-w-m btn-info save_news" @click="save">{$id ? '确认修改':'立即提交'}</button>
  249. <button class="layui-btn layui-btn-primary clone" type="button" @click="clone_form">取消</button>
  250. </div>
  251. </div>
  252. </div>
  253. </form>
  254. </div>
  255. </div>
  256. </div>
  257. <script src="{__ADMIN_PATH}js/layuiList.js"></script>
  258. <script src="/static/plug/reg-verify.js"></script>
  259. {/block}
  260. {block name="script"}
  261. <script>
  262. var id = {$id},news ={$news};
  263. require(['vue','zh-cn','request','aliyun-oss','plupload','OssUpload'], function (Vue) {
  264. new Vue({
  265. el: "#app",
  266. data: {
  267. formData: {
  268. id:id,
  269. title: news.title || '',
  270. image: news.image || '{__ADMIN_PATH}images/empty.jpg',
  271. qrcode_img: news.qrcode_img || '{__ADMIN_PATH}images/empty.jpg',
  272. start_time: news.start_time || '',
  273. end_time: news.end_time || '',
  274. signup_start_time: news.signup_start_time || '',
  275. signup_end_time: news.signup_end_time || '',
  276. province: news.province || '北京市',
  277. city: news.city || '北京市',
  278. district: news.district || '东城区',
  279. detail: news.detail || '',
  280. number: news.number || 0,
  281. activity_rules: news.activity_rules || '',
  282. content: news.content || '',
  283. sort: news.sort || 0,
  284. restrictions: news.restrictions || 0,
  285. is_show: news.is_show || 0,
  286. is_fill: news.is_fill,
  287. pay_type: news.pay_type || 0,
  288. price: news.price || 0,
  289. member_pay_type: news.member_pay_type == 1 ? 1 : 0,
  290. member_price: news.member_price || 0,
  291. },
  292. host: ossUpload.host + '/',
  293. mask: {
  294. poster_image: false,
  295. image: false,
  296. service_code: false,
  297. },
  298. ue: null,
  299. //上传类型
  300. mime_types: {
  301. Image: "jpg,gif,png,JPG,GIF,PNG",
  302. Video: "mp4,MP4",
  303. },
  304. },
  305. methods: {
  306. //取消
  307. cancelUpload: function () {
  308. this.uploader.stop();
  309. },
  310. //删除图片
  311. delect: function (key, index) {
  312. var that = this;
  313. if (index != undefined) {
  314. that.formData[key].splice(index, 1);
  315. that.$set(that.formData, key, that.formData[key]);
  316. } else {
  317. that.$set(that.formData, key, '');
  318. }
  319. },
  320. //查看图片
  321. look: function (pic) {
  322. $eb.openImage(pic);
  323. },
  324. //鼠标移入事件
  325. enter: function (item) {
  326. if (item) {
  327. item.is_show = true;
  328. } else {
  329. this.mask = true;
  330. }
  331. },
  332. //鼠标移出事件
  333. leave: function (item) {
  334. if (item) {
  335. item.is_show = false;
  336. } else {
  337. this.mask = false;
  338. }
  339. },
  340. changeIMG: function (key, value, multiple) {
  341. if (multiple) {
  342. var that = this;
  343. value.map(function (v) {
  344. that.formData[key].push({pic: v, is_show: false});
  345. });
  346. this.$set(this.formData, key, this.formData[key]);
  347. } else {
  348. this.$set(this.formData, key, value);
  349. }
  350. },
  351. uploadVideo: function () {
  352. if (this.link.substr(0, 7).toLowerCase() == "http://" || this.link.substr(0, 8).toLowerCase() == "https://") {
  353. this.setContent(this.link);
  354. } else {
  355. layList.msg('请输入正确的视频链接');
  356. }
  357. },
  358. setContent: function (link) {
  359. this.ue.setContent('<div><video style="width: 100%" src="' + link + '" class="video-ue" controls="controls"><source src="' + link + '"></source></video></div><br>', true);
  360. },
  361. //上传图片
  362. upload: function (key, count) {
  363. ossUpload.createFrame('请选择图片', {fodder: key, max_count: count === undefined ? 0 : count},{w:800,h:550});
  364. },
  365. delLabel: function (index) {
  366. this.formData.label.splice(index, 1);
  367. this.$set(this.formData, 'label', this.formData.label);
  368. },
  369. save: function () {
  370. var that = this;
  371. that.formData.content = that.ue.getContent();
  372. that.formData.activity_rules = that.ue1.getContent();
  373. if (!that.formData.title) return layList.msg('请输入专题标题');
  374. if (that.formData.image=='{__ADMIN_PATH}images/empty.jpg') return layList.msg('请上传专题封面');
  375. if (that.formData.qrcode_img=='{__ADMIN_PATH}images/empty.jpg') return layList.msg('请上传群聊二维码');
  376. if (!that.formData.number) return layList.msg('请填写活动人数');
  377. if (!that.formData.start_time) return layList.msg('请选择活动开始时间');
  378. if (!that.formData.end_time) return layList.msg('请选择活动结束时间');
  379. if (!that.formData.signup_start_time) return layList.msg('请填写活动报名开始时间');
  380. if (!that.formData.signup_end_time) return layList.msg('请填写活动报名结束时间');
  381. if (that.formData.province=='' || that.formData.city=='' || that.formData.district=='' ||that.formData.detail=='') return layList.msg('请输入地址信息');
  382. if (!that.formData.activity_rules) return layList.msg('请输入规则');
  383. if (!that.formData.content) return layList.msg('请编辑内容在进行保存');
  384. if (that.formData.pay_type == 1) {
  385. if (!that.formData.price || that.formData.price == 0.00) return layList.msg('请填写购买金额');
  386. }
  387. if (that.formData.member_pay_type == 1) {
  388. if (!that.formData.member_price || that.formData.member_price == 0.00) return layList.msg('请填写会员购买金额');
  389. }
  390. layList.loadFFF();
  391. layList.basePost(layList.U({
  392. a: 'add_new',
  393. }), that.formData, function (res) {
  394. layList.loadClear();
  395. if (parseInt(id) == 0) {
  396. layList.layer.confirm('添加成功,您要继续添加活动吗?', {
  397. btn: ['继续添加', '立即提交'] //按钮
  398. }, function () {
  399. window.location.reload();
  400. }, function () {
  401. parent.layer.closeAll();
  402. });
  403. } else {
  404. layList.msg('修改成功', function () {
  405. parent.layer.closeAll();
  406. window.location.reload();
  407. })
  408. }
  409. }, function (res) {
  410. layList.msg(res.msg);
  411. layList.loadClear();
  412. });
  413. },
  414. clone_form: function () {
  415. var that = this;
  416. if (parseInt(id) == 0) {
  417. if (that.formData.image!='{__ADMIN_PATH}images/empty.jpg') return layList.msg('请先删除上传的图片在尝试取消');
  418. if (that.formData.qrcode_img!='{__ADMIN_PATH}images/empty.jpg') return layList.msg('请先删除上传的图片在尝试取消');
  419. parent.layer.closeAll();
  420. }
  421. parent.layer.closeAll();
  422. }
  423. },
  424. mounted: function () {
  425. var that = this;
  426. var layer = layui.layer, form = layui.form;
  427. layui.config({
  428. base: '{__ADMIN_PATH}mods/'
  429. , version: '1.0'
  430. }).extend({
  431. layarea:'layarea'
  432. });
  433. layui.use(['layarea'], function () {
  434. var layarea = layui.layarea;
  435. layarea.render({
  436. elem: '#area-picker',
  437. change: function (res) {
  438. //选择结果
  439. that.formData.province= res.province;
  440. that.formData.city= res.city;
  441. that.formData.district= res.county;
  442. }
  443. });
  444. });
  445. window.changeIMG = that.changeIMG;
  446. layList.date({
  447. elem: '#signup_start_time',
  448. theme: '#393D49',
  449. type: 'datetime',
  450. done: function (value) {
  451. that.formData.signup_start_time = value;
  452. }
  453. });
  454. layList.date({
  455. elem: '#start_time',
  456. theme: '#393D49',
  457. type: 'datetime',
  458. done: function (value) {
  459. that.formData.start_time = value;
  460. }
  461. });
  462. layList.date({
  463. elem: '#end_time',
  464. theme: '#393D49',
  465. type: 'datetime',
  466. done: function (value) {
  467. that.formData.end_time = value;
  468. }
  469. });
  470. layList.date({
  471. elem: '#signup_end_time',
  472. theme: '#393D49',
  473. type: 'datetime',
  474. done: function (value) {
  475. that.formData.signup_end_time = value;
  476. }
  477. });
  478. //选择图片
  479. function changeIMG(index, pic) {
  480. $(".image_img").css('background-image', "url(" + pic + ")");
  481. $(".active").css('background-image', "url(" + pic + ")");
  482. $('#image_input').val(pic);
  483. };
  484. //选择图片插入到编辑器中
  485. window.insertEditor = function (list,fodder) {
  486. if(fodder=='editor'){
  487. that.ue.execCommand('insertimage', list);
  488. }else if(fodder=='editors'){
  489. that.ue1.execCommand('insertimage', list);
  490. }
  491. };
  492. that.$nextTick(function () {
  493. layList.form.render();
  494. //实例化编辑器
  495. UE.registerUI('imagenone', function (editor, name) {
  496. var $btn = new UE.ui.Button({
  497. name: 'image',
  498. onclick: function () {
  499. ossUpload.createFrame('选择图片', {fodder: 'editor'},{w:800,h:550});
  500. },
  501. title: '选择图片'
  502. });
  503. return $btn;
  504. });
  505. that.ue = UE.getEditor('myEditor');
  506. });
  507. that.$nextTick(function () {
  508. layList.form.render();
  509. //实例化编辑器
  510. UE.registerUI('imagenone', function (editor, name) {
  511. var $btn = new UE.ui.Button({
  512. name: 'image',
  513. onclick: function () {
  514. ossUpload.createFrame('选择图片', {fodder: 'editors'},{w:800,h:550});
  515. },
  516. title: '选择图片'
  517. });
  518. return $btn;
  519. });
  520. that.ue1 = UE.getEditor('myEditor1');
  521. });
  522. //图片上传和视频上传
  523. layList.form.on('radio(pay_type)', function (data) {
  524. that.formData.pay_type = parseInt(data.value);
  525. if (that.formData.pay_type != 1) {
  526. that.formData.member_pay_type = 0;
  527. that.formData.member_price = 0;
  528. that.formData.price = 0;
  529. };
  530. that.$nextTick(function () {
  531. layList.form.render('radio');
  532. });
  533. });
  534. layList.form.on('radio(member_pay_type)', function (data) {
  535. that.formData.member_pay_type = parseInt(data.value);
  536. if (that.formData.member_pay_type != 1) {
  537. that.formData.member_price = 0;
  538. };
  539. that.$nextTick(function () {
  540. layList.form.render('radio');
  541. });
  542. });
  543. layList.form.render();
  544. that.$nextTick(function () {
  545. that.uploader = ossUpload.upload({
  546. id: 'ossupload',
  547. FilesAddedSuccess: function () {
  548. },
  549. uploadIng: function (file) {
  550. that.videoWidth = file.percent;
  551. },
  552. success: function (res) {
  553. layList.msg('上传成功');
  554. that.videoWidth = 0;
  555. that.setContent(res.url);
  556. },
  557. fail: function (err) {
  558. that.videoWidth = 0;
  559. layList.msg(err);
  560. }
  561. })
  562. });
  563. }
  564. })
  565. })
  566. </script>
  567. {/block}