detail.blade.php 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. @extends('layouts.base')
  2. @section('title', '广告详情页')
  3. @section('content')
  4. <style>
  5. /* #app{padding-top:20px;} */
  6. .choosed{background:#ecf5ff;border-radius: 4px;border:1px #d9ecff solid}
  7. .innerbox::-webkit-scrollbar {/*滚动条整体样式*/
  8. width: 2px; /*高宽分别对应横竖滚动条的尺寸*/
  9. height: 4px;
  10. }
  11. .innerbox::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
  12. border-radius: 5px;
  13. -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
  14. background: rgba(0,0,0,0.1);
  15. }
  16. .innerbox::-webkit-scrollbar-track {/*滚动条里面轨道*/
  17. -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
  18. border-radius: 0;
  19. background: rgba(0,0,0,0.05);
  20. }
  21. /* 上传图片 */
  22. .avatar-uploader .el-upload {margin-top:15px;border: 1px dashed #d9d9d9;border-radius: 6px;cursor: pointer;position: relative;overflow: hidden;}
  23. .avatar-uploader .el-upload:hover {border-color: #409EFF;}
  24. .avatar-uploader-icon {font-size: 28px;color: #8c939d;width: 178px;height: 178px;line-height: 178px;text-align: center;}
  25. .avatar {width: 178px;height: 178px;display: block;}
  26. .el-upload-tip{width:178px;margin:0;padding:0;color:#999;text-align:center;}
  27. input[type=file] {display: none;}
  28. .avatar-uploader-box{position:relative;width:200px;}
  29. .el-icon-circle-close{position:absolute;top:10px;right:0;color:#999;}
  30. .avatar-uploader-box{position:relative;width:200px;display: inline-block;margin-bottom: 10px;}
  31. .avatar-uploader-box1{position:relative;width:200px;margin-bottom: 10px;}
  32. .el-icon-circle-close{position:absolute;top:0px;right:10px;color:#999;}
  33. .el-breadcrumb{padding:30px 0;font-size:16px;}
  34. </style>
  35. <div id="app">
  36. <el-breadcrumb separator-class="el-icon-arrow-right">
  37. <el-breadcrumb-item><a href="{{ yzWebFullUrl('plugin.advert-market.admin.advert.manage.index') }}">广告管理</a></el-breadcrumb-item>
  38. <el-breadcrumb-item>添加修改</el-breadcrumb-item>
  39. </el-breadcrumb>
  40. <el-form ref="form" :rules="rules" :model="form" label-width="17%">
  41. <el-form-item label="广告ID" v-if="id">
  42. <div>[[ id ]]</div>
  43. </el-form-item>
  44. <el-form-item label="广告名称">
  45. <el-input placeholder="广告名称" v-model="form.advert_name" style="width:70%;"></el-input>
  46. </el-form-item>
  47. <el-form-item label="广告主">
  48. <el-input placeholder="广告主" v-model="member_text" style="width:70%;" :disabled="true"></el-input>
  49. <el-button @click="memberDialog = true">选择</el-button>
  50. <div class="avatar-uploader-box1">
  51. <img v-if="member.member&&member.member.avatar_image" :src="member.member.avatar_image" class="avatar" />
  52. </div>
  53. </el-form-item>
  54. <el-form-item label="广告状态">
  55. <el-radio v-model.number="form.status" :label='1'>开启</el-radio>
  56. <el-radio v-model.number="form.status" :label='0'>关闭</el-radio>
  57. </el-form-item>
  58. <el-form-item label="广告类型">
  59. <el-radio-group v-model.number="form.advert_type" @change="typeChange">
  60. <el-radio :label='1'>图片</el-radio>
  61. <el-radio :label='2'>视频</el-radio>
  62. </el-radio-group>
  63. </el-form-item>
  64. <el-form-item label="素材" prop="thumb">
  65. <el-input v-model="form.advert_img" style="width:70%" disabled></el-input>
  66. <el-button type="primary" @click="openUpload('advert_img')">点击上传</el-button>
  67. <div class="avatar-uploader-box1">
  68. <img v-if="form.advert_img && form.advert_type==1" :src="form.advert_img" class="avatar" />
  69. <video v-if="form.advert_img && form.advert_type==2" :src="form.advert_img" class="avatar"></video>
  70. <div slot="tip" class="el-upload-tip">
  71. </div>
  72. <i v-show="form.advert_img" class="el-icon-circle-close" @click="clearImg('advert_img')" title="点击清除图片"></i>
  73. </div>
  74. </el-form-item>
  75. <!-- <el-form-item label="素材">
  76. <el-input placeholder="素材" style="width:70%;" :disabled="true"></el-input>
  77. <el-button>选择图片</el-button>
  78. </el-form-item> -->
  79. <el-form-item label="广告预算(元)">
  80. <el-input placeholder="广告预算" v-model="form.advert_budget" style="width:70%;">
  81. <template slot="append">元</template>
  82. </el-input>
  83. </el-form-item>
  84. <el-form-item label="已使用(元)" v-if="id">
  85. <div>[[ used_amount ]]</div>
  86. </el-form-item>
  87. <el-form-item label="剩余预算(元)" v-if="id">
  88. <div>[[ surplus_amount ]]</div>
  89. </el-form-item>
  90. <el-form-item label="投放广告类型">
  91. <el-checkbox-group v-model="form.advert_code">
  92. <el-checkbox :label="1">待机广告</el-checkbox>
  93. <el-checkbox :label="2">支付广告</el-checkbox>
  94. </el-checkbox-group>
  95. </el-form-item>
  96. <el-form-item label="待机广告单价">
  97. <el-input placeholder="待机广告单价" v-model="form.await_amount" style="width:70%;">
  98. <template slot="append">元/分钟</template>
  99. </el-input>
  100. </el-form-item>
  101. <el-form-item label="支付广告单价">
  102. <el-input placeholder="支付广告单价" v-model="form.payment_amount" style="width:70%;">
  103. <template slot="append">元/次</template>
  104. </el-input>
  105. </el-form-item>
  106. <el-form-item label="投放区域">
  107. <el-tag
  108. v-for="(item,index) in real_choose_area"
  109. :key="index">
  110. [[item.areaname]]
  111. </el-tag>
  112. <el-button @click="openAreas" size="mini">编辑</el-button>
  113. </el-form-item>
  114. <el-form-item label="投放门店分类">
  115. <el-select v-model="form.store_category" multiple filterable placeholder="请选择" style="width:70%">
  116. <el-option
  117. v-for="item in category_list"
  118. :key="item.id"
  119. :label="item.name"
  120. :value="item.id">
  121. </el-option>
  122. </el-select>
  123. </el-form-item>
  124. <el-form-item>
  125. <el-button type="success" @click.native.prevent="onSubmit" v-loading="formLoading">提交
  126. </el-button>
  127. </el-form-item>
  128. </el-form>
  129. <el-dialog
  130. title="请选择地区"
  131. :visible.sync="centerDialogVisible1"
  132. center>
  133. <div>
  134. 已选择区域:<br>
  135. <el-tag
  136. v-for="item in choose_area"
  137. :key="item.id">
  138. [[item.areaname]]
  139. </el-tag>
  140. </div>
  141. <div style="height:500px;overflow-y:auto">
  142. <div style="display:flex">
  143. <div style="flex:1;padding-right:15px;">
  144. <div style="text-align:center;font-weight:700;font-size:15px;">请选择省份</div>
  145. <div style="height:480px;overflow:auto;" class="innerbox">
  146. <div v-for="(item,index) in list1" :key="index">
  147. <div style="font-weight:600;cursor:pointer;padding-left: 10px;line-height:32px;font-weight:600" :class="item.id==choose_pro_id?'choosed':''" @click="choosePro(item)">
  148. [[item.areaname]]
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. <div style="flex:1;padding-right: 15px;">
  154. <div style="text-align:center;font-weight:700;font-size:15px;">请选择城市</div>
  155. <div style="height:480px;overflow:auto;" class="innerbox">
  156. <div v-for="(item,index) in list2" :key="index" >
  157. <div style="font-weight:600;cursor:pointer;padding-left: 10px;line-height:32px;font-weight:600" :class="item.id==choose_city_id?'choosed':''" @click="chooseCity(item)">
  158. [[item.areaname]]
  159. </div>
  160. </div>
  161. </div>
  162. </div>
  163. <div style="flex:1;padding-right: 15px;">
  164. <div style="text-align:center;font-weight:700;font-size:15px;">请选择区域</div>
  165. <div>
  166. <el-button size="mini" type="primary" v-if="list3.length>0" @click="allChoose">[[all_choose%2==0?'全选':'全不选']]</el-button>
  167. <div style="height:480px;overflow:auto;" class="innerbox">
  168. <div v-for="(item,index) in list3" :key="index" >
  169. <div style="font-weight:600;cursor:pointer;padding-left: 10px;line-height:32px;font-weight:600" :class="item.checked==1?'choosed':''" @click="chooseArea(item,index)">
  170. [[item.areaname]]
  171. </div>
  172. </div>
  173. </div>
  174. <!-- <el-checkbox-group v-model="choose_area" @change="change1">
  175. <el-checkbox v-for="(item,index) in list3" :label="item.id" :key="item.id" :value="item.id">[[item.areaname]]</el-checkbox>
  176. </el-checkbox-group> -->
  177. </div>
  178. </div>
  179. </div>
  180. </div>
  181. <span slot="footer" class="dialog-footer">
  182. <el-button @click="centerDialogVisible1 = false">取 消</el-button>
  183. <el-button type="primary" @click="sureAreas">确 定</el-button>
  184. </span>
  185. </el-dialog>
  186. <!--弹框上传图片-->
  187. <el-dialog :visible.sync="centerDialogVisible" width="65%" center>
  188. <el-tabs v-model="activeName2" type="card">
  189. <el-tab-pane :label="form.advert_type==1?'上传图片':'上传视频'" name="first">
  190. <div
  191. style="text-align: center"
  192. class="submit_Img"
  193. v-loading="submit_loading"
  194. >
  195. <el-upload
  196. class="avatar-uploader"
  197. action="{{ yzWebFullUrl('plugin.advert-market.admin.upload.upload') }}"
  198. :accept="form.advert_type==1?'image/*':'video/mp4'"
  199. :show-file-list="false"
  200. :on-success="uploadSuccess"
  201. :before-upload="beforeUpload"
  202. >
  203. <div class="avatar_box" v-if="uploadImg">
  204. <img :src="uploadImg" class="avatar" v-if="form.advert_type==1" />
  205. <video :src="uploadImg" class="avatar" v-if="form.advert_type==2"></video>
  206. </div>
  207. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  208. </el-upload>
  209. </div>
  210. </el-tab-pane>
  211. <el-tab-pane :label="form.advert_type==1?'提取网络图片':'提取网络视频'" name="second">
  212. <el-input
  213. v-model="uploadImg"
  214. :placeholder="form.advert_type==1?'请输入网络图片地址':'请输入网络视频地址'"
  215. style="width:90%"
  216. ></el-input>
  217. <!-- <el-button @click="transform(uploadImg)" v-loading="submit_loading">转换</el-button> -->
  218. </el-tab-pane>
  219. <el-tab-pane :label="form.advert_type==1?'浏览图片':'浏览视频'" name="third">
  220. <div>
  221. <el-radio-group v-model="radio1" size="medium" @change="chooseYear">
  222. <el-radio-button label="不限"></el-radio-button>
  223. <el-radio-button label="2019">2019年</el-radio-button>
  224. <el-radio-button label="2018">2018年</el-radio-button>
  225. <el-radio-button label="2017">2017年</el-radio-button>
  226. <el-radio-button label="2016">2016年</el-radio-button>
  227. </el-radio-group>
  228. </div>
  229. <div style="margin-top: 10px;">
  230. <el-radio-group v-model="radio2" size="small" @change="chooseMonth">
  231. <el-radio-button label="不限"></el-radio-button>
  232. <el-radio-button label="1">1月</el-radio-button>
  233. <el-radio-button label="2">2月</el-radio-button>
  234. <el-radio-button label="3">3月</el-radio-button>
  235. <el-radio-button label="4">4月</el-radio-button>
  236. <el-radio-button label="5">5月</el-radio-button>
  237. <el-radio-button label="6">6月</el-radio-button>
  238. <el-radio-button label="7">7月</el-radio-button>
  239. <el-radio-button label="8">8月</el-radio-button>
  240. <el-radio-button label="9">9月</el-radio-button>
  241. <el-radio-button label="10">10月</el-radio-button>
  242. <el-radio-button label="11">11月</el-radio-button>
  243. <el-radio-button label="12">12月</el-radio-button>
  244. </el-radio-group>
  245. </div>
  246. <div id="upload-img" class="imgList" v-loading="submit_loading">
  247. <div class="avatar-uploader-box" v-for="img in ImgList" v-if="img.upload_type=='img' && form.advert_type==1">
  248. <div>
  249. <img
  250. @click="chooseTheImg(img.thumb_url)"
  251. :src="img.thumb_url"
  252. class="avatar"
  253. />
  254. <i
  255. class="el-icon-circle-close"
  256. @click="deleteImg(img.id)"
  257. title="点击清除图片"
  258. ></i>
  259. </div>
  260. </div>
  261. <div class="avatar-uploader-box" v-for="img in ImgList" v-if="img.upload_type=='video' && form.advert_type==2">
  262. <div>
  263. <video
  264. @click="chooseTheImg(img.thumb_url)"
  265. :src="img.thumb_url"
  266. class="avatar"
  267. ></video>
  268. <i
  269. class="el-icon-circle-close"
  270. @click="deleteImg(img.id)"
  271. title="点击清除图片"
  272. ></i>
  273. </div>
  274. </div>
  275. </div>
  276. <el-pagination
  277. style="margin-top: 10px;text-align: right"
  278. background
  279. @current-change="currentChange"
  280. :page-size="pageSize"
  281. :current-page.sync="current_page"
  282. :total="total"
  283. layout="prev, pager, next"
  284. >
  285. </el-pagination>
  286. </el-tab-pane>
  287. </el-tabs>
  288. <span slot="footer" class="dialog-footer">
  289. <el-button @click="centerDialogVisible = false">取 消</el-button>
  290. <el-button type="primary" @click="sureImg">确 定 </el-button>
  291. </span>
  292. </el-dialog>
  293. <!--end-->
  294. <!--弹框选择会员-->
  295. <el-dialog :visible.sync="memberDialog" title="选择会员">
  296. <div>
  297. <el-input v-model="keyword" style="width:70%"></el-input>
  298. <el-button @click="searchMember">搜索</el-button>
  299. <el-table :data="member_list">
  300. <el-table-column align="center" align="center" prop="id" label="会员头像">
  301. <template slot-scope="scope">
  302. <img v-if="scope.row.member.avatar_image" :src="scope.row.member.avatar_image" alt="" style="width:40px;height:40px;">
  303. </template>
  304. </el-table-column>
  305. <el-table-column align="center" label="会员名称" prop="member.nickname" label=""></el-table-column>
  306. <el-table-column align="center" label="手机号码" prop="member.mobile" label=""></el-table-column>
  307. <el-table-column align="center" label="操作">
  308. <template slot-scope="scope">
  309. <el-button size="mini" @click="chooseMember(scope.row)">选择</el-button>
  310. </template>
  311. </el-table-column>
  312. </el-table>
  313. </div>
  314. <span slot="footer" class="dialog-footer">
  315. <el-button @click="memberDialog = false">取 消</el-button>
  316. <!-- <el-button type="primary" @click="sureMember">确 定 </el-button> -->
  317. </span>
  318. </el-dialog>
  319. <!--end-->
  320. </div>
  321. <script>
  322. var app = new Vue({
  323. el: '#app',
  324. delimiters: ['[[', ']]'],
  325. data() {
  326. // 门店分类 id 门店分类id name 门店分类名称
  327. let storeCategory = {!! $store_category?:'[]' !!};
  328. // let setting = {!! $setting?:'{}' !!};
  329. // 广告信息 添加时为空 就是你说的setting
  330. let advert = JSON.parse('{!! $advert !!}');
  331. // 已使用
  332. let used_amount = JSON.parse('{!! $used_amount?:0 !!}');
  333. // 剩余预算
  334. let surplus_amount = JSON.parse('{!! $surplus_amount?:0 !!}');
  335. console.log(storeCategory)
  336. // console.log(setting)
  337. console.log(advert)
  338. // 上传图片或视频 plugin.advert-market.admin.upload.upload
  339. // 上传历史 plugin.advert-market.admin.upload.getLocalList
  340. // 删除图片或视频 plugin.advert-market.admin.upload.delLocal
  341. // 我看拓客活动的提取网络图片没有相关操作,直接把网络图片的地址传给后台保存了.
  342. // 搜索会员 参数:keyword plugin.advert-market.admin.member.query.index
  343. // 上传视频的没弄好,上面的能用就用,不能用再说, 还有一个问题. 地址的不用vue能实现么,上传视频什么的微擎有写好的,直接就能用. 要不然全都要自己再写一遍,麻烦是小事,关键是不一定能弄出来 555
  344. // form [
  345. // am_id 广告主id
  346. // advert_name 广告名称
  347. // advert_type 广告类型,1图片,2视频
  348. // advert_code 广告类型,1待机,2支付 数组[1,2]
  349. // advert_img 广告图片视频
  350. // advert_budget 广告预算
  351. // await_amount 待机广告单价
  352. // payment_amount 支付广告单价
  353. // status 广告状态 0 关闭 1开启
  354. // store_category 投放门店分类 单个,不是数组不是多选
  355. // districts 投放区域 数组
  356. // ]
  357. let form = advert?advert:{};
  358. let id = form.id?form.id:0;
  359. let arr = [];
  360. let arr2 = [];
  361. if(id!=0) {
  362. form.store_category.forEach((item,index) => {
  363. arr.push(item.category_id)
  364. })
  365. form.districts.forEach((item,index) => {
  366. arr2.push(item.address)
  367. })
  368. }
  369. form.store_category = arr;
  370. form.districts = arr2;
  371. console.log(form);
  372. console.log(123123123123123);
  373. let member_text = form.id? `[uid:`+form.advert_member.member.uid+`] 会员名字:`+form.advert_member.member.nickname+``:'';
  374. let member = form.id? form.advert_member:{};
  375. return {
  376. id:id,
  377. keyword:'',
  378. memberDialog:false,
  379. member:member,
  380. member_text:member_text,
  381. member_list:[],
  382. category_list:storeCategory,
  383. form: {
  384. advert_type:1,
  385. advert_code:[],
  386. store_category:[],
  387. districts:[],
  388. ...form
  389. },
  390. used_amount:used_amount,
  391. surplus_amount:surplus_amount,
  392. ImgList: [],
  393. activeName2: "first",
  394. uploadImg: "",
  395. chooseImg: "",
  396. radio1: "不限", //年
  397. radio2: "不限", //月
  398. loading : false,
  399. submit_loading : false,
  400. pageSize: 0,
  401. current_page: 0,
  402. total: 0,
  403. formLoading: false,
  404. centerDialogVisible: false,
  405. treeData: [],
  406. rules: {
  407. },
  408. centerDialogVisible1:false,//弹出框控制
  409. list1:[],//省份列表
  410. choose_pro_id:'',//选中省份id
  411. list2:[],//城市列表
  412. choose_city_id:'',//选中城市id
  413. list3:[],//区域列表
  414. real_choose_area:form.districts?form.districts:[],//真正选择的区域,接口传这个
  415. choose_area:form.districts?form.districts:[],//预选择区域
  416. all_choose:0,//全选按钮控制
  417. }
  418. },
  419. mounted: function () {
  420. console.log(this.form)
  421. this.getProList();
  422. this.currentChange(1);
  423. },
  424. watch:{
  425. },
  426. methods: {
  427. typeChange() {
  428. console.log("hahahah");
  429. this.form.advert_img = '';
  430. },
  431. // 搜索会员
  432. searchMember() {
  433. // keyword plugin.advert-market.admin.member.query.index
  434. this.$http.post("{!! yzWebUrl('plugin.advert-market.admin.member.query.index') !!}" ,{keyword:this.keyword}).then(response => {
  435. if(response.data.result == 1) {
  436. this.member_list = response.data.data
  437. }
  438. }, response => {
  439. console.log(response);
  440. });
  441. },
  442. // 选中会员
  443. chooseMember(row) {
  444. this.member = row;
  445. this.form.am_id = row.id;
  446. this.member_text = `[id:`+row.member.uid+`] 会员名字:`+row.member.nickname+``;
  447. this.memberDialog = false;
  448. },
  449. //选中省份
  450. choosePro(item) {
  451. this.choose_pro_id = item.id;
  452. //城市
  453. this.list3 = [];
  454. this.$http.get("{!! yzWebUrl('area.list', ['parent_id'=> '']) !!}" + item.id).then(response => {
  455. this.list2 = response.data.data;
  456. this.loading = false;
  457. }, response => {
  458. console.log(response);
  459. });
  460. },
  461. //选中城市
  462. chooseCity(item) {
  463. let that = this;
  464. this.choose_city_id = item.id;
  465. //城市
  466. that.all_choose = 0;
  467. this.$http.get("{!! yzWebUrl('area.list', ['parent_id'=> '']) !!}" + item.id).then(response => {
  468. this.list3 = [];
  469. this.list3 = response.data.data;
  470. for(let i=0;i<that.choose_area.length;i++) {
  471. for(let j=0;j<that.list3.length;j++) {
  472. var item1 = '';
  473. var index1 = 1;
  474. if(that.list3[j].id == that.choose_area[i].id) {
  475. index1 = 0;
  476. item1 = j;
  477. break;
  478. }
  479. }
  480. if(index1 == 0) {
  481. Vue.set(that.list3,item1,{checked:1,areaname:that.list3[item1].areaname,id:that.list3[item1].id,level:that.list3[item1].level,parentid:that.list3[item1].parentid} )
  482. }
  483. }
  484. this.loading = false;
  485. }, response => {
  486. console.log(response);
  487. });
  488. },
  489. //选中区域
  490. chooseArea(item,index) {
  491. let that = this;
  492. console.log(that.choose_area);
  493. if(item.checked && item.checked==1) {
  494. for(let i=0;i<that.choose_area.length;i++) {
  495. if(item.id == that.choose_area[i].id) {
  496. that.choose_area.splice(i,1);
  497. continue;
  498. }
  499. }
  500. Vue.set(that.list3,index,{checked:0,areaname:that.list3[index].areaname,id:that.list3[index].id,level:that.list3[index].level,parentid:that.list3[index].parentid} )
  501. }
  502. else {
  503. console.log("hahahahaha")
  504. Vue.set(that.list3,index,{checked:1,areaname:that.list3[index].areaname,id:that.list3[index].id,level:that.list3[index].level,parentid:that.list3[index].parentid} )
  505. that.choose_area.push(that.list3[index]);
  506. }
  507. },
  508. //获得省份列表
  509. getProList() {
  510. this.$http.get("{!! yzWebUrl('area.list', ['parent_id'=> 0]) !!}").then(response => {
  511. this.list1 = response.data.data;
  512. this.loading = false;
  513. }, response => {
  514. console.log(response);
  515. });
  516. },
  517. //确认选择
  518. sureAreas() {
  519. let that = this;
  520. // that
  521. // that.real_choose_area = that.choose_area;
  522. that.real_choose_area = JSON.parse(JSON.stringify(that.choose_area));
  523. that.centerDialogVisible1 = false;
  524. },
  525. //打开弹出框
  526. openAreas() {
  527. let that = this;
  528. that.centerDialogVisible1 = true;
  529. that.all_choose = 0;
  530. that.choose_city_id = '';
  531. that.list3 = [];
  532. that.choose_area = JSON.parse(JSON.stringify(that.real_choose_area));
  533. },
  534. //全选
  535. allChoose() {
  536. console.log(this.choose_area);
  537. let that = this;
  538. that.all_choose ++;
  539. //全不选
  540. if(that.all_choose%2 == 0) {
  541. for(let i=0;i<that.list3.length;i++) {
  542. for(let j=0;j<that.choose_area.length;j++) {
  543. var item1 = '';
  544. var index1 = 1;
  545. if(that.list3[i].id == that.choose_area[j].id) {
  546. index1 = 0;
  547. item1 = j;
  548. break;
  549. }
  550. }
  551. if(index1 == 0) {
  552. Vue.set(that.list3,i,{checked:0,areaname:that.list3[i].areaname,id:that.list3[i].id,level:that.list3[i].level,parentid:that.list3[i].parentid} )
  553. that.choose_area.splice(item1,1);
  554. }
  555. }
  556. for(let i=0;i<that.list3.length;i++) {
  557. Vue.set(that.list3,i,{checked:0,areaname:that.list3[i].areaname,id:that.list3[i].id,level:that.list3[i].level,parentid:that.list3[i].parentid} )
  558. }
  559. }
  560. //全选
  561. if(that.all_choose%2 == 1) {
  562. if(that.choose_area.length == 0) {
  563. for(let i=0;i<that.list3.length;i++) {
  564. Vue.set(that.list3,i,{checked:1,areaname:that.list3[i].areaname,id:that.list3[i].id,level:that.list3[i].level,parentid:that.list3[i].parentid} )
  565. that.choose_area.push(that.list3[i])
  566. }
  567. }
  568. else {
  569. for(let i=0;i<that.list3.length;i++) {
  570. for(let j=0;j<that.choose_area.length;j++) {
  571. var item1 = {}
  572. var index1 = 1;
  573. if(that.list3[i].id == that.choose_area[j].id) {
  574. index1 = 0;
  575. break;
  576. }
  577. else {
  578. item1 = that.list3[i];
  579. index1 = 1;
  580. }
  581. }
  582. if(index1 == 1) {
  583. Vue.set(item1,'checked',1 )
  584. that.choose_area.push(item1);
  585. }
  586. }
  587. }
  588. }
  589. console.log(this.choose_area);
  590. },
  591. getImgUrl(id) {
  592. let good = this.goods.find(function (good) {
  593. return good.id == id;
  594. });
  595. console.log('=========');
  596. console.log(good);
  597. this.imageUrl = good.thumb;
  598. },
  599. chooseTheImg(img) {
  600. this.form[this.chooseImg] = img;
  601. this.centerDialogVisible = false;
  602. },
  603. chooseYear(year) {
  604. this.currentChange(1);
  605. },
  606. chooseMonth(month) {
  607. this.currentChange(1);
  608. },
  609. openUpload(str) {
  610. this.chooseImg = str;
  611. console.log(this.chooseImg)
  612. this.uploadImg = "";
  613. this.centerDialogVisible = true;
  614. },
  615. sureImg() {
  616. this.form[this.chooseImg] = this.uploadImg;
  617. this.centerDialogVisible = false;
  618. },
  619. uploadSuccess(res, file) {
  620. if (res.result === 1) {
  621. this.uploadImg = res.data.thumb_url;
  622. this.$message.success("上传成功!");
  623. } else {
  624. this.$message.error(res.msg);
  625. }
  626. this.submit_loading = false;
  627. },
  628. // 富文本上传图片
  629. uploadSuccess1(res, file) {
  630. if (res.result === 1) {
  631. this.uploadImg1 = '';
  632. this.uploadImg1 = res.data.thumb_url;
  633. this.$message.success("上传成功!");
  634. // this.insert();
  635. } else {
  636. this.$message.error(res.msg);
  637. }
  638. this.submit_loading = false;
  639. },
  640. beforeUpload(file) {
  641. this.submit_loading = true;
  642. const isLt2M = file.size / 1024 / 1024 < 4;
  643. if (this.form.advert_type == 1 && !isLt2M) {
  644. this.$message.error("上传图片大小不能超过 4MB!");
  645. this.submit_loading = false;
  646. }
  647. return isLt2M;
  648. },
  649. clearImg(str) {
  650. this.form[str] = "";
  651. },
  652. deleteImg(id) {
  653. this.submit_loading = true;
  654. this.$http
  655. .post("{!! yzWebFullUrl('plugin.advert-market.admin.upload.delLocal') !!}", { id: id })
  656. .then(response => {
  657. if (response.data.result === 1) {
  658. this.$message.success("系统删除成功");
  659. this.currentChange(1);
  660. this.submit_loading = false;
  661. } else {
  662. this.$message.error("删除出错");
  663. this.submit_loading = false;
  664. }
  665. })
  666. .catch(err => {
  667. console.error(err);
  668. this.submit_loading = false;
  669. });
  670. },
  671. currentChange(val) {
  672. this.submit_loading = true;
  673. this.$http.post("{!! yzWebFullUrl('plugin.advert-market.admin.upload.getLocalList') !!}",{ page: val, year: this.radio1, month: this.radio2 })
  674. .then(response => {
  675. if (response.data.result === 1) {
  676. this.total = response.data.data.list.total;
  677. this.ImgList = response.data.data.list.data;
  678. this.current_page = response.data.data.list.current_page;
  679. this.pageSize = response.data.data.list.per_page;
  680. } else {
  681. this.$message.error(response.data.msg);
  682. }
  683. this.submit_loading = false;
  684. })
  685. .catch(err => {
  686. console.error(err);
  687. this.submit_loading = false;
  688. });
  689. },
  690. // 转化网络地址
  691. transform(url) {
  692. this.submit_loading = true;
  693. this.$http.post("{!! yzWebFullUrl('plugin.share-activity.admin.activity.fetch') !!}",{ url:url })
  694. .then(response => {
  695. if (response.data.result === 1) {
  696. this.$message.success("转化成功!");
  697. this.uploadImg = response.data.thumb_url
  698. } else {
  699. this.$message.error(response.data.msg);
  700. this.uploadImg = "";
  701. }
  702. this.submit_loading = false;
  703. })
  704. .catch(err => {
  705. console.error(err);
  706. this.submit_loading = false;
  707. });
  708. },
  709. sureMember() {
  710. },
  711. onSubmit() {
  712. if (this.formLoading) {
  713. return;
  714. }
  715. this.formLoading = true;
  716. console.log(this.form);
  717. console.log(this.real_choose_area);
  718. this.form.districts = this.real_choose_area;
  719. // let setting = {
  720. // form:this.form,
  721. // areas:this.real_choose_area
  722. // };
  723. let form = {};
  724. if(this.form.id) {
  725. form = {
  726. id:this.form.id,
  727. am_id :this.form.am_id,
  728. advert_name :this.form.advert_name,
  729. advert_type :this.form.advert_type,
  730. advert_code :this.form.advert_code,
  731. advert_img :this.form.advert_img,
  732. advert_budget:this.form.advert_budget,
  733. await_amount :this.form.await_amount,
  734. payment_amount :this.form.payment_amount,
  735. status :this.form.status,
  736. store_category :this.form.store_category,
  737. districts :this.form.districts,
  738. };
  739. }
  740. let setting = this.form.id?form:this.form;
  741. console.log('=======');
  742. console.log(setting);
  743. // 提交地址就是这个
  744. this.$http.post("{!! yzWebUrl('plugin.advert-market.admin.advert.store') !!}", {'setting': setting}).then(response => {
  745. //console.log(response.data);
  746. // return;
  747. if (response.data.result) {
  748. this.$message({
  749. message: response.data.msg,
  750. type: 'success'
  751. });
  752. } else {
  753. this.$message({
  754. message: response.data.msg,
  755. type: 'error'
  756. });
  757. }
  758. this.formLoading = false;
  759. }, response => {
  760. console.log(response);
  761. });
  762. },
  763. }
  764. });
  765. </script>
  766. @endsection