tab.blade.php 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824
  1. @extends('layouts.base')
  2. @section('title', '创建活动')
  3. @section('content')
  4. <style>
  5. .rightlist #app .el-breadcrumb{padding:30px 0;font-size:16px;}
  6. .rightlist #app{margin-left:30px;}
  7. .rightlist-head-con{float:left;padding-right:20px;font-size:16px;color:#888;}
  8. .el-form-item__label{padding-right:30px;}
  9. .el-button{margin-right:30px;}
  10. .attribute-label{display:inline-block;padding:20px 20px 20px 7%;}
  11. /* .el-textarea__inner{height:400px;margin:30px 5%;width:80%;} */
  12. /* 上传图片 */
  13. .avatar-uploader .el-upload {margin-top:15px;border: 1px dashed #d9d9d9;border-radius: 6px;cursor: pointer;position: relative;overflow: hidden;}
  14. .avatar-uploader .el-upload:hover {border-color: #409EFF;}
  15. .avatar-uploader-icon {font-size: 28px;color: #8c939d;width: 178px;height: 178px;line-height: 178px;text-align: center;}
  16. .avatar {width: 178px;height: 178px;display: block;}
  17. .el-upload-tip{width:178px;margin:0;padding:0;color:#999;text-align:center;}
  18. input[type=file] {display: none;}
  19. .avatar-uploader-box{position:relative;width:200px;}
  20. .el-icon-circle-close{position:absolute;right:0;color:#999;}
  21. /* 滑块选择小白点 */
  22. .el-switch.is-checked .el-switch__core::after {left: 100%;margin-left: -17px;}
  23. .el-switch__core::after {content: "";position: absolute;top: 1px;left: 1px;border-radius: 100%;transition: all .3s;width: 16px;height: 16px;background-color: #fff;}
  24. .tip{color:#999;font-size:12px;}
  25. .add-tip{font-size:14px;font-weight:600;}
  26. .add-tip span{margin:0 15px;cursor:pointer;color:#409EFF}
  27. .upload-box:hover {
  28. border-color: #29ba9c;
  29. color: #29ba9c;
  30. }
  31. .upload-box {
  32. width: 150px;
  33. height: 150px;
  34. display: flex;
  35. cursor: pointer;
  36. border: 1px dashed #dde2ee;
  37. justify-content: center;
  38. align-items: center;
  39. border-radius: 5px;
  40. flex-direction: column;
  41. }
  42. .upload-boxed {
  43. width: 150px;
  44. height: 150px;
  45. position: relative;
  46. border-radius: 5px;
  47. }
  48. .upload-boxed-text {
  49. position: absolute;
  50. bottom: 0;
  51. line-height: 32px;
  52. color: #fff;
  53. text-align: center;
  54. width: 100%;
  55. background: #000;
  56. opacity: 0.7;
  57. border-radius: 0px 0px 5px 5px;
  58. }
  59. .upload-boxed-list {
  60. display: flex;
  61. position: relative;
  62. border-radius: 5px;
  63. flex-wrap: wrap;
  64. }
  65. .upload-boxed-list-a {
  66. width:150px;
  67. height:150px;
  68. margin:0 10px 5px 0;
  69. position: relative;
  70. }
  71. .upload-boxed-list-a .el-icon-close {
  72. position: absolute;
  73. top: -5px;
  74. right: -5px;
  75. color: #fff;
  76. background: #333;
  77. border-radius: 50%;
  78. cursor: pointer;
  79. }
  80. .tox-tinymce {
  81. min-height: 600px;
  82. }
  83. </style>
  84. <div id="app-add">
  85. <template>
  86. <el-form ref="form" :model="form" :rules="rules" v-loading="loading" label-width="15%">
  87. <el-tabs type="card" v-model="activeName" style="padding: 20px">
  88. <el-tab-pane label="基础设置" name="base_set">@include('Yunshop\ShareActivity::base-set')</el-tab-pane>
  89. <el-tab-pane label="活动信息" name="activity_info">@include('Yunshop\ShareActivity::activity-info')</el-tab-pane>
  90. <el-tab-pane label="奖励设置" name="reward_set">@include('Yunshop\ShareActivity::reward_set')</el-tab-pane>
  91. <el-tab-pane label="分享设置" name="share_set">@include('Yunshop\ShareActivity::share-set')</el-tab-pane>
  92. </el-tabs>
  93. <el-form-item>
  94. <a href="#">
  95. <el-button type="success" @click="submitForm('form')">提交</el-button>
  96. </a>
  97. <a href="#">
  98. <el-button @click="goBack()">返回列表</el-button>
  99. </a>
  100. </el-form-item>
  101. </el-form>
  102. </template>
  103. <!--弹框上传图片-->
  104. <el-dialog :visible.sync="centerDialogVisible" width="65%" center>
  105. <el-tabs v-model="activeName2" type="card">
  106. <el-tab-pane label="上传图片" name="first">
  107. <div
  108. style="text-align: center"
  109. class="submit_Img"
  110. v-loading="submit_loading"
  111. >
  112. <el-upload
  113. class="avatar-uploader"
  114. action="{{ yzWebFullUrl('plugin.share-activity.admin.activity.upload') }}"
  115. accept="image/*"
  116. :show-file-list="false"
  117. :on-success="uploadSuccess"
  118. :before-upload="beforeUpload"
  119. >
  120. <div class="avatar_box" v-if="uploadImg">
  121. <img :src="uploadImg" class="avatar" />
  122. </div>
  123. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  124. </el-upload>
  125. </div>
  126. </el-tab-pane>
  127. <el-tab-pane label="提取网络图片" name="second">
  128. <el-input
  129. v-model="uploadImg"
  130. placeholder="请输入网络图片地址"
  131. style="width:90%"
  132. ></el-input>
  133. <!-- <el-button @click="transform(uploadImg)" v-loading="submit_loading">转换</el-button> -->
  134. </el-tab-pane>
  135. <el-tab-pane label="浏览图片" name="third">
  136. <div>
  137. <el-radio-group v-model="radio1" size="medium" @change="chooseYear">
  138. <el-radio-button label="不限"></el-radio-button>
  139. <el-radio-button label="2019">2019年</el-radio-button>
  140. <el-radio-button label="2018">2018年</el-radio-button>
  141. <el-radio-button label="2017">2017年</el-radio-button>
  142. <el-radio-button label="2016">2016年</el-radio-button>
  143. </el-radio-group>
  144. </div>
  145. <div style="margin-top: 10px;">
  146. <el-radio-group v-model="radio2" size="small" @change="chooseMonth">
  147. <el-radio-button label="不限"></el-radio-button>
  148. <el-radio-button label="1">1月</el-radio-button>
  149. <el-radio-button label="2">2月</el-radio-button>
  150. <el-radio-button label="3">3月</el-radio-button>
  151. <el-radio-button label="4">4月</el-radio-button>
  152. <el-radio-button label="5">5月</el-radio-button>
  153. <el-radio-button label="6">6月</el-radio-button>
  154. <el-radio-button label="7">7月</el-radio-button>
  155. <el-radio-button label="8">8月</el-radio-button>
  156. <el-radio-button label="9">9月</el-radio-button>
  157. <el-radio-button label="10">10月</el-radio-button>
  158. <el-radio-button label="11">11月</el-radio-button>
  159. <el-radio-button label="12">12月</el-radio-button>
  160. </el-radio-group>
  161. </div>
  162. <div id="upload-img" class="imgList" v-loading="submit_loading">
  163. <div class="avatar-uploader-box" v-for="img in ImgList">
  164. <img
  165. @click="chooseTheImg(img.thumb_url)"
  166. :src="img.thumb_url"
  167. class="avatar"
  168. />
  169. <i
  170. class="el-icon-circle-close"
  171. @click="deleteImg(img.id)"
  172. title="点击清除图片"
  173. ></i>
  174. </div>
  175. </div>
  176. <el-pagination
  177. style="margin-top: 10px;text-align: right"
  178. background
  179. @current-change="currentChange"
  180. :page-size="pageSize"
  181. :current-page.sync="current_page"
  182. :total="total"
  183. layout="prev, pager, next"
  184. >
  185. </el-pagination>
  186. </el-tab-pane>
  187. </el-tabs>
  188. <span slot="footer" class="dialog-footer">
  189. <el-button @click="centerDialogVisible = false">取 消</el-button>
  190. <el-button type="primary" @click="sureImg">确 定 </el-button>
  191. </span>
  192. </el-dialog>
  193. <!--end-->
  194. <!--弹框选择图片-->
  195. <el-dialog :visible.sync="goods_show" width="60%" center title="选择商品">
  196. <div>
  197. <div>
  198. <el-form :inline="true" :model="search_goods" class="demo-form-inline">
  199. <el-form-item label="">
  200. <el-input v-model="search_goods.goods_id" placeholder="商品ID"></el-input>
  201. </el-form-item>
  202. <el-form-item label="">
  203. <el-input v-model="search_goods.goods_name" placeholder="商品标题"></el-input>
  204. </el-form-item>
  205. <el-form-item label="">
  206. <el-button type="primary" @click="searchGoods(1)">搜索</el-button>
  207. </el-form-item>
  208. </el-form>
  209. </div>
  210. <el-table :data="goods_list" style="width: 100%;height:500px;overflow:auto" id="goods-list">
  211. <el-table-column label="ID" prop="id" align="center" width="150px">
  212. <template slot-scope="scope">
  213. <el-radio v-model="choosed_goods_id" :label="scope.row.id">&nbsp;</el-radio>
  214. </template>
  215. </el-table-column>
  216. <el-table-column label="商品ID" prop="id" align="center" width="150px"></el-table-column>
  217. <el-table-column label="商品">
  218. <template slot-scope="scope">
  219. <div style="display:flex;align-items: center">
  220. <div style="margin-right:10px">
  221. <el-image :src="scope.row.thumb" style="width:50px;height:50px"></el-image>
  222. </div>
  223. <div style="flex:1">
  224. <div style="color:#333;font-weight:500">[[scope.row.title]]</div>
  225. <div>
  226. <span style="color:red">¥[[scope.row.price]]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  227. <span style="text-decoration:line-through;color:#888">¥[[scope.row.price]]</span>
  228. </div>
  229. </div>
  230. </div>
  231. </template>
  232. </el-table-column>
  233. </el-table>
  234. <!-- 分页 -->
  235. <div v-show="goods_total>1">
  236. <el-row>
  237. <el-col align="right">
  238. <el-pagination layout="prev, pager, next,jumper" @current-change="searchGoods" :total="total"
  239. :page-size="goods_per_size" :current-page="goods_current_page" background
  240. v-loading="loading"></el-pagination>
  241. </el-col>
  242. </el-row>
  243. </div>
  244. </div>
  245. <span slot="footer" class="dialog-footer">
  246. <el-button @click="goods_show = false">取 消</el-button>
  247. <el-button type="primary" @click="sureGoods">确 定 </el-button>
  248. </span>
  249. </el-dialog>
  250. <!--end-->
  251. </div>
  252. <script src="{{resource_get('static/yunshop/tinymce4.7.5/tinymce.min.js')}}"></script>
  253. <script src="{{resource_get('static/yunshop/tinymceTemplate.js')}}"></script>
  254. <script>
  255. var app = new Vue({
  256. el: '#app-add',
  257. delimiters: ['[[', ']]'],
  258. data() {
  259. let set = {!! $set ?: '{}' !!};
  260. let isDiyForm = {!! $isDiyForm ?: '{}' !!};
  261. let activity_id = {!! $id ?: '{}' !!};
  262. console.log(set);
  263. if(set.countdown_time) {
  264. set.countdown_time[0] = set.countdown_time[0]*1000;
  265. set.countdown_time[1] = set.countdown_time[1]*1000;
  266. }
  267. console.log(set.countdown_time);
  268. let obj = {};
  269. if(set.goods_id) {
  270. obj.id = set.goods_id;
  271. }
  272. if(set.goods_title) {
  273. obj.title = set.goods_title;
  274. }
  275. if(set.goods_thumb) {
  276. obj.thumb = set.goods_thumb;
  277. }
  278. return {
  279. //是否显示弹框
  280. centerDialogVisible: false,
  281. content:'',
  282. ImgList: [],
  283. activeName2: "first",
  284. uploadImg: "",
  285. chooseImg: "",
  286. uploadImg1:"",//富文本框上传图片
  287. radio1: "不限", //年
  288. radio2: "不限", //月
  289. loading : false,
  290. pageSize: 0,
  291. current_page: 0,
  292. total: 0,
  293. submit_loading:"",
  294. form : {
  295. 'name' : '',
  296. 'color' : '#409EFF',
  297. 'status' : 0,
  298. 'is_background' : 1,
  299. 'button' : 0,
  300. 'audio_link' : '',
  301. 'service_qr' : '', // 客服二维码
  302. 'service_mobile' : '', // 客服电话
  303. 'order_list' : '', // 购买列表
  304. 'award_list' : '', // 奖励列表
  305. 'countdown_time' : [new Date().getTime(), new Date().getTime() + 7 * 24 * 3600 * 1000],
  306. 'thumb_url' : '',
  307. 'background_thumb' : '',
  308. 'background_thumb_url' : '',
  309. 'share_title' : '',
  310. 'share_content' : '',
  311. 'share_thumb' : '',
  312. 'agreement' : '',
  313. 'poster_open' : 0,
  314. 'poster_type' : '1',
  315. 'poster' : 0,
  316. 'reward': {
  317. 'node': 1,
  318. 'balance': '',
  319. 'integral': '',
  320. 'brand_name': '',
  321. 'blessing_words': '',
  322. 'merchant_name': '',
  323. 'red_packet_money': '',
  324. 'small_change': '',
  325. 'coupon': [],
  326. },
  327. ...set
  328. },
  329. coupon_show:false, //选择优惠劵弹出框
  330. coupon_keyword:"",
  331. coupon_list:[],
  332. table_loading:false,
  333. coupon_current_page:0,
  334. coupon_total:0,
  335. coupon_per_size:0,
  336. goods : [],
  337. isDiyForm : isDiyForm,
  338. diyform : [],
  339. diyform_info : set.diyform_id ? '[DiyID:' + set.diyform_id + '][名称:' + set.diyform_title + ']' : '',
  340. good : set.goods_id ? '[GID:' + set.goods_id + '][商品名称:' + set.goods_title + ']' : '',
  341. imageUrl : set.goods_thumb ? set.goods_thumb : '{}',
  342. id : activity_id,
  343. activeName : 'base_set',
  344. goods_show:false,
  345. goods_list:[],
  346. search_goods:{},
  347. choosed_goods:obj,
  348. choosed_goods_id:'',
  349. goods_total:1,
  350. goods_current_page:1,
  351. goods_per_size:1,
  352. poster_title:set.new_poster ? set.new_poster.title : '请选择',
  353. activityPostersList:[],//拓客活动海报
  354. rules: {
  355. name: [
  356. { required: true, message: '请输入活动名称', trigger: 'blur' },
  357. ],
  358. },
  359. }
  360. },
  361. mounted: function () {
  362. window.addEventListener('beforeunload', e => {
  363. window.onbeforeunload =null
  364. });
  365. },
  366. created(){
  367. this.currentChange(1);
  368. this.activityPosters();
  369. },
  370. methods:{
  371. addContent(name,index) {
  372. console.log(this.$refs[name]);
  373. let ref = this.$refs[name];
  374. let words = "";
  375. words ="(" + '会员昵称' + ")";
  376. console.log(words)
  377. this.insertInputTxt(name,words)
  378. },
  379. insertInputTxt(ref,words) {
  380. let name = "";
  381. name = this.$refs[ref].$refs.textarea;
  382. var startPos = name.selectionStart;
  383. console.log(startPos);
  384. var endPos = name.selectionEnd;
  385. if (startPos === undefined || endPos === undefined) return
  386. var txt = name.value;
  387. var result = txt.substring(0, startPos) + words + txt.substring(endPos)
  388. name.value = result;
  389. name.focus();
  390. name.selectionStart = startPos + words.length;
  391. name.selectionEnd = startPos + words.length;
  392. console.log(name.value)
  393. this.form[ref] = name.value;
  394. },
  395. loadGoods(query) {
  396. console.log(query)
  397. if (query !== '') {
  398. this.loading = true;
  399. this.$http.get("{!! yzWebUrl('plugin.share-activity.admin.activity.get-goods', ['keyword' => '']) !!}" + query).then(response => {
  400. this.goods = response.data.data,
  401. this.loading = false;
  402. }, response => {
  403. console.log(response);
  404. });
  405. } else {
  406. this.goods = [];
  407. }
  408. },
  409. loadDiyform(query) {
  410. console.log(query)
  411. if (query !== '') {
  412. this.loading = true;
  413. this.$http.get("{!! yzWebUrl('plugin.share-activity.admin.diy-form.getListByTitle', ['keyword' => '']) !!}" + query).then(response => {
  414. console.log(response.data.data);
  415. this.diyform = response.data.data,
  416. this.loading = false;
  417. }, response => {
  418. console.log(response);
  419. });
  420. } else {
  421. this.diyform = [];
  422. }
  423. },
  424. chooseTheImg(img) {
  425. this.form[this.chooseImg] = img;
  426. this.centerDialogVisible = false;
  427. },
  428. chooseYear(year) {
  429. this.currentChange(1);
  430. },
  431. chooseMonth(month) {
  432. this.currentChange(1);
  433. },
  434. openUpload(str) {
  435. this.chooseImg = str;
  436. console.log(this.chooseImg)
  437. this.uploadImg = "";
  438. this.centerDialogVisible = true;
  439. },
  440. sureImg() {
  441. this.form[this.chooseImg] = this.uploadImg;
  442. this.centerDialogVisible = false;
  443. },
  444. uploadSuccess(res, file) {
  445. if (res.result === 1) {
  446. this.uploadImg = res.data.thumb_url;
  447. this.$message.success("上传成功!");
  448. } else {
  449. this.$message.error(res.msg);
  450. }
  451. this.submit_loading = false;
  452. },
  453. // 富文本上传图片
  454. uploadSuccess1(res, file) {
  455. if (res.result === 1) {
  456. this.uploadImg1 = '';
  457. this.uploadImg1 = res.data.thumb_url;
  458. this.$message.success("上传成功!");
  459. // this.insert();
  460. } else {
  461. this.$message.error(res.msg);
  462. }
  463. this.submit_loading = false;
  464. },
  465. beforeUpload(file) {
  466. this.submit_loading = true;
  467. const isLt2M = file.size / 1024 / 1024 < 4;
  468. if (!isLt2M) {
  469. this.$message.error("上传图片大小不能超过 4MB!");
  470. this.submit_loading = false;
  471. }
  472. return isLt2M;
  473. },
  474. clearImg(str) {
  475. this.form[str] = "";
  476. },
  477. clearImg1(str) {
  478. this.form[str] = "";
  479. },
  480. deleteImg(id) {
  481. this.submit_loading = true;
  482. this.$http
  483. .post("{!! yzWebFullUrl('plugin.share-activity.admin.activity.delLocalImg') !!}", { id: id })
  484. .then(response => {
  485. if (response.data.result === 1) {
  486. this.$message.success("系统删除成功");
  487. this.currentChange(1);
  488. this.submit_loading = false;
  489. } else {
  490. this.$message.error("删除出错");
  491. this.submit_loading = false;
  492. }
  493. })
  494. .catch(err => {
  495. console.error(err);
  496. this.submit_loading = false;
  497. });
  498. },
  499. currentChange(val) {
  500. this.submit_loading = true;
  501. this.$http.post("{!! yzWebFullUrl('plugin.share-activity.admin.activity.getLocalList') !!}",{ page: val, year: this.radio1, month: this.radio2 })
  502. .then(response => {
  503. if (response.data.result === 1) {
  504. this.total = response.data.data.list.total;
  505. this.ImgList = response.data.data.list.data;
  506. this.current_page = response.data.data.list.current_page;
  507. this.pageSize = response.data.data.list.per_page;
  508. } else {
  509. this.$message.error(response.data.msg);
  510. }
  511. this.submit_loading = false;
  512. })
  513. .catch(err => {
  514. console.error(err);
  515. this.submit_loading = false;
  516. });
  517. },
  518. // 转化网络地址
  519. transform(url) {
  520. this.submit_loading = true;
  521. this.$http.post("{!! yzWebFullUrl('plugin.share-activity.admin.activity.fetch') !!}",{ url:url })
  522. .then(response => {
  523. if (response.data.result === 1) {
  524. this.$message.success("转化成功!");
  525. this.uploadImg = response.data.thumb_url
  526. } else {
  527. this.$message.error(response.data.msg);
  528. this.uploadImg = "";
  529. }
  530. this.submit_loading = false;
  531. })
  532. .catch(err => {
  533. console.error(err);
  534. this.submit_loading = false;
  535. });
  536. },
  537. currentChangeGoods(page) {
  538. let json = {
  539. category: this.search_goods.category,
  540. goods_name: this.search_goods.goods_name,
  541. page: page
  542. }
  543. this.getGoodsInfo(json)
  544. },
  545. openCoupon() {
  546. this.coupon_show = true;
  547. },
  548. // 搜索优惠券
  549. searchCoupon() {
  550. this.table_loading = true;
  551. this.$http.post("{!! yzWebFullUrl('plugin.share-activity.admin.activity.get-coupon') !!}",{keyword:this.coupon_keyword}).then(response => {
  552. if(response.data.result==1){
  553. console.log(response.data)
  554. this.coupon_total = response.data.data.total;
  555. this.coupon_per_size = response.data.data.per_page;
  556. this.coupon_current_page = response.data.data.current_page;
  557. this.coupon_list = response.data.data.data;
  558. }
  559. else{
  560. this.$message.error(response.data);
  561. }
  562. console.log(this.coupon_list);
  563. this.table_loading = false;
  564. }),function(res){
  565. console.log(res);
  566. this.table_loading = false;
  567. };
  568. },
  569. //选择优惠劵
  570. chooseCoupon(item,index) {
  571. let isShow = this.form.reward.coupon.some(citem => item.id == citem.id);
  572. if (isShow){
  573. this.$message.error("请勿重复选择优惠券!");
  574. return
  575. }
  576. this.form.reward.coupon.push({id:item.id,name:item.name,coupon_num:'1'});
  577. },
  578. // 删除优惠券
  579. delCoupon(index) {
  580. this.form.reward.coupon.splice(index,1);
  581. },
  582. //分页
  583. currentChangeCoupon(page){
  584. this.table_loading = true;
  585. console.log(page)
  586. this.$http.post("{!! yzWebFullUrl('plugin.share-activity.admin.activity.get-coupon') !!}",{page:page,keyword:this.coupon_keyword}).then(response => {
  587. if(response.data.result==1){
  588. this.coupon_total = response.data.data.total;
  589. this.coupon_per_size = response.data.data.per_page;
  590. this.coupon_current_page = response.data.data.current_page;
  591. this.coupon_list = response.data.data.data;
  592. }
  593. else{
  594. this.$message.error(response.data);
  595. }
  596. this.table_loading = false;
  597. }),function(res){
  598. this.table_loading = false;
  599. };
  600. },
  601. // 添加关键词
  602. addContent(name,index) {
  603. console.log(this.$refs[name]);
  604. let ref = this.$refs[name];
  605. let words = "";
  606. words ="(" + '会员昵称' + ")";
  607. console.log(words)
  608. this.insertInputTxt(name,words)
  609. },
  610. insertInputTxt(ref,words) {
  611. let name = "";
  612. name = this.$refs[ref].$refs.textarea;
  613. var startPos = name.selectionStart;
  614. console.log(startPos);
  615. var endPos = name.selectionEnd;
  616. if (startPos === undefined || endPos === undefined) return
  617. var txt = name.value;
  618. var result = txt.substring(0, startPos) + words + txt.substring(endPos)
  619. name.value = result;
  620. name.focus();
  621. name.selectionStart = startPos + words.length;
  622. name.selectionEnd = startPos + words.length;
  623. console.log(name.value)
  624. this.form[ref] = name.value;
  625. },
  626. // beforeUpload(file) {
  627. // this.loading = true;
  628. // const isLt2M = file.size / 1024 / 1024 < 2;
  629. // if (!isLt2M) {
  630. // this.$message.error('上传图片大小不能超过 2MB!');
  631. // this.loading = false;
  632. // }
  633. // return isLt2M;
  634. // },
  635. // uploadMainSuccess (res, file){
  636. // if (res.result == 1) {
  637. // this.form.thumb = res.data.thumb;
  638. // this.form.thumb_url = res.data.thumb_url;
  639. // this.$message.success("上传成功!");
  640. // } else {
  641. // this.$message.error(res.msg);
  642. // }
  643. // this.loading = false;
  644. // },
  645. // uploadMainSuccess2 (res, file){
  646. // if (res.result == 1) {
  647. // this.form.background_thumb = res.data.thumb;
  648. // this.form.background_thumb_url = res.data.thumb_url;
  649. // this.$message.success("上传成功!");
  650. // } else {
  651. // this.$message.error(res.msg);
  652. // }
  653. // this.loading = false;
  654. // },
  655. // clearImg () {
  656. // this.form.thumb = "";
  657. // this.form.thumb_url = "";
  658. // },
  659. // clearImg2 () {
  660. // this.form.background_thumb = "";
  661. // this.form.background_thumb_url = "";
  662. // },
  663. openGoods() {
  664. this.goods_show = true;
  665. this.choosed_goods_id = this.form.goods_id;
  666. },
  667. changeGoods(val,val1) {
  668. console.log(val,val1)
  669. },
  670. searchGoods(val) {
  671. let loading = this.$loading({target:document.querySelector("#goods-list"),background: 'rgba(0, 0, 0, 0)'});
  672. this.$http.post("{!! yzWebUrl('plugin.share-activity.admin.activity.get-goods') !!}",{page:val,keyword:this.search_goods.goods_name,goods_id:this.search_goods.goods_id}).then(response => {
  673. if(response.data.result == 1) {
  674. this.goods_list = response.data.data.data;
  675. this.goods_list.forEach((item,index) => {
  676. item.title = this.escapeHTML(item.title)
  677. });
  678. console.log(response.data.data);
  679. this.goods_total = response.data.data.total;
  680. this.goods_current_page = response.data.data.current_page;
  681. this.goods_per_size = response.data.data.per_page;
  682. this.total = response.data.data.total;
  683. this.loading = false;
  684. }
  685. else {
  686. this.$message.error(response.data.msg)
  687. }
  688. loading.close();
  689. }, response => {
  690. console.log(response);
  691. loading.close();
  692. });
  693. },
  694. sureGoods() {
  695. this.form.goods_id = this.choosed_goods_id;
  696. this.choosed_goods = {};
  697. let obj = this.goods_list.find((item,index) => {
  698. return item.id == this.choosed_goods_id;
  699. })
  700. this.choosed_goods = obj;
  701. console.log(this.choosed_goods);
  702. this.goods_show = false;
  703. },
  704. clearImg(name) {
  705. this.form[name] = "";
  706. this.choosed_goods = {};
  707. this.choosed_goods_id = "";
  708. this.$forceUpdate();
  709. },
  710. goBack() {
  711. history.back(-1);
  712. },
  713. submitForm(form) {
  714. if(this.form.countdown_time){
  715. this.form.countdown_time[0] = Math.round(this.form.countdown_time[0]/1000).valueOf();
  716. this.form.countdown_time[1] = Math.round(this.form.countdown_time[1]/1000).valueOf();
  717. }
  718. else{
  719. this.form.countdown_time = [];
  720. this.form.countdown_time.push(new Date().getTime()/1000,(new Date().getTime() + 7 * 24 * 3600 * 1000)/1000)
  721. }
  722. delete(this.form.goods)
  723. delete(this.form.browse_count)
  724. delete(this.form.end_time)
  725. delete(this.form.diy_form)
  726. delete(this.form.browse)
  727. delete(this.form.diyform_title)
  728. delete(this.form.goods_thumb)
  729. delete(this.form.goods_title)
  730. delete(this.form.created_at)
  731. delete(this.form.updated_at)
  732. delete(this.form.has_one_good)
  733. console.log(this.form);
  734. this.$refs[form].validate((valid) => {
  735. if (valid) {
  736. this.loading = true;
  737. this.$http.post("{!! yzWebFullUrl('plugin.share-activity.admin.activity.add') !!}",{'form':this.form, 'id':this.id}).then(response => {
  738. if (response.data.result) {
  739. this.$message({message: "操作成功",type: 'success'});
  740. window.location.href='{!! yzWebFullUrl('plugin.share-activity.admin.activity.index') !!}';
  741. }
  742. else {
  743. this.$message({message: response.data.msg,type: 'error'});
  744. this.loading = false;
  745. }
  746. },response => {
  747. this.$message({message: response.data.msg,type: 'error'});
  748. this.loading = false;
  749. });
  750. } else {
  751. console.log('error submit!!');
  752. return false;
  753. }
  754. });
  755. },
  756. // 字符转义
  757. escapeHTML(a) {
  758. a = "" + a;
  759. return a.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&apos;/g, "'");;
  760. },
  761. activityPosters(e){
  762. //let loading = this.loading("加载拓客活动海报中...");
  763. this.$http.post("{!! yzWebFullUrl('plugin.share-activity.admin.activity.getActivityPosters') !!}").then(({data:{result,data,msg}})=>{
  764. // loading.close();
  765. if(result == 1){
  766. this.activityPostersList = data;
  767. }else this.$message.error(msg);
  768. });
  769. },
  770. changePosters(e){
  771. this.form.background_url = e.background_url
  772. this.form.poster_id = e.id
  773. this.poster_title = e.title
  774. this.form.new_poster = ''
  775. }
  776. },
  777. });
  778. </script>
  779. <style>
  780. /*弹窗上传图片*/
  781. #upload-img .avatar {
  782. width: 100px;
  783. height: 100px;
  784. display: block;
  785. }
  786. #upload-img .avatar-uploader-box {
  787. position: relative;
  788. margin: 20px 0 0 10px;
  789. width: 110px;
  790. }
  791. #upload-img .el-icon-circle-close {
  792. position: absolute;
  793. top: -7px;
  794. right: 1px;
  795. color: #999;
  796. }
  797. .imgList {
  798. display: flex;
  799. flex-wrap: wrap;
  800. margin: 10px auto;
  801. }
  802. </style>
  803. @endsection