tab.blade.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  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;top:0;right:13%;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. </style>
  28. <div id="app-add">
  29. <template>
  30. <el-form ref="form" :model="form" :rules="rules" v-loading="loading" label-width="15%">
  31. <el-tabs type="card" v-model="activeName" style="padding: 20px">
  32. <el-tab-pane label="基础设置" name="base_set">@include('Yunshop\PictureAlbum::admin.base-set')</el-tab-pane>
  33. <el-tab-pane label="分享设置" name="share_set">@include('Yunshop\PictureAlbum::admin.share-set')</el-tab-pane>
  34. </el-tabs>
  35. <el-form-item>
  36. <a href="#">
  37. <el-button type="success" @click="submitForm('form')">提交</el-button>
  38. </a>
  39. <a href="#">
  40. <el-button @click="goBack()">返回列表</el-button>
  41. </a>
  42. </el-form-item>
  43. </el-form>
  44. </template>
  45. <!--弹框上传图片-->
  46. <el-dialog :visible.sync="centerDialogVisible" width="65%" center>
  47. <el-tabs v-model="activeName2" type="card">
  48. <el-tab-pane label="上传图片" name="first">
  49. <div
  50. style="text-align: center"
  51. class="submit_Img"
  52. v-loading="submit_loading"
  53. >
  54. <el-upload
  55. class="avatar-uploader"
  56. action="{{ yzWebFullUrl('plugin.picture-album.admin.controllers.activity.upload') }}"
  57. accept="image/*"
  58. :show-file-list="false"
  59. :on-success="uploadSuccess"
  60. :before-upload="beforeUpload"
  61. >
  62. <div class="avatar_box" v-if="uploadImg">
  63. <img :src="uploadImg" class="avatar" />
  64. </div>
  65. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  66. </el-upload>
  67. </div>
  68. </el-tab-pane>
  69. <el-tab-pane label="提取网络图片" name="second">
  70. <el-input
  71. v-model="uploadImg"
  72. placeholder="请输入网络图片地址"
  73. style="width:90%"
  74. ></el-input>
  75. <!-- <el-button @click="transform(uploadImg)" v-loading="submit_loading">转换</el-button> -->
  76. </el-tab-pane>
  77. <el-tab-pane label="浏览图片" name="third">
  78. <div>
  79. <el-radio-group v-model="radio1" size="medium" @change="chooseYear">
  80. <el-radio-button label="不限"></el-radio-button>
  81. <el-radio-button label="2019">2019年</el-radio-button>
  82. <el-radio-button label="2018">2018年</el-radio-button>
  83. <el-radio-button label="2017">2017年</el-radio-button>
  84. <el-radio-button label="2016">2016年</el-radio-button>
  85. </el-radio-group>
  86. </div>
  87. <div style="margin-top: 10px;">
  88. <el-radio-group v-model="radio2" size="small" @change="chooseMonth">
  89. <el-radio-button label="不限"></el-radio-button>
  90. <el-radio-button label="1">1月</el-radio-button>
  91. <el-radio-button label="2">2月</el-radio-button>
  92. <el-radio-button label="3">3月</el-radio-button>
  93. <el-radio-button label="4">4月</el-radio-button>
  94. <el-radio-button label="5">5月</el-radio-button>
  95. <el-radio-button label="6">6月</el-radio-button>
  96. <el-radio-button label="7">7月</el-radio-button>
  97. <el-radio-button label="8">8月</el-radio-button>
  98. <el-radio-button label="9">9月</el-radio-button>
  99. <el-radio-button label="10">10月</el-radio-button>
  100. <el-radio-button label="11">11月</el-radio-button>
  101. <el-radio-button label="12">12月</el-radio-button>
  102. </el-radio-group>
  103. </div>
  104. <div id="upload-img" class="imgList" v-loading="submit_loading">
  105. <div class="avatar-uploader-box" v-for="img in ImgList">
  106. <img
  107. @click="chooseTheImg(img.thumb_url)"
  108. :src="img.thumb_url"
  109. class="avatar"
  110. />
  111. <i
  112. class="el-icon-circle-close"
  113. @click="deleteImg(img.id)"
  114. title="点击清除图片"
  115. ></i>
  116. </div>
  117. </div>
  118. <el-pagination
  119. style="margin-top: 10px;text-align: right"
  120. background
  121. @current-change="currentChange"
  122. :page-size="pageSize"
  123. :current-page.sync="current_page"
  124. :total="total"
  125. layout="prev, pager, next"
  126. >
  127. </el-pagination>
  128. </el-tab-pane>
  129. </el-tabs>
  130. <span slot="footer" class="dialog-footer">
  131. <el-button @click="centerDialogVisible = false">取 消</el-button>
  132. <el-button type="primary" @click="sureImg">确 定 </el-button>
  133. </span>
  134. </el-dialog>
  135. <!--end-->
  136. </div>
  137. <script>
  138. var app = new Vue({
  139. el: '#app-add',
  140. delimiters: ['[[', ']]'],
  141. data() {
  142. let set = {!! $set ?: '{}' !!};
  143. let activity_id = {!! $id ?: '{}' !!};
  144. return {
  145. //是否显示弹框
  146. centerDialogVisible: false,
  147. ImgList: [],
  148. activeName2: "first",
  149. uploadImg: "",
  150. chooseImg: "",
  151. radio1: "不限", //年
  152. radio2: "不限", //月
  153. loading : false,
  154. pageSize: 0,
  155. current_page: 0,
  156. total: 0,
  157. submit_loading:"",
  158. form : {
  159. 'picture_name' : '',
  160. 'color' : '#409EFF',
  161. 'is_background' : 1,
  162. 'picture_peo' : 0,
  163. 'audio_url' : '',
  164. 'background_thumb' : '',
  165. 'code' : '',
  166. 'phone' : '',
  167. 'title' : '',
  168. 'describe' : '',
  169. 'share_picture' :'',
  170. 'created_at' : [new Date().getTime(), new Date().getTime() + 7 * 24 * 3600 * 1000],
  171. 'is_open' : 0,
  172. ...set
  173. },
  174. goods : [],
  175. good : set.goods_id ? '[GID:' + set.goods_id + '][商品名称:' + set.goods_title + ']' : '',
  176. imageUrl : set.goods_thumb ? set.goods_thumb : '',
  177. id : activity_id,
  178. activeName : 'base_set',
  179. rules: {
  180. picture_name: [
  181. { required: true, message: '请输入画册名称', trigger: 'blur' },
  182. ],
  183. },
  184. }
  185. },
  186. created(){
  187. this.currentChange(1);
  188. },
  189. methods:{
  190. addContent(name,index) {
  191. console.log(this.$refs[name]);
  192. let ref = this.$refs[name];
  193. let words = "";
  194. words ="(" + '会员昵称' + ")";
  195. console.log(words)
  196. this.insertInputTxt(name,words)
  197. },
  198. insertInputTxt(ref,words) {
  199. let name = "";
  200. name = this.$refs[ref].$refs.textarea;
  201. var startPos = name.selectionStart;
  202. console.log(startPos);
  203. var endPos = name.selectionEnd;
  204. if (startPos === undefined || endPos === undefined) return
  205. var txt = name.value;
  206. var result = txt.substring(0, startPos) + words + txt.substring(endPos)
  207. name.value = result;
  208. name.focus();
  209. name.selectionStart = startPos + words.length;
  210. name.selectionEnd = startPos + words.length;
  211. console.log(name.value)
  212. this.form[ref] = name.value;
  213. },
  214. loadGoods(query) {
  215. console.log(query)
  216. if (query !== '') {
  217. this.loading = true;
  218. this.$http.get("{!! yzWebUrl('plugin.picture-album.admin.controllers.activity.get-goods', ['keyword' => '']) !!}" + query).then(response => {
  219. this.goods = response.data.data,
  220. this.loading = false;
  221. }, response => {
  222. console.log(response);
  223. });
  224. } else {
  225. this.goods = [];
  226. }
  227. },
  228. getImgUrl(id) {
  229. let good = this.goods.find(function (good) {
  230. return good.id == id;
  231. });
  232. this.imageUrl = good.thumb;
  233. },
  234. chooseTheImg(img) {
  235. this.form[this.chooseImg] = img;
  236. this.centerDialogVisible = false;
  237. },
  238. chooseYear(year) {
  239. this.currentChange(1);
  240. },
  241. chooseMonth(month) {
  242. this.currentChange(1);
  243. },
  244. openUpload(str) {
  245. this.chooseImg = str;
  246. console.log(this.chooseImg)
  247. this.uploadImg = "";
  248. this.centerDialogVisible = true;
  249. },
  250. sureImg() {
  251. this.form[this.chooseImg] = this.uploadImg;
  252. this.centerDialogVisible = false;
  253. },
  254. uploadSuccess(res, file) {
  255. if (res.result === 1) {
  256. this.uploadImg = res.data.thumb_url;
  257. this.$message.success("上传成功!");
  258. } else {
  259. this.$message.error(res.msg);
  260. }
  261. this.submit_loading = false;
  262. },
  263. beforeUpload(file) {
  264. this.submit_loading = true;
  265. const isLt2M = file.size / 1024 / 1024 < 4;
  266. if (!isLt2M) {
  267. this.$message.error("上传图片大小不能超过 4MB!");
  268. this.submit_loading = false;
  269. }
  270. return isLt2M;
  271. },
  272. clearImg(str) {
  273. this.form[str] = "";
  274. },
  275. deleteImg(id) {
  276. this.submit_loading = true;
  277. this.$http
  278. .post("{!! yzWebFullUrl('plugin.picture-album.admin.controllers.activity.delLocalImg') !!}", { id: id })
  279. .then(response => {
  280. if (response.data.result === 1) {
  281. this.$message.success("系统删除成功");
  282. this.currentChange(1);
  283. this.submit_loading = false;
  284. } else {
  285. this.$message.error("删除出错");
  286. this.submit_loading = false;
  287. }
  288. })
  289. .catch(err => {
  290. console.error(err);
  291. this.submit_loading = false;
  292. });
  293. },
  294. currentChange(val) {
  295. this.submit_loading = true;
  296. this.$http.post("{!! yzWebFullUrl('plugin.picture-album.admin.controllers.activity.getLocalList') !!}",{ page: val, year: this.radio1, month: this.radio2 })
  297. .then(response => {
  298. if (response.data.result === 1) {
  299. this.total = response.data.data.list.total;
  300. this.ImgList = response.data.data.list.data;
  301. this.current_page = response.data.data.list.current_page;
  302. this.pageSize = response.data.data.list.per_page;
  303. } else {
  304. this.$message.error(response.data.msg);
  305. }
  306. this.submit_loading = false;
  307. })
  308. .catch(err => {
  309. console.error(err);
  310. this.submit_loading = false;
  311. });
  312. },
  313. // 转化网络地址
  314. transform(url) {
  315. this.submit_loading = true;
  316. this.$http.post("{!! yzWebFullUrl('plugin.picture-album.admin.controllers.activity.fetch') !!}",{ url:url })
  317. .then(response => {
  318. if (response.data.result === 1) {
  319. this.$message.success("转化成功!");
  320. this.uploadImg = response.data.thumb_url
  321. } else {
  322. this.$message.error(response.data.msg);
  323. this.uploadImg = "";
  324. }
  325. this.submit_loading = false;
  326. })
  327. .catch(err => {
  328. console.error(err);
  329. this.submit_loading = false;
  330. });
  331. },
  332. // 添加关键词
  333. addContent(name,index) {
  334. console.log(this.$refs[name]);
  335. let ref = this.$refs[name];
  336. let words = "";
  337. words ="(" + '会员昵称' + ")";
  338. console.log(words)
  339. this.insertInputTxt(name,words)
  340. },
  341. insertInputTxt(ref,words) {
  342. let name = "";
  343. name = this.$refs[ref].$refs.textarea;
  344. var startPos = name.selectionStart;
  345. console.log(startPos);
  346. var endPos = name.selectionEnd;
  347. if (startPos === undefined || endPos === undefined) return
  348. var txt = name.value;
  349. var result = txt.substring(0, startPos) + words + txt.substring(endPos)
  350. name.value = result;
  351. name.focus();
  352. name.selectionStart = startPos + words.length;
  353. name.selectionEnd = startPos + words.length;
  354. console.log(name.value)
  355. this.form[ref] = name.value;
  356. },
  357. // beforeUpload(file) {
  358. // this.loading = true;
  359. // const isLt2M = file.size / 1024 / 1024 < 2;
  360. // if (!isLt2M) {
  361. // this.$message.error('上传图片大小不能超过 2MB!');
  362. // this.loading = false;
  363. // }
  364. // return isLt2M;
  365. // },
  366. // uploadMainSuccess (res, file){
  367. // if (res.result == 1) {
  368. // this.form.thumb = res.data.thumb;
  369. // this.form.thumb_url = res.data.thumb_url;
  370. // this.$message.success("上传成功!");
  371. // } else {
  372. // this.$message.error(res.msg);
  373. // }
  374. // this.loading = false;
  375. // },
  376. // uploadMainSuccess2 (res, file){
  377. // if (res.result == 1) {
  378. // this.form.background_thumb = res.data.thumb;
  379. // this.form.background_thumb_url = res.data.thumb_url;
  380. // this.$message.success("上传成功!");
  381. // } else {
  382. // this.$message.error(res.msg);
  383. // }
  384. // this.loading = false;
  385. // },
  386. // clearImg () {
  387. // this.form.thumb = "";
  388. // this.form.thumb_url = "";
  389. // },
  390. // clearImg2 () {
  391. // this.form.background_thumb = "";
  392. // this.form.background_thumb_url = "";
  393. // },
  394. goBack() {
  395. history.back(-1);
  396. },
  397. submitForm(form) {
  398. if(this.form.countdown_time){
  399. this.form.countdown_time[0] = Math.round(this.form.countdown_time[0]/1000).valueOf();
  400. this.form.countdown_time[1] = Math.round(this.form.countdown_time[1]/1000).valueOf();
  401. }
  402. delete(this.form.goods_thumb)
  403. delete(this.form.goods_title)
  404. delete(this.form.created_at)
  405. delete(this.form.updated_at)
  406. delete(this.form.has_one_good)
  407. this.$refs[form].validate((valid) => {
  408. if (valid) {
  409. this.loading = true;
  410. this.$http.post("{!! yzWebFullUrl('plugin.picture-album.admin.controllers.activity.add-activity') !!}",{'form':this.form, 'id':this.id}).then(response => {
  411. if (response.data.result) {
  412. this.$message({message: "操作成功",type: 'success'});
  413. window.location.href="{!! yzWebFullUrl('plugin.picture-album.admin.controllers.activity.index') !!}";
  414. }
  415. else {
  416. this.$message({message: response.data.msg,type: 'error'});
  417. this.loading = false;
  418. }
  419. },response => {
  420. this.$message({message: response.data.msg,type: 'error'});
  421. this.loading = false;
  422. });
  423. } else {
  424. console.log('error submit!!');
  425. return false;
  426. }
  427. });
  428. },
  429. },
  430. });
  431. </script>
  432. <style>
  433. /*弹窗上传图片*/
  434. #upload-img .avatar {
  435. width: 100px;
  436. height: 100px;
  437. display: block;
  438. }
  439. #upload-img .avatar-uploader-box {
  440. position: relative;
  441. margin: 20px 0 0 10px;
  442. width: 110px;
  443. }
  444. #upload-img .el-icon-circle-close {
  445. position: absolute;
  446. top: -7px;
  447. right: 1px;
  448. color: #999;
  449. }
  450. .imgList {
  451. display: flex;
  452. flex-wrap: wrap;
  453. margin: 10px auto;
  454. }
  455. </style>
  456. @endsection