SmallShop.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. define({
  2. name: "SmallShop",
  3. template: `
  4. <div>
  5. <el-form ref="form" label-width="15%">
  6. <div id="vue_head">
  7. <div class="base_set">
  8. <div class="vue-main-title">
  9. <div class="vue-main-title-left"></div>
  10. <div class="vue-main-title-content">微店分红</div>
  11. </div>
  12. <el-divider></el-divider>
  13. <el-form-item label="微店分红" prop="status">
  14. <el-radio v-model="is_open_bonus" :label="0">关闭</el-radio>
  15. <el-radio v-model="is_open_bonus" :label="1">开启</el-radio>
  16. <div class="help-block">通过微店店主链接购买任何参与微店分红的商品,店主都可获得对应的等级分红</span></div>
  17. </el-form-item>
  18. <div class="vue-main-title">
  19. <div class="vue-main-title-left"></div>
  20. <div class="vue-main-title-content">店主独立分红设置</div>
  21. </div>
  22. <el-divider></el-divider>
  23. <el-form-item label="店主独立分红设置" prop="harvest">
  24. <el-switch v-model="independent_bonus" :active-value="1" :inactive-value="0"></el-switch>
  25. <div class="help-block">启用店主独立设置,微店店主拥有独立的分红比例,不受店主等级分红比例影响</div>
  26. </el-form-item>
  27. <el-form-item v-show="independent_bonus">
  28. <div class="help-block" style="color:red">等级比例只能填写小数或整数,其他不做保存处理</div>
  29. <el-row :gutter="10" v-for="(level, index) in micro_levels" :key="level.id">
  30. <el-col :span="8" class="flex-col">
  31. <el-input placeholder="请输入百分比" v-model="level.value" size="small ">
  32. <template slot="prepend">{{level.level_name}}</template>
  33. <template slot="append">%</template>
  34. </el-input>
  35. </el-col>
  36. </el-row>
  37. </el-form-item>
  38. <el-divider></el-divider>
  39. </div>
  40. </div>
  41. </el-form>
  42. </div>
  43. `,
  44. style: `
  45. .help-block{
  46. font-size:14px;
  47. margin-bottom:0px;
  48. }
  49. .location{
  50. display:flex;
  51. justify-content:flex-end;
  52. }
  53. .gutter{
  54. text-align:center;
  55. }
  56. .flex-col{
  57. margin-top:5px;
  58. }
  59. `,
  60. props: {
  61. form: {
  62. type: Object,
  63. default() {
  64. return {}
  65. }
  66. }
  67. },
  68. data(){
  69. return {
  70. is_open_bonus: 0,
  71. independent_bonus: 0,
  72. micro_levels: [],
  73. }
  74. },
  75. mounted() {
  76. if (this.form.micro && !Array.isArray(this.form.micro)) {
  77. this.is_open_bonus = this.form.micro.is_open_bonus;
  78. this.independent_bonus = this.form.micro.independent_bonus;
  79. }
  80. this.micro_levels = this.form.micro_levels;
  81. },
  82. methods: {
  83. filterList (list=[]) {
  84. let arr = {};
  85. list.forEach((item, index) => {
  86. arr[item.id] = item.value;
  87. })
  88. return arr;
  89. },
  90. validate () {
  91. let json = {
  92. is_open_bonus: this.is_open_bonus,
  93. independent_bonus: this.independent_bonus,
  94. }
  95. if (this.independent_bonus) {
  96. json.level = this.filterList(this.micro_levels);
  97. }
  98. return json;
  99. },
  100. },
  101. })