slide-info.blade.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. @extends('layouts.base')
  2. @section('content')
  3. <link rel="stylesheet" href="{{static_url('css/public-number.css')}}">
  4. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css')}}"/>
  5. <style>
  6. .content{
  7. background: #eff3f6;
  8. padding: 10px!important;
  9. padding-top: 20px!important;
  10. }
  11. .con{
  12. padding-bottom:20px;
  13. position:relative;
  14. border-radius: 8px;
  15. background-color:#fff;
  16. min-height:100vh;
  17. }
  18. .con .setting .block{
  19. padding:10px;
  20. background-color:#fff;
  21. border-radius: 8px;
  22. }
  23. .con .setting .block .title{
  24. font-size:18px;
  25. margin-bottom:15px;
  26. display:flex;
  27. align-items:center;
  28. }
  29. .confirm-btn{
  30. width: calc(100% - 266px);
  31. position:fixed;
  32. bottom:0;
  33. right:0;
  34. margin-right:10px;
  35. line-height:63px;
  36. background-color: #ffffff;
  37. box-shadow: 0px 8px 23px 1px
  38. rgba(51, 51, 51, 0.3);
  39. background-color:#fff;
  40. text-align:center;
  41. }
  42. b{
  43. font-size:14px;
  44. }
  45. .vue-crumbs a {
  46. color: #333;
  47. }
  48. .vue-crumbs a:hover {
  49. color: #29ba9c;
  50. }
  51. .vue-crumbs {
  52. margin: 0 20px;
  53. font-size: 14px;
  54. color: #333;
  55. font-weight: 400;
  56. padding-bottom: 10px;
  57. line-height: 32px;
  58. }
  59. .upload-boxed .el-icon-close {
  60. position: absolute;
  61. top: -5px;
  62. right: -5px;
  63. color: #fff;
  64. background: #333;
  65. border-radius: 50%;
  66. cursor: pointer;
  67. }
  68. </style>
  69. <div id='re_content' >
  70. <div class="vue-crumbs">
  71. <a @click="goBack">系统</a> > 商城设置 > 幻灯片 > 编辑幻灯片
  72. </div>
  73. <div class="con">
  74. <div class="setting">
  75. <el-form ref="form" :model="form" label-width="15%">
  76. <div class="block">
  77. <div class="title"><span style="width: 4px;height: 18px;background-color: #29ba9c;margin-right:15px;display:inline-block;"></span><b>基础设置</b></div>
  78. <el-form-item label="排序">
  79. <el-input v-model="form.display_order" style="width:70%;"></el-input>
  80. </el-form-item>
  81. <el-form-item label="幻灯片标题">
  82. <el-input v-model="form.slide_name" style="width:70%;"></el-input>
  83. </el-form-item>
  84. <!-- <el-form-item label="幻灯片图片" prop="head_img_url">
  85. <div class="upload-box" @click="openUpload('thumb')" v-if="!form.thumb_url">
  86. <i class="el-icon-plus" style="font-size:32px"></i>
  87. </div>
  88. <div @click="openUpload('thumb')" class="upload-boxed" v-if="form.thumb_url" style="height:75px;">
  89. <img :src="form.thumb_url" alt="" style="width:150px;height:75px;border-radius: 5px;cursor: pointer;">
  90. <div class="upload-boxed-text">点击重新上传</div>
  91. <i class="el-icon-close" @click.stop="clearImg('thumb')" title="点击清除图片"></i>
  92. </div>
  93. <div class="tip">建议尺寸:640 * 350 , 请将所有幻灯片图片尺寸保持一致</div>
  94. </el-form-item> -->
  95. <el-form-item label="幻灯片图片" prop="head_img_url">
  96. <div class="upload-box" @click="openUpload('thumb',1,'one')" v-if="!form.thumb_url">
  97. <i class="el-icon-plus" style="font-size:32px"></i>
  98. </div>
  99. <div @click="openUpload('thumb',1,'one')" class="upload-boxed" v-if="form.thumb_url" style="height:75px;">
  100. <img :src="form.thumb_url" alt="" style="width:150px;height:75px;border-radius: 5px;cursor: pointer;">
  101. <div class="upload-boxed-text">点击重新上传</div>
  102. <i class="el-icon-close" @click.stop="clearImg('thumb')" title="点击清除图片"></i>
  103. </div>
  104. <div class="tip">建议尺寸:640 * 350 , 请将所有幻灯片图片尺寸保持一致</div>
  105. </el-form-item>
  106. <upload-multimedia-img :upload-show="uploadShow" :type="type" :name="chooseImgName" :sel-Num="selNum" @replace="changeProp" @sure="sureImg"></upload-multimedia-img>
  107. <!-- <upload-img :upload-show="uploadShow" :name="chooseImgName" @replace="changeProp" @sure="sureImg"></upload-img> -->
  108. <el-form-item label="幻灯片链接">
  109. <el-input v-model="form.link" style="width:70%;"></el-input><el-button @click="show=true">选择链接</el-button>
  110. </el-form-item>
  111. <el-form-item label="幻灯片小程序链接">
  112. <el-input v-model="form.small_link" style="width:70%;"></el-input><el-button @click="pro=true">选择小程序链接</el-button>
  113. </el-form-item>
  114. <el-form-item label="是否显示">
  115. <template>
  116. <el-switch
  117. v-model="form.enabled"
  118. active-value="1"
  119. inactive-value="0"
  120. >
  121. </el-switch>
  122. </template>
  123. </el-form-item>
  124. </div>
  125. </div>
  126. <div class="confirm-btn">
  127. <el-button @click="submit" type="primary">提交</el-button>
  128. </div>
  129. <pop :show="show" @replace="changeProp1" @add="parHref"></pop>
  130. <program :pro="pro" @replacepro="changeprogram" @addpro="parpro"></program>
  131. </el-form>
  132. </div>
  133. </div>
  134. @include('public.admin.pop')
  135. @include('public.admin.program')
  136. @include('public.admin.uploadImg')
  137. @include('public.admin.uploadMultimediaImg')
  138. <script>
  139. var vm = new Vue({
  140. el: "#re_content",
  141. delimiters: ['[[', ']]'],
  142. data() {
  143. let data = {!! $slideModel ?: '{}'!!}
  144. return {
  145. activeName: 'first',
  146. show:false,//是否开启公众号弹窗
  147. pro:false ,//是否开启小程序弹窗
  148. uploadShow:false,
  149. chooseImgName:'',
  150. uploadListShow:false,
  151. chooseImgListName:'',
  152. type:"",
  153. selNum:"",
  154. form:{
  155. id : data.id,
  156. display_order: data.display_order,
  157. slide_name:data.slide_name,
  158. link:data.link,
  159. thumb:data.thumb,
  160. thumb_url:data.thumb_url,
  161. small_link:data.small_link,
  162. enabled:String(data.enabled)
  163. },
  164. }
  165. },
  166. mounted () {
  167. },
  168. methods: {
  169. // clearImg(str,type,index) {
  170. // if(!type) {
  171. // this.form[str] = "";
  172. // this.form[str+'_url'] = "";
  173. // }
  174. // else {
  175. // this.form[str].splice(index,1);
  176. // this.form[str+'_url'].splice(index,1);
  177. // }
  178. // this.$forceUpdate();
  179. // },
  180. clearImg(str,type,index) {
  181. if(!type) {
  182. this.form[str] = "";
  183. this.form[str+'_url'] = "";
  184. }
  185. else {
  186. this.form[str].splice(index,1);
  187. this.form[str+'_url'].splice(index,1);
  188. }
  189. this.$forceUpdate();
  190. },
  191. goBack() {
  192. window.location.href = `{!! yzWebFullUrl('setting.shop.index') !!}`;
  193. },
  194. openUpload(str,type,sel) {
  195. this.chooseImgName = str;
  196. this.uploadShow = true;
  197. this.type=type;
  198. this.selNum=sel;
  199. },
  200. changeProp(val) {
  201. if(val == true) {
  202. this.uploadShow = false;
  203. }
  204. else {
  205. this.uploadShow = true;
  206. }
  207. },
  208. sureImg(name,uploadShow,fileList) {
  209. if(fileList.length <= 0) {
  210. return
  211. }
  212. this.form[name] =fileList[0].attachment;
  213. this.form[name+'_url'] = fileList[0].url;
  214. },
  215. //弹窗显示与隐藏的控制
  216. changeProp1(item){
  217. this.show=item;
  218. },
  219. //当前链接的增加
  220. parHref(child,confirm){
  221. this.show=confirm;
  222. this.form.link=child;
  223. },
  224. changeprogram(item){
  225. this.pro=item;
  226. },
  227. parpro(child,confirm){
  228. this.pro=confirm;
  229. this.form.small_link=child;
  230. },
  231. submit() {
  232. let id = this.form.id
  233. this.$http.post('{!! yzWebFullUrl("setting.slide.edit",array("id" => "") ) !!}'+ id ,{'slide':this.form}).then(function (response){
  234. if (response.data.result) {
  235. this.$message({message: response.data.msg,type: 'success'});
  236. window.location.href="{!! yzWebFullUrl('setting.slide.index') !!}"
  237. }else{
  238. this.$message({type: 'error',message: response.data.msg});
  239. }
  240. },function (response) {
  241. this.$message({message: response.data.msg,type: 'error'});
  242. })
  243. },
  244. },
  245. });
  246. </script>
  247. @endsection('content')