setting.php 65 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-dialog-select');
  4. ComponentHelper::loadComponentView('com-select-cat');
  5. ComponentHelper::loadComponentView('components/user-select', __DIR__);
  6. ?>
  7. <div id="app" v-cloak>
  8. <el-card class="box-card" v-loading="loading" shadow="never" style="border:0;min-width: 1500px;" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  9. <el-tabs v-model="tabName" @tab-click="handleChangeTab">
  10. <el-tab-pane label="基本设置" name="basic">
  11. <div slot="header">
  12. <div>
  13. <span>基础设置</span>
  14. </div>
  15. </div>
  16. <div class="form_box">
  17. <el-form :model="ruleForm" size="small" ref="ruleForm" label-width="150px">
  18. <el-card shadow="never">
  19. <div slot="header">
  20. <div>
  21. <span>经销设置</span>
  22. </div>
  23. </div>
  24. <div>
  25. <el-row>
  26. <el-col :span="16">
  27. <el-form-item label="启用渠道分红" style="margin-bottom: 0">
  28. <div>
  29. <el-switch v-model="ruleForm.is_enable" :active-value="1" :inactive-value="0"></el-switch>
  30. </div>
  31. <div class="tips-text" style="line-height: 24px;">
  32. 需开启后才能使用“渠道分红”插件的所有功能
  33. </div>
  34. </el-form-item>
  35. <el-form-item label="是否开启经销商省份" style="margin-bottom: 0">
  36. <div>
  37. <el-switch v-model="ruleForm.is_enable_province" :active-value="1" :inactive-value="0">
  38. </el-switch>
  39. </div>
  40. <div class="tips-text" style="line-height: 24px;">
  41. 是否开启渠道奖励
  42. </div>
  43. </el-form-item>
  44. <el-form-item label="推广中心显示" style="margin-bottom: 0">
  45. <div>
  46. <el-switch v-model="ruleForm.is_show_at_center" :active-value="1" :inactive-value="0">
  47. </el-switch>
  48. </div>
  49. </el-form-item>
  50. <el-form-item label="是否启用平级奖励" style="margin-bottom: 0">
  51. <div>
  52. <el-switch v-model="ruleForm.is_equal" :active-value="1" :inactive-value="0">
  53. </el-switch>
  54. </div>
  55. <div class="tips-text" style="line-height: 24px;">
  56. 是否开启平级奖
  57. </div>
  58. </el-form-item>
  59. <el-form-item prop="calculation_basis" label="平级奖计算依据">
  60. <label slot="label">平级奖计算依据
  61. <el-tooltip class="item" effect="dark" content="默认正常按支付价格(或商品售价,商品利润)来计算平级奖,上级渠道(下级渠道)获得极差来计算平级奖" placement="top-start">
  62. <i class="el-icon-info"></i>
  63. </el-tooltip>
  64. </label>
  65. <el-col :span="16" style="width: 100%;">
  66. <el-radio-group v-model="ruleForm.calculation_basis" size="small">
  67. <el-radio :label="0" border>默认</el-radio>
  68. <el-radio :label="1" border>上级渠道奖或级差</el-radio>
  69. <el-radio :label="2" border>下级渠道奖或级差</el-radio>
  70. </el-radio-group>
  71. </el-col>
  72. <div class="tips-text" style="line-height: 24px;">
  73. 默认:支付价格/商品售价/商品利润(按“计算方式”里的设置来计算<br/>
  74. 上级渠道奖或极差:拿上级渠道奖励*平级奖比例<br/>
  75. 下级渠道奖或极差:拿下级渠道奖励*平级奖比例
  76. </div>
  77. </el-form-item>
  78. <el-form-item prop="equal_computing_method" label="平级奖结算方式" v-show="!ruleForm.calculation_basis">
  79. <label slot="label">平级奖独立计算方式
  80. </label>
  81. <el-col :span="16" style="width: inherit;" class="equal-computing">
  82. <el-switch v-model="ruleForm.is_equal_computing_method" :active-value="1" :inactive-value="0"></el-switch>
  83. <el-radio-group v-model="ruleForm.equal_computing_method" size="small" v-show="ruleForm.is_equal_computing_method">
  84. <el-radio :label="0" border>支付价格</el-radio>
  85. <el-radio :label="1" border>商品售价</el-radio>
  86. <el-radio :label="2" border>商品利润</el-radio>
  87. </el-radio-group>
  88. </el-col>
  89. </el-form-item>
  90. <el-form-item prop="equal_settle_type" label="平级奖结算方式">
  91. <label slot="label">平级奖结算方式
  92. <el-tooltip class="item" effect="dark" content="奖励是由谁来结算平级奖" placement="top">
  93. <i class="el-icon-info"></i>
  94. </el-tooltip>
  95. </label>
  96. <el-col :span="16" style="width: 100%;">
  97. <el-radio-group v-model="ruleForm.equal_settle_type" size="small">
  98. <el-radio :label="0" border>平台结算</el-radio>
  99. <el-radio :label="1" border>上级拿级差或渠道奖者支付</el-radio>
  100. <el-radio :label="2" border>下级拿级差或渠道奖者支付</el-radio>
  101. </el-radio-group>
  102. </el-col>
  103. <div class="tips-text" style="line-height: 24px;">
  104. 平级奖是否平台结算给经销商还是由上级/下级拿极差或渠道奖励来做结算给经销商
  105. </div>
  106. </el-form-item>
  107. <el-form-item prop="over_calculation_basis" label="越级奖计算依据">
  108. <label slot="label">越级奖计算依据
  109. <el-tooltip class="item" effect="dark" content="默认正常按支付价格(或商品售价,商品利润)来计算越级奖,上级渠道(下级渠道)获得极差(未承担平级奖)来计算越级奖" placement="top-start">
  110. <i class="el-icon-info"></i>
  111. </el-tooltip>
  112. </label>
  113. <el-col :span="16" style="width: 100%;">
  114. <el-radio-group v-model="ruleForm.over_calculation_basis" size="small">
  115. <el-radio :label="0" border>默认</el-radio>
  116. <el-radio :label="1" border>上级渠道奖或级差</el-radio>
  117. <el-radio :label="2" border>下级渠道奖或级差</el-radio>
  118. </el-radio-group>
  119. </el-col>
  120. <div class="tips-text" style="line-height: 24px;">
  121. 默认:支付价格/商品售价/商品利润(按“计算方式”里的设置来计算<br/>
  122. 上级渠道奖或极差(未承担平级奖):拿上级渠道奖励*越级奖比例<br/>
  123. 下级渠道奖或极差(未承担平级奖):拿下级渠道奖励*越级奖比例
  124. </div>
  125. </el-form-item>
  126. <el-form-item prop="over_computing_method" label="越级奖结算方式" v-show="!ruleForm.over_calculation_basis">
  127. <label slot="label">越级奖独立计算方式</label>
  128. <el-col :span="16" style="width: inherit;" class="equal-computing">
  129. <el-switch v-model="ruleForm.is_over_computing_method" :active-value="1" :inactive-value="0"></el-switch>
  130. <el-radio-group fill="#e6a23c" v-model="ruleForm.over_computing_method" size="small" v-show="ruleForm.is_over_computing_method">
  131. <el-radio :label="0" border>支付价格</el-radio>
  132. <el-radio :label="1" border>商品售价</el-radio>
  133. <el-radio :label="2" border>商品利润</el-radio>
  134. </el-radio-group>
  135. </el-col>
  136. </el-form-item>
  137. <el-form-item prop="over_settle_type" label="越级奖结算方式">
  138. <label slot="label">越级奖结算方式
  139. <el-tooltip class="item" effect="dark" content="奖励是由谁来结算越级奖" placement="top">
  140. <i class="el-icon-info"></i>
  141. </el-tooltip>
  142. </label>
  143. <el-col :span="16" style="width: 100%;">
  144. <el-radio-group v-model="ruleForm.over_settle_type" size="small">
  145. <el-radio :label="0" border>平台结算</el-radio>
  146. <el-radio :label="1" border>上级拿级差或渠道奖者支付</el-radio>
  147. <el-radio :label="2" border>下级拿级差或渠道奖者支付</el-radio>
  148. </el-radio-group>
  149. </el-col>
  150. <div class="tips-text" style="line-height: 24px;">
  151. 越级奖是否平台结算给经销商还是由上级/下级拿极差或渠道奖励来做结算给经销商
  152. </div>
  153. </el-form-item>
  154. <el-form-item label="经销内购" prop="is_self_buy" required>
  155. <label slot="label">经销内购
  156. <el-tooltip class="item" effect="dark" content="开启经销内购,经销商自己购买商品,享受自己等级的提成" placement="top-start">
  157. <i class="el-icon-info"></i>
  158. </el-tooltip>
  159. </label>
  160. <el-switch v-model="ruleForm.is_self_buy" :active-value="1" :inactive-value="0" @change="handleChange">
  161. </el-switch>
  162. <div class="tips-text" style="line-height: 24px;">
  163. 开启内购,经销商自己买商品,拿第一个渠道奖
  164. </div>
  165. </el-form-item>
  166. <template v-if="ruleForm.is_self_buy==1">
  167. <el-form-item label="是否开启商品抵扣" prop="enable_goods_deduct">
  168. <label slot="label">是否开启商品抵扣
  169. <el-tooltip class="item" effect="dark" content="开启经销内购,才可开启内购时可按商品会员价支付" placement="top-start">
  170. <i class="el-icon-info"></i>
  171. </el-tooltip>
  172. </label>
  173. <el-switch v-model="ruleForm.enable_goods_deduct" :active-value="1" :inactive-value="0">
  174. </el-switch>
  175. </el-form-item>
  176. <el-form-item label="开启推荐奖" style="margin-bottom: 0">
  177. <div>
  178. <el-switch v-model="ruleForm.is_enable_recommend_award" :active-value="1" :inactive-value="0">
  179. </el-switch>
  180. </div>
  181. </el-form-item>
  182. </template>
  183. <!-- 内购时是否商品抵扣 - 此功能影响系统主流程,不做 -->
  184. <!-- <template v-if="ruleForm.is_self_buy == 1">-->
  185. <!-- <el-form-item label="内购时是否开启商品抵扣" prop="enable_goods_deduct">-->
  186. <!-- <label slot="label">是否开启商品抵扣-->
  187. <!-- <el-tooltip class="item" effect="dark"-->
  188. <!-- content="开启经销内购,才可开启内购时可按商品会员价支付"-->
  189. <!-- placement="top">-->
  190. <!-- <i class="el-icon-info"></i>-->
  191. <!-- </el-tooltip>-->
  192. <!-- </label>-->
  193. <!-- <el-switch v-model="ruleForm.enable_goods_deduct" :active-value="1" :inactive-value="0">-->
  194. <!-- </el-switch>-->
  195. <!-- </el-form-item>-->
  196. <!-- </template>-->
  197. <!-- 内购时是否商品抵扣 -->
  198. <el-form-item prop="agent_level" label="渠道奖励层级">
  199. <el-col :span="8">
  200. <el-input v-model="ruleForm.team_prize_deep" type="number" oninput="value=value.replace(/[^0-9]/g,'')">
  201. <template slot="append">层</template>
  202. </el-input>
  203. </el-col>
  204. <div class="tips-text" style="line-height: 24px;">
  205. 渠道层级设置
  206. </div>
  207. </el-form-item>
  208. <el-form-item label="首代平级奖" prop="is_equal_prize_first" required>
  209. <label slot="label">首代平级奖
  210. <el-tooltip class="item" effect="dark" content="开启首代平级奖,仅第一个获得极差奖的首个代理跟他平级的上级渠道获得奖励。" placement="top-start">
  211. <i class="el-icon-info"></i>
  212. </el-tooltip>
  213. </label>
  214. <el-switch v-model="ruleForm.is_equal_prize_first" :active-value="1" :inactive-value="0" @change="handleChange">
  215. </el-switch>
  216. <div class="tips-text" style="line-height: 24px;">
  217. 开启之后,只判断拿第一个极差奖的代理,与他关系链最近的上级是否跟他平级,若平级则拿平级奖,反之不拿。
  218. </div>
  219. </el-form-item>
  220. <el-form-item prop="agent_level" label="平级层级" :style="{'display': ruleForm.is_equal_prize_first ? 'none' : 'block' }">
  221. <el-col :span="8" style="width: 100%">
  222. <el-input v-model="ruleForm.equal_prize_deep" type="number" oninput="value=value.replace(/[^0-9]/g,'')">
  223. <template slot="append">层</template>
  224. </el-input>
  225. </el-col>
  226. <div class="tips-text" style="line-height: 24px;">
  227. 平级奖成绩:1层:获得渠道奖的上级渠道1个平级获得奖励,2层:获得渠道奖的上级渠道2个平级获得奖励
  228. </div>
  229. </el-form-item>
  230. <el-form-item label="平级找直推上级" style="margin-bottom: 0">
  231. <div>
  232. <el-switch v-model="ruleForm.is_find_equal_parent" :active-value="1" :inactive-value="0">
  233. </el-switch>
  234. </div>
  235. <div class="tips-text" style="line-height: 24px;">
  236. 开启以后“平级找直推上级(只给一级,不跳级)可以锁定”
  237. </div>
  238. </el-form-item>
  239. <el-form-item v-if="ruleForm.is_find_equal_parent == 1" label="平级找直推上级类型" style="margin-bottom: 20px">
  240. <el-col :span="8" style="width: 100%;">
  241. <el-radio-group v-model="ruleForm.find_a_level" size="small">
  242. <el-radio :label="0" border>找每个获得级差分红的直推上级奖励平级奖</el-radio>
  243. </el-radio-group>
  244. <el-radio-group v-model="ruleForm.find_a_level" size="small">
  245. <el-radio :label="1" border>只找第一个获得级差分红的直推上级奖励平级奖</el-radio>
  246. </el-radio-group>
  247. <el-radio-group v-model="ruleForm.find_a_level" size="small">
  248. <el-radio :label="2" border>只找第一个有设置平级奖并获得级差分红的等级直属上级奖励平级奖</el-radio>
  249. </el-radio-group>
  250. </el-col>
  251. </el-form-item>
  252. <el-form-item prop="compute_type" label="结算方式">
  253. <el-col :span="8" style="width: 100%;">
  254. <el-radio-group v-model="ruleForm.compute_type" size="small">
  255. <el-radio :label="0" border>订单完成后</el-radio>
  256. <el-radio :label="1" border>订单支付后</el-radio>
  257. </el-radio-group>
  258. <div class="input-number-box">
  259. <span>延时</span>
  260. <el-input-number size="small" v-model="ruleForm.compute_delay_day" :step="1" step-strictly @change="handleChange" :min="0" :max="30" label="延时天数"></el-input-number>
  261. <span>天结算</span>
  262. <span class="tips-text">(默认“0”天表示“订单支付后/订单完成后 立即结算”)</span>
  263. </div>
  264. </el-col>
  265. <div class="tips-text" style="line-height: 24px;">
  266. 选择所产生的佣金是订单支付后就可以结算还是需要订单完成后才能结算,注意:已结算的佣金可提现,一旦结算无法收回
  267. </div>
  268. </el-form-item>
  269. <el-form-item prop="computing_method" label="计算方式">
  270. <el-col :span="19" style="width: 100%;">
  271. <el-radio-group v-model="ruleForm.computing_method" size="small">
  272. <el-radio :label="0" border>支付价格</el-radio>
  273. <el-radio :label="1" border>商品售价</el-radio>
  274. <el-radio :label="2" border>商品利润</el-radio>
  275. </el-radio-group>
  276. </el-col>
  277. <div class="tips-text" style="line-height: 24px;">
  278. 佣金分计算方式,如佣金选择的是百分比计算,计算基数可选择支付价格的百分比还商品销售价格的百分比
  279. 还是利润的百分比<br/>
  280. (注意:利润=商品支付价格-成本,如选择的是利润的百分比,每个商品都需要设置其成本)
  281. </div>
  282. </el-form-item>
  283. <el-form-item prop="compute_type" label="渠道业绩额外奖结算">
  284. <el-col :span="19" style="width: 100%;">
  285. <el-radio-group v-model="ruleForm.team_achievement_compute_type" size="small">
  286. <el-radio :label="0" border>订单完成后</el-radio>
  287. <el-radio :label="1" border>按月结算</el-radio>
  288. </el-radio-group>
  289. </el-col>
  290. <div class="tips-text" style="line-height: 24px;">
  291. 下单会员的所有上级(有经销商身份),都可以获得额外奖励;结算分订单完成结算,或者每个月结算一次。
  292. </div>
  293. </el-form-item>
  294. <el-form-item label="引流补贴" style="margin-bottom: 0">
  295. <div>
  296. <el-switch v-model="ruleForm.is_drainage_subsidy" :active-value="1" :inactive-value="0">
  297. </el-switch>
  298. </div>
  299. <div class="tips-text" style="line-height: 24px;">
  300. 也是渠道极差分红,奖金由平台发放,商品独立设置。
  301. </div>
  302. </el-form-item>
  303. <el-form-item label="渠道补贴" style="margin-bottom: 0">
  304. <div>
  305. <el-switch v-model="ruleForm.is_team_subsidy" :active-value="1" :inactive-value="0">
  306. </el-switch>
  307. </div>
  308. <div class="tips-text" style="line-height: 24px;">
  309. 也是渠道极差分红,奖金由平台发放,商品独立设置。
  310. </div>
  311. </el-form-item>
  312. <el-form-item label="额外平级奖" style="margin-bottom: 0">
  313. <div>
  314. <el-switch v-model="ruleForm.is_extra_equal_prize" :active-value="1" :inactive-value="0">
  315. </el-switch>
  316. </div>
  317. </el-form-item>
  318. <el-form-item label="平级奖给予对象" style="margin-bottom: 0" v-if="ruleForm.is_extra_equal_prize">
  319. <div>
  320. <el-switch v-model="ruleForm.equal_prize_type" :active-value="1" :inactive-value="0">
  321. </el-switch>
  322. </div>
  323. <div class="tips-text" style="line-height: 24px;">
  324. 关闭按钮:平一奖励给拿渠道奖的平级直推上级,平二奖励给拿渠道奖的平级间推上级。<br>
  325. 开启按钮:平一奖励给拿渠道奖的最近的平级上级,平二奖励给拿渠道奖的第二近的平级上级。
  326. </div>
  327. </el-form-item>
  328. <el-form-item label="管理奖" style="margin-bottom: 0">
  329. <div>
  330. <el-switch v-model="ruleForm.is_manage_prize" :active-value="1" :inactive-value="0">
  331. </el-switch>
  332. </div>
  333. </el-form-item>
  334. <template v-if="ruleForm.is_manage_prize">
  335. <el-form-item label="指定等级">
  336. <div>
  337. <el-checkbox-group v-model="ruleForm.agent_level_select" @change="checkedFun">
  338. <el-checkbox v-for="(row,index) in agent_level_list" :label="row.level" :key="index">{{row.name}}</el-checkbox>
  339. </el-checkbox-group>
  340. </div>
  341. <div class="tips-text" style="line-height: 24px;">
  342. 指定等级用户获得极差收益的上级获得管理奖
  343. </div>
  344. </el-form-item>
  345. <el-form-item prop="manage_prize_deep" label="管理奖层级">
  346. <el-col :span="8">
  347. <el-input v-model="ruleForm.manage_prize_deep" type="number" @input="inputChange($event)">
  348. <template slot="append">层</template>
  349. </el-input>
  350. </el-col>
  351. </el-form-item>
  352. <el-form-item label="管理奖比例设置">
  353. <div class="tips-text">
  354. 根据获得极差收益的用户上级拿对应层级的管理奖
  355. </div>
  356. <div v-for="item in agent_level_select_list" v-if="ruleForm.manage_prize_deep > 0">
  357. <span>{{item.name}}:</span>
  358. <!-- <el-form-item :label="item.name"> -->
  359. <el-form-item v-for="(items,index) in ruleForm.agent_level_info[item.level]" :key='index' class="coupon-item" style="display: flex;align-items: center;">
  360. <el-input type="number" :min="0" class="member-money" v-model="items.prize" placeholder="" style="width: 300px;margin-right: 20px;">
  361. <template slot="prepend">第{{items.deep}}代</template>
  362. <template slot="append">%</template>
  363. </el-input>
  364. <!-- </el-form-item> -->
  365. </div>
  366. </el-form-item>
  367. </template>
  368. <el-form-item label="复购等于报单" style="margin-bottom: 0">
  369. <label slot="label">复购等于报单
  370. <el-tooltip class="item" effect="dark" placement="top-start">
  371. <div slot="content">
  372. 举例<br/>
  373. 等级身份:老板 合伙人 区域中心 区公司 市公司 省公司<br />
  374. 报单产品:680 6980 2w 4w 4w 4w<br>
  375. 极差奖励:20% 25% 30% 36% 38% 40%<br>
  376. A(合伙人)>>B(老板)B下单6980商品,A可以拿6980*25%=1745元<br>
  377. 如果A上面还有更高等级的区域中心,那么他拿30%-25%=5%的奖励<br>
  378. 一直分完为止。如果A上面没有高等级了的话不会在继续分了。<br>
  379. 开关开启以后复购等于报单;自己复购的商品可以拿极差奖励,正常走极差奖励分佣。<br>
  380. 假设自己是区域中心的身份,自己复购以后可以拿报单产品的30%<br>
  381. </div>
  382. <i class="el-icon-info"></i>
  383. </el-tooltip>
  384. </label>
  385. <div>
  386. <el-switch v-model="ruleForm.enable_repurchase_reward" :active-value="1" :inactive-value="0">
  387. </el-switch>
  388. </div>
  389. </el-form-item>
  390. <el-form-item prop="alone_equal_settle_type" label="平级奖励结算方式">
  391. <el-col :span="16" style="width: 100%;">
  392. <el-radio-group v-model="ruleForm.alone_equal_settle_type" size="small">
  393. <el-radio :label="0" border>下级拿级差或渠道奖者支付</el-radio>
  394. <el-radio :label="1" border>平台结算</el-radio>
  395. </el-radio-group>
  396. </el-col>
  397. </el-form-item>
  398. <!-- <el-form-item label="代理升级平级奖励" style="margin-bottom: 0">
  399. <div>
  400. <el-switch v-model="ruleForm.is_equal_by_upgrade" :active-value="1" :inactive-value="0">
  401. </el-switch>
  402. </div>
  403. <div class="tips-text" style="line-height: 24px;">
  404. 下单会员成为代理/代理升级发放奖励
  405. </div>
  406. </el-form-item>
  407. <el-form-item v-if="ruleForm.is_equal_by_upgrade == 1" label="团队产生代理奖励" style="margin-bottom: 0">
  408. <div>
  409. <el-switch v-model="ruleForm.is_upgrade_to_agent" :active-value="1" :inactive-value="0">
  410. </el-switch>
  411. </div>
  412. <div class="tips-text" style="line-height: 24px;">
  413. 开启后,下单会员成为代理才能发放代理平级奖励
  414. </div>
  415. </el-form-item> -->
  416. <el-form-item label="极差分红奖励配置" style="margin-bottom: 0">
  417. <div>
  418. <el-switch v-model="ruleForm.is_enable_diff_bonus" :active-value="1" :inactive-value="0">
  419. </el-switch>
  420. </div>
  421. </el-form-item>
  422. <template v-if="ruleForm.is_enable_diff_bonus == 1">
  423. <el-tabs v-model="activeName" @tab-click="handleClick">
  424. <template v-for="item in active_map">
  425. <el-tab-pane :label="item.name" :name="item.value"></el-tab-pane>
  426. </template>
  427. </el-tabs>
  428. <template v-if="activeName==1">
  429. <el-card class="box-card">
  430. <div slot="header" class="clearfix">
  431. <span>上级代理奖励</span>
  432. </div>
  433. <el-form-item prop="agent_level" label="占比">
  434. <el-col :span="8">
  435. <el-input v-model="ruleForm.parent_diff_bonus" type="number" >
  436. <template slot="append">%</template>
  437. </el-input>
  438. </el-col>
  439. </el-card>
  440. </template>
  441. <template v-if="activeName==2">
  442. <el-card class="box-card">
  443. <div slot="header" class="clearfix">
  444. <span>区域占比</span>
  445. </div>
  446. <el-form-item :label="level_6" label-width="60px">
  447. <el-input v-model="ruleForm.diff_bonus_area.regional_team_prize"
  448. onInput="value=toNumber(value,2)">
  449. <template slot="append">%</template>
  450. </el-input>
  451. </el-form-item>
  452. <el-form-item :label="level_1" label-width="60px">
  453. <el-input v-model="ruleForm.diff_bonus_area.province_team_prize"
  454. onInput="value=toNumber(value,2)">
  455. <template slot="append">%</template>
  456. </el-input>
  457. </el-form-item>
  458. <el-form-item :label="level_2" label-width="60px">
  459. <el-input v-model="ruleForm.diff_bonus_area.city_team_prize"
  460. onInput="value=toNumber(value,2)">
  461. <template slot="append">%</template>
  462. </el-input>
  463. </el-form-item>
  464. <el-form-item :label="level_3" label-width="60px">
  465. <el-input v-model="ruleForm.diff_bonus_area.district_team_prize"
  466. onInput="value=toNumber(value,2)">
  467. <template slot="append">%</template>
  468. </el-input>
  469. </el-form-item>
  470. <el-form-item :label="level_4" label-width="60px">
  471. <el-input v-model="ruleForm.diff_bonus_area.town_team_prize"
  472. onInput="value=toNumber(value,2)">
  473. <template slot="append">%</template>
  474. </el-input>
  475. </el-form-item>
  476. <el-form-item :label="level_5" label-width="60px">
  477. <el-input v-model="ruleForm.diff_bonus_area.community_team_prize"
  478. onInput="value=toNumber(value,2)">
  479. <template slot="append">%</template>
  480. </el-input>
  481. </el-form-item>
  482. </el-card>
  483. </template>
  484. <template v-if="activeName==3">
  485. <el-card class="box-card">
  486. <div slot="header" class="clearfix">
  487. <span>指定账户</span>
  488. </div>
  489. <div class="tab_search">
  490. <div class="search_form">
  491. <el-button style="float: right; padding: 3px 12px;margin: 20px 0;height: 32px;" type="primary" @click="editClick">+添加分配佣金账户</el-button>
  492. </div>
  493. </div>
  494. <el-table :data="userList" style="width: 100%" v-loading="listLoading" v-if="activeName==3" key="table1">
  495. <el-table-column prop="id" label="会员ID" min-width="100" align="center"></el-table-column>
  496. <el-table-column key='3' label="会员信息" width="240" >
  497. <template slot-scope="scope">
  498. <div class="table-info-img-text">
  499. <el-image class="table-info-img circle" :src="scope.row.avatar_url">
  500. <div slot="error" class="image-slot">
  501. <com-image src="/resources/img/common/default-avatar.png"></com-image>
  502. </div>
  503. </el-image>
  504. <div class="table-info-text">
  505. <div>{{scope.row.nickname}}</div>
  506. <div>{{scope.row.mobile}}</div>
  507. </div>
  508. </div>
  509. </template>
  510. </el-table-column>
  511. <el-table-column prop="sort" label="占比(%)" width="200">
  512. <template slot-scope="scope">
  513. <div v-if="sort_id != scope.row.id">
  514. <el-tooltip class="item" effect="dark" content="占比(%)" placement="top">
  515. <span>{{scope.row.prize}}</span>
  516. </el-tooltip>
  517. <el-button class="edit-sort" type="text" @click="edit(scope.row)">
  518. <img src="resources/img/mall/order/edit.png" alt="">
  519. </el-button>
  520. </div>
  521. <div style="display: flex;align-items: center" v-else>
  522. <el-input style="min-width: 70px" type="number" size="mini" class="change" v-model="sort" autocomplete="off">
  523. <template slot="append">%</template>
  524. </el-input>
  525. <el-button class="change-quit" type="text" style="color: #F56C6C;padding: 0 5px" icon="el-icon-error" circle @click="cancelEdit()"></el-button>
  526. <el-button class="change-success" type="text" style="margin-left: 0;color: #67C23A;padding: 0 5px" icon="el-icon-success" circle @click="handle(scope.row)">
  527. </el-button>
  528. </div>
  529. </template>
  530. </el-table-column>
  531. <el-table-column label="操作" min-width="100">
  532. <template slot-scope="scope">
  533. <el-button type="text" size="small" @click="update(scope.row)">删除</el-button>
  534. </template>
  535. </el-table-column>
  536. </el-table>
  537. </el-card>
  538. </template>
  539. </el-form-item>
  540. </template>
  541. <el-form-item label="越级奖跳过某个等级" style="margin-bottom: 0">
  542. <div>
  543. <el-switch v-model="ruleForm.is_enable_skip_level" :active-value="1" :inactive-value="0">
  544. </el-switch>
  545. </div>
  546. </el-form-item>
  547. <el-form-item label="越级奖跳过的等级" style="margin-bottom: 0" v-if="ruleForm.is_enable_skip_level">
  548. <div>
  549. <div>
  550. <el-select v-model="ruleForm.skip_level">
  551. <el-option v-for="(row,index) in agent_level_list" :label="row.name" :key="index" :value="row.level">{{row.name}}</el-option>
  552. </el-select>
  553. </div>
  554. </div>
  555. </el-form-item>
  556. <el-form-item label="平级奖仅针对下单人" style="margin-bottom: 0">
  557. <div>
  558. <el-switch v-model="ruleForm.is_enable_to_buyer_equal" :active-value="1" :inactive-value="0"></el-switch>
  559. </div>
  560. <div class="tips-text" style="line-height: 24px;">
  561. 开启后“平级奖”只对比与下单的人的等级是否一样,不一样则跳过。
  562. </div>
  563. </el-form-item>
  564. <el-form-item label="平级奖跳过的等级" style="margin-bottom: 0" v-if="ruleForm.is_enable_to_buyer_equal">
  565. <el-select v-model="ruleForm.skip_equal_level" clearable>
  566. <el-option v-for="(row,index) in agent_level_list" :label="row.name" :key="index" :value="row.level">{{row.name}}</el-option>
  567. </el-select>
  568. </el-form-item>
  569. <el-form-item label="平级奖与越级奖互斥" style="margin-bottom: 0">
  570. <div>
  571. <el-switch v-model="ruleForm.is_enable_me_over_equal" :active-value="1" :inactive-value="0"></el-switch>
  572. </div>
  573. <div class="tips-text" style="line-height: 24px;">
  574. 开启后“平级奖”与“越级奖”产生互斥,即当有“越级奖”产生时,则不会再分配“平级奖”。
  575. </div>
  576. </el-form-item>
  577. </el-col>
  578. </el-row>
  579. </div>
  580. </el-card>
  581. </el-form>
  582. <el-button :loading="btnLoading" class="button-item" type="primary" style="margin-top: 24px;"
  583. @click="store('ruleForm')" size="small">保存
  584. </el-button>
  585. </div>
  586. </el-tab-pane>
  587. <el-tab-pane label="更多设置" name="more" class="more-tabs">
  588. <?php ComponentHelper::loadComponentView('more', __DIR__ . '/'); ?>
  589. </el-tab-pane>
  590. </el-tabs>
  591. </el-card>
  592. <user-select v-model="show" @success="userSuccess"></user-select>
  593. </div>
  594. <script>
  595. const app = new Vue({
  596. el: '#app',
  597. data() {
  598. return {
  599. loading: false,
  600. btnLoading: false,
  601. tabName: 'basic',
  602. ruleForm: {
  603. is_enable: 0,
  604. is_show_at_center: 1,
  605. is_self_buy: 0,
  606. enable_goods_deduct: 0,
  607. // enable_goods_deduct: 0,
  608. is_equal: 0,
  609. is_contain_self: 0,
  610. equal_settle_type:0,
  611. is_equal_computing_method: 0,
  612. equal_computing_method: 0,
  613. is_over_computing_method: 0,
  614. over_computing_method: 0,
  615. calculation_basis:0,
  616. over_settle_type:0,
  617. over_calculation_basis:0,
  618. is_equal_self:0,
  619. is_equal_prize_first:0,
  620. equal_prize_deep:0,
  621. over_level:0,
  622. team_prize_deep:0,
  623. compute_type:0,
  624. compute_delay_day: 0,
  625. team_achievement_compute_type:0,
  626. computing_method:0,
  627. is_drainage_subsidy:0,
  628. is_team_subsidy:0,
  629. is_extra_equal_prize:0,
  630. equal_prize_type:0,
  631. is_manage_prize:0,
  632. manage_prize_deep:0,
  633. agent_level_select:[],
  634. agent_level_info:[],
  635. is_enable_recommend_award :0,
  636. enable_repurchase_reward: 0,
  637. is_find_equal_parent: 0,
  638. alone_equal_settle_type:0,
  639. is_enable_diff_bonus:0,
  640. parent_diff_bonus:0,
  641. diff_bonus_area:{
  642. regional_team_prize: 0,//大区
  643. province_team_prize: 0,//省
  644. city_team_prize: 0,//市
  645. district_team_prize: 0,//区
  646. town_team_prize: 0,//镇
  647. community_team_prize: 0,//小区
  648. },
  649. diff_bonus_user:[],
  650. is_equal_by_upgrade:0,
  651. is_upgrade_to_agent:0,
  652. find_a_level: 0,
  653. is_enable_skip_level: 0,
  654. skip_level: undefined,
  655. is_enable_to_buyer_equal: 0,
  656. skip_equal_level: null,
  657. is_enable_me_over_equal: 0
  658. },
  659. moreForm: {
  660. is_enable_team_buy_detail: 0,
  661. compute_type: 0,
  662. is_apply: 0,
  663. is_check: 0,
  664. protocol: '',
  665. },
  666. agent_level_list:[],
  667. agent_level_select_list:[],
  668. active_map:[
  669. {name:'上级代理奖励',value:'1'},
  670. {name:'区域分红',value:'2'},
  671. {name:'指定账户',value:'3'},
  672. ],
  673. activeName: '1',
  674. level_1: '省代',
  675. level_2: '市代',
  676. level_3: '区代',
  677. level_4: '镇代',
  678. level_5: '小区代',
  679. level_6: '大区代',
  680. userList:[],
  681. listLoading:false,
  682. show:false,
  683. sort_id:0,
  684. sort:0,
  685. }
  686. },
  687. mounted: function () {
  688. this.loadData();
  689. },
  690. methods: {
  691. handleClick(tab, event){
  692. },
  693. handleChangeTab(tab, event){
  694. this.tabName = tab.name;
  695. this.loadData();
  696. },
  697. loadData() {
  698. this.loading = true;
  699. request({
  700. params: {
  701. r: 'agent/setting/index',
  702. group : this.tabName,
  703. },
  704. method: 'get'
  705. }).then(e => {
  706. this.loading = false;
  707. if (e.data.code == 0) {
  708. if(this.tabName == 'basic'){
  709. console.log(e.data.data.list)
  710. this.ruleForm = Object.assign(this.ruleForm, e.data.data.list);
  711. if(e.data.data.agent_level_list){
  712. this.agent_level_list = e.data.data.agent_level_list;
  713. }else{
  714. this.agent_level_list = [];
  715. }
  716. if(e.data.data.agent_level_select_list){
  717. this.agent_level_select_list = e.data.data.agent_level_select_list;
  718. }else{
  719. this.agent_level_select_list = [];
  720. }
  721. this.userList = e.data.data.userList;
  722. }else if(this.tabName == 'more'){
  723. this.moreForm = Object.assign(this.moreForm, e.data.data.list);
  724. }
  725. }
  726. }).catch(e => {
  727. this.loading = false;
  728. })
  729. },
  730. store(formName) {
  731. let self = this;
  732. if(this.ruleForm.is_enable_diff_bonus == 1){
  733. let diff_bonus = 0;
  734. diff_bonus = Number(this.ruleForm.parent_diff_bonus) + Number(this.ruleForm.diff_bonus_area.regional_team_prize) + Number(this.ruleForm.diff_bonus_area.province_team_prize) + Number(this.ruleForm.diff_bonus_area.city_team_prize) + Number(this.ruleForm.diff_bonus_area.district_team_prize) + Number(this.ruleForm.diff_bonus_area.town_team_prize) + Number(this.ruleForm.diff_bonus_area.community_team_prize);
  735. if(this.userList.length > 0){
  736. for (let i in this.userList) {
  737. diff_bonus = diff_bonus + Number(this.userList[i].prize);
  738. }
  739. }
  740. if(diff_bonus > 100){
  741. this.$message.error('极差分红占比不能大于100%');
  742. return ;
  743. }
  744. }
  745. console.log(formName);
  746. this.$refs[formName].validate((valid) => {
  747. if (valid) {
  748. let formData = {};
  749. let tabName = self.tabName;
  750. if(formName == 'ruleForm'){
  751. this.ruleForm.diff_bonus_user = this.userList;
  752. formData[tabName] = this.ruleForm;
  753. }else if(formName === 'moreForm'){
  754. formData[tabName] = this.moreForm;
  755. }
  756. formData.group = tabName;
  757. console.log(formData);
  758. this.btnLoading = true;
  759. request({
  760. params: {
  761. r: 'agent/setting/index',
  762. },
  763. method: 'post',
  764. data: formData
  765. }).then(e => {
  766. this.btnLoading = false;
  767. if (e.data.code == 0) {
  768. this.$message.success(e.data.msg);
  769. } else {
  770. this.$message.error(e.data.msg);
  771. }
  772. }).catch(e => {
  773. this.$message.error(e);
  774. this.btnLoading = false;
  775. })
  776. } else {
  777. this.btnLoading = false;
  778. console.log('error submit!!');
  779. return false;
  780. }
  781. });
  782. },
  783. checkedFun(e){
  784. this.agent_level_select_list = [];
  785. this.ruleForm.agent_level_select.sort(function(a, b){return a - b});
  786. this.agent_level_list.forEach((item, index)=>{
  787. if(this.ruleForm.agent_level_select.includes(item.level)){
  788. this.agent_level_select_list.push(item);
  789. }
  790. });
  791. console.log('33333333333',this.ruleForm.manage_prize_deep);
  792. if(this.ruleForm.manage_prize_deep > 0){
  793. this.inputChange();
  794. }
  795. },
  796. handleChange(value){
  797. if(!value) this.ruleForm.is_enable_recommend_award = 0;
  798. },
  799. inputChange(value = null){
  800. if(value){
  801. this.ruleForm.manage_prize_deep = value.replace(/[^0-9]/g,'');
  802. }
  803. if(this.ruleForm.manage_prize_deep > 0 && this.ruleForm.agent_level_select.length > 0){
  804. let agent_level_info = [];
  805. this.ruleForm.agent_level_select.forEach((item, index)=>{
  806. agent_level_info[item] = [];
  807. for(let i = 1;i<=this.ruleForm.manage_prize_deep;i++){
  808. let info = [];
  809. if(this.ruleForm.agent_level_info[item]){
  810. this.ruleForm.agent_level_info[item].forEach((items, indexs)=>{
  811. if(items.deep == i){
  812. info = items;
  813. }
  814. });
  815. }
  816. if(info.length == 0){
  817. info = {
  818. deep:i,
  819. prize:0,
  820. };
  821. }
  822. agent_level_info[item].push(info);
  823. }
  824. });
  825. this.ruleForm.agent_level_info = agent_level_info;
  826. }
  827. },
  828. editClick(row = null) {
  829. this.show = true;
  830. },
  831. userSuccess(param) {
  832. console.log(param);
  833. let flag = true;
  834. for (let i in this.userList) {
  835. if (this.userList[i].id == param.id) {
  836. flag = false;
  837. break;
  838. }
  839. }
  840. if (flag) {
  841. param.prize = 0;
  842. this.userList.push(param);
  843. }
  844. console.log(this.userList);
  845. },
  846. //删除
  847. update(row) {
  848. index = 0;
  849. for (let i in this.userList) {
  850. if (this.userList[i].id == row.id) {
  851. index = i;
  852. break;
  853. }
  854. }
  855. this.userList.splice(index, 1);
  856. },
  857. edit(row){
  858. this.sort_id = row.id;
  859. this.sort = row.prize;
  860. },
  861. cancelEdit() {
  862. this.sort_id = 0;
  863. this.sort = 0;
  864. },
  865. handle(row){
  866. index = 0;
  867. for (let i in this.userList) {
  868. if (this.userList[i].id == row.id) {
  869. index = i;
  870. break;
  871. }
  872. }
  873. this.userList[index].prize = this.sort;
  874. this.sort_id = 0;
  875. this.sort = 0;
  876. }
  877. }
  878. });
  879. </script>
  880. <style>
  881. .form_box {
  882. background-color: #f3f3f3;
  883. padding: 0 0 20px;
  884. }
  885. .button-item {
  886. margin-top: 12px;
  887. padding: 9px 25px;
  888. }
  889. .el-input-group__append {
  890. background-color: #fff;
  891. color: #353535;
  892. }
  893. .equal-computing {
  894. display: flex;
  895. flex-direction: column;
  896. }
  897. .equal-computing .el-radio-group{
  898. margin-top: 10px;
  899. display: flex;
  900. border: 1px solid #ebebeb;
  901. border-radius: 3px;
  902. padding: 10px;
  903. position: relative;
  904. }
  905. .equal-computing .el-radio-group::before {
  906. content: "";
  907. position: absolute;
  908. top: -5px;
  909. left: 10px;
  910. border-right: 1px solid #ebebeb;
  911. border-top: 1px solid #ebebeb;
  912. height: 8px;
  913. width: 8px;
  914. -webkit-transform: rotate(315deg);
  915. transform: rotate(315deg);
  916. border-left: 1px solid transparent;
  917. border-bottom: 1px solid transparent;
  918. background-color: #FFF;
  919. }
  920. .equal-computing .el-switch {
  921. height: 32px;
  922. place-self: flex-start;
  923. }
  924. .input-number-box{
  925. margin-left: 38px;
  926. display: inline-block;
  927. }
  928. .input-number-box .el-input-number{
  929. margin: 0 8px;
  930. }
  931. .input-number-box,.input-number-box span{
  932. vertical-align: middle;
  933. }
  934. </style>