com-reservation-service.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template id="com-reservation-service">
  2. <div class="com-reservation-service">
  3. <el-card class="edit-card" shadow="never">
  4. <el-form :model="form" size="small" label-width="150px">
  5. <el-tabs v-model="activeName" @tab-click="handleClick">
  6. <el-tab-pane v-for="(item,key) in form" :label="commission_type_map[key]" :name="key" :key="key">
  7. <el-row>
  8. <el-col :span="9">
  9. <el-form-item label="开启分销提成奖励" prop="en_enable">
  10. <el-switch :active-value="1" :inactive-value="0" v-model="item.is_enable"></el-switch>
  11. <p style="color: #999">拿项目服务的金额比例,比如项目金额是100元的,技师拿80块钱,平台入账20</p>
  12. </el-form-item>
  13. <el-form-item label="项目服务佣金" prop="commission">
  14. <el-input v-model="item.commission">
  15. <template #append>
  16. <el-radio-group v-model="item.is_percent">
  17. <el-radio :label="1">百分比</el-radio>
  18. <el-radio :label="0">固定值</el-radio>
  19. </el-radio-group>
  20. </template>
  21. </el-input>
  22. </el-form-item>
  23. <el-form-item label="开启分销提成奖励" prop="is_enable_distribution">
  24. <el-switch :active-value="1" :inactive-value="0" v-model="item.is_enable_distribution"></el-switch>
  25. <p style="color: #999">开启以后可以享受下级服务项目提成的百分比奖励</p>
  26. </el-form-item>
  27. <template v-if="item.is_enable_distribution == 1">
  28. <!-- 等级,需要遍历所有等级 -->
  29. <el-form-item v-for="(item1, index) in level_arr.ReservationService" :label="item1.name" :key="index">
  30. <el-input v-model="item.distribution_config[item1.level].commission">
  31. <template #append>
  32. <el-radio-group v-model="item.distribution_config[item1.level].is_percent">
  33. <el-radio :label="1">百分比</el-radio>
  34. <el-radio :label="0">固定值</el-radio>
  35. </el-radio-group>
  36. </template>
  37. </el-input>
  38. </el-form-item>
  39. </template>
  40. </el-col>
  41. </el-row>
  42. </el-tab-pane>
  43. </el-tabs>
  44. </el-form>
  45. </el-card>
  46. </div>
  47. </template>
  48. <script>
  49. Vue.component('com-reservation-service', {
  50. template: "#com-reservation-service",
  51. props: {
  52. level_arr: {
  53. type: Object,
  54. default: () => {
  55. return {};
  56. }
  57. },
  58. setting: {
  59. type: Object,
  60. default: () => {
  61. return {};
  62. }
  63. },
  64. commission_type_map: {
  65. type: Object,
  66. default: () => {
  67. return {};
  68. }
  69. }
  70. },
  71. data() {
  72. return {
  73. activeName: 'commission',
  74. form: {},
  75. }
  76. },
  77. watch: {
  78. setting: {
  79. deep: true,
  80. immediate: true,
  81. handler(value) {
  82. if (!isEmpty(value)) {
  83. // console.log('typeof(value.config)', typeof(value.config))
  84. for (let valueKey in value) {
  85. if (typeof value[valueKey].distribution_config == 'string') {
  86. value[valueKey].distribution_config = JSON.parse(value[valueKey].distribution_config)
  87. }
  88. }
  89. this.form = value;
  90. }
  91. }
  92. },
  93. level_arr: {
  94. deep: true,
  95. immediate: true,
  96. handler(value) {
  97. if (!isEmpty(value)) {
  98. // 如果不存在那么就处理
  99. let def_levels = {}
  100. for (let key in value.ReservationService) {
  101. def_levels[value.ReservationService[key].level] = {
  102. commission: 0,
  103. is_percent: 1,
  104. }
  105. }
  106. for (let commissionTypeMapKey in this.commission_type_map) {
  107. if (["commission"].indexOf(commissionTypeMapKey) > -1) {
  108. for (let levelArrKey in this.level_arr) {
  109. if (!this.form[commissionTypeMapKey]) {
  110. this.$set(this.form, commissionTypeMapKey, {
  111. is_enable: 0,
  112. is_percent: 1,
  113. commission: 0,
  114. item_type: 'goods',
  115. commission_type: commissionTypeMapKey,
  116. is_enable_distribution: 0,
  117. distribution_config: JSON.parse(JSON.stringify(def_levels))
  118. })
  119. }
  120. }
  121. }
  122. }
  123. this.$forceUpdate()
  124. }
  125. }
  126. },
  127. form: {
  128. deep: true,
  129. immediate: true,
  130. handler(value) {
  131. this.$emit("change", JSON.stringify(value), "ReservationService");
  132. }
  133. }
  134. },
  135. mounted() {
  136. console.log('mounted', this.setting, this.level_arr, this.commission_type_map)
  137. },
  138. methods: {
  139. handleClick(tab, event) {},
  140. participate(data) {
  141. for(let name in this.form) {
  142. this.form[name].is_participate = data
  143. }
  144. },
  145. }
  146. });
  147. </script>