case-edit.blade.php 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
  1. @extends('layouts.base')
  2. @section('title', '编辑案例')
  3. @section('content')
  4. <link rel="stylesheet" href="{{resource_get('plugins/case-library/views/admin/index.css')}}">
  5. <link rel="stylesheet" href="{{static_url('css/public-number.css')}}">
  6. <style>
  7. th {border-bottom: 1px solid #EBEEF5 !important;}
  8. .dialog-cover{z-index:2001}
  9. .dialog-content{z-index:2002}
  10. </style>
  11. <div class="all">
  12. <div id="app" v-cloak>
  13. <div class="vue-crumbs">
  14. <a @click="goParent(1)">案例库</a>
  15. > 编辑案例
  16. </div>
  17. <el-form ref="form" :model="form" :rules="rules" label-width="15%">
  18. <div class="vue-main">
  19. <div class="vue-main-title">
  20. <div class="vue-main-title-left"></div>
  21. <div class="vue-main-title-content">添加/编辑案例</div>
  22. </div>
  23. <div class="vue-main-form">
  24. <el-form-item label="案例名称" prop="case_name">
  25. <el-input v-model="form.case_name" style="width:70%;" maxlength="15" show-word-limit></el-input>
  26. </el-form-item>
  27. <el-form-item label="案例图标/二维码" prop="thumb">
  28. <div style="display:flex;width:70%">
  29. <div style="flex:1">
  30. <div class="upload-box" @click="openUpload('img')" v-if="!form.img_src">
  31. <i class="el-icon-plus" style="font-size:32px"></i>
  32. </div>
  33. <div @click="openUpload('img')" class="upload-boxed" v-if="form.img_src" style="height:150px">
  34. <img :src="form.img_src" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;">
  35. <i class="el-icon-close" @click.stop="clearImg('img')" title="点击清除图片"></i>
  36. <div class="upload-boxed-text">点击重新上传</div>
  37. </div>
  38. <div style="width:150px;text-align:center;color:#000">图标</div>
  39. </div>
  40. <div style="flex:1">
  41. <div class="upload-box" @click="openUpload('img_h5')" v-if="!form.img_h5_src">
  42. <i class="el-icon-plus" style="font-size:32px"></i>
  43. </div>
  44. <div @click="openUpload('img_h5')" class="upload-boxed" v-if="form.img_h5_src" style="height:150px">
  45. <img :src="form.img_h5_src" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;">
  46. <i class="el-icon-close" @click.stop="clearImg('img_h5')" title="点击清除图片"></i>
  47. <div class="upload-boxed-text">点击重新上传</div>
  48. </div>
  49. <div style="width:150px;text-align:center;color:#000">公众号/H5</div>
  50. </div>
  51. <div style="flex:1">
  52. <div class="upload-box" @click="openUpload('img_mini')" v-if="!form.img_mini_src">
  53. <i class="el-icon-plus" style="font-size:32px"></i>
  54. </div>
  55. <div @click="openUpload('img_mini')" class="upload-boxed" v-if="form.img_mini_src" style="height:150px">
  56. <img :src="form.img_mini_src" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;">
  57. <i class="el-icon-close" @click.stop="clearImg('img_mini')" title="点击清除图片"></i>
  58. <div class="upload-boxed-text">点击重新上传</div>
  59. </div>
  60. <div style="width:150px;text-align:center;color:#000">微信小程序</div>
  61. </div>
  62. </div>
  63. <div class="tip">请上传正方形图片</div>
  64. </el-form-item>
  65. <el-form-item label="案例发布者" prop="member_id">
  66. <div class="upload-box" @click="openMember('member_id')" v-if="!form.member_id">
  67. <div class="upload-box-member">
  68. <i class="el-icon-plus" style="font-size:32px"></i><br>
  69. 选 择
  70. </div>
  71. </div>
  72. <div class="upload-boxed" v-if="form.member_id">
  73. <img @click="openMember('member_id')" :src="form.member.avatar" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;" />
  74. <div @click="openMember('member_id')" class="upload-boxed-text">重新选择</div>
  75. <div class="upload-boxed-text-clear" @click="clearMember('member_id')">清除选择</div>
  76. <div style="text-align:center;line-height: 20px;">[[form.member.nickname]]</div>
  77. </div>
  78. </el-form-item>
  79. <el-form-item label="案例分类" prop="category">
  80. <div style="margin:10px 0" v-for="(item,index) in form.category" :key="item.id" >
  81. <el-select v-model="item.category_first" placeholder="请选择一级分类" clearable @change="changeCategory(index)" style="width:35%">
  82. <el-option v-for="(item2,index2) in allCategory" :key="item2.id" :label="item2.category_name" :value="item2.id"></el-option>
  83. </el-select>
  84. {{--<el-select v-model="item.category_second" placeholder="请选择二级分类" clearable style="width:35%">--}}
  85. {{--<el-option v-for="item in city_list" :key="item.id" :label="item.areaname" :value="item.id"></el-option>--}}
  86. {{--</el-select>--}}
  87. <template v-for="(item3,index3) in allCategory" v-if="item3.id == item.category_first">
  88. <el-select v-model="item.category_second" placeholder="请选择二级分类" clearable style="width:35%">
  89. <el-option v-for="item4 in item3.sub_category" :key="item4.id" :label="item4.category_name" :value="item4.id"></el-option>
  90. </el-select>
  91. </template>
  92. <el-button type="danger" @click="delCategory(index)">删除</el-button>
  93. </div>
  94. <el-button type="primary" @click="addCategory">添加分类</el-button>
  95. </el-form-item>
  96. <el-form-item label="案例描述" prop="desc">
  97. <el-input type="textarea" rows="5" v-model="form.desc" style="width:70%;"></el-input>
  98. </el-form-item>
  99. <el-form-item label="案例介绍" prop="content">
  100. <tinymceee v-model="form.content" style="width:70%"></tinymceee>
  101. </el-form-item>
  102. <el-form-item label="标签" prop="label">
  103. <!-- 回显选择标签-->
  104. <div v-if="form.label">
  105. {{--<el-tag closable :disable-transitions="false" @close="handleClose(tag)">--}}
  106. {{--[[form.label]]--}}
  107. {{--</el-tag>--}}
  108. <el-tag closable :disable-transitions="false" @close="handleClose(index)" v-for="(item,index) in form.label" :key="item.id" >
  109. [[item.label_name]]
  110. </el-tag>
  111. </div>
  112. <el-popover placement="top" width="200" v-model="label_show">
  113. <el-input v-model="label_word" size="mini" placeholder="请输入标签名"></el-input>
  114. <div style="text-align: right; margin: 10px 0">
  115. <el-button size="mini" type="text" @click="label_show = false">取消</el-button>
  116. <el-button type="primary" size="mini" @click="sureAddLabel">确定</el-button>
  117. </div>
  118. <el-button plain type="primary" slot="reference" icon="el-icon-plus" size="small">添加标签</el-button>
  119. </el-popover>
  120. <el-popover placement="right" width="400" v-model="history_show">
  121. <div>
  122. <el-input v-model="label_word1" size="mini" placeholder="请输入标签名" style="width:70%"></el-input>
  123. <el-button type="primary" size="mini" @click="getLabel()">搜索</el-button>
  124. </div>
  125. <div class="label-history" style="min-height:200px;overflow:auto;margin:10px 0;">
  126. <!-- 循环标签 -->
  127. <div style="display:flex;flex-wrap:wrap">
  128. <div v-for="(item,index) in label_list" :key="index" :style="{color:item.label_name==form.label?'#29BA9C':''}" style="margin:5px 10px;font-weight: 400;cursor: pointer;">
  129. <span @click="chooseLabel(item)">
  130. [[item.label_name]]
  131. </span>
  132. <el-button size="mini" type="info" icon="el-icon-delete" circle @click="delLabel(item,index)"></el-button>
  133. </div>
  134. </div>
  135. </div>
  136. <el-row>
  137. <el-col align="right">
  138. <el-pagination layout="prev, pager, next,jumper" @current-change="getLabel" :total="label_total"
  139. :page-size="label_per_page" :current-page="label_current_page" background
  140. ></el-pagination>
  141. </el-col>
  142. </el-row>
  143. <el-button type="text" slot="reference" @click="getLabel()" size="small" style="color:#ff9b19;margin-left:20px">历史标签</el-button>
  144. </el-popover>
  145. </el-form-item>
  146. <el-form-item label="案例所在省市">
  147. <el-select v-model="form.province_id" placeholder="请选择省" clearable @change="changeProvince" style="width:35%">
  148. <el-option v-for="item in province_list" :key="item.id" :label="item.areaname" :value="item.id"></el-option>
  149. </el-select>
  150. <el-select v-model="form.city_id" placeholder="请选择市" clearable style="width:35%">
  151. <el-option v-for="item in city_list" :key="item.id" :label="item.areaname" :value="item.id"></el-option>
  152. </el-select>
  153. </el-form-item>
  154. <el-form-item label="是否启用" prop="is_open">
  155. <el-switch v-model="form.is_open" :active-value="1" :inactive-value="0"></el-switch>
  156. </el-form-item>
  157. <el-form-item label="首页推荐" prop="is_recommend">
  158. <el-switch v-model="form.is_recommend" :active-value="1" :inactive-value="0"></el-switch>
  159. </el-form-item>
  160. <el-form-item label="热门推荐" prop="is_hot">
  161. <el-switch v-model="form.is_hot" :active-value="1" :inactive-value="0"></el-switch>
  162. </el-form-item>
  163. <el-form-item label="案例截图" prop="thumb">
  164. <div class="upload-boxed-list">
  165. <div class="upload-boxed-list-a" style="" v-for="(item,index) in form.screen_shot_src" :key="index">
  166. <img :src="item" alt="" style="width:150px;height:150px;border-radius: 5px;">
  167. <i class="el-icon-close" @click="clearImgList('screen_shot',index)" title="点击清除图片"></i>
  168. </div>
  169. <div class="upload-box" @click="openListUpload('screen_shot')">
  170. <i class="el-icon-plus" style="font-size:32px"></i>
  171. </div>
  172. <!-- <div class="upload-boxed-text">点击重新上传</div> -->
  173. </div>
  174. <div class="tip">建议尺寸: 640*1136px</div>
  175. </el-form-item>
  176. <el-form-item label="PC模板2首页推荐" prop="pc_temp">
  177. <el-switch v-model="form.pc_temp" :active-value="1" :inactive-value="0"></el-switch>
  178. </el-form-item>
  179. <el-form-item label="banner图" prop="" v-if="form.pc_temp">
  180. <div style="flex:1">
  181. <div class="upload-box" @click="openUpload('pc_temp_img')" v-if="!form.pc_temp_img_src">
  182. <i class="el-icon-plus" style="font-size:32px"></i>
  183. </div>
  184. <div @click="openUpload('pc_temp_img')" class="upload-boxed" v-if="form.pc_temp_img_src" style="height:150px">
  185. <img :src="form.pc_temp_img_src" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;">
  186. <i class="el-icon-close" @click.stop="clearImg('pc_temp_img')" title="点击清除图片"></i>
  187. <div class="upload-boxed-text">点击重新上传</div>
  188. </div>
  189. </div>
  190. <div class="tip">建议尺寸: 1200*312<br>在pc端模板2首页显示</div>
  191. </el-form-item>
  192. </div>
  193. </div>
  194. </el-form>
  195. <!-- 分页 -->
  196. <div class="vue-page">
  197. <div class="vue-center">
  198. <el-button type="primary" @click="submitForm('form')">提交</el-button>
  199. <el-button @click="goBack">返回</el-button>
  200. </div>
  201. </div>
  202. <!-- 选择会员 -->
  203. <el-dialog title="选择会员" :visible.sync="member_show" width="60%">
  204. <div>
  205. <el-input v-model="member_keyword" style="width:60%;" placeholder="会员信息"></el-input>
  206. <el-button @click="getMember" >搜索</el-button>
  207. </div>
  208. <el-table :data="member_list" style="width: 100%;height:500px;overflow:auto" v-loading="loading">
  209. <el-table-column label="ID" prop="uid" align="center" width="100px"></el-table-column>
  210. <el-table-column label="会员信息">
  211. <template slot-scope="scope">
  212. <div style="display:flex;align-items: center;">
  213. <div v-if="scope.row.avatar_image" style="width:40px;">
  214. <el-image :src="scope.row.avatar_image" alt="" style="width:40px;height:40px;border-radius:50%"></el-image>
  215. </div>
  216. <div style="flex:1;">【id:[[scope.row.uid]]】[[scope.row.nickname]]</div>
  217. </div>
  218. </template>
  219. </el-table-column>
  220. <el-table-column prop="refund_time" label="操作" align="center" width="320">
  221. <template slot-scope="scope">
  222. <el-button @click="chooseMember(scope.row)">
  223. 选择
  224. </el-button>
  225. </template>
  226. </el-table-column>
  227. </el-table>
  228. <span slot="footer" class="dialog-footer">
  229. <el-button @click="member_show = false">取 消</el-button>
  230. </span>
  231. </el-dialog>
  232. <upload-img :upload-show="uploadShow" :name="chooseImgName" @replace="changeProp" @sure="sureImg"></upload-img>
  233. <upload-img-list :upload-list-show="uploadListShow" :name="chooseImgListName" @replace="changeListProp" @sure="sureImgList"></upload-img-list>
  234. <pop :show="show" @replace="changeLink" @add="parHref"></pop>
  235. <program :pro="pro" @replacepro="changeprogram" @addpro="parpro"></program>
  236. </div>
  237. </div>
  238. <script src="{{resource_get('static/yunshop/tinymce4.7.5/tinymce.min.js')}}"></script>
  239. <!-- <script src="{{resource_get('static/yunshop/tinymceTemplate.js')}}"></script> -->
  240. @include('public.admin.tinymceee')
  241. @include('public.admin.uploadImg')
  242. @include('public.admin.uploadImgList')
  243. @include('public.admin.pop')
  244. @include('public.admin.program')
  245. <script>
  246. var app = new Vue({
  247. el:"#app",
  248. delimiters: ['[[', ']]'],
  249. name: 'test',
  250. data() {
  251. let allCategory = {!! json_encode($allCategory) !!};
  252. let caseData = {!! json_encode($case)?:'{}' !!};
  253. if(caseData==null) {
  254. caseData = {}
  255. }
  256. console.log(caseData);
  257. return{
  258. member_show:false,
  259. label_show:false,
  260. member_keyword:"",
  261. label_word:"",
  262. label_word1:"",
  263. member_list:[],
  264. show:false,//是否开启公众号弹窗
  265. pro:false ,//是否开启小程序弹窗
  266. chooseLink:'',
  267. chooseMiniLink:'',
  268. id:0,
  269. allCategory:allCategory,
  270. province_list:{},
  271. city_list:{},
  272. form:{
  273. id:caseData.id,
  274. case_name:caseData.case_name,
  275. img:caseData.img,
  276. img_src:caseData.img_src,
  277. img_h5:caseData.img_h5,
  278. img_h5_src:caseData.img_h5_src,
  279. img_mini:caseData.img_mini,
  280. img_mini_src:caseData.img_mini_src,
  281. member_id:caseData.member_id,
  282. member:caseData.member,
  283. desc:caseData.desc,
  284. content:caseData.content,
  285. is_open:caseData.is_open,
  286. is_recommend:caseData.is_recommend,
  287. is_hot:caseData.is_hot,
  288. province_id:caseData.province_id,
  289. city_id:caseData.city_id,
  290. screen_shot:caseData.screen_shot,
  291. screen_shot_src:caseData.screen_shot_src,
  292. category:caseData.category,
  293. label:caseData.label,
  294. pc_temp:caseData.pc_temp,
  295. pc_temp_img:caseData.pc_temp_img,
  296. pc_temp_img_src:caseData.pc_temp_img_src,
  297. },
  298. uploadShow:false,
  299. chooseImgName:'',
  300. uploadListShow:false,
  301. chooseImgListName:'',
  302. submit_url:'',
  303. showVisible:false,
  304. areaLoading:false,
  305. history_show:false,
  306. label_list:[],
  307. label_total:0,
  308. label_per_page:0,
  309. label_current_page:0,
  310. loading: false,
  311. uploadImg1:'',
  312. rules:{
  313. // display_order:{ required: true, message: '请输入排序'},
  314. // name:{ required: true, message: '请输入幻灯片标题'},
  315. // thumb:{ required: true, message: '请选择幻灯片图片'},
  316. // link:{ required: true, message: '请选择幻灯片链接'},
  317. // min_link:{ required: true, message: '请选择小程序链接'},
  318. },
  319. }
  320. },
  321. created() {
  322. },
  323. mounted() {
  324. this.initProvince();
  325. this.initCity(this.form.province_id);
  326. },
  327. methods: {
  328. getParam(name) {
  329. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  330. var r = window.location.search.substr(1).match(reg);
  331. if (r != null) return unescape(r[2]);
  332. return null;
  333. },
  334. goParent(level) {
  335. if(level==1) {
  336. window.location.href = `{!! yzWebFullUrl('plugin.case-library.admin.set.basic') !!}`;
  337. }
  338. else if(level==2) {
  339. window.location.href = ``;
  340. }
  341. else if(level==3) {
  342. window.location.href = ``;
  343. }
  344. },
  345. openMember(type) {
  346. this.member_show = true;
  347. this.choose_member_type = type;
  348. },
  349. getMember(){
  350. this.$http.post("{!! yzWebUrl('plugin.case-library.admin.case.get-member') !!}",{member :this.member_keyword}).then(response => {
  351. if (response.data.result) {
  352. this.member_list=response.data.data
  353. }else{
  354. this.$message({type: 'error',message: response.data.msg});
  355. }
  356. }, response => {
  357. this.$message({type: 'error',message: response.data.msg});
  358. console.log(response);
  359. });
  360. },
  361. chooseMember(row) {
  362. let that = this;
  363. if(this.choose_member_type !="salers") {
  364. if(this.choose_member_type == "boss_uid") {
  365. this.choosed_boss = row;
  366. }
  367. else if(this.choose_member_type == "uid") {
  368. this.choosed_store = row;
  369. }
  370. this.form[this.choose_member_type] = row.uid;
  371. this.form.member['nickname'] = row.nickname;
  372. this.form.member['avatar'] = row.avatar;
  373. this.member_show = false;
  374. console.log(this.form)
  375. }
  376. // 多选
  377. else {
  378. for(let i in this.form.salers) {
  379. if(row.uid == i) {
  380. this.$message.error("该会员已选择,请勿重复选择!");
  381. return;
  382. }
  383. }
  384. that.form.salers[row.uid] = row;
  385. console.log(this.form.salers)
  386. }
  387. },
  388. clearMember(type) {
  389. if(this.choose_member_type == "boss_uid") {
  390. this.choosed_boss = {};
  391. }
  392. else if(this.choose_member_type == "uid") {
  393. this.choosed_store = {};
  394. }
  395. this.form[type] = "";
  396. this.$forceUpdate();
  397. },
  398. submitForm(formName) {
  399. let json = {
  400. case:{
  401. case_name:this.form.case_name,
  402. img:this.form.img,
  403. img_mini:this.form.img_mini,
  404. img_h5:this.form.img_h5,
  405. member_id:this.form.member_id,
  406. desc:this.form.desc,
  407. content:this.form.content,
  408. is_open:this.form.is_open || 0,
  409. is_recommend:this.form.is_recommend || 0,
  410. is_hot:this.form.is_hot || 0,
  411. province_id:this.form.province_id,
  412. city_id:this.form.city_id,
  413. screen_shot:this.form.screen_shot,
  414. pc_temp:this.form.pc_temp,
  415. pc_temp_img:this.form.pc_temp_img,
  416. },
  417. label:[],
  418. category:[]
  419. };
  420. if(this.form.id) {
  421. json.id = this.form.id
  422. }
  423. this.form.label.forEach((item,index) => {
  424. json.label.push(item.id);
  425. });
  426. this.form.category.forEach((item,index) => {
  427. json.category.push({category_first:item.category_first,category_second:item.category_second});
  428. });
  429. this.$refs[formName].validate((valid) => {
  430. if (valid) {
  431. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  432. this.$http.post('{!! yzWebFullUrl('plugin.case-library.admin.case.case-edit') !!}',json).then(response => {
  433. if (response.data.result) {
  434. this.$message({type: 'success',message: '操作成功!'});
  435. // this.goBack();
  436. } else {
  437. this.$message({message: response.data.msg,type: 'error'});
  438. }
  439. loading.close();
  440. },response => {
  441. loading.close();
  442. });
  443. }
  444. else {
  445. console.log('error submit!!');
  446. return false;
  447. }
  448. });
  449. },
  450. goBack() {
  451. history.go(-1)
  452. },
  453. openUpload(str) {
  454. this.chooseImgName = str;
  455. this.uploadShow = true;
  456. },
  457. changeProp(val) {
  458. if(val == true) {
  459. this.uploadShow = false;
  460. }
  461. else {
  462. this.uploadShow = true;
  463. }
  464. },
  465. sureImg(name,image,image_url) {
  466. this.form[name] = image;
  467. this.form[name+'_src'] = image_url;
  468. },
  469. clearImg(str) {
  470. this.form[str] = "";
  471. this.form[str+'_src'] = "";
  472. this.$forceUpdate();
  473. },
  474. //弹窗显示与隐藏的控制
  475. changeLink(item){
  476. this.show=item;
  477. },
  478. //当前链接的增加
  479. parHref(child,confirm){
  480. this.show=confirm;
  481. // this.form.link=child;
  482. this.form[this.chooseLink] = child;
  483. },
  484. changeprogram(item){
  485. this.pro=item;
  486. },
  487. parpro(child,confirm){
  488. this.pro=confirm;
  489. // this.form.prolink=child;
  490. this.form[this.chooseMiniLink] = child;
  491. },
  492. showLink(type,name) {
  493. if(type=="link") {
  494. this.chooseLink = name;
  495. this.show = true;
  496. }
  497. else {
  498. this.chooseMiniLink = name;
  499. this.pro = true;
  500. }
  501. },
  502. getLabel() {
  503. let url = '{!! yzWebFullUrl('plugin.case-library.admin.case.get-label') !!}';
  504. let loading = this.$loading({target:document.querySelector(".label-history"),background: 'rgba(0, 0, 0, 0)'});
  505. this.$http.post(url,{label_kwd:this.label_word1}).then(function (response) {
  506. if (response.data.result){
  507. console.log(response.data.data);
  508. this.label_list = response.data.data.list.data;
  509. this.label_total = response.data.data.list.total;
  510. this.label_per_page = response.data.data.list.per_page;
  511. this.label_current_page = response.data.data.list.current_page;
  512. }
  513. else {
  514. this.$message({message: response.data.msg,type: 'error'});
  515. }
  516. loading.close();
  517. },function (response) {
  518. this.$message({message: response.data.msg,type: 'error'});
  519. loading.close();
  520. }
  521. );
  522. },
  523. sureAddLabel() {
  524. if(this.label_word == "") {
  525. this.$message.error("请输入标签")
  526. return;
  527. }
  528. this.$http.post('{!! yzWebFullUrl('plugin.case-library.admin.case.add-label') !!}',{label_name:this.label_word}).then(response => {
  529. if (response.data.result) {
  530. this.$message({type: 'success',message: '操作成功!'});
  531. this.form.label.push({id:response.data.data.id,label_name:this.label_word});
  532. } else {
  533. this.$message({message: response.data.msg,type: 'error'});
  534. }
  535. },response => {
  536. });
  537. },
  538. handleClose(index) {
  539. this.form.label.splice(index,1);
  540. },
  541. chooseLabel(item) {
  542. console.log(item);
  543. this.history_show = false;
  544. this.form.label.push({id:item.id,label_name:item.label_name});
  545. },
  546. delLabel(item,index) {
  547. this.$http.post("{!! yzWebFullUrl('plugin.case-library.admin.case.del-label') !!}",{id:item.id}).then(response => {
  548. if (response.data.result) {
  549. this.$message({type: 'success',message: '操作成功!'});
  550. this.label_list.splice(index,1);
  551. let del_index = null;
  552. this.form.label.forEach((item1,index1) => {
  553. if (item1.id == item.id) {
  554. del_index = index1;
  555. }
  556. });
  557. if (del_index != null) {
  558. this.form.label.splice(del_index,1);
  559. }
  560. } else {
  561. this.$message({message: response.data.msg,type: 'error'});
  562. }
  563. },response => {
  564. });
  565. },
  566. initProvince(val) {
  567. // console.log(val);
  568. this.areaLoading = true;
  569. this.$http.get("{!! yzWebUrl('area.list.init', ['area_ids'=>'']) !!}"+val).then(response => {
  570. this.province_list = response.data.data;
  571. this.areaLoading = false;
  572. }, response => {
  573. this.areaLoading = false;
  574. });
  575. },
  576. initCity(val) {
  577. // console.log(val);
  578. this.areaLoading = true;
  579. this.$http.get("{!! yzWebUrl('area.list', ['parent_id'=>'']) !!}"+val).then(response => {
  580. this.city_list = response.data.data;
  581. this.areaLoading = false;
  582. }, response => {
  583. this.areaLoading = false;
  584. });
  585. },
  586. changeProvince(val) {
  587. this.city_list = [];
  588. this.district_list = [];
  589. this.street_list = [];
  590. this.form.city_id = "";
  591. this.areaLoading = true;
  592. let url = "<?php echo yzWebUrl('area.list', ['parent_id'=> '']); ?>" + val;
  593. this.$http.get(url).then(response => {
  594. if (response.data.data.length) {
  595. this.city_list = response.data.data;
  596. } else {
  597. this.city_list = null;
  598. }
  599. this.areaLoading = false;
  600. }, response => {
  601. this.areaLoading = false;
  602. });
  603. },
  604. addCategory(){
  605. this.form.category.push({category_first:"",category_second:""});
  606. },
  607. changeCategory(index) {
  608. this.form.category[index].category_second = "";
  609. },
  610. delCategory(index) {
  611. this.form.category.splice(index,1);
  612. },
  613. openListUpload(str) {
  614. this.chooseImgListName = str;
  615. this.uploadListShow = true;
  616. },
  617. changeListProp(val) {
  618. if(val == true) {
  619. this.uploadListShow = false;
  620. }
  621. else {
  622. this.uploadListShow = true;
  623. }
  624. },
  625. sureImgList(name,image,image_url) {
  626. console.log(name)
  627. console.log(image)
  628. console.log(image_url)
  629. if(!this.form[name] || !this.form[name+'_src']) {
  630. this.form[name] = [];
  631. this.form[name+'_src'] = [];
  632. }
  633. image.forEach((item,index) => {
  634. this.form[name].push(item);
  635. this.form[name+'_src'].push(image_url[index]);
  636. })
  637. console.log(this.form)
  638. },
  639. clearImgList(str,index) {
  640. this.form[str].splice(index,1);
  641. this.form[str+'_src'].splice(index,1);
  642. this.$forceUpdate();
  643. },
  644. },
  645. })
  646. </script>
  647. @endsection