add.html 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. {include file="/shopro/common/script" /}
  2. <style>
  3. .level-form .title {
  4. height: 32px;
  5. line-height: 32px;
  6. background: var(--sa-background-hex-hover);
  7. padding: 0 16px;
  8. font-size: 12px;
  9. font-weight: 400;
  10. color: var(--sa-subtitle);
  11. border-radius: 4px;
  12. margin-bottom: 16px;
  13. }
  14. .level-form .sa-title.is-line {
  15. margin-bottom: 20px;
  16. }
  17. .level-form .w-120 {
  18. width: 120px;
  19. }
  20. .level-form .item {
  21. height: 32px;
  22. padding: 0 16px;
  23. font-size: 14px;
  24. border: 1px solid var(--sa-border);
  25. border-radius: 4px;
  26. margin: 0 16px 16px 0;
  27. display: flex;
  28. align-items: center;
  29. justify-content: center;
  30. cursor: pointer;
  31. }
  32. .level-form .item:last-of-type {
  33. margin: 0 0 16px 0;
  34. }
  35. .level-form .item.is-disabled {
  36. background: var(--sa-background-hex-active);
  37. color: #fff;
  38. border: 1px solid var(--sa-background-hex-active);
  39. cursor: not-allowed;
  40. }
  41. .level-form .item.is-active {
  42. background: var(--el-color-primary);
  43. color: #fff;
  44. border: 1px solid var(--el-color-primary);
  45. }
  46. .level-form .item.is-active.is-none {
  47. display: flex;
  48. }
  49. .level-form .item.is-none {
  50. display: none;
  51. }
  52. .level-form .condition-group .condition-item {
  53. padding: 0 12px;
  54. }
  55. </style>
  56. <div id="addEdit" class="level-form" v-cloak>
  57. <el-container class="panel-block">
  58. <el-main>
  59. <el-scrollbar height="100%">
  60. <el-alert class="mb-4" type="warning">
  61. <template #title>
  62. 新增或编辑等级后,请及时在分销商品中完善对应的佣金规则
  63. </template>
  64. </el-alert>
  65. <el-form :model="form.model" :rules="form.rules" ref="formRef" label-width="150px">
  66. <div class="sa-title is-line">等级佣金比例</div>
  67. <el-form-item label="等级权重" prop="level">
  68. <div :class="[
  69. 'item',
  70. item.level == form.model.level ? 'is-active' : '',
  71. level.existLevel.includes(item.level) ? 'is-disabled' : '',
  72. form.model.level == 1 ? 'is-none' : '',
  73. ]" v-for="item in level.data" :key="item" @click="onSelectLevel(item.level)">
  74. {{ item.name }}
  75. </div>
  76. </el-form-item>
  77. <el-form-item label="等级名称" prop="name">
  78. <el-input class="sa-w-360" v-model="form.model.name" placeholder="请输入等级名称"></el-input>
  79. </el-form-item>
  80. <el-form-item label="等级徽章" prop="image">
  81. <sa-uploader v-model="form.model.image"></sa-uploader>
  82. </el-form-item>
  83. <el-form-item label="一级(自购)佣金比例" prop="commission_rules.commission_1"
  84. :rules="form.rules.commission_rules.commission">
  85. <el-input class="sa-w-360" v-model="form.model.commission_rules.commission_1" type="number">
  86. <template #append>%</template>
  87. </el-input>
  88. </el-form-item>
  89. <el-form-item label="二级佣金比例" prop="commission_rules.commission_2"
  90. :rules="form.rules.commission_rules.commission">
  91. <el-input class="sa-w-360" v-model="form.model.commission_rules.commission_2" type="number">
  92. <template #append>%</template>
  93. </el-input>
  94. </el-form-item>
  95. <el-form-item label="三级佣金比例" prop="commission_rules.commission_3"
  96. :rules="form.rules.commission_rules.commission">
  97. <el-input class="sa-w-360" v-model="form.model.commission_rules.commission_3" type="number">
  98. <template #append>%</template>
  99. </el-input>
  100. </el-form-item>
  101. <template v-if="form.model.level != 1">
  102. <div class="sa-title is-line">添加升级条件</div>
  103. <el-form-item label="升级方式" prop="upgrade_rules">
  104. <div>
  105. <el-radio-group class="mb-2" v-model="form.model.upgrade_type">
  106. <el-radio :label="0">满足以下任意条件</el-radio>
  107. <el-radio :label="1">满足以下全部条件</el-radio>
  108. </el-radio-group>
  109. <div>
  110. <div class="sa-flex sa-flex-wrap condition-group" v-for="group in upgradeCondition"
  111. :key="group">
  112. <div :class="[
  113. 'item',
  114. 'condition-item',
  115. Object.keys(form.model.upgrade_rules).includes(key) ? 'is-active' : '',
  116. ]" v-for="(item, key) in group" :key="item"
  117. @click="onSelectUpgradeCondition(key)">
  118. {{ item.name }}
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. </el-form-item>
  124. <template v-for="(group, gkey) in upgradeCondition" :key="group">
  125. <template v-for="(item, key) in group" :key="item">
  126. <el-form-item :label="item.name"
  127. v-if="Object.keys(form.model.upgrade_rules).includes(key)"
  128. :prop="`upgrade_rules.${key}`" :rules="form.rules.upgrade_rules_inner.rules">
  129. <template v-if="gkey != 'agent_level'">
  130. <el-input class="w-120" v-model="form.model.upgrade_rules[key]" type="number">
  131. <template #append> {{ initUnit(key) }}</template>
  132. </el-input>
  133. <el-button class="delete" type="danger" link @click="onDeleteRules(key)">
  134. 删除
  135. </el-button>
  136. </template>
  137. <div v-if="gkey == 'agent_level'">
  138. <div class="sa-flex sa-flex-wrap mb-4"
  139. v-for="(al, index) in form.model.upgrade_rules[key]" :key="al">
  140. <el-form-item :prop="`upgrade_rules.${key}.${index}.level`"
  141. :rules="form.rules.upgrade_rules_inner.level">
  142. <el-select class="w-120" v-model="al.level" placeholder="请选择分销商等级">
  143. <template v-for="item in level.select" :key="item">
  144. <el-option v-if="item.level < form.model.level"
  145. :label="item.name" :value="item.level+''"></el-option>
  146. </template>
  147. </el-select>
  148. <span class="ml-2 mr-2">满</span>
  149. </el-form-item>
  150. <el-form-item :prop="`upgrade_rules.${key}.${index}.count`"
  151. :rules="form.rules.upgrade_rules_inner.rules">
  152. <el-input class="w-120" v-model="al.count" type="number">
  153. <template #append>人</template>
  154. </el-input>
  155. <el-button class="delete" type="danger" link
  156. @click="onDeleteRules(key, index)">
  157. 删除
  158. </el-button>
  159. </el-form-item>
  160. </div>
  161. <el-button type="primary" link size="small" @click="onAddUpgradeRules(key)">
  162. + 添加</el-button>
  163. </div>
  164. </el-form-item>
  165. </template>
  166. </template>
  167. </template>
  168. </el-form>
  169. </el-scrollbar>
  170. </el-main>
  171. <el-footer class="sa-footer--submit sa-flex sa-row-right">
  172. <el-button type="primary" @click="onConfirm">确定</el-button>
  173. </el-footer>
  174. </el-container>
  175. </div>