infoVue.blade.php 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738
  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. .right .el-form-item__label {
  8. width:27%!important;
  9. }
  10. .right .el-form-item__content {
  11. margin-left:27%!important;
  12. }
  13. .right2 .el-form-item__label {
  14. width:32%!important;
  15. }
  16. .right2 .el-form-item__content {
  17. margin-left:32%!important;
  18. }
  19. .navbar-absolute {
  20. z-index:99
  21. }
  22. </style>
  23. <div class="all">
  24. <div id="app" v-cloak>
  25. <div class="vue-crumbs">
  26. <a @click="goParent()">文章管理</a>
  27. > {{id?'编辑':'发布'}}文章
  28. </div>
  29. <el-form ref="form" :model="form" :rules="rules" label-width="15%">
  30. <div style="display:flex;width:100%">
  31. <div style="flex:1;">
  32. <div class="vue-head">
  33. <div class="vue-main-title">
  34. <div class="vue-main-title-left"></div>
  35. <div class="vue-main-title-content">基本信息</div>
  36. </div>
  37. <div class="vue-main-form">
  38. <el-form-item label="文章标题" prop="title">
  39. <el-input v-model="form.title" placeholder="请输入文章标题" style="width:70%"></el-input>
  40. </el-form-item>
  41. <el-form-item label="文章类型" prop="type">
  42. <div style="line-height:40px">
  43. <el-radio v-model.number="form.type" :label="0">普通文章</el-radio>
  44. <el-radio v-model.number="form.type" :label="1">音频文章</el-radio>
  45. </div>
  46. </el-form-item>
  47. <el-form-item label="音频链接" prop="audio_link" v-if="form.type">
  48. <el-input v-model="form.audio_link" placeholder="请输入音频链接" style="width:70%"></el-input>
  49. <div class="tip">注:如是音频类型文章则从装修页面可以选择链接的地方选择音频文章入口链接</div>
  50. </el-form-item>
  51. <el-form-item label="发布作者" prop="author">
  52. <el-input v-model="form.author" placeholder="请输入发布作者" style="width:70%"></el-input>
  53. </el-form-item>
  54. </div>
  55. </div>
  56. <div class="vue-head">
  57. <div class="vue-main-title">
  58. <div class="vue-main-title-left"></div>
  59. <div class="vue-main-title-content">文章内容</div>
  60. </div>
  61. <div class="vue-main-form">
  62. <tinymceee v-model="form.content" ref = "tinymceee" :upload_only_text_area="upload_only_text_area"></tinymceee>
  63. </div>
  64. </div>
  65. <div class="vue-head">
  66. <div class="vue-main-title">
  67. <div class="vue-main-title-left"></div>
  68. <div class="vue-main-title-content">SEO/分享设置</div>
  69. </div>
  70. <div class="vue-main-form">
  71. <el-form-item label="文章关键词" prop="keyword">
  72. <el-input v-model="form.keyword" placeholder="请输入文章关键词" style="width:70%"></el-input>
  73. </el-form-item>
  74. <el-form-item label="文章描述" prop="desc">
  75. <el-input v-model="form.desc" placeholder="请输入文章描述" style="width:70%" type="textarea" :rows="5"></el-input>
  76. </el-form-item>
  77. <el-form-item label="文章封面" prop="thumb">
  78. <div class="upload-box" @click="openUpload('thumb')" v-if="!form.thumb_url">
  79. <i class="el-icon-plus" style="font-size:32px"></i>
  80. </div>
  81. <div @click="openUpload('thumb')" class="upload-boxed" v-if="form.thumb_url">
  82. <img :src="form.thumb_url" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;">
  83. <i class="el-icon-close" @click.stop="clearImg('thumb')" title="点击清除图片"></i>
  84. <div class="upload-boxed-text">点击重新上传</div>
  85. </div>
  86. </el-form-item>
  87. <el-form-item label="原文链接(网页)" prop="link">
  88. <el-input v-model="form.link" style="width:70%;" placeholder=" 请选择链接"></el-input>
  89. <el-button @click="showLink('link','link')">选择链接</el-button>
  90. </el-form-item>
  91. <el-form-item label="原文链接(小程序)" prop="small_link">
  92. <el-input v-model="form.small_link" style="width:70%;" placeholder=" 请选择链接"></el-input>
  93. <el-button @click="showLink('mini','small_link')">选择小程序链接</el-button>
  94. </el-form-item>
  95. </div>
  96. </div>
  97. <div class="vue-main">
  98. <div class="vue-main-title">
  99. <div class="vue-main-title-left"></div>
  100. <div class="vue-main-title-content">底部广告设置</div>
  101. </div>
  102. <div class="vue-main-form">
  103. <el-form-item label="是否开启" prop="advs_type">
  104. <div style="line-height:40px">
  105. <el-switch v-model="form.advs_type" :active-value="1" :inactive-value="0"></el-switch>
  106. </div>
  107. </el-form-item>
  108. <el-form-item label="广告标题" prop="advs_title">
  109. <el-input v-model="form.advs_title" placeholder="请输入广告标题" style="width:70%"></el-input>
  110. </el-form-item>
  111. <el-form-item label="广告文字" prop="advs_title_footer">
  112. <el-input v-model="form.advs_title_footer" placeholder="请输入广告文字" style="width:70%" type="textarea" :rows="5"></el-input>
  113. </el-form-item>
  114. <el-form-item label="广告图片" prop="advs_img">
  115. <div class="upload-box" @click="openUpload('advs_img')" v-if="!form.advs_img_url">
  116. <i class="el-icon-plus" style="font-size:32px"></i>
  117. </div>
  118. <div @click="openUpload('advs_img')" class="upload-boxed" v-if="form.advs_img_url">
  119. <img :src="form.advs_img_url" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;">
  120. <i class="el-icon-close" @click.stop="clearImg('advs_img')" title="点击清除图片"></i>
  121. <div class="upload-boxed-text">点击重新上传</div>
  122. </div>
  123. <div class="tip">建议尺寸:380*130</div>
  124. </el-form-item>
  125. <el-form-item label="广告链接(网页)" prop="advs_link">
  126. <el-input v-model="form.advs_link" style="width:70%;" placeholder=" 请选择链接"></el-input>
  127. <el-button @click="showLink('link','advs_link')">选择链接</el-button>
  128. </el-form-item>
  129. <el-form-item label="广告链接(小程序)" prop="min_app_advs_link">
  130. <el-input v-model="form.min_app_advs_link" style="width:70%;" placeholder=" 请选择链接"></el-input>
  131. <el-button @click="showLink('mini','min_app_advs_link')">选择小程序链接</el-button>
  132. </el-form-item>
  133. </div>
  134. </div>
  135. </div>
  136. <div style="width:350px">
  137. <div class="vue-head">
  138. <div class="vue-main-title">
  139. <div class="vue-main-title-left"></div>
  140. <div class="vue-main-title-content">发布</div>
  141. </div>
  142. <div class="vue-main-form">
  143. <div style="width:100%;text-align:center;margin:20px 0">
  144. <el-button type="primary" size="small" @click="submitForm('form')">发布</el-button>
  145. <el-button size="small" @click="goBack">返回列表</el-button>
  146. </div>
  147. <el-form-item label="排序" prop="display_order" class="right">
  148. <el-input v-model="form.display_order" placeholder="请输入排序"></el-input>
  149. </el-form-item>
  150. <el-form-item label="是否开启" prop="state" class="right">
  151. <div style="line-height:40px">
  152. <el-switch v-model="form.state" :active-value="1" :inactive-value="0"></el-switch>
  153. </div>
  154. </el-form-item>
  155. <el-form-item label="文章logo" prop="article_logo" class="right">
  156. <div class="upload-box" @click="openUpload('article_logo')" v-if="!form.article_logo_url" style="width:130px;height:80px">
  157. <i class="el-icon-plus" style="font-size:32px"></i>
  158. </div>
  159. <div @click="openUpload('article_logo')" class="upload-boxed" v-if="form.article_logo_url" style="width:130px;height:80px">
  160. <img :src="form.article_logo_url" alt="" style="width:130px;height:80px;border-radius: 5px;cursor: pointer;">
  161. <div class="upload-boxed-text">点击重新上传</div>
  162. </div>
  163. <div class="tip">建议尺寸:180*64</div>
  164. </el-form-item>
  165. <el-form-item label="页面设置" prop="effective_time" class="right">
  166. <el-checkbox :true-label="1" :false-label="0" v-model="form.no_copy_url">禁止复制链接</el-checkbox><br>
  167. <el-checkbox :true-label="1" :false-label="0" v-model="form.no_share">禁止分享朋友圈</el-checkbox><br>
  168. <el-checkbox :true-label="1" :false-label="0" v-model="form.no_share_to_friend">禁止分享好友</el-checkbox>
  169. </el-form-item>
  170. <el-form-item label="举报按钮" prop="report_enabled" class="right">
  171. <el-radio v-model.number="form.report_enabled" :label="1">模拟举报(使用有风险)</el-radio>
  172. <el-radio v-model.number="form.report_enabled" :label="0">不显示</el-radio>
  173. </el-form-item>
  174. <el-form-item label="虚拟阅读量" prop="virtual_read_num" class="right">
  175. <el-input v-model="form.virtual_read_num" placeholder="请输入虚拟阅读量"></el-input>
  176. </el-form-item>
  177. <el-form-item label="虚拟点赞量" prop="virtual_like_num" class="right">
  178. <el-input v-model="form.virtual_like_num" placeholder="请输入虚拟点赞量"></el-input>
  179. </el-form-item>
  180. <el-form-item label="虚拟发布时间" prop="virtual_created_at" class="right">
  181. <!-- <el-input v-model="form.virtual_created_at" placeholder="请输入虚拟发布时间"></el-input> -->
  182. <el-date-picker
  183. v-model="form.virtual_created_at"
  184. value-format="yyyy-MM-dd HH:mm:ss"
  185. type="datetime"
  186. placeholder="选择日期时间">
  187. </el-date-picker>
  188. </el-form-item>
  189. </div>
  190. </div>
  191. @if($wx_article_is_open == 1)
  192. <div class="vue-head" id="wx_article">
  193. <div class="vue-main-title">
  194. <div class="vue-main-title-left"></div>
  195. <div class="vue-main-title-content">微信文章智能抓取</div>
  196. </div>
  197. <div class="vue-main-form">
  198. <el-form-item label="" prop="" class="right1">
  199. <el-form-item prop="wx_link">
  200. <el-input v-model="wx_link" placeholder="请输入微信图文链接地址" style="width:90%" type="textarea" :rows="5"></el-input>
  201. </el-form-item>
  202. </el-form-item>
  203. <div class="confirm-btn" style=" text-align: center;">
  204. <el-button type="primary" @click="capture">抓取</el-button>
  205. </div>
  206. </div>
  207. </div>
  208. @endif
  209. <div class="vue-head" id="category">
  210. <div class="vue-main-title">
  211. <div class="vue-main-title-left"></div>
  212. <div class="vue-main-title-content">选择分类</div>
  213. </div>
  214. <div class="vue-main-form">
  215. <el-form-item label="" prop="" class="right1">
  216. <el-checkbox-group v-model="form.checklist">
  217. <span v-for="(item,index) in categorys" :key="index" >
  218. <el-radio v-model="form.category_id" :label="item.id">[[item.name]]</el-radio><br>
  219. </span>
  220. </el-checkbox-group>
  221. <div>
  222. <el-link style="color:#29BA9C" :underline="false" @click="openCategory">
  223. <i class="el-icon-plus"></i>添加新分类
  224. </el-link>
  225. </div>
  226. </el-form-item>
  227. <div v-show="is_category">
  228. <el-form-item label="新分类名称" prop="category_name" class="right" size="mini">
  229. <el-input v-model="category_name" placeholder="请输入新分类名称"></el-input>
  230. </el-form-item>
  231. <el-form-item label=""size="mini" class="right">
  232. <el-button size="mini" @click="addCategory">添加分类</el-button>
  233. </el-form-item>
  234. </div>
  235. </div>
  236. </div>
  237. <div class="vue-head">
  238. <div class="vue-main-title">
  239. <div class="vue-main-title-left"></div>
  240. <div class="vue-main-title-content">会员等级浏览权限</div>
  241. </div>
  242. <div class="vue-main-form">
  243. <el-form-item label="" prop="" class="right1">
  244. <el-checkbox v-model="all_level" :true-label="1" :false-label="0" @change="changeLevel('all')">全部会员等级</el-checkbox><br>
  245. <el-checkbox-group v-model="form.show_levels">
  246. <span>
  247. <el-checkbox label="0" @change="changeLevel(0)">普通等级</el-checkbox><br>
  248. </span>
  249. <span v-for="(item,index) in levels" :key="index" >
  250. <el-checkbox :label="String(item.id)" @change="changeLevel(item.id)">[[item.level_name]]</el-checkbox><br>
  251. </span>
  252. </el-checkbox-group>
  253. </el-form-item>
  254. </div>
  255. </div>
  256. <div class="vue-head">
  257. <div class="vue-main-title">
  258. <div class="vue-main-title-left"></div>
  259. <div class="vue-main-title-content">营销设置</div>
  260. </div>
  261. <div class="vue-main-form">
  262. <el-form-item label="奖励方式" prop="reward_mode" class="right2">
  263. <div style="line-height:40px">
  264. <el-radio v-model.number="form.reward_mode" :label="0">按次</el-radio>
  265. <el-radio v-model.number="form.reward_mode" :label="1">按天</el-radio>
  266. </div>
  267. </el-form-item>
  268. <el-form-item label="最高累计奖金" prop="bonus_total" class="right2">
  269. <el-input v-model="form.bonus_total" placeholder="请输入最高累计奖金">
  270. <template slot="append">元</template>
  271. </el-input>
  272. <div class="tip">已奖励:[[bonus_sum||'0']]元</div>
  273. </el-form-item>
  274. <el-form-item label="每人每天奖励" prop="per_person_per_day" class="right2">
  275. <el-input v-model="form.per_person_per_day" placeholder="请输入每人每天奖励">
  276. <template slot="append">次</template>
  277. </el-input>
  278. </el-form-item>
  279. <el-form-item label="每人总共奖励" prop="total_per_person" class="right2">
  280. <el-input v-model="form.total_per_person" placeholder="请输入每人总共奖励">
  281. <template slot="append">次</template>
  282. </el-input>
  283. </el-form-item>
  284. <el-form-item label="分享一次奖励" prop="point" class="right2">
  285. <el-input v-model="form.point" placeholder="请输入分享一次奖励">
  286. <template slot="append">个积分</template>
  287. </el-input>
  288. <div style="margin-top:15px">
  289. <el-input v-model="form.credit" placeholder="请输入分享一次奖励">
  290. <template slot="append">元余额</template>
  291. </el-input>
  292. </div>
  293. </el-form-item>
  294. <div class="tip">奖励规则提示:分享后,好友点击进入后,才算成功分享一次。</div>
  295. <div class="tip">奖励方式:1、按次,一篇文章同一个浏览者只奖励分享者一次积分/余额(只奖励首次浏览)。</div>
  296. <div class="tip">2、按天,一篇文章同一个浏览者每天点击浏览,每天奖励分享者一次积分/余额(只奖励每天首次浏览)。</div>
  297. </div>
  298. </div>
  299. </div>
  300. </div>
  301. </el-form>
  302. <!--end-->
  303. <!-- 分页 -->
  304. <!-- <div class="vue-page">
  305. <div class="vue-center">
  306. <el-button type="primary" @click="submitForm('form')">提交</el-button>
  307. <el-button @click="goBack">返回</el-button>
  308. </div>
  309. </div> -->
  310. <upload-img :upload-show="uploadShow" :name="chooseImgName" @replace="changeProp" @sure="sureImg"></upload-img>
  311. <pop :show="show" @replace="changeLink" @add="parHref"></pop>
  312. <program :pro="pro" @replacepro="changeprogram" @addpro="parpro"></program>
  313. </div>
  314. </div>
  315. <script src="{{resource_get('static/yunshop/tinymce4.7.5/tinymce.min.js')}}"></script>
  316. @include('Yunshop\Article::admin.tinymceee')
  317. @include('public.admin.uploadImg')
  318. @include('public.admin.pop')
  319. @include('public.admin.program')
  320. <script>
  321. let upload_url = `{!! $upload_url?:'' !!}`
  322. let id = {!! $id?:'0' !!}
  323. console.log(id)
  324. var app = new Vue({
  325. el:"#app",
  326. delimiters: ['[[', ']]'],
  327. name: 'test',
  328. data() {
  329. return{
  330. upload_only_text_area:'',
  331. show:false,//是否开启公众号弹窗
  332. pro:false ,//是否开启小程序弹窗
  333. chooseLink:'',
  334. chooseMiniLink:'',
  335. upload_url:upload_url,
  336. bonus_sum:'',//已奖励
  337. wx_link:'',//需要抓取的微信文章链接
  338. form:{
  339. title:'',
  340. type:'',
  341. audio_link:'',
  342. author:'',
  343. content:'',
  344. keyword:'',
  345. desc:'',
  346. thumb:'',
  347. link:'',
  348. small_link:'',
  349. advs_type:'',
  350. advs_title:'',
  351. advs_title_footer:'',
  352. advs_img:'',
  353. advs_link:'',
  354. display_order:'',
  355. state:1,
  356. no_copy_url:0,
  357. no_share:0,
  358. no_share_to_friend:0,
  359. report_enabled:0,
  360. virtual_read_num:'0',
  361. virtual_like_num:'0',
  362. virtual_created_at: this.timeStyle(new Date()),
  363. category_id:'',
  364. show_levels:[],
  365. reward_mode:0,
  366. bonus_total:'0',
  367. per_person_per_day:'0',
  368. total_per_person:'0',
  369. point:'0',
  370. credit:'0',
  371. min_app_advs_link:'',
  372. article_logo:'',
  373. },
  374. all_level:1,
  375. categorys:[],
  376. levels:[],
  377. is_category:false,
  378. category_name:'',
  379. id:id,
  380. submit_url:'',
  381. uploadShow:false,
  382. chooseImgName:'',
  383. chooseIndex:-1,
  384. type:0,
  385. goods_show:false,
  386. goods_list:[],
  387. search_goods:{},
  388. choosed_goods:{},
  389. choosed_goods_id:'',
  390. goods_total:1,
  391. goods_current_page:1,
  392. goods_per_page:1,
  393. rules:{
  394. name:{ required: true, message: '请输入品牌名称'}
  395. },
  396. }
  397. },
  398. created() {
  399. if(this.id) {
  400. this.submit_url = "{!! yzWebFullUrl('plugin.article.manager.article-vue.edit') !!}"
  401. }
  402. else {
  403. this.submit_url = "{!! yzWebFullUrl('plugin.article.manager.article-vue.add') !!}"
  404. }
  405. this.getData();
  406. },
  407. mounted() {
  408. },
  409. methods: {
  410. //抓取微信文章内容
  411. capture(){
  412. if(!this.wx_link) {
  413. this.$message({type: 'error',message: '抓取链接不能为空!'});
  414. return
  415. }
  416. // "http://mp.weixin.qq.com/s?__biz=MjM5NDAwMTA2MA==&mid=2695729619&idx=1&sn=8be0b6bd0210cee0d492ebdf20f7371f&chksm=83d74818b4a0c10ef286b33bb7deb73226125f866ddb5b2781166066a69afef3705eabdb3b85#rd
  417. let loading = this.$loading({target:document.querySelector("#goods-list"),background: 'rgba(0, 0, 0, 0)'});
  418. this.$http.post("{!! yzWebFullUrl('plugin.wx-article.api.wx-article.get-wx-article') !!}",{wx_link:this.wx_link}).then(response => {
  419. var data = response.data;
  420. if (data.code == 1) {
  421. this.$message({message: data.msg,type: 'error'});
  422. } else {
  423. app.$refs.tinymceee.hasChange = false;//让其监听改变回显
  424. this.form.content += data.data.content_html;tinymceee.value = data.data.content_html;
  425. this.$message({type: 'success',message: data.msg});
  426. }
  427. loading.close();
  428. },response => {
  429. loading.close();
  430. });
  431. },
  432. getData() {
  433. let json = {}
  434. if(this.id) {
  435. json.id = this.id
  436. }
  437. let loading = this.$loading({target:document.querySelector("#goods-list"),background: 'rgba(0, 0, 0, 0)'});
  438. this.$http.post(this.submit_url,json).then(response => {
  439. if(response.data.result == 1) {
  440. if (response.data.result) {
  441. this.categorys = response.data.data.categorys;
  442. this.levels = response.data.data.levels;
  443. if(this.id) {
  444. this.form = response.data.data.article
  445. }
  446. if(this.form.show_levels=='' || this.form.show_levels.length==0) {
  447. this.all_level = 1;
  448. this.form.show_levels = []
  449. }
  450. else {
  451. this.all_level = 0;
  452. }
  453. } else {
  454. this.$message({message: response.data.msg,type: 'error'});
  455. }
  456. }
  457. else {
  458. this.$message.error(response.data.msg)
  459. }
  460. loading.close();
  461. }, response => {
  462. console.log(response);
  463. loading.close();
  464. });
  465. },
  466. openUpload(str,index,type) {
  467. this.chooseImgName = str;
  468. this.uploadShow = true;
  469. this.chooseIndex = index;
  470. this.type = type;
  471. },
  472. changeProp(val) {
  473. if(val == true) {
  474. this.uploadShow = false;
  475. }
  476. else {
  477. this.uploadShow = true;
  478. }
  479. },
  480. sureImg(name,image,img_url) {
  481. if(this.type==1) {
  482. this.form[name][this.chooseIndex]['img_url'] = image;
  483. this.form[name][this.chooseIndex]['full_img_url'] = img_url;
  484. }
  485. else {
  486. this.form[name] = image;
  487. this.form[name+'_url'] = img_url;
  488. }
  489. },
  490. clearImg(str,index,type) {
  491. if(!type) {
  492. this.form[str] = "";
  493. this.form[str+'_url'] = "";
  494. }
  495. else if(type==1){
  496. this.form[str][index].full_img_url = '';
  497. this.form[str][index].img_url = '';
  498. }
  499. this.$forceUpdate();
  500. },
  501. submitForm(formName) {
  502. console.log(this.form)
  503. let json = {
  504. title:this.form.title,
  505. type:this.form.type,
  506. audio_link:this.form.audio_link,
  507. author:this.form.author,
  508. content:this.form.content,
  509. keyword:this.form.keyword,
  510. desc:this.form.desc,
  511. thumb:this.form.thumb,
  512. link:this.form.link,
  513. small_link:this.form.small_link,
  514. advs_type:this.form.advs_type,
  515. advs_title:this.form.advs_title,
  516. advs_title_footer:this.form.advs_title_footer,
  517. advs_img:this.form.advs_img,
  518. advs_link:this.form.advs_link,
  519. display_order:this.form.display_order,
  520. state:this.form.state,
  521. no_copy_url:this.form.no_copy_url,
  522. no_share:this.form.no_share,
  523. no_share_to_friend:this.form.no_share_to_friend,
  524. report_enabled:this.form.report_enabled,
  525. virtual_read_num:this.form.virtual_read_num,
  526. virtual_like_num:this.form.virtual_like_num,
  527. virtual_created_at:this.form.virtual_created_at,
  528. category_id:this.form.category_id,
  529. reward_mode:this.form.reward_mode,
  530. bonus_total:this.form.bonus_total,
  531. per_person_per_day:this.form.per_person_per_day,
  532. total_per_person:this.form.total_per_person,
  533. point:this.form.point,
  534. credit:this.form.credit,
  535. min_app_advs_link:this.form.min_app_advs_link,
  536. article_logo:this.form.article_logo,
  537. };
  538. if(this.all_level) {
  539. json.show_levels = []
  540. }
  541. if(this.form.show_levels.length>=0) {
  542. json.show_levels = this.form.show_levels
  543. }
  544. let json1 = {
  545. article:json
  546. }
  547. if(this.id) {
  548. json1.id = this.id
  549. }
  550. this.$refs[formName].validate((valid) => {
  551. if (valid) {
  552. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  553. this.$http.post(this.submit_url,json1).then(response => {
  554. if (response.data.result) {
  555. this.$message({type: 'success',message: '操作成功!'});
  556. this.goBack();
  557. } else {
  558. this.$message({message: response.data.msg,type: 'error'});
  559. }
  560. loading.close();
  561. },response => {
  562. loading.close();
  563. });
  564. }
  565. else {
  566. console.log('error submit!!');
  567. return false;
  568. }
  569. });
  570. },
  571. openCategory() {
  572. this.is_category = true;
  573. this.category_name = '';
  574. },
  575. addCategory() {
  576. if(!this.category_name) {
  577. this.$message({type: 'error',message: '分类名不能为空!'});
  578. return
  579. }
  580. let loading = this.$loading({target:document.querySelector("#category"),background: 'rgba(0, 0, 0, 0)'});
  581. this.$http.post("{!! yzWebFullUrl('plugin.article.manager.article-vue.add-category') !!}",{name:this.category_name}).then(response => {
  582. if (response.data.result) {
  583. this.$message({type: 'success',message: '添加成功!'});
  584. this.is_category = false;
  585. this.categorys = response.data.data
  586. } else {
  587. this.$message({message: response.data.msg,type: 'error'});
  588. }
  589. loading.close();
  590. },response => {
  591. loading.close();
  592. });
  593. },
  594. changeLevel(val) {
  595. console.log(val);
  596. if(val=='all') {
  597. this.form.show_levels = []
  598. }
  599. else {
  600. if(this.form.show_levels.length>0) {
  601. this.all_level = 0;
  602. }
  603. }
  604. },
  605. isNumber(index,type,key) {
  606. console.log(this.form[key][index][type])
  607. if(type=='quantity'){
  608. this.form[key][index][type] = this.form[key][index][type].replace(/[^\d]/g,'')
  609. }
  610. else if(type=='single_consumption'){
  611. this.form[key][index][type] = this.form[key][index][type].replace(/[^\d]/g,'')
  612. }
  613. else if(type=='price') {
  614. this.form[key][index][type] = this.form[key][index][type].replace(/[^\d.]/g,'')
  615. this.form[key][index][type] = this.form[key][index][type].replace(/\.{2,}/g, ".");
  616. this.form[key][index][type] = this.form[key][index][type].replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
  617. }
  618. },
  619. // 字符转义
  620. escapeHTML(a) {
  621. a = "" + a;
  622. return a.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&apos;/g, "'");;
  623. },
  624. goBack() {
  625. history.go(-1)
  626. },
  627. goParent() {
  628. window.location.href = `{!! yzWebFullUrl('plugin.article.manager.article.index') !!}`;
  629. },
  630. //弹窗显示与隐藏的控制
  631. changeLink(item){
  632. this.show=item;
  633. },
  634. //当前链接的增加
  635. parHref(child,confirm){
  636. this.show=confirm;
  637. // this.form.link=child;
  638. let arr = []
  639. if(this.chooseLink.indexOf(".") != -1) {
  640. arr = this.chooseLink.split(".")
  641. this.form[arr[0]][arr[1]] = child;
  642. }
  643. else {
  644. this.form[this.chooseLink] = child;
  645. }
  646. },
  647. changeprogram(item){
  648. this.pro=item;
  649. },
  650. parpro(child,confirm){
  651. this.pro=confirm;
  652. // this.form.prolink=child;
  653. let arr = []
  654. if(this.chooseMiniLink.indexOf(".") != -1) {
  655. arr = this.chooseMiniLink.split(".")
  656. this.form[arr[0]][arr[1]] = child;
  657. }
  658. else {
  659. this.form[this.chooseMiniLink] = child;
  660. }
  661. },
  662. showLink(type,name) {
  663. if(type=="link") {
  664. this.chooseLink = name;
  665. this.show = true;
  666. }
  667. else {
  668. this.chooseMiniLink = name;
  669. this.pro = true;
  670. }
  671. },
  672. timeStyle(time) {
  673. let time1 = new Date(time);
  674. let y = time1.getFullYear();
  675. let m = time1.getMonth()+1;
  676. let d = time1.getDate();
  677. let h = time1.getHours();
  678. let mm = time1.getMinutes();
  679. let s = time1.getSeconds();
  680. return y+'-'+this.add0(m)+'-'+this.add0(d)+' '+this.add0(h)+':'+this.add0(mm)+':'+this.add0(s);
  681. },
  682. add0(m) {
  683. return m<10?'0'+m:m
  684. },
  685. },
  686. })
  687. </script>
  688. @endsection