edit.blade.php 91 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542
  1. @extends('layouts.base')
  2. @section('title', "活动创建")
  3. @section('content')
  4. <style>
  5. .rightlist #app .rightlist-head{line-height:50px;padding:15px 0;}
  6. .rightlist #app{margin-left:30px;}
  7. .rightlist #app .el-breadcrumb{padding:30px 0;font-size:16px;}
  8. .el-form-item__label{padding-right:30px;}
  9. .tip{font-size:12px;color:#999;font-weight:500}
  10. .rightlist-head-con{padding-right:20px;font-size:16px;color:#888;}
  11. /* .rightlist-head-con{float:left;padding-right:20px;font-size:16px;color:#888;} */
  12. .el-tag{font-weight:700;font-size:15px;margin-bottom:30px;}
  13. .el-icon-edit{font-size:16px;padding:0 15px;color:#409EFF;cursor: pointer;}
  14. /* 滑块选择小白点 */
  15. .el-switch.is-checked .el-switch__core::after {left: 100%;margin-left: -17px;}
  16. .el-switch__core::after {content: "";position: absolute;top: 1px;left: 1px;border-radius: 100%;transition: all .3s;width: 16px;height: 16px;background-color: #fff;}
  17. .tip1{font-size:12px;color:red;font-weight:500}
  18. [v-cloak]{
  19. display:none;
  20. }
  21. /* css */
  22. .goods-info{display:inline-block;line-height:18px;font-size:13px;padding-left:10px;font-weight:600}
  23. .end-time{display:inline-block;padding-right:30px;font-size: 14px;color: #333;font-weight:400}
  24. .level-box{padding:10px;background:#e9e9e9;width:70%;}
  25. .setting-display{display:inline-block;font-weight:500;font-size:14px;margin-left:30px;}
  26. .title-t{border-bottom:1px solid #e9e9e9;}
  27. .add-tip{font-size:14px;font-weight:600;}
  28. .add-tip span{margin:0 15px;cursor:pointer;color:#409EFF}
  29. .list-title{display:flex;width:100%;background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9;}
  30. .list-title-head{flex:1;display:flex;align-items:center;justify-content: center;}
  31. .list-con{display:flex;flex;align-items:center;justify-content: center;padding:10px 0;border-bottom:1px solid #e9e9e9;}
  32. .list-con-price{flex:1;display:flex;flex;align-items:center;justify-content: center;}
  33. .input1 .el-input-group__append, .el-input-group__prepend {padding: 0 5px;}
  34. .input1 .el-input-group__append {padding: 5;}
  35. </style>
  36. <div class="rightlist">
  37. <div id="app" v-cloak v-loading="loading">
  38. <el-breadcrumb separator-class="el-icon-arrow-right">
  39. <el-breadcrumb-item><a href="{{ yzWebFullUrl('plugin.fight-groups.admin.controllers.fight-groups.index') }}">活动列表</a></el-breadcrumb-item>
  40. <el-breadcrumb-item>添加修改</el-breadcrumb-item>
  41. </el-breadcrumb>
  42. <template>
  43. <el-form ref="form" :model="form" :rules="rules" label-width="15%">
  44. <div v-show="step==1">
  45. <div style="margin-left:15%;">
  46. <div class="tip1">注意:活动创建后,请勿对该商品进行修改规格、下架、删除等操作,否则影响下单购买,活动结束可正常编辑该商品!</div>
  47. </div>
  48. <el-form-item label="商家平台" prop="business_type">
  49. <el-radio v-model="form.business_type" :label="1">平台自营</el-radio>
  50. <el-radio v-model="form.business_type" :label="2" v-if="is_store == true">O2O门店</el-radio>
  51. </el-form-item>
  52. <el-form-item v-if="form.business_type==2">
  53. <div class="upload-box" @click="addStore" type="primary" :disabled="is_edit" v-if="!store_obj.id">
  54. <i class="el-icon-plus" style="font-size:50px;border:1px dashed #25a78c"></i>
  55. </div>
  56. <div @click="addStore" class="upload-boxed" v-if="store_obj.id">
  57. <img :src="store_obj.thumb" style="width:70px;height:70px;">
  58. <div class="goods-info">
  59. <div>[[store_obj.store_name]]</div>
  60. <div>门店id:[[store_obj.id]]</div>
  61. </div>
  62. <div class="upload-boxed-text">点击重新上传</div>
  63. </div>
  64. </el-form-item>
  65. <el-form-item label="活动商品" prop="">
  66. <el-input v-model="has_one_goods.title?'【ID:'+has_one_goods.id+'】'+has_one_goods.title:has_one_goods.title" style="width:70%" disabled></el-input>
  67. <el-button @click="add" type="primary" :disabled="is_edit">选择商品</el-button>
  68. <div v-if="has_one_goods.title">
  69. <img :src="has_one_goods.thumb" style="width:70px;height:70px;">
  70. <div class="goods-info">
  71. <div>[[has_one_goods.title]]</div>
  72. <div>库存:[[has_one_goods.stock]]([[has_one_goods.sku]])</div>
  73. <div>价格:¥[[has_one_goods.price]]</div>
  74. </div>
  75. </div>
  76. </el-form-item>
  77. <el-form-item label="活动标题" prop="title">
  78. <el-input v-model="form.title" style="width:70%" ></el-input>
  79. </el-form-item>
  80. <el-form-item label="开始时间" prop="assessed_at">
  81. <el-row>
  82. <el-col :span="8">
  83. <el-date-picker v-model="form.start_time" type="datetime" format="yyyy-MM-dd HH:mm:ss"
  84. value-format="timestamp" placeholder="选择开始时间" style="width:90%" :disabled="is_edit"></el-date-picker>
  85. </el-col>
  86. <el-col :span="10">
  87. <div class="end-time">结束时间</div>
  88. <el-date-picker v-model="form.end_time" type="datetime" format="yyyy-MM-dd HH:mm:ss"
  89. value-format="timestamp" placeholder="选择结束时间" style="width:70%" :disabled="is_edit"></el-date-picker>
  90. </el-col>
  91. <el-col :span="24">
  92. <div class="tip1">说明:结束时间可不填,若不填商品详情页也不展示结束时间;不填则活动不会自动结束,需手动结束。</div>
  93. </el-col>
  94. </el-row>
  95. </el-form-item>
  96. {{--<el-form-item label="商家说明" prop="note">--}}
  97. {{--<el-input v-model="form.note" type="textarea" rows="5" style="width:70%" ></el-input> --}}
  98. {{--</el-form-item>--}}
  99. <el-form-item label="拼团层级" prop="worth">
  100. <!-- 表格start -->
  101. <div class="level-box">
  102. <el-table :data="form.has_many_level" style="width: 100%">
  103. <el-table-column prop="level_num" label="层级" width="80" align="center"></el-table-column>
  104. <el-table-column prop="member_num" label="拼团人数" min-width="100">
  105. <template slot-scope="scope">
  106. <el-input v-model="scope.row.member_num" :disabled="is_edit">
  107. <template slot="append">人</template>
  108. </el-input>
  109. </template>
  110. </el-table-column>
  111. <el-table-column prop="" label="拼团时间(团长开团后,有多少小时可以召集团员参团购买。)" min-width="180" align="center">
  112. <template slot-scope="scope">
  113. <el-input v-model="scope.row.expire_in">
  114. <template slot="append">小时</template>
  115. </el-input>
  116. </template>
  117. </el-table-column>
  118. <el-table-column label="操作" min-width="80" align="center">
  119. <template slot-scope="scope">
  120. <el-button type="danger" @click="delTier(scope.$index)" :disabled="is_edit">删除</el-button>
  121. </template>
  122. </el-table-column>
  123. </el-table>
  124. </div>
  125. <div>
  126. <el-button size="mini" type="primary" icon="el-icon-plus" @click="addTier" :disabled="is_edit">新增一个拼团层级 </el-button>
  127. <div class="tip" style="display:inline-block">最多可设置3个阶梯</div>
  128. </div>
  129. <!-- 表格end -->
  130. </el-form-item>
  131. <el-form-item label="展示设置" prop="menu_show">
  132. <el-checkbox v-model.number="form.menu_show" :true-label="1" :false-label="0">隐藏开关</el-checkbox>
  133. <div class="setting-display" v-show="form.menu_show">
  134. <span>
  135. 当可参的团数达到
  136. <input v-model="form.hide_num" style="height:25px;" />
  137. 时,不显示开团按钮
  138. </span>
  139. </div>
  140. <div class="tip">勾选此选项则手机端商品详情页底部仅展示“去参团”,不展示“一键开团”</div>
  141. </el-form-item>
  142. <el-form-item label="团长福利" prop="is_integral">
  143. <el-checkbox v-model.number="form.is_integral" :true-label="1" :false-label="0" style="width:100px">团长送积分</el-checkbox>
  144. <div class="setting-display" v-show="form.is_integral">
  145. <span>
  146. <div class="el-input el-input--mini el-input-group el-input-group--append el-input-group--prepend" style="flex: 0 0 90%; padding: 5px 0px;">
  147. <div class="el-input-group__prepend">送</div>
  148. <input type="text" autocomplete="off" class="el-input__inner" v-model="form.integral_num">
  149. <div class="el-input-group__append">分</div>
  150. </div>
  151. </span>
  152. </div><br>
  153. <el-checkbox v-if="loves" v-model.number="form.is_love" :true-label="1" :false-label="0" style="width:100px">团长送[[love_name]]</el-checkbox>
  154. <div class="setting-display" v-if="loves" v-show="form.is_love">
  155. <span>
  156. <div class="el-input el-input--mini el-input-group el-input-group--append el-input-group--prepend" style="flex: 0 0 90%; padding: 5px 0px;">
  157. <div class="el-input-group__prepend">送</div>
  158. <input type="text" autocomplete="off" class="el-input__inner" v-model="form.love">
  159. <div class="el-input-group__append">[[love_name]]</div>
  160. </div>
  161. </span>
  162. </div><br v-if="loves">
  163. <el-checkbox v-model.number="form.is_balance" :true-label="1" :false-label="0" style="width:100px">团长送余额</el-checkbox>
  164. <div class="setting-display" >
  165. <div style="display: flex;align-items: center;" v-show="form.is_balance">
  166. <div class="el-input el-input--mini el-input-group el-input-group--append el-input-group--prepend" style="width: 220px; padding: 5px 0px;" >
  167. <div class="el-input-group__prepend">送</div>
  168. <input type="text" autocomplete="off" class="el-input__inner" v-model="form.balance">
  169. <div class="el-input-group__append">余额</div>
  170. </div>
  171. <div style="margin-left: 20px;color:#848282">
  172. <el-switch v-model="form.balance_switch" :active-value="1" :inactive-value="0" inactive-color="#ccc"> </el-switch>
  173. <div style="font-size: 12px;line-height: 12px;width: 250px;">开启后奖励以开团奖励为主。</div>
  174. </div>
  175. </div>
  176. </div>
  177. <div>
  178. <el-checkbox v-model.number="form.is_coupon" :true-label="1" :false-label="0" style="width:100px;margin-right: 30px">团长送优惠券</el-checkbox>
  179. </div>
  180. <div v-if="form.is_coupon">
  181. <div v-for="(item,index) in form.coupon" :key="index" style="display:flex;margin-bottom:5px">
  182. <el-input v-model="item.name" disabled style="width:300px" size="mini">
  183. <template slot="prepend">优惠券名称</template>
  184. </el-input>
  185. <el-input v-model="item.coupon_num" style="width:300px" size="mini">
  186. <template slot="prepend">赠送</template>
  187. <template slot="append">张</template>
  188. </el-input>
  189. <el-button @click="delCoupon(index)" icon="el-icon-close" type="danger" size="mini"></el-button>
  190. </div>
  191. </div>
  192. <div>
  193. <el-button size="mini" v-if="form.is_coupon" @click="openCoupon">选择优惠券</el-button></div>
  194. <div v-if="is_open_integral">
  195. <el-checkbox v-model.number="form.is_consumption_points" :true-label="1" :false-label="0" style="width:130px">团长送消费积分</el-checkbox>
  196. <div class="setting-display" v-show="form.is_consumption_points">
  197. <div>
  198. <div class="el-input el-input--mini el-input-group el-input-group--append el-input-group--prepend" style="flex: 0 0 90%; padding: 5px 0px;">
  199. <div class="el-input-group__prepend">送</div>
  200. <input type="text" autocomplete="off" class="el-input__inner" v-model="form.consumption_points">
  201. <div class="el-input-group__append">消费积分</div>
  202. </div>
  203. </div>
  204. </div>
  205. </div>
  206. </el-form-item>
  207. <el-form-item label="开团奖励" v-if="form.is_balance&&form.balance_switch==1">
  208. <div style="display: flex;flex-wrap: wrap;">
  209. <div style="display: flex;align-items: center;margin:0 20px 20px 0;" v-for="item in form.group_list">
  210. <el-checkbox :true-label="1" :false-label="0" v-model="item.change">[[item.name]]</el-checkbox>
  211. <el-input style="margin-left: 20px;" v-model="item.count">
  212. <template slot="append">余额</template>
  213. </el-input>
  214. </div>
  215. </div>
  216. <div style="margin-top: -20px;" class="tip1">选择等级开团获得奖励,为0或为空则不奖励</div>
  217. </el-form-item>
  218. <el-form-item label="老拉新" prop="is_lead">
  219. <el-checkbox v-model.number="form.is_lead" :true-label="1" :false-label="0">开启老拉新</el-checkbox>
  220. <div class="tip1">参与过该活动一次的视为老用户,老用户只允许开团不允许参团。此场景适合设置特价商品,用于鼓励老用户开团,协助店铺拉新。</div>
  221. </el-form-item>
  222. <el-form-item label="拼团设置" prop="setting" v-if="!form.is_lead">
  223. <el-input v-model="form.setting" style="width:70%" ></el-input>
  224. <div class="tip">每人最多参与几次不同的团</div>
  225. </el-form-item>
  226. <el-form-item label="限制参与活动次数" prop="is_join_number">
  227. <el-switch v-model="form.is_join_number" :active-value="1" :inactive-value="0"></el-switch>
  228. </el-form-item>
  229. <el-form-item label="" prop="join_number">
  230. <template slot="label">
  231. <span>每人每天参与活动总次数</span>
  232. </template>
  233. <el-input v-model="form.join_number" style="width:35%">
  234. <template slot="append">次</template>
  235. </el-input>
  236. <div style="color:#F55A4E;font-size:10px;">(若为0为空没有参与次数)每人每天参与活动的次数。例如:设置参与次数5次,会员当天该活动只能参与5次,超出则参与不了(包含会员本身自己开团)</div>
  237. </el-form-item>
  238. <el-form-item label="经销商限制开团" prop="is_team_open" v-if="form.is_team_dividend">
  239. <el-switch v-model="form.is_team_open" :active-value="1" :inactive-value="0"></el-switch>
  240. </el-form-item>
  241. <el-form-item label="活动详情页是否显示参团按钮" prop="is_show_be_being_group">
  242. <el-switch v-model="form.is_show_be_being_group" :active-value="1" :inactive-value="0"></el-switch>
  243. </el-form-item>
  244. <el-form-item label="已开团标题自定义" prop="open_group_title">
  245. <el-input v-model="form.open_group_title" placeholder="默认'以下小伙伴拼团中,可直接参加'" style="width:70%" ></el-input>
  246. </el-form-item>
  247. <!-- <el-form-item label="弹幕设置" prop="barrage">
  248. <el-radio v-model.munber="form.barrage" :label="1" >开启</el-radio>
  249. <el-radio v-model.munber="form.barrage" :label="0" >关闭</el-radio>
  250. </el-form-item> -->
  251. <div v-if="data.fight_groups_lottery && fight_groups_lottery_set.is_open == 1" >
  252. <h5 class="title-t">
  253. 拼团抽奖
  254. </h5>
  255. <el-form-item label="开启抽奖" prop="is_open">
  256. <el-switch v-model="form.fight_groups_lottery_info.is_open" :active-value="1" :inactive-value="0"></el-switch>
  257. <div class="tip" style="color:#f00">拼团所选商品为虚拟商品时,拼团活动不参与拼团抽奖</div>
  258. </el-form-item>
  259. <el-form-item label="独立规则" prop="is_separate_rules">
  260. <el-switch v-model="form.fight_groups_lottery_info.is_separate_rules" :active-value="1" :inactive-value="0"></el-switch>
  261. <div class="tip" style="color:#f00">如未开启独立规则,则开启抽奖后按照拼团奖励插件设置规则执行!</div>
  262. </el-form-item>
  263. <div style="font-weight:600;font-size:15px;padding-left:60px;padding-bottom:20px">抽奖规则(统一设置)</div>
  264. <el-form-item label="团长限制" prop="commander_set">
  265. <el-radio v-model="form.fight_groups_lottery_info.commander_set" :label="0">无限制</el-radio>
  266. <el-radio v-model="form.fight_groups_lottery_info.commander_set" :label="1">必中</el-radio>
  267. <el-radio v-model="form.fight_groups_lottery_info.commander_set" :label="2">必不中</el-radio>
  268. </el-form-item>
  269. <el-form-item label="新会员限制" prop="first_set">
  270. <el-radio v-model="form.fight_groups_lottery_info.first_set" :label="0">无限制</el-radio>
  271. <el-radio v-model="form.fight_groups_lottery_info.first_set" :label="1">必中</el-radio>
  272. <el-radio v-model="form.fight_groups_lottery_info.first_set" :label="2">必不中</el-radio>
  273. </el-form-item>
  274. <el-form-item label="中奖人数(不填写默认为1人)" prop="win_number">
  275. <el-input v-model="form.fight_groups_lottery_info.win_number" style="width:10%"></el-input>
  276. </el-form-item>
  277. <el-form-item label="" prop="">
  278. <div class="tip" style="color:red">新会员为未参加过拼团的用户!</div>
  279. <div class="tip" style="color:red">如果设置了两个必不中的选项,则成团人数不能设置等于小于2人,否则会出问题。</div>
  280. </el-form-item>
  281. <el-form-item label="中奖解冻爱心值" prop="is_winning_thaw_love" v-if="loves">
  282. <el-switch v-model="form.fight_groups_lottery_info.is_winning_thaw_love"
  283. :active-value="1" :inactive-value="0"></el-switch>
  284. </el-form-item>
  285. <el-form-item v-if="loves">
  286. <el-input v-model="form.fight_groups_lottery_info.winning_thaw_love_limit"
  287. style="width:35%">
  288. <template slot="prepend">累计中奖</template>
  289. <template slot="append">次</template>
  290. </el-input>
  291. <el-input v-model="form.fight_groups_lottery_info.winning_thaw_love_number"
  292. style="width:35%">
  293. <template slot="prepend">解冻爱心值</template>
  294. <template slot="append">个</template>
  295. </el-input>
  296. <div style="color:#F55A4E;font-size:10px;">例如:设置累计中奖10次,冻结爱心值解冻5个,满足条件则解冻爱心值</div>
  297. </el-form-item>
  298. <div style="font-weight:600;font-size:15px;padding-left:60px;padding-bottom:20px">奖励规则</div>
  299. <el-form-item label="积分" prop="winning_integral">
  300. <template slot="label">
  301. <span style="font-weight:600">抽中会员奖励</span>&nbsp;&nbsp;&nbsp;积分
  302. </template>
  303. <el-input v-model="form.fight_groups_lottery_info.winning_integral_percentage" style="width:35%">
  304. <template slot="append">%</template>
  305. </el-input>
  306. <el-input v-model="form.fight_groups_lottery_info.winning_integral" style="width:35%">
  307. <template slot="append">积分</template>
  308. </el-input>
  309. </el-form-item>
  310. <el-form-item label="余额" prop="winning_credit">
  311. <el-input v-model="form.fight_groups_lottery_info.winning_credit_percentage" style="width:35%">
  312. <template slot="append">%</template>
  313. </el-input>
  314. <el-input v-model="form.fight_groups_lottery_info.winning_credit" style="width:35%">
  315. <template slot="append">余额</template>
  316. </el-input>
  317. </el-form-item>
  318. <el-form-item :label="love_name" prop="winning_love" v-if="loves">
  319. <el-input v-model="form.fight_groups_lottery_info.winning_love_percentage" style="width:35%">
  320. <template slot="append">%</template>
  321. </el-input>
  322. <el-input v-model="form.fight_groups_lottery_info.winning_love" style="width:35%">
  323. <template slot="append">[[love_name]]</template>
  324. </el-input>
  325. </el-form-item>
  326. <el-form-item label="消费积分" prop="winning_shop_integral" v-if="is_open_integral">
  327. <el-input v-model="form.fight_groups_lottery_info.winning_shop_integral_percentage" style="width:35%">
  328. <template slot="append">%</template>
  329. </el-input>
  330. <el-input v-model="form.fight_groups_lottery_info.winning_shop_integral" style="width:35%">
  331. <template slot="append">消费积分</template>
  332. </el-input>
  333. </el-form-item>
  334. <br>
  335. <el-form-item label="积分" prop="loser_integral">
  336. <template slot="label">
  337. <span style="font-weight:600">未抽中会员奖励(平分奖励)</span>&nbsp;&nbsp;&nbsp;积分
  338. </template>
  339. <el-input v-model="form.fight_groups_lottery_info.loser_integral_percentage" style="width:35%">
  340. <template slot="append">%</template>
  341. </el-input>
  342. <el-input v-model="form.fight_groups_lottery_info.loser_integral" style="width:35%">
  343. <template slot="append">积分</template>
  344. </el-input>
  345. </el-form-item>
  346. <el-form-item label="" prop="loser_credit_type">
  347. <el-radio v-model="form.fight_groups_lottery_info.loser_credit_type" :label="0">平均分</el-radio>
  348. <el-radio v-model="form.fight_groups_lottery_info.loser_credit_type" :label="1">每人固定奖励</el-radio>
  349. <div class="tip" style="color:red">注:该选择只针对余额奖励设置</div>
  350. </el-form-item>
  351. <el-form-item label="余额" prop="loser_credit">
  352. <el-input v-model="form.fight_groups_lottery_info.loser_credit_percentage" style="width:35%">
  353. <template slot="append">%</template>
  354. </el-input>
  355. <el-input v-model="form.fight_groups_lottery_info.loser_credit" style="width:35%">
  356. <template slot="append">余额</template>
  357. </el-input>
  358. </el-form-item>
  359. <el-form-item :label="love_name" prop="loser_love" v-if="loves">
  360. <el-input v-model="form.fight_groups_lottery_info.loser_love_percentage" style="width:35%">
  361. <template slot="append">%</template>
  362. </el-input>
  363. <el-input v-model="form.fight_groups_lottery_info.loser_love" style="width:35%">
  364. <template slot="append">[[love_name]]</template>
  365. </el-input>
  366. </el-form-item>
  367. <el-form-item label="消费积分" prop="loser_shop_integral" v-if="is_open_integral">
  368. <el-input v-model="form.fight_groups_lottery_info.loser_shop_integral_percentage" style="width:35%">
  369. <template slot="append">%</template>
  370. </el-input>
  371. <el-input v-model="form.fight_groups_lottery_info.loser_shop_integral" style="width:35%">
  372. <template slot="append">消费积分</template>
  373. </el-input>
  374. </el-form-item>
  375. <el-form-item label="奖励到收入" prop="loser_income" v-if="is_open_integral">
  376. <el-input v-model="form.fight_groups_lottery_info.loser_income_percentage" style="width:35%">
  377. <template slot="append">%</template>
  378. </el-input>
  379. <el-input v-model="form.fight_groups_lottery_info.loser_income" style="width:35%">
  380. <template slot="append">元</template>
  381. </el-input>
  382. <div class="tip" style="color:red">注:该设置只针对收入奖励设置</div>
  383. </el-form-item>
  384. <el-form-item label="未抽中会员上级奖励" prop="">
  385. <template slot="label">
  386. <div style="font-weight:600">未抽中会员上级奖励</div>
  387. </template>
  388. <el-radio v-model="form.fight_groups_lottery_info.parent_reward" :label="0">比例</el-radio>
  389. <el-radio v-model="form.fight_groups_lottery_info.parent_reward" :label="1">固定值</el-radio>
  390. </el-form-item>
  391. <el-form-item label="一级上级奖励积分" prop="parent_one_integral">
  392. <el-input v-model="form.fight_groups_lottery_info.parent_one_integral" style="width:70%">
  393. <!-- <template slot="append">%</template> -->
  394. </el-input>
  395. </el-form-item>
  396. <el-form-item label="二级上级奖励积分" prop="parent_two_integral">
  397. <el-input v-model="form.fight_groups_lottery_info.parent_two_integral" style="width:70%">
  398. <!-- <template slot="append">%</template> -->
  399. </el-input>
  400. </el-form-item>
  401. <el-form-item label="一级上级奖励余额" prop="parent_one_credit">
  402. <el-input v-model="form.fight_groups_lottery_info.parent_one_credit" style="width:70%">
  403. <!-- <template slot="append">%</template> -->
  404. </el-input>
  405. </el-form-item>
  406. <el-form-item label="二级上级奖励余额" prop="parent_two_credit">
  407. <el-input v-model="form.fight_groups_lottery_info.parent_two_credit" style="width:70%">
  408. <!-- <template slot="append">%</template> -->
  409. </el-input>
  410. </el-form-item>
  411. <el-form-item label="" prop="">
  412. <div class="tip" style="color:red">为0不奖励!为空则走统一设置</div>
  413. </el-form-item>
  414. </div>
  415. <div v-if="data.fight_groups_operators && data.fight_groups_operators.is_open == 1">
  416. <el-form-item>
  417. <template slot="label">
  418. <span>团长上级奖励</span>
  419. </template>
  420. <el-input v-model="form.parent_reward" style="width:23%;">
  421. <template slot="prepend">上级获得奖励</template>
  422. <template slot="append">余额</template>
  423. </el-input>
  424. <el-input v-model="form.parent_every_group" style="width:20%;margin-left:3%;">
  425. <template slot="append">人/组</template>
  426. </el-input>
  427. <el-input v-model="form.parent_reward_max" style="width:20%">
  428. <template slot="prepend">封顶奖励次数</template>
  429. </el-input>
  430. </el-form-item>
  431. <el-form-item label="团长正在开团中的活动限制" prop="open_group_max">
  432. <el-input v-model="form.open_group_max" style="width:70%"></el-input>
  433. <div style="font-size:11px;">例如:设置2次,则团长开团满足2次则不能再次开团,需拼团中的有团结束了才能再次开团。</div>
  434. </el-form-item>
  435. </div>
  436. {{--安慰奖插件--}}
  437. <div v-if="data.comfort_set ? data.fight_group_lottery_comfort && data.comfort_set.is_open == 1 : false">
  438. <el-form ref="form" :model="form" :rules="rules" label-width="15%">
  439. <div style="margin-bottom: 30px;font-size: 18px;border-bottom: 1px solid #e9e9e9;">[[ch_name]]</div>
  440. <div>
  441. <el-form-item label="未中奖会员安慰奖" prop="credit">
  442. <el-input v-model="form.comfort.credit" style="width:50%">
  443. <template slot="append">元</template>
  444. </el-input>
  445. </el-form-item>
  446. <el-form-item label="未中奖会员一级上级" prop="ratio_one">
  447. <el-input v-model="form.comfort.ratio_one" style="width:50%">
  448. <template slot="append">%</template>
  449. </el-input>
  450. </el-form-item>
  451. <el-form-item label="未中奖会员二级上级" prop="ratio_two">
  452. <el-input v-model="form.comfort.ratio_two" style="width:50%">
  453. <template slot="append">%</template>
  454. </el-input>
  455. </el-form-item>
  456. <div style="font-size:18px;padding-bottom:20px">经销商等级<span style="padding-left: 190px;">奖励比例</span></div>
  457. <template v-for="(item,index) in form.comfort.team_level">
  458. <el-form-item :label="item.level_name" prop="level">
  459. <el-input v-model="item.number_level" style="width:25%">
  460. <template slot="append">%</template>
  461. </el-input>
  462. </el-form-item>
  463. </template>
  464. </div>
  465. </el-form>
  466. </div>
  467. {{--优惠奖插件--}}
  468. <div v-if="data.fight_groups_lottery_coupon && data.reward_coupon_set && data.reward_coupon_set.is_open == 1">
  469. <el-form ref="form" :model="form" :rules="rules" label-width="15%">
  470. <div style="margin-bottom: 30px;font-size: 18px;border-bottom: 1px solid #e9e9e9;">拼团抽奖</div>
  471. <el-checkbox v-model.number="form.is_coupon_lottery" checked :true-label="1" :false-label="0" style="width:100px;margin-left: 80px;display: none;"></el-checkbox>
  472. <br>
  473. <div v-if="form.is_coupon_lottery" style="margin-left: 80px;">
  474. <div v-for="(item,index) in form.coupon_lottery" :key="index" style="display:flex;margin-bottom:5px">
  475. <el-input v-model="item.name" disabled style="width:300px" size="mini">
  476. <template slot="prepend">优惠券名称</template>
  477. </el-input>
  478. <el-input v-model="item.coupon_num" style="width:300px" size="mini">
  479. <template slot="prepend">赠送</template>
  480. <template slot="append">张</template>
  481. </el-input>
  482. <el-button @click="delCouponLottery(index)" icon="el-icon-close" type="danger" size="mini"></el-button>
  483. </div>
  484. </div>
  485. <el-button size="mini" v-if="form.is_coupon_lottery" @click="openLotteryCoupon" style="margin-left: 80px;">选择优惠券</el-button>
  486. </el-form>
  487. </div>
  488. <!-- <div class="setting-display" v-if="loves" v-show="form.is_love"> -->
  489. <h5 class="title-t">
  490. 活动分享
  491. </h5>
  492. <el-form-item label="标题" prop="share_title">
  493. <el-input v-model="form.share_title" style="width:70%" ref="share_title"></el-input>
  494. <div class="add-tip">
  495. 点击添加数据
  496. <span v-for="(item,index) in keywords.share_title" :key="index" @click="addContent('share_title',index,1)">[[item]]</span>
  497. </div>
  498. </el-form-item>
  499. <el-form-item label="商家说明" prop="share_content">
  500. <el-input v-model="form.share_content" type="textarea" rows="5" style="width:70%" ref="share_content"></el-input>
  501. <div class="add-tip">
  502. 点击添加数据
  503. <span v-for="(item,index) in keywords.share_content" :key="index" @click="addContent('share_content',index,2)">[[item]]</span>
  504. </div>
  505. </el-form-item>
  506. <h5 class="title-t">
  507. 活动详情分享
  508. </h5>
  509. <el-form-item label="标题" prop="desc_title">
  510. <el-input v-model="form.desc_title" style="width:70%" ref="desc_title"></el-input>
  511. <div class="add-tip">
  512. 点击添加数据
  513. <span v-for="(item,index) in keywords.desc_title" :key="index" @click="addContent('desc_title',index,3)">[[item]]</span>
  514. </div>
  515. </el-form-item>
  516. <el-form-item label="商家说明" prop="desc_content">
  517. <el-input v-model="form.desc_content" type="textarea" rows="5" ref="desc_content" style="width:70%" ></el-input>
  518. <div class="add-tip">
  519. 点击添加数据
  520. <span v-for="(item,index) in keywords.desc_content" :key="index" @click="addContent('desc_content',index,4)">[[item]]</span>
  521. </div>
  522. </el-form-item>
  523. <h5 class="title-t" v-if="commission.length > 0">
  524. 分销商设置
  525. </h5>
  526. <el-form-item label="分销商等级" prop="commission" v-if="commission.length > 0">
  527. <!-- <el-checkbox v-model="form.c_level" :checked="form.c_level == 1 ? true : false" true-label="1" false-label="0" style="width:100px" >默认等级</el-checkbox> -->
  528. <!-- <el-checkbox-group v-model="form.checkedlist">
  529. <el-checkbox v-for="item in commission" :label="item.id" :key="item.id" :true-label="1" :false-label="0" style="width:100px" @change="btnCheck(item.id)">[[item.name]]</el-checkbox>
  530. </el-checkbox-group> -->
  531. <div style="display: flex;flex-wrap: wrap;">
  532. <div style="display: flex;align-items: center;margin:0 20px 20px 0;" v-for="item in form.level_list">
  533. <el-checkbox :true-label="1" :false-label="0" v-model="item.change">[[item.name]]</el-checkbox>
  534. <el-input style="margin-left: 20px;width: 240px;" v-model="item.count">
  535. <template slot="append">次</template>
  536. </el-input>
  537. </div>
  538. </div>
  539. <div style="margin-top: -20px;" class="tip1">为0或为空则不限制开团次数</div>
  540. </el-form-item>
  541. <el-form-item>
  542. <a href="#">
  543. <el-button type="primary" @click="next">
  544. 下一步
  545. </el-button>
  546. </a>
  547. <el-button @click="goBack()">
  548. 返回列表
  549. </el-button>
  550. </el-form-item>
  551. </div>
  552. <!-- 第二页start -->
  553. <div v-show="step==2">
  554. <div class="list-title">
  555. <div class="list-title-head">规格</div>
  556. <div class="list-title-head">原价(元)</div>
  557. <div class="list-title-head">拼团价格</div>
  558. <div class="list-title-head">活动库存</div>
  559. <div class="list-title-head">
  560. 限购件数
  561. <span style="color:#999;font-weight:400;">(0为不限购)</span>
  562. </div>
  563. </div>
  564. <div class="list-con" v-for="(item,index) in form.has_many_options">
  565. <div class="list-con-price">
  566. [[item.option_title]]
  567. </div>
  568. <div class="list-con-price">
  569. [[item.option_price]]
  570. </div>
  571. <div class="list-title-head" style="flex-wrap: wrap;" class="input1">
  572. <!-- <el-input style="flex:0 0 90%;" v-model="form.stock"></el-input> -->
  573. <div v-for="(item1,index1) in item.has_many_option_level" :key="index1" >
  574. <div class="el-input el-input-group el-input-group--append el-input-group--prepend" style="flex: 0 0 90%; padding: 5px 0px;">
  575. <div class="el-input-group__prepend">[[item1.member_num]]人团:</div>
  576. <input type="text" autocomplete="off" class="el-input__inner" v-model="item1.group_price" :disabled="is_edit">
  577. <div class="el-input-group__append">元</div>
  578. </div>
  579. </div>
  580. </div>
  581. <div class="list-title-head">
  582. <!-- <el-input style="flex:0 0 90%;" v-model="item.stock"></el-input> -->
  583. <input class="el-input__inner" v-model="item.stock" style="margin:0 10px">
  584. </div>
  585. <div class="list-title-head">
  586. <input type="text" autocomplete="off" class="el-input__inner" v-model="item.buy_limit">
  587. <!-- <el-input style="flex:0 0 90%;" v-model="item.buy_limit"></el-input> -->
  588. </div>
  589. </div>
  590. <div style="text-align:center;margin-top:22px;">
  591. <el-button type="primary" @click="last">
  592. 上一步
  593. </el-button>
  594. <el-button @click="submitForm('form')">
  595. 保存
  596. </el-button>
  597. </div>
  598. </div>
  599. <!-- 第二页end -->
  600. </el-form>
  601. </template>
  602. <!-- 新增活动弹出框 -->
  603. <el-dialog title="选择商品" :visible.sync="new_url" width="60%">
  604. <div>
  605. <el-form :inline="true" :model="search_goods" ref="search_goods" style="padding:20px 0 0 0;">
  606. <el-form-item label="" prop="">
  607. <el-select v-model="search_goods.category" placeholder="请选择分类" clearable>
  608. <el-option v-for="item in category_list" :key="item.id" :label="item.name" :value="item.id"></el-option>
  609. </el-select>
  610. </el-form-item>
  611. <el-form-item label="" prop="">
  612. <el-input v-model="search_goods.goods_name" placeholder="请输入标题"></el-input>
  613. </el-form-item>
  614. <a href="#">
  615. <el-button type="success" icon="el-icon-search" @click="searchGoods()">搜索</el-button>
  616. </a>
  617. </el-form>
  618. <template>
  619. <!-- 表格start -->
  620. <el-table :data="goods_list" style="width: 100%;overflow-y:auto" max-height="600" v-loading="table_loading">
  621. <el-table-column prop="id" label="ID" align="center"></el-table-column>
  622. <el-table-column prop="id" label="" width="110" align="center">
  623. <template slot-scope="scope">
  624. <img :src="scope.row.thumb" alt="" style="width:50px;height:50px;">
  625. </template>
  626. </el-table-column>
  627. <el-table-column prop="title" label="商品" min-width="120"></el-table-column>
  628. <el-table-column prop="" label="价格" min-width="80" align="center">
  629. <template slot-scope="scope">
  630. <div style="color:red">¥[[scope.row.price]]</div>
  631. </template>
  632. </el-table-column>
  633. <el-table-column prop="stock" label="库存" min-width="80" align="center"></el-table-column>
  634. <el-table-column label="操作" min-width="80" align="center">
  635. <template slot-scope="scope">
  636. <el-button :type="scope.row.has_many_activity_goods_count>=1?'info':'primary'" @click="choose(scope.row,scope.$index)" :disabled="scope.row.has_many_activity_goods_count>=1">选取</el-button>
  637. </template>
  638. </el-table-column>
  639. </el-table>
  640. <!-- 表格end -->
  641. </template>
  642. <!-- 分页 -->
  643. <el-row>
  644. <el-col :span="24" align="right" style="padding:15px 5% 15px 0">
  645. <el-pagination layout="prev, pager, next" @current-change="currentChangeGoods" :current-page="goods_current_page" :total="goods_total" :page-size="goods_per_size" background v-loading="loading"></el-pagination>
  646. </el-col>
  647. </el-row>
  648. </div>
  649. <span slot="footer" class="dialog-footer">
  650. <el-button @click="new_url = false">取 消</el-button>
  651. <!-- <el-button type="primary" @click="img_text_url = false">确 定</el-button> -->
  652. </span>
  653. </el-dialog>
  654. <!-- 选择优惠券弹窗 -->
  655. <el-dialog title="选择优惠券" :visible.sync="coupon_show" width="60%">
  656. <div>
  657. <el-input v-model="coupon_keyword" placeholder="请输入优惠券名称" style="width:70%"></el-input>
  658. <el-button type="success" icon="el-icon-search" @click="searchCoupon()">搜索</el-button>
  659. <template>
  660. <!-- 表格start -->
  661. <el-table :data="coupon_list" style="width: 100%;overflow-y:auto;height:450px" v-loading="table_loading">
  662. <el-table-column prop="id" label="ID" align="center"></el-table-column>
  663. <el-table-column prop="name" label="优惠券名称" align="center" min-width="120"></el-table-column>
  664. <el-table-column label="操作" min-width="80" align="center">
  665. <template slot-scope="scope">
  666. <el-button @click="chooseCoupon(scope.row,scope.$index)">选择</el-button>
  667. </template>
  668. </el-table-column>
  669. </el-table>
  670. <!-- 表格end -->
  671. </template>
  672. <!-- 分页 -->
  673. <el-row>
  674. <el-col :span="24" align="right" style="padding:15px 5% 15px 0">
  675. <el-pagination layout="prev, pager, next" @current-change="currentChangeGoods" :current-page="goods_current_page" :total="goods_total" :page-size="goods_per_size" background v-loading="loading"></el-pagination>
  676. </el-col>
  677. </el-row>
  678. </div>
  679. <span slot="footer" class="dialog-footer">
  680. <el-button @click="coupon_show = false">取 消</el-button>
  681. <!-- <el-button type="primary" @click="img_text_url = false">确 定</el-button> -->
  682. </span>
  683. </el-dialog>
  684. <!-- 选择门店弹窗 -->
  685. <el-dialog :visible.sync="store_show" width="60%" center title="选择门店">
  686. <div>
  687. <div>
  688. <el-input v-model="store_keyword" style="width:70%"></el-input>
  689. <el-button type="primary" @click="searchStore()">搜索</el-button>
  690. </div>
  691. <el-table :data="store_list" style="width: 100%;height:500px;overflow:auto" v-loading="loading">
  692. <el-table-column label="ID" prop="id" align="center" width="100px"></el-table-column>
  693. <el-table-column label="门店名称">
  694. <template slot-scope="scope">
  695. <div v-if="scope.row" style="display:flex;align-items: center">
  696. <div style="margin-left:10px">[[scope.row.store_name]]</div>
  697. </div>
  698. </template>
  699. </el-table-column>
  700. <el-table-column prop="refund_time" label="操作" align="center" width="320">
  701. <template slot-scope="scope">
  702. <el-button @click="chooseStore(scope.row)">
  703. 选择
  704. </el-button>
  705. </template>
  706. </el-table-column>
  707. </el-table>
  708. </div>
  709. <span slot="footer" class="dialog-footer">
  710. <el-button @click="store_show = false">取 消</el-button>
  711. </span>
  712. </el-dialog>
  713. <!-- 赠送优惠券 -->
  714. <el-dialog title="选择优惠券" :visible.sync="lottery_coupon_show" width="60%">
  715. <div>
  716. <el-input v-model="lottery_coupon_keyword" placeholder="请输入优惠券名称" style="width:70%"></el-input>
  717. <el-button type="success" icon="el-icon-search" @click="searchLotteryCoupon()">搜索</el-button>
  718. <template>
  719. <!-- 表格start -->
  720. <el-table :data="lottery_coupon_list" style="width: 100%;overflow-y:auto;height:450px" v-loading="table_loading">
  721. <el-table-column prop="id" label="ID" align="center"></el-table-column>
  722. <el-table-column prop="name" label="优惠券名称" align="center" min-width="120"></el-table-column>
  723. <el-table-column label="操作" min-width="80" align="center">
  724. <template slot-scope="scope">
  725. <el-button @click="chooseCouponLottery(scope.row,scope.$index)">选择</el-button>
  726. </template>
  727. </el-table-column>
  728. </el-table>
  729. <!-- 表格end -->
  730. </template>
  731. <!-- 分页 -->
  732. <el-row>
  733. <el-col :span="24" align="right" style="padding:15px 5% 15px 0">
  734. <el-pagination layout="prev, pager, next" @current-change="currentChangeGoods" :current-page="goods_current_page" :total="goods_total" :page-size="goods_per_size" background v-loading="loading"></el-pagination>
  735. </el-col>
  736. </el-row>
  737. </div>
  738. <span slot="footer" class="dialog-footer">
  739. <el-button @click="lottery_coupon_show = false">取 消</el-button>
  740. <!-- <el-button type="primary" @click="img_text_url = false">确 定</el-button> -->
  741. </span>
  742. </el-dialog>
  743. </div>
  744. <script>
  745. const store_url = '{!! yzWebFullUrl('plugin.fight-groups.admin.controllers.fight-groups.store') !!}';
  746. var app = new Vue({
  747. el:"#app",
  748. delimiters: ['[[', ']]'],
  749. data() {
  750. let data = {!! $data?:'{}' !!};
  751. let keywords = data.keywords;
  752. let love_name = data.love_name?data.love_name:'';
  753. let loves = data.loves?data.loves:false;
  754. let fight_groups_lottery_set = data.fight_groups_lottery_set?data.fight_groups_lottery_set:false;
  755. let fight_groups_lottery_info = data.fight_groups_lottery_info?data.fight_groups_lottery_info:{};
  756. let is_open_integral = data.is_open_integral?data.is_open_integral:false;
  757. let store_obj = data.has_one_store_cashier?data.has_one_store_cashier:{};
  758. let is_store = data.is_store?data.is_store:false;
  759. let commission = data.commission?data.commission:{};
  760. let c_level = data.c_level?data.c_level:0;
  761. let comfort = data.comfort;
  762. // let isshow = false;
  763. console.log(commission,1111);
  764. // data.checkedlist = data.commissions
  765. data.checkedlist = this.fuc(data.commissions)
  766. if (fight_groups_lottery_set.open_type == 1 && fight_groups_lottery_info.is_open == undefined)
  767. {
  768. fight_groups_lottery_info.is_open = 1;
  769. }
  770. function checkdatelist(key){
  771. if (data[key]&&Array.isArray(data[key])&&data[key].length>0) return data[key];
  772. let arr = [];
  773. JSON.parse(JSON.stringify(commission)).forEach(item=>{
  774. arr.push(item)
  775. })
  776. return arr
  777. }
  778. console.log(data,888999);
  779. let form = {
  780. goods_id:"",
  781. goods_name:"",
  782. is_lead:0,
  783. barrage:0,
  784. hide_num:"1",
  785. setting:"",
  786. share_title:'原价¥<<商品最高价>>,现价¥<<商品最低价>>起,参加<<拼团活动名称>>即可享受',
  787. share_content : "活动商品数量有限,先到先得。",
  788. desc_title : "我已经参加了<<团长名称>>发起的拼团。",
  789. desc_content : "凑足<<拼团人数>>人即可享受拼团优惠,我已经参加,你也来吧。",
  790. has_many_level:[],
  791. has_many_options:[],//规格
  792. is_love:0,
  793. love:'',
  794. is_balance:0,
  795. balance_switch:data.balance_switch||0,
  796. group_list:checkdatelist("group_list"),//开团奖励
  797. level_list:checkdatelist("level_list"),//分销商等级多选与次数
  798. balance:'',
  799. is_coupon:0,
  800. is_coupon_lottery: 0,
  801. fight_groups_lottery_info:fight_groups_lottery_info,
  802. coupon:[],//优惠券
  803. coupon_lottery: [],
  804. coupon_lottery2: [],
  805. business_type:1,
  806. store_id:0,
  807. //分销
  808. commissions:{},
  809. commissions_list:[],
  810. commissions_list_data:{},
  811. c_level:c_level,
  812. comfort: comfort,
  813. ...data,
  814. checked:[data.commissions],
  815. info:true,
  816. is_show_be_being_group:data.is_show_be_being_group != null ? data.is_show_be_being_group : 1
  817. }
  818. let has_one_goods = {};
  819. let is_edit = false;
  820. if(form.id){
  821. if(form.start_time){
  822. form.start_time = form.start_time*1000;
  823. }
  824. if(form.end_time){
  825. form.end_time = form.end_time*1000;
  826. }
  827. has_one_goods = {
  828. ...form.has_one_goods
  829. }
  830. if(form.status == 1 || form.status == 0){
  831. is_edit = true;
  832. }
  833. }
  834. return{
  835. tab:"all",
  836. new_url:false,//新增活动弹出框
  837. step:1,//下一步
  838. has_option:0,//是否开启规格
  839. search_form:{},
  840. search_goods:{},
  841. category_list:[],
  842. goods_list:[],
  843. list:[],
  844. keywords:keywords,
  845. form:form,
  846. fight_groups_lottery_set:fight_groups_lottery_set,
  847. data:data,
  848. // has_many_options:has_many_options,//规格
  849. has_one_goods:has_one_goods,//回显商品信息
  850. is_edit:is_edit,//是否允许编辑
  851. //商品分页
  852. goods_total:0,
  853. goods_per_size:0,
  854. goods_current_page:0,
  855. // 优惠券
  856. coupon_show:false,
  857. lottery_coupon_show: false,
  858. coupon_keyword:"",
  859. lottery_coupon_keyword: "",
  860. coupon_list:[],
  861. lottery_coupon_list: [],
  862. // choose_coupon_list:[],
  863. // 爱心值
  864. love_name:love_name,
  865. loves:loves,
  866. is_open_integral:is_open_integral,
  867. //门店
  868. store_show:false,
  869. store_list:[],
  870. store_keyword:'',
  871. store_obj:store_obj,
  872. is_store:is_store,
  873. // 安慰奖名称
  874. ch_name: '',
  875. //分销等级
  876. commission:commission,
  877. c_level:c_level,
  878. loading:false,
  879. table_loading:false,
  880. rules:{
  881. title:{required: true, message: '请输入活动标题',}
  882. },
  883. }
  884. },
  885. created () {
  886. if(this.has_one_goods&&this.has_one_goods.title){
  887. this.has_one_goods.title = this.escapeHTML(this.has_one_goods.title);
  888. }
  889. if(!this.form.coupon || this.form.coupon == 'Array') {
  890. this.form.coupon = [];
  891. }
  892. if (this.data.fight_group_lottery_comfort && this.data.fight_groups_lottery_set.is_open == 1) {
  893. this.getNameComfort();
  894. }
  895. },
  896. mounted() {
  897. this.form.commissions_list =[]
  898. this.form.checkedlist.forEach(item => {
  899. let cc = {};
  900. this.$set(cc, `${item}`,item);
  901. this.form.commissions_list.push(cc);
  902. })
  903. },
  904. methods: {
  905. fuc(data){
  906. let dataList = []
  907. for(var key in data){
  908. if(key !== 'null'){
  909. dataList.push(key * 1);
  910. console.log(key,'key1');
  911. }else{
  912. console.log(key,'key2');
  913. }
  914. }
  915. return dataList
  916. },
  917. add() {
  918. var that = this;
  919. that.new_url = true;
  920. that.getCategory();
  921. this.search_goods = {};
  922. // let json = this.search_goods;
  923. // json.store_id = this.store_obj.id
  924. let json = {store_id:this.store_obj.id}
  925. that.getGoodsInfo(json);
  926. },
  927. //获得分类
  928. getCategory(){
  929. var that = this;
  930. let json ={}
  931. if(this.form.business_type == 2) {
  932. json = {store_id:this.store_obj&&this.store_obj.id?this.store_obj.id:''}
  933. };
  934. console.log(json)
  935. that.$http.post("{!! yzWebFullUrl('plugin.fight-groups.admin.controllers.fight-groups.get-category') !!}",json).then(response => {
  936. console.log(response);
  937. if(response.data.result==1){
  938. that.category_list = response.data.data;
  939. that.category_list.unshift({id:0,name:'全部分类'})
  940. }
  941. else{
  942. that.$message.error(response.data);
  943. }
  944. }),function(res){
  945. console.log(res);
  946. };
  947. },
  948. //获得商品列表
  949. getGoodsInfo(json){
  950. var that = this;
  951. that.table_loading = true;
  952. if(this.form.business_type == 2) {
  953. if(!this.store_obj||!this.store_obj.id){
  954. that.new_url = false;
  955. this.$message.error("门店id为空")
  956. return false;
  957. }
  958. };
  959. that.$http.post("{!! yzWebFullUrl('plugin.fight-groups.admin.controllers.fight-groups.search-goods') !!}",json).then(response => {
  960. console.log(response);
  961. if(response.data.result==1){
  962. that.goods_total = response.data.data.total;
  963. that.goods_per_size = response.data.data.per_page;
  964. that.goods_current_page = response.data.data.current_page;
  965. that.goods_list = response.data.data.data;
  966. this.goods_list.forEach((item,index) => {
  967. item.title = this.escapeHTML(item.title)
  968. });
  969. }
  970. else{
  971. that.$message.error(response.data);
  972. }
  973. console.log(that.goods_list);
  974. that.table_loading = false;
  975. }),function(res){
  976. console.log(res);
  977. that.table_loading = false;
  978. };
  979. },
  980. //搜索商品
  981. searchGoods() {
  982. console.log(this.search_goods);
  983. this.getGoodsInfo(this.search_goods)
  984. },
  985. // 商品分页
  986. currentChangeGoods(page) {
  987. let json ={};
  988. json = {category:this.search_goods.category,goods_name:this.search_goods.goods_name,page:page}
  989. if (this.form.business_type == 2) {
  990. json = {category:this.search_goods.category,goods_name:this.search_goods.goods_name,page:page,store_id:this.store_obj.id}
  991. }
  992. this.getGoodsInfo(json)
  993. },
  994. del(val){
  995. for(var i = 0; i < this.form.checkedlist.length; i++){
  996. if(this.form.checkedlist[i] == val){return i;}
  997. }
  998. return -1;
  999. },
  1000. delCommit(val){
  1001. for(var i = 0; i < this.form.commissions_list.length; i++){
  1002. if(this.form.commissions_list[i] == val){return i;}
  1003. }
  1004. return -1;
  1005. },
  1006. btnCheck(data,count){
  1007. let a = this.form.checkedlist.indexOf(data);
  1008. if(a === -1){
  1009. this.form.checkedlist.push(data)
  1010. }else{
  1011. let index = this.del(data)
  1012. this.form.checkedlist.splice(index,1);
  1013. }
  1014. this.form.commissions_list = []
  1015. this.form.checkedlist.forEach(item => {
  1016. let cc = {};
  1017. this.$set(cc, `${item}`,item);
  1018. this.form.commissions_list.push(cc);
  1019. })
  1020. this.form.info = false
  1021. // if(this.form.commissions.level){
  1022. // this.form.commissions_list.push({'level':this.form.commissions.level})
  1023. // }
  1024. // let abc = {}
  1025. // for(let item in this.form.commissions_list){
  1026. // this.$set(abc,`${item}`,this.form.commissions_list[item]);
  1027. // }
  1028. },
  1029. // 选择商品
  1030. choose(row,index) {
  1031. this.new_url = false,
  1032. this.has_one_goods.title = this.goods_list[index].title;
  1033. this.has_one_goods.id = this.goods_list[index].id;
  1034. this.has_one_goods.thumb = this.goods_list[index].thumb;
  1035. this.has_one_goods.price = this.goods_list[index].price;
  1036. this.has_one_goods.stock = this.goods_list[index].stock;
  1037. this.has_one_goods.sku = this.goods_list[index].sku;
  1038. this.has_option = this.goods_list[index].has_option;//是否开启规格
  1039. if(this.has_option){
  1040. this.form.has_many_options = this.goods_list[index].has_many_options;//规格
  1041. }
  1042. else {
  1043. this.form.has_many_options = [];
  1044. }
  1045. // 规格价格数据处理
  1046. // if(this.form.has_many_options.length>0) {
  1047. if(this.has_option) {
  1048. this.form.has_many_options.forEach((item,index) => {
  1049. this.form.has_many_options[index].option_price = item.product_price;
  1050. this.form.has_many_options[index].option_id = item.id;
  1051. this.form.has_many_options[index].option_title = item.title;
  1052. this.form.has_many_options[index].has_many_option_level = []
  1053. this.form.has_many_options[index].buy_limit = "0"
  1054. this.form.has_many_options[index].stock = item.stock;
  1055. })
  1056. }
  1057. else {
  1058. this.form.has_many_options.push({option_title:'单规格',option_price:this.goods_list[index].price,stock:this.goods_list[index].stock,buy_limit:"0",has_many_option_level:[]})
  1059. }
  1060. console.log(this.form.has_many_options);
  1061. // 添加has_many_option_level
  1062. // let arr =[];
  1063. // this.form.has_many_options.map((item,index)=>{
  1064. // arr.push(Object.assign({},item,{has_many_option_level:[],buy_limit:"0",stock:item.stock}))
  1065. // })
  1066. // this.form.has_many_options=arr;
  1067. this.form.goods_id = this.has_one_goods.id;
  1068. this.form.goods_name = this.has_one_goods.title;
  1069. },
  1070. // 添加关键词
  1071. addContent(name,index,x) {
  1072. console.log(this.$refs[name]);
  1073. let ref = this.$refs[name];
  1074. let words = "";
  1075. if(x==1){
  1076. words ="<<" + this.keywords.share_title[index] + ">>";
  1077. }
  1078. if(x==2){
  1079. words ="<<" + this.keywords.share_content[index] + ">>";
  1080. }
  1081. if(x==3){
  1082. words ="<<" + this.keywords.desc_title[index] + ">>";
  1083. }
  1084. if(x==4){
  1085. words ="<<" + this.keywords.desc_content[index] + ">>";
  1086. }
  1087. console.log(words)
  1088. this.insertInputTxt(name,words,x)
  1089. },
  1090. insertInputTxt(ref,words,x) {
  1091. let name = "";
  1092. if(x==1||x==3){
  1093. name = this.$refs[ref].$refs.input;
  1094. }
  1095. if(x==2||x==4){
  1096. name = this.$refs[ref].$refs.textarea;
  1097. }
  1098. var startPos = name.selectionStart;
  1099. console.log(startPos);
  1100. var endPos = name.selectionEnd;
  1101. if (startPos === undefined || endPos === undefined) return
  1102. var txt = name.value;
  1103. var result = txt.substring(0, startPos) + words + txt.substring(endPos)
  1104. name.value = result;
  1105. name.focus();
  1106. name.selectionStart = startPos + words.length;
  1107. name.selectionEnd = startPos + words.length;
  1108. console.log(name.value)
  1109. this.form[ref] = name.value;
  1110. },
  1111. // 下一步
  1112. next() {
  1113. // this.form.groupList.forEach(item=>{
  1114. // if (item.change) {
  1115. // console.log(item,"grounp");
  1116. // }
  1117. // })
  1118. // this.form.leverlist.forEach(item=>{
  1119. // if (item.change) {
  1120. // console.log(item,"lever");
  1121. // }
  1122. // })
  1123. // // console.log(this.form);
  1124. // return
  1125. if(this.form.business_type == 2) {
  1126. if(!this.store_obj.id){
  1127. this.$message.error("门店id为空")
  1128. return false;
  1129. }
  1130. }
  1131. if(!this.form.title) {
  1132. this.$message.error("活动标题不能为空!")
  1133. return false;
  1134. }
  1135. if(!this.has_one_goods.title) {
  1136. this.$message.error("请选择活动商品!")
  1137. return false;
  1138. }
  1139. if(this.form.has_many_level.length == 0) {
  1140. this.$message.error("层级不能为空!")
  1141. return false;
  1142. }
  1143. if(!this.form.start_time) {
  1144. this.$message.error("开始时间不能为空!")
  1145. return false;
  1146. }
  1147. if(this.form.end_time && this.form.start_time >= this.form.end_time) {
  1148. this.$message.error("开始时间不能大于或者等于结束时间!")
  1149. return false;
  1150. }
  1151. if(this.form.menu_show==1){
  1152. if(this.form.hide_num<1) {
  1153. this.$message.error("展示设置->可参的团数不能少于1")
  1154. return false;
  1155. }
  1156. }
  1157. this.form.has_many_level.some(item => {
  1158. if (isNaN(item.expire_in)) {
  1159. this.$message.error("拼团时间只能是数值");
  1160. return true;
  1161. }
  1162. if(!item.member_num || !item.expire_in){
  1163. this.$message.error("层级信息不完成!");
  1164. return true;
  1165. }
  1166. else if(item.member_num == 1){
  1167. this.$message.error("拼团人数不能为1");
  1168. return true;
  1169. } else if (this.monitorPoint(item.expire_in)) {
  1170. this.$message.error("拼团层级时间不能超过一位小数点");
  1171. return true;
  1172. }
  1173. else {
  1174. this.step = 2;
  1175. }
  1176. console.log(this.step)
  1177. });
  1178. // 添加层级价格
  1179. if(!this.form.id){
  1180. if(this.has_option){
  1181. for(let i=0;i<this.form.has_many_options.length;i++) {
  1182. this.form.has_many_options[i].has_many_option_level = [];
  1183. }
  1184. for(let i=0;i<this.form.has_many_options.length;i++) {
  1185. for(let j=0;j<this.form.has_many_level.length;j++) {
  1186. this.form.has_many_options[i].has_many_option_level.push({group_price:"",member_num:this.form.has_many_level[j].member_num})
  1187. }
  1188. }
  1189. console.log(this.form);
  1190. }
  1191. else {
  1192. this.form.has_many_options[0].has_many_option_level = [];
  1193. for(let j=0;j<this.form.has_many_level.length;j++) {
  1194. this.form.has_many_options[0].has_many_option_level.push({group_price:"0",member_num:this.form.has_many_level[j].member_num})
  1195. }
  1196. }
  1197. }
  1198. },
  1199. monitorPoint (str) {
  1200. let monitorStr = String(str);
  1201. let poiIndex = monitorStr.indexOf(".") + 1
  1202. if (poiIndex > 0 && monitorStr.length - poiIndex > 1) {
  1203. return true;
  1204. } else {
  1205. return false;
  1206. }
  1207. },
  1208. last() {
  1209. this.step = 1;
  1210. },
  1211. goBack() {
  1212. history.go(-1);
  1213. },
  1214. // 新增层级
  1215. addTier() {
  1216. if(this.form.has_many_level.length>=3){
  1217. this.$message.error("最多可设置3个阶梯");
  1218. return;
  1219. }
  1220. this.form.has_many_level.push({
  1221. level_num : this.form.has_many_level.length+1,
  1222. member_num : "",
  1223. expire_in : "",
  1224. })
  1225. },
  1226. delTier(index) {
  1227. this.form.has_many_level.splice(index,1);
  1228. // 层级重新排序
  1229. this.form.has_many_level.forEach((item,index1) => {
  1230. item.level_num = index1+1;
  1231. })
  1232. },
  1233. // 打开选择优惠券
  1234. openCoupon() {
  1235. this.coupon_show = true;
  1236. },
  1237. openLotteryCoupon() {
  1238. this.lottery_coupon_show = true;
  1239. },
  1240. getNameComfort() {
  1241. if (!this.data.fight_group_lottery_comfort || this.data.comfort_set.is_open != 1) {
  1242. return
  1243. }
  1244. var that = this;
  1245. that.table_loading = true;
  1246. {{--that.$http.post("{!! yzWebFullUrl('plugin.fight-group-lottery-comfort.admin.comfort.get-data') !!}", {--}}
  1247. {{--}).then(response => {--}}
  1248. {{--console.log(response,'response')--}}
  1249. {{--if (response.data.result == 1) {--}}
  1250. {{--that.ch_name = response.data.data.plugin_name--}}
  1251. {{--} else {--}}
  1252. {{--that.$message.error(response.data);--}}
  1253. {{--}--}}
  1254. {{--that.table_loading = false;--}}
  1255. {{--}),--}}
  1256. {{--function(res) {--}}
  1257. {{--console.log(res);--}}
  1258. {{--that.table_loading = true;--}}
  1259. {{--};--}}
  1260. },
  1261. // 搜索优惠券
  1262. searchCoupon() {
  1263. var that = this;
  1264. that.table_loading = true;
  1265. that.$http.post("{!! yzWebFullUrl('plugin.fight-groups.admin.controllers.fight-groups.coupon') !!}",{keyword:that.coupon_keyword}).then(response => {
  1266. console.log(response);
  1267. if(response.data.result==1){
  1268. // that.goods_total = response.data.data.total;
  1269. // that.goods_per_size = response.data.data.per_page;
  1270. // that.goods_current_page = response.data.data.current_page;
  1271. that.coupon_list = response.data.data;
  1272. }
  1273. else{
  1274. that.$message.error(response.data);
  1275. }
  1276. console.log(that.goods_list);
  1277. that.table_loading = false;
  1278. }),function(res){
  1279. console.log(res);
  1280. that.table_loading = false;
  1281. };
  1282. },
  1283. searchLotteryCoupon() {
  1284. if (!this.data.fight_groups_lottery_coupon || this.data.reward_coupon_set.is_open != 1) {
  1285. return
  1286. }
  1287. var that = this;
  1288. that.table_loading = true;
  1289. that.$http.post("{!! yzWebFullUrl('plugin.fight-groups-lottery-coupon.admin.index.search-coupon') !!}", {
  1290. keyword: that.lottery_coupon_keyword
  1291. }).then(response => {
  1292. if (response.data.result == 1) {
  1293. that.lottery_coupon_list = response.data.data;
  1294. } else {
  1295. that.$message.error(response.data);
  1296. }
  1297. that.table_loading = false;
  1298. }),
  1299. function(res) {
  1300. console.log(res);
  1301. that.table_loading = false;
  1302. };
  1303. },
  1304. chooseCoupon(item,index) {
  1305. let is_true = true;
  1306. this.form.coupon.some((item1,index1) => {
  1307. if(item1.id == item.id) {
  1308. is_true = false;
  1309. this.$message.error("请勿重复选择优惠券!");
  1310. return true;
  1311. }
  1312. })
  1313. if(is_true) {
  1314. this.form.coupon.push({id:item.id,name:item.name,coupon_num:'1'});
  1315. }
  1316. },
  1317. chooseCouponLottery(item, index) {
  1318. let is_true = true
  1319. this.form.coupon_lottery2.some((item1, index1) => {
  1320. if (item1.id == item.id) {
  1321. is_true = false;
  1322. this.$message.error("请勿重复选择优惠券!");
  1323. return true;
  1324. }
  1325. })
  1326. if (is_true) {
  1327. this.form.coupon_lottery2.push({
  1328. id: item.id,
  1329. name: item.name,
  1330. coupon_num: '1'
  1331. });
  1332. this.form.coupon_lottery = this.form.coupon_lottery2
  1333. console.log(this.form.coupon_lottery2,'this.form.coupon_lottery2')
  1334. }
  1335. },
  1336. // 删除优惠券
  1337. delCoupon(index) {
  1338. this.form.coupon.splice(index,1);
  1339. },
  1340. addStore(){
  1341. this.store_show = true;
  1342. },
  1343. searchStore() {
  1344. let that = this;
  1345. this.loading = true;
  1346. this.$http.post(store_url,{keyword:this.store_keyword}).then(response => {
  1347. if (response.data.result) {
  1348. console.log(response.data.data)
  1349. this.store_list = response.data.data;
  1350. } else {
  1351. this.$message({message: response.data.msg,type: 'error'});
  1352. }
  1353. this.loading = false;
  1354. },response => {
  1355. this.loading = false;
  1356. });
  1357. },
  1358. chooseStore(item) {
  1359. this.store_obj = item;
  1360. console.log(this.store_obj )
  1361. // this.store_ids.push(item.id)
  1362. // this.store_names.push(item.store_name)
  1363. // console.log(this.store_names)
  1364. },
  1365. closeStore(index) {
  1366. console.log(index)
  1367. this.store_ids.splice(index,1)
  1368. this.store_names.splice(index,1)
  1369. },
  1370. submitForm(){
  1371. var that = this;
  1372. let info_commissions = false
  1373. if(that.form.commissions){
  1374. if(that.form.commissions.level){
  1375. info_commissions = true
  1376. }
  1377. }else{
  1378. that.$set(that.form,"commissions","")
  1379. }
  1380. // that.form.commissions.level
  1381. if(info_commissions){
  1382. that.form.commissions_list.push({'level':that.form.commissions.level})
  1383. }else{
  1384. let index = that.delCommit('level')
  1385. that.form.commissions_list.splice(index,1);
  1386. this.form.commissions_list = []
  1387. this.form.checkedlist.forEach(item => {
  1388. let cc = {};
  1389. this.$set(cc, `${item}`,item);
  1390. this.form.commissions_list.push(cc);
  1391. })
  1392. }
  1393. let abc = {}
  1394. for(let item in that.form.commissions_list){
  1395. that.$set(abc,`${item}`,that.form.commissions_list[item]);
  1396. }
  1397. //
  1398. let qq = {}
  1399. for(var key in that.form.commissions_list){
  1400. for(let item in that.form.commissions_list[key]){
  1401. that.$set(this.form.commissions_list_data,`${item}`,that.form.commissions_list[key][item])
  1402. console.log(that.form.commissions_list[key][item],'item');
  1403. }
  1404. }
  1405. that.loading = true;
  1406. if(this.form.start_time) {
  1407. this.form.start_time = this.form.start_time/1000;
  1408. }
  1409. if(this.form.end_time) {
  1410. this.form.end_time = this.form.end_time/1000;
  1411. }
  1412. delete(this.form.goods_name)
  1413. delete(this.form.loves)
  1414. delete(this.form.love_name)
  1415. delete(this.form.commissions_list)
  1416. let josn = that.form;
  1417. josn.store_id = that.store_obj.id;
  1418. // console.log(that.form,josn.commissions,josn);
  1419. that.$http.post("{!! yzWebFullUrl('plugin.fight-groups.admin.controllers.fight-groups.save') !!}",{form_data:josn}).then(response => {
  1420. console.log(response);
  1421. if(response.data.result==1){
  1422. that.$message.success("保存成功!");
  1423. window.location.href='{!! yzWebFullUrl('plugin.fight-groups.admin.controllers.fight-groups.index') !!}';
  1424. }
  1425. else{
  1426. that.$message.error(response.data.msg);
  1427. if(this.form.start_time) {
  1428. this.form.start_time = this.form.start_time*1000;
  1429. }
  1430. if(this.form.end_time) {
  1431. this.form.end_time = this.form.end_time*1000;
  1432. }
  1433. }
  1434. that.loading = false;
  1435. }),function(res){
  1436. that.loading = false;
  1437. if(this.form.start_time) {
  1438. this.form.start_time = this.form.start_time*1000;
  1439. }
  1440. if(this.form.end_time) {
  1441. this.form.end_time = this.form.end_time*1000;
  1442. }
  1443. console.log(res);
  1444. };
  1445. },
  1446. // 字符转义
  1447. escapeHTML(a) {
  1448. a = "" + a;
  1449. return a.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&apos;/g, "'");;
  1450. },
  1451. }
  1452. })
  1453. </script>
  1454. @endsection