com-serve-bonus.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <template id="com-serve-bonus">
  2. <div class="com-serve-bonus">
  3. <el-card class="edit-card" shadow="never">
  4. <!-- <div slot="header" class="clearfix">
  5. <div class="card-title">服务商分红设置<span class="card-sub-title"></span></div>
  6. </div> -->
  7. <el-form :model="form" size="small">
  8. <div v-for="(setting,index) in form">
  9. <el-form-item label="商品是否参与服务商分红" prop="is_enable">
  10. <el-switch :active-value="1" :inactive-value="0" v-model="setting.is_enable"></el-switch>
  11. </el-form-item>
  12. <el-form-item label="是否独立设置" prop="is_alone">
  13. <el-switch :active-value="1" :inactive-value="0" v-model="setting.is_alone"></el-switch>
  14. </el-form-item>
  15. <el-row :gutter="16" v-if="setting.is_alone == 1">
  16. <el-col :span="8">
  17. <el-card shadow="always">
  18. <!--永久分红设置 -->
  19. <div slot="header" class="clearfix">
  20. <span>出单奖励</span>
  21. </div>
  22. <el-form-item>
  23. <el-col :span="24">
  24. <el-row>
  25. <el-col :span="5">
  26. <div class="grid-content bg-purple">奖励类型</div>
  27. </el-col>
  28. <el-col :span="18">
  29. <div class="grid-content bg-purple-light">
  30. <el-radio-group v-model="setting.is_percent_prize">
  31. <el-radio :label="0"
  32. class="grid-content bg-purple">百分比</el-radio>
  33. <el-radio :label="1"
  34. class="grid-content bg-purple">固定金额</el-radio>
  35. </el-radio-group>
  36. </div>
  37. </el-col>
  38. </el-row>
  39. <el-row>
  40. <el-col :span="5">
  41. <div class="grid-content bg-purple">服务商等级</div>
  42. </el-col>
  43. <el-col :span="18">
  44. <div class="grid-content bg-purple-light">出单奖励设置</div>
  45. </el-col>
  46. </el-row>
  47. <el-row v-for="(item,index) in level_arr.ServeBonus" :key="index"
  48. style="margin-bottom:10px">
  49. <el-col :span="5">{{ item.name }}</el-col>
  50. <el-col :span="18">
  51. <el-input v-model="setting.detail[item.level].prize"
  52. onkeyup="value=toNumber(value,2)" placeholder="输入数值">
  53. <template slot="append">{{ setting.is_percent_prize == 0 ? '%' : '元'
  54. }}</template>
  55. </el-input>
  56. </el-col>
  57. </el-row>
  58. </el-col>
  59. </el-form-item>
  60. </el-card>
  61. </el-col>
  62. <el-col :span="8">
  63. <el-card shadow="always">
  64. <div slot="header" class="clearfix">
  65. <span>加权分红</span>
  66. </div>
  67. <!-- 加权分红设置 -->
  68. <!-- 额外分红设置 -->
  69. <el-form-item>
  70. <el-col :span="24">
  71. <el-row>
  72. <el-col :span="5">
  73. <div class="grid-content bg-purple">分红类型</div>
  74. </el-col>
  75. <el-col :span="18">
  76. <div class="grid-content bg-purple-light">
  77. <el-radio-group v-model="setting.is_percent_extra">
  78. <el-radio :label="0"
  79. class="grid-content bg-purple">百分比</el-radio>
  80. <el-radio :label="1"
  81. class="grid-content bg-purple">固定金额</el-radio>
  82. </el-radio-group>
  83. </div>
  84. </el-col>
  85. </el-row>
  86. <el-row>
  87. <el-col :span="5">
  88. <div class="grid-content bg-purple">服务商等级</div>
  89. </el-col>
  90. <el-col :span="18">
  91. <div class="grid-content bg-purple-light">加权分红设置</div>
  92. </el-col>
  93. </el-row>
  94. <el-row v-for="(item,index) in level_arr.ServeBonus" :key="index"
  95. style="margin-bottom:10px">
  96. <el-col :span="5">{{ item.name }}</el-col>
  97. <el-col :span="18">
  98. <el-input v-model="setting.detail[item.level].extra_prize"
  99. onkeyup="value=toNumber(value,2)" placeholder="输入数值">
  100. <template slot="append">{{ setting.is_percent_extra == 0 ? '%' : '元'
  101. }}</template>
  102. </el-input>
  103. </el-col>
  104. <el-col :span="9">
  105. <span style="margin: 0 10px 0 20px;">开启叠加分红</span><el-switch
  106. :active-value="1" :inactive-value="0"
  107. v-model="setting.detail[item.level].is_accumulation"></el-switch>
  108. </el-col>
  109. </el-row>
  110. </el-col>
  111. </el-form-item>
  112. </el-card>
  113. </el-col>
  114. <el-col :span="8">
  115. <el-card shadow="always">
  116. <div slot="header" class="clearfix">
  117. <span>云库存业绩分红</span>
  118. </div>
  119. <!-- 业绩分红设置 -->
  120. <el-form-item>
  121. <el-col :span="24">
  122. <el-row>
  123. <el-col :span="5">
  124. <div class="grid-content bg-purple">分红类型</div>
  125. </el-col>
  126. <el-col :span="18">
  127. <div class="grid-content bg-purple-light">
  128. <el-radio-group v-model="setting.cloud_stock_achievement_percent">
  129. <el-radio :label="0"
  130. class="grid-content bg-purple">百分比</el-radio>
  131. <el-radio :label="1"
  132. class="grid-content bg-purple">固定金额</el-radio>
  133. </el-radio-group>
  134. </div>
  135. </el-col>
  136. </el-row>
  137. <el-row>
  138. <el-col :span="5">
  139. <div class="grid-content bg-purple">服务商等级</div>
  140. </el-col>
  141. <el-col :span="18">
  142. <div class="grid-content bg-purple-light">业绩分红设置</div>
  143. </el-col>
  144. </el-row>
  145. <el-row v-for="(item,index) in level_arr.ServeBonus" :key="index"
  146. style="margin-bottom:10px">
  147. <el-col :span="5">{{ item.name }}</el-col>
  148. <el-col :span="18">
  149. <el-input v-model="setting.detail[item.level].cloud_stock_achievement_prize"
  150. onkeyup="value=toNumber(value,2)" placeholder="输入数值">
  151. <template slot="append">{{ setting.cloud_stock_achievement_percent == 0 ? '%' : '元'
  152. }}</template>
  153. </el-input>
  154. </el-col>
  155. </el-row>
  156. </el-col>
  157. </el-form-item>
  158. </el-card>
  159. </el-col>
  160. </el-row>
  161. </div>
  162. </el-form>
  163. </el-card>
  164. </div>
  165. </template>
  166. <script>
  167. Vue.component('com-serve-bonus', {
  168. template: "#com-serve-bonus",
  169. props: {
  170. goods: {
  171. type: Object,
  172. default: () => {
  173. return {};
  174. }
  175. },
  176. level_arr: {
  177. type: Object,
  178. default: () => {
  179. return {};
  180. }
  181. },
  182. setting: {
  183. type: Object,
  184. default: () => {
  185. return {};
  186. }
  187. },
  188. },
  189. data() {
  190. return {
  191. form: {
  192. commission: {
  193. is_enable: 0,
  194. is_alone: 0,
  195. item_type: 'goods',
  196. commission_type: 'commission',
  197. is_percent_prize: 1,
  198. is_percent_extra: 1,
  199. cloud_stock_achievement_percent:1,
  200. detail: {}
  201. }
  202. }
  203. }
  204. },
  205. watch: {
  206. setting: {
  207. deep: true,
  208. immediate: true,
  209. handler(value) {
  210. if (!isEmpty(value)) {
  211. this.form = value;
  212. }
  213. }
  214. },
  215. level_arr: {
  216. deep: true,
  217. immediate: true,
  218. handler(value) {
  219. if (!isEmpty(value)) {
  220. var data = value.ServeBonus;
  221. let detail = {};
  222. var prize = isEmpty(this.form) ? {} : this.form.commission.detail;
  223. Object.keys(data).forEach(function (key) {
  224. var formKey = data[key].level;
  225. Object.assign(detail, {
  226. [formKey]: {
  227. level: data[key].level,
  228. prize: prize[formKey] ? prize[formKey].prize : 0,
  229. extra_prize: prize[formKey] ? prize[formKey].extra_prize : 0,
  230. is_accumulation: prize[formKey] ? prize[formKey].is_accumulation : 0,
  231. cloud_stock_achievement_prize:prize[formKey] ? prize[formKey].cloud_stock_achievement_prize : 0,
  232. }
  233. });
  234. });
  235. for (let key in this.form) {
  236. this.form[key].detail = detail;
  237. }
  238. }
  239. }
  240. },
  241. form: {
  242. deep: true,
  243. immediate: true,
  244. handler(value) {
  245. this.$emit("change", JSON.stringify(value), "ServeBonus");
  246. }
  247. }
  248. }
  249. });
  250. </script>