slide-show-add.blade.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. @extends('layouts.base')
  2. @section('title', '优惠券幻灯片编辑')
  3. @section('content')
  4. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css')}}"/>
  5. <link rel="stylesheet" href="{{static_url('css/public-number.css')}}">
  6. <style>
  7. .dialog-cover{z-index:2001}
  8. .dialog-content{z-index:2002}
  9. .link1 .el-input__inner{padding:0}
  10. </style>
  11. <div class="all">
  12. <div id="app" v-cloak>
  13. <div class="vue-crumbs">
  14. <a @click="goParent">优惠券幻灯片管理</a> > 幻灯片编辑
  15. </div>
  16. <div class="vue-main">
  17. <div class="vue-main-title">
  18. <div class="vue-main-title-left"></div>
  19. <div class="vue-main-title-content">幻灯片编辑</div>
  20. </div>
  21. <div class="vue-main-form">
  22. <el-form ref="form" :model="form" :rules="rules" label-width="15%">
  23. <el-form-item label="排序" prop="sort">
  24. <el-input v-model="form.sort" style="width:70%;" placeholder="请输入排序"></el-input>
  25. </el-form-item>
  26. <el-form-item label="幻灯片标题" prop="title">
  27. <el-input v-model="form.title" style="width:70%;" placeholder="请输入幻灯片标题"></el-input>
  28. </el-form-item>
  29. <el-form-item label="幻灯片图片" prop="slide_pic">
  30. <div class="upload-box" @click="openUpload('slide_pic',1,'one')" v-if="!form.slide_pic_url">
  31. <i class="el-icon-plus" style="font-size:32px"></i>
  32. </div>
  33. <div @click="openUpload('slide_pic',1,'one')" class="upload-boxed" v-if="form.slide_pic_url">
  34. <img :src="form.slide_pic_url" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;">
  35. <div class="upload-boxed-text">点击重新上传</div>
  36. </div>
  37. <div class="tip">建议尺寸: 长方型图片</div>
  38. </el-form-item>
  39. <el-form-item label="幻灯片链接" prop="slide_link">
  40. <el-input v-model="form.slide_link" style="width:70%;" placeholder=" 请填写指向的链接 (请以https://开头, 不填则不显示)"></el-input>
  41. <el-button @click="showLink('link','slide_link')">选择链接</el-button>
  42. </el-form-item>
  43. <el-form-item label="小程序链接" prop="mini_link">
  44. <el-input v-model="form.mini_link" style="width:70%;"></el-input>
  45. <el-button @click="showLink('mini','mini_link')">选择小程序链接</el-button>
  46. </el-form-item>
  47. <el-form-item label="是否显示" prop="is_show">
  48. <el-switch v-model="form.is_show" :active-value="1" :inactive-value="0"></el-switch>
  49. </el-form-item>
  50. </el-form>
  51. </div>
  52. </div>
  53. <!-- 分页 -->
  54. <div class="vue-page">
  55. <div class="vue-center">
  56. <el-button type="primary" @click="submitForm('form')">提交</el-button>
  57. <el-button @click="goBack">返回</el-button>
  58. </div>
  59. </div>
  60. <upload-multimedia-img
  61. :upload-show="uploadShow"
  62. :type="type"
  63. :name="chooseImgName"
  64. :sel-Num="selNum"
  65. @replace="changeProp"
  66. @sure="sureImg"
  67. >
  68. </upload-multimedia-img>
  69. <pop :show="show" @replace="changeLink" @add="parHref"></pop>
  70. <program :pro="pro" @replacepro="changeprogram" @addpro="parpro"></program>
  71. <!--end-->
  72. </div>
  73. </div>
  74. @include('public.admin.uploadMultimediaImg')
  75. @include('public.admin.pop')
  76. @include('public.admin.program')
  77. <script>
  78. let data = {!! $data?:'{}' !!}
  79. console.log(data)
  80. let form = {
  81. sort:"",
  82. title:"",
  83. slide_pic:"",
  84. slide_link:"",
  85. mini_link:"",
  86. is_show:0,
  87. }
  88. if(data.id) {
  89. form = {
  90. sort:data.sort,
  91. title:data.title,
  92. slide_pic:data.slide_pic,
  93. slide_link:data.slide_link,
  94. mini_link:data.mini_link,
  95. is_show:data.is_show,
  96. slide_pic_url:data.pic_url,
  97. }
  98. }
  99. var app = new Vue({
  100. el:"#app",
  101. delimiters: ['[[', ']]'],
  102. name: 'test',
  103. data() {
  104. return{
  105. show:false,//是否开启公众号弹窗
  106. pro:false ,//是否开启小程序弹窗
  107. chooseLink:'',
  108. chooseMiniLink:'',
  109. id:0,
  110. form:form,
  111. submit_url:'',
  112. link:"",
  113. uploadShow:false,
  114. chooseImgName:'',
  115. loading: false,
  116. uploadImg1:'',
  117. rules:{
  118. title:{ required: true, message: '请输入标题'}
  119. },
  120. type:'',
  121. selNum:'',
  122. }
  123. },
  124. created() {
  125. this.id = this.getParam("id");
  126. if(this.id) {
  127. this.submit_url = '{!! yzWebFullUrl('coupon.slide-show.edit') !!}'
  128. }
  129. else {
  130. this.submit_url = '{!! yzWebFullUrl('coupon.slide-show.add') !!}'
  131. }
  132. // this.getData();
  133. },
  134. mounted() {
  135. },
  136. methods: {
  137. //弹窗显示与隐藏的控制
  138. changeLink(item){
  139. this.show=item;
  140. },
  141. //当前链接的增加
  142. parHref(child,confirm){
  143. this.show=confirm;
  144. // this.form.link=child;
  145. this.form[this.chooseLink] = child;
  146. },
  147. changeprogram(item){
  148. this.pro=item;
  149. },
  150. parpro(child,confirm){
  151. this.pro=confirm;
  152. // this.form.prolink=child;
  153. this.form[this.chooseMiniLink] = child;
  154. },
  155. showLink(type,name) {
  156. if(type=="link") {
  157. this.chooseLink = name;
  158. this.show = true;
  159. }
  160. else {
  161. this.chooseMiniLink = name;
  162. this.pro = true;
  163. }
  164. },
  165. getData() {
  166. let json = {};
  167. if(this.id) {
  168. json.id = this.id
  169. }
  170. else {
  171. json = {
  172. level:this.level,
  173. parent_id:this.parent_id
  174. }
  175. }
  176. console.log(json)
  177. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  178. this.$http.post(this.submit_url,json).then(function (response) {
  179. if (response.data.result){
  180. if(this.id) {
  181. let datas = response.data.data.item;
  182. this.form.display_order = datas.display_order;
  183. this.form.name = datas.name;
  184. this.form.thumb = datas.thumb;
  185. this.form.thumb_url = datas.thumb_url;
  186. this.form.description = datas.description;
  187. this.form.adv_img = datas.adv_img;
  188. this.form.adv_img_url = datas.adv_img_url;
  189. this.form.adv_url = datas.adv_url;
  190. this.form.small_adv_url = datas.small_adv_url;
  191. this.form.is_home = datas.is_home || 0;
  192. this.form.enabled = datas.enabled || 0;
  193. this.edit_level = datas.level || 0;
  194. this.edit_parent_id = datas.parent_id || 0;
  195. if(response.data.data.label_group && response.data.data.label_group.length) {
  196. response.data.data.label_group.forEach((item,index) => {
  197. this.form.filter_ids.push(item.id);
  198. this.filter_names.push(item.name);
  199. })
  200. }
  201. this.link = response.data.data.link || "";
  202. }
  203. this.parent = response.data.data.parent;
  204. }
  205. else {
  206. this.$message({message: response.data.msg,type: 'error'});
  207. }
  208. loading.close();
  209. },function (response) {
  210. this.$message({message: response.data.msg,type: 'error'});
  211. loading.close();
  212. }
  213. );
  214. },
  215. getParam(name) {
  216. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  217. var r = window.location.search.substr(1).match(reg);
  218. if (r != null) return unescape(r[2]);
  219. return null;
  220. },
  221. clearGoods() {
  222. },
  223. submitForm(formName) {
  224. let that = this;
  225. let json = {
  226. data:{
  227. sort:this.form.sort,
  228. title:this.form.title,
  229. slide_pic:this.form.slide_pic,
  230. slide_link:this.form.slide_link,
  231. mini_link:this.form.mini_link,
  232. is_show:this.form.is_show,
  233. }
  234. };
  235. if(this.id) {
  236. json.id = this.id;
  237. }
  238. this.$refs[formName].validate((valid) => {
  239. if (valid) {
  240. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  241. this.$http.post(this.submit_url,json).then(response => {
  242. if (response.data.result) {
  243. this.$message({type: 'success',message: '操作成功!'});
  244. this.goBack();
  245. } else {
  246. this.$message({message: response.data.msg,type: 'error'});
  247. }
  248. loading.close();
  249. },response => {
  250. loading.close();
  251. });
  252. }
  253. else {
  254. console.log('error submit!!');
  255. return false;
  256. }
  257. });
  258. },
  259. goBack() {
  260. history.go(-1)
  261. },
  262. goParent() {
  263. window.location.href = `{!! yzWebFullUrl('coupon.slide-show') !!}`;
  264. },
  265. openUpload(str,type,sel) {
  266. this.chooseImgName = str;
  267. this.uploadShow = true;
  268. this.type = type;
  269. this.selNum = sel;
  270. },
  271. changeProp(val) {
  272. if(val == true) {
  273. this.uploadShow = false;
  274. }
  275. else {
  276. this.uploadShow = true;
  277. }
  278. },
  279. sureImg(name,uploadShow,fileList) {
  280. if(fileList.length <= 0) {
  281. return
  282. }
  283. console.log(name)
  284. console.log(fileList)
  285. this.form[name] =fileList[0].attachment;
  286. this.form[name+'_url'] = fileList[0].url;
  287. console.log(this.form[name],'aaaaa')
  288. console.log( this.form[name+'_url'],'bbbbb')
  289. },
  290. clearImg(str) {
  291. this.form[str] = "";
  292. this.form[str+'_url'] = "";
  293. this.$forceUpdate();
  294. },
  295. copyLink(type) {
  296. this.$refs[type].select();
  297. document.execCommand("Copy")
  298. this.$message.success("复制成功!");
  299. },
  300. // 字符转义
  301. escapeHTML(a) {
  302. a = "" + a;
  303. return a.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&apos;/g, "'");;
  304. },
  305. },
  306. })
  307. </script>
  308. @endsection