EditModal.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <template>
  2. <el-dialog
  3. :visible.sync="visible"
  4. v-bind="modalOptions"
  5. >
  6. <el-form
  7. ref="formData"
  8. :model="formData"
  9. :rules="formRules"
  10. size="mini"
  11. label-suffix=":"
  12. label-width="150px"
  13. >
  14. <el-form-item label="关联平台组合活动" prop="composeId">
  15. <el-select
  16. v-model="formData.composeId" size="mini" placeholder="请选择关联平台组合活动" filterable
  17. >
  18. <el-option
  19. v-for="(item, index) in activityList" :key="item.composeId"
  20. :label="`${item.composeName}(${item.composeId})`" :value="item.composeId"
  21. />
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item label="活动配置类型" prop="configType">
  25. <el-select v-model="formData.configType" clearable size="mini" placeholder="请选择活动类型">
  26. <el-option label="升级角色" :value="1" />
  27. <el-option label="分佣" :value="2" />
  28. <el-option label="社区服务" :value="3" />
  29. <el-option label="代金券" :value="4" />
  30. <el-option label="消费金" :value="5" />
  31. </el-select>
  32. </el-form-item>
  33. <el-form-item label="是否参与" prop="joinRole">
  34. <el-select v-model="formData.joinRole" clearable size="mini" placeholder="请选择是否参与">
  35. <el-option label="是" :value="1" />
  36. <el-option label="否" :value="2" />
  37. </el-select>
  38. </el-form-item>
  39. <el-form-item label="规则" prop="joinRule">
  40. <el-select v-model="formData.joinRule" clearable size="mini" placeholder="请选择规则">
  41. <el-option label="金额" :value="1" />
  42. <el-option label="比例" :value="2" />
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item label="升级类型" prop="roleType">
  46. <el-select v-model="formData.roleType" clearable size="mini" placeholder="请选择升级类型">
  47. <el-option label="团长" :value="1" />
  48. <el-option label="合伙人" :value="2" />
  49. </el-select>
  50. </el-form-item>
  51. <el-form-item label="参与值" prop="joinMoney">
  52. <el-input v-model="formData.joinMoney" placeholder="请输入参与值" style="width: 250px;">
  53. <template #append>
  54. <div v-if="formData.joinRule === 1">元</div>
  55. <div v-else-if="formData.joinRule === 2">%</div>
  56. </template>
  57. </el-input>
  58. </el-form-item>
  59. <el-form-item label="关联佣金配置" prop="ruleId">
  60. <el-select
  61. v-model="formData.ruleId" clearable size="mini" placeholder="请选择关联佣金配置" filterable
  62. >
  63. <el-option
  64. v-for="(item, index) in ruleList" :key="item.ruleId"
  65. :label="`${item.activityName || '--'}(${item.ruleId})`" :value="item.ruleId"
  66. />
  67. </el-select>
  68. </el-form-item>
  69. </el-form>
  70. <template #footer>
  71. <span class="dialog-footer">
  72. <el-button size="mini" @click="handleClose">取 消</el-button>
  73. <el-button type="primary" size="mini" @click="handleSubmit">确 定</el-button>
  74. </span>
  75. </template>
  76. </el-dialog>
  77. </template>
  78. <script>
  79. import { savePlatformComposeConfig, updatePlatformComposeConfig, getPlatformComposeConfigById, getPlatformComposePage } from '@/api/active/combinationActivities'
  80. import { getAllPlatformBeeRule } from '@/api/commissionAllocation/gradeCommission'
  81. export default {
  82. name: 'EditModal',
  83. components: {
  84. },
  85. data() {
  86. return {
  87. modalOptions: {
  88. closeOnClickModal: false,
  89. width: '820px',
  90. title: ''
  91. },
  92. visible: false,
  93. formData: {
  94. configId: '',
  95. composeId: '',
  96. configType: '',
  97. joinRole: '',
  98. joinRule: '',
  99. roleType: '',
  100. joinMoney: '',
  101. ruleId: ''
  102. },
  103. formRules: {
  104. composeId: [
  105. { required: true, message: '请选择平台组合活动' }
  106. ],
  107. configType: [
  108. { required: true, message: '请选择活动配置类型' }
  109. ],
  110. joinMoney: [
  111. { required: false, message: '请输入参与值' },
  112. { pattern: /^0\.\d{0,2}$|^[1-9]\d*\.\d{0,2}$|^[1-9]\d*$/, message: '数值有误' }
  113. ]
  114. },
  115. activityList: [],
  116. ruleList: []
  117. }
  118. },
  119. methods: {
  120. handleClose() {
  121. this.visible = false
  122. },
  123. async initList() {
  124. const res1 = await getPlatformComposePage({ page: 1, pageSize: 9999 })
  125. this.activityList = res1.data.list
  126. const res2 = await getAllPlatformBeeRule({ page: 1, pageSize: 9999 })
  127. this.ruleList = res2.data.list
  128. },
  129. handleOpen(params = {}) {
  130. this.modalOptions.title = params.configId ? '编辑组合活动配置' : '添加组合活动配置'
  131. this.formData = Object.assign(this.$options.data().formData, params, {
  132. joinMoney: (params.joinRule === 2) && (typeof params.joinMoney === 'number') ? params.joinMoney * 100 : params.joinMoney
  133. })
  134. this.visible = true
  135. this.initList()
  136. if (params.configId) {
  137. this.getInfo(params.configId)
  138. } else {
  139. this.$refs.formData && this.$refs.formData.resetFields()
  140. }
  141. },
  142. async getInfo(id) {
  143. const loading = this.$loading({ text: '加载中' })
  144. try {
  145. const res = await getPlatformComposeConfigById({ id })
  146. this.formData = Object.assign(this.$options.data().formData, res.data, {
  147. configId: res.data.configId || '',
  148. composeId: res.data.composeId || '',
  149. configType: res.data.configType || '',
  150. joinRole: res.data.joinRole || '',
  151. joinRule: res.data.joinRule || '',
  152. roleType: res.data.roleType || '',
  153. joinMoney: (res.data.joinRule === 2) && (typeof res.data.joinMoney === 'number') ? res.data.joinMoney * 100 : res.data.joinMoney,
  154. ruleId: res.data.ruleId || ''
  155. })
  156. this.$nextTick(() => {
  157. this.$refs.formData && this.$refs.formData.validate()
  158. })
  159. } finally {
  160. loading.close()
  161. }
  162. },
  163. handleSubmit() {
  164. this.$refs.formData.validate(async (valid) => {
  165. if (valid) {
  166. const loading = this.$loading({ text: '加载中' })
  167. try {
  168. const { joinRule, joinMoney, ...otps } = this.formData
  169. const params = {
  170. joinMoney: joinRule === 2 ? joinMoney / 100 : joinMoney,
  171. ...otps
  172. }
  173. this.formData.configId ? await updatePlatformComposeConfig(params) : await savePlatformComposeConfig(params)
  174. loading.close()
  175. this.$message({ message: `${this.formData.configId ? '编辑' : '添加'}成功!`, type: 'success' })
  176. this.$emit('success')
  177. this.visible = false
  178. } catch (e) {
  179. loading.close()
  180. } finally {
  181. loading.close()
  182. }
  183. } else {
  184. this.$message({ message: '请输入相关信息', type: 'warning' })
  185. return false
  186. }
  187. })
  188. }
  189. }
  190. }
  191. </script>