com-boss.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. <template id="com-boss">
  2. <div class="com-boss">
  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. <el-tabs v-model="activeName" @tab-click="handleClick">
  9. <el-tab-pane v-for="(setting,index) in form" :label="boss_commission_type[index]" :name="index" :key="index">
  10. <div>
  11. <el-form-item label="商品是否参与股东分红" prop="is_enable">
  12. <el-switch :active-value="1" :inactive-value="0" v-model="setting.is_enable"></el-switch>
  13. </el-form-item>
  14. <el-form-item label="是否独立设置" prop="is_alone">
  15. <el-switch :active-value="1" :inactive-value="0" v-model="setting.is_alone"></el-switch>
  16. </el-form-item>
  17. <template v-if="index == 'commission' && extend_data?.is_show_prize_pool !== false">
  18. <el-form-item label="商品是否进入奖金池分红" prop="is_prize_pool">
  19. <el-switch :active-value="1" :inactive-value="0" v-model="setting.is_prize_pool"></el-switch>
  20. </el-form-item>
  21. <template v-if="setting.is_prize_pool == 1">
  22. <el-form-item label="分红类型" prop="prize_pool_type">
  23. <el-radio-group v-model="setting.prize_pool_type" size="small">
  24. <el-radio :label="0">百分比</el-radio>
  25. <el-radio :label="1">固定值</el-radio>
  26. </el-radio-group>
  27. </el-form-item>
  28. <el-form-item label="分红金额" prop="prize_pool_num">
  29. <el-input v-model="setting.prize_pool_num" type="number" style="max-width:200px">
  30. <template slot="append">
  31. <span v-if="setting.prize_pool_type == 0">%</span>
  32. <span v-else>元</span>
  33. </template>
  34. </el-input>
  35. </el-form-item>
  36. </template>
  37. </template>
  38. <el-row :gutter="16" v-if="setting.is_alone == 1">
  39. <el-col :span="8">
  40. <el-card shadow="always">
  41. <!--永久分红设置 -->
  42. <div slot="header" class="clearfix">
  43. <span>永久分红</span>
  44. </div>
  45. <el-form-item>
  46. <el-col :span="24">
  47. <el-row>
  48. <el-col :span="5">
  49. <div class="grid-content bg-purple">股东等级</div>
  50. </el-col>
  51. <el-col :span="18">
  52. <div class="grid-content bg-purple-light">提成比例</div>
  53. </el-col>
  54. </el-row>
  55. <el-row v-for="(item,index) in level_arr.Boss" :key="index" style="margin-bottom:10px">
  56. <el-col :span="5">{{ item.name }}</el-col>
  57. <el-col :span="18">
  58. <el-input type="number" v-model="setting.detail[item.level].prize" placeholder="输入数值">
  59. <template slot="append">%</template>
  60. </el-input>
  61. </el-col>
  62. </el-row>
  63. </el-col>
  64. </el-form-item>
  65. </el-card>
  66. </el-col>
  67. <el-col :span="8">
  68. <el-card shadow="always">
  69. <div slot="header" class="clearfix">
  70. <span>开启额外分红</span>
  71. <el-switch :active-value="1" :inactive-value="0" v-model="setting.is_extra" style="margin-left: 10px;"></el-switch>
  72. </div>
  73. <!-- 额外分红设置 -->
  74. <el-form-item>
  75. <el-col :span="24">
  76. <el-row>
  77. <el-col :span="5">
  78. <div class="grid-content bg-purple">股东等级</div>
  79. </el-col>
  80. <el-col :span="18">
  81. <div class="grid-content bg-purple-light">额外分红比例</div>
  82. </el-col>
  83. </el-row>
  84. <el-row v-for="(item,index) in level_arr.Boss" :key="index" style="margin-bottom:10px">
  85. <el-col :span="5">{{ item.name }}</el-col>
  86. <el-col :span="18">
  87. <el-input type="number" v-model="setting.detail[item.level].extra_prize" placeholder="输入数值">
  88. <template slot="append">%</template>
  89. </el-input>
  90. </el-col>
  91. </el-row>
  92. </el-col>
  93. </el-form-item>
  94. </el-card>
  95. </el-col>
  96. </el-row>
  97. <template v-if="extend_data?.is_show_extra_ratio !== false">
  98. <el-form-item label="是否开启额外计算比例" prop="is_extra_ratio">
  99. <el-switch :active-value="1" :inactive-value="0" v-model="setting.is_extra_scale_ratio"></el-switch>
  100. <el-tooltip
  101. class="item"
  102. effect="dark"
  103. placement="bottom"
  104. >
  105. <i class="el-icon-question stat_icon"></i>
  106. <div slot="content" style="width: 300px; white-space: pre-line;">
  107. 开启后,股东的永久分红/额外分红/业绩分红需额外计算比例<br>
  108. 如:商品1000元,股东永久分红1%,原计算公式为:股东均分1000元*1%<br>
  109. 开启额外计算比例10%,则股东均分1000元*10%*1%
  110. </div>
  111. </el-tooltip>
  112. </el-form-item>
  113. <template v-if="setting.is_extra_scale_ratio == 1">
  114. <el-form-item label="额外计算比例" prop="extra_scale_ratio">
  115. <el-input v-model="setting.extra_scale_ratio" onInput="value=toNumber(value,2)" style="max-width:200px">
  116. <template slot="append">
  117. <span>%</span>
  118. </template>
  119. </el-input>
  120. </el-form-item>
  121. </template>
  122. </template>
  123. </div>
  124. </el-tab-pane>
  125. </el-tabs>
  126. </el-form>
  127. </el-card>
  128. </div>
  129. </template>
  130. <script>
  131. Vue.component('com-boss', {
  132. template: "#com-boss",
  133. props: {
  134. goods: {
  135. type: Object,
  136. default: () => {
  137. return {};
  138. }
  139. },
  140. level_arr: {
  141. type: Object,
  142. default: () => {
  143. return {};
  144. }
  145. },
  146. setting: {
  147. type: Object,
  148. default: () => {
  149. return {};
  150. }
  151. },
  152. boss_commission_type: {
  153. type: Object,
  154. default: () => {
  155. return {
  156. commission: '佣金',
  157. digital: '数字币'
  158. };
  159. }
  160. },
  161. extend_data: {
  162. type: Object,
  163. default: () => {
  164. return {
  165. is_show_prize_pool: true,
  166. is_show_extra_ratio: true
  167. };
  168. }
  169. }
  170. },
  171. data() {
  172. return {
  173. activeName: 'commission',
  174. form: {
  175. commission: {
  176. is_enable: 1,
  177. is_alone: 0,
  178. item_type: 'goods',
  179. commission_type: 'commission',
  180. is_extra: 0,
  181. detail: {},
  182. is_prize_pool: 0,
  183. prize_pool_type: 0,
  184. prize_pool_num: 0,
  185. is_extra_scale_ratio: 0,
  186. extra_scale_ratio: 0
  187. },
  188. digital: {
  189. is_enable: 1,
  190. is_alone: 0,
  191. item_type: 'goods',
  192. commission_type: ' digital',
  193. is_extra: 0,
  194. detail: {},
  195. is_prize_pool: 0,
  196. prize_pool_type: 0,
  197. prize_pool_num: 0
  198. },
  199. }
  200. }
  201. },
  202. watch: {
  203. setting: {
  204. deep: true,
  205. immediate: true,
  206. handler(value) {
  207. if (!isEmpty(value)) {
  208. this.form = value;
  209. }
  210. }
  211. },
  212. level_arr: {
  213. deep: true,
  214. immediate: true,
  215. handler(value) {
  216. if (!isEmpty(value)) {
  217. let _this = this
  218. var data = value.Boss;
  219. for (let name in _this.boss_commission_type) {
  220. let detail = {};
  221. var prize = isEmpty(_this.form[name]) ? {} : _this.form[name].detail;
  222. Object.keys(data).forEach(function(key) {
  223. var formKey = data[key].level;
  224. Object.assign(detail, {
  225. [formKey]: {
  226. level: data[key].level,
  227. prize: prize[formKey] ? prize[formKey].prize : 0,
  228. extra_prize: prize[formKey] ? prize[formKey].extra_prize : 0
  229. }
  230. });
  231. });
  232. _this.install = {
  233. is_enable: isEmpty(_this.form[name]) ? 1 : _this.form[name].is_enable,
  234. is_alone: isEmpty(_this.form[name]) ? 0 : _this.form[name].is_alone,
  235. is_extra: isEmpty(_this.form[name]) ? 0 : _this.form[name].is_extra,
  236. item_type: isEmpty(_this.form[name]) ? 'goods' : _this.form[name].item_type,
  237. commission_type: name,
  238. detail: detail,
  239. is_prize_pool: isEmpty(_this.form[name]) ? 0 : _this.form[name].is_prize_pool,
  240. prize_pool_type: isEmpty(_this.form[name]) ? 0 : _this.form[name].prize_pool_type,
  241. prize_pool_num: isEmpty(_this.form[name]) ? 0 : _this.form[name].prize_pool_num,
  242. is_extra_scale_ratio: isEmpty(_this.form[name]) ? 0 : _this.form[name].is_extra_scale_ratio,
  243. extra_scale_ratio: isEmpty(_this.form[name]) ? 0 : _this.form[name].extra_scale_ratio,
  244. };
  245. _this.$set(_this.form, name, JSON.parse(JSON.stringify(_this.install)));
  246. }
  247. }
  248. }
  249. },
  250. form: {
  251. deep: true,
  252. immediate: true,
  253. handler(value) {
  254. this.$emit("change", JSON.stringify(value), "Boss");
  255. }
  256. }
  257. },
  258. mounted() {
  259. this.getCurrencyText()
  260. },
  261. methods: {
  262. handleClick(tab, event) {
  263. console.log(tab, event);
  264. },
  265. getCurrencyText() {
  266. request({
  267. params: {
  268. r: 'mall/setting/get-currency-text',
  269. currency: Object.keys(this.boss_commission_type)
  270. },
  271. method: 'get',
  272. }).then(e => {
  273. if (e.data.code == 0) {
  274. let data = e.data.data
  275. for (let key in this.boss_commission_type) {
  276. if(key in data) {
  277. this.boss_commission_type[key] = data[key];
  278. }
  279. }
  280. console.log(e.data.data);
  281. }
  282. })
  283. },
  284. }
  285. });
  286. </script>