mall-product-fee.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <template>
  2. <basic-container>
  3. <el-select v-model="productCodeSelect.value" placeholder="请选择商户" size="small" style="width:100%" @change="selectChange">
  4. <el-option
  5. v-for="opt in productCodeSelect.option"
  6. :key="opt.productCode"
  7. :label="opt.productName"
  8. :value="opt.productCode">
  9. <span style="float: left">{{ opt.productName }}</span>
  10. <span style="float: right; color: #8492a6; font-size: 13px">{{ opt.productCode }}</span>
  11. </el-option>
  12. </el-select>
  13. <el-divider/>
  14. <avue-form ref="form" v-model="form" :option="option" @submit="submit"></avue-form>
  15. </basic-container>
  16. </template>
  17. <script>
  18. import {
  19. queryProductFee,
  20. modifyProductFee
  21. } from "@/api/ldt_mall/mall";
  22. export default {
  23. props: {
  24. operateId: String
  25. },
  26. data() {
  27. return {
  28. form: {},
  29. productCodeSelect:{
  30. value:"",
  31. option:[]
  32. },
  33. option: {
  34. submitText: '保存',
  35. labelWidth: 150,
  36. entryBtn: false,
  37. column: [
  38. {
  39. label: '产品码',
  40. prop: 'productCode',
  41. disabled: true,
  42. rules: [
  43. {
  44. required: true,
  45. message: '请输入产品码',
  46. trigger: 'blur'
  47. }
  48. ]
  49. },
  50. {
  51. label: '计费策略',
  52. prop: 'rateType',
  53. type: 'select',
  54. change:(value)=>{
  55. const percentRate = this.option.column.find(ele=>{
  56. return ele.prop==='percentRate';
  57. });
  58. const fixedRate = this.option.column.find(ele=>{
  59. return ele.prop==='fixedRate';
  60. });
  61. switch (value.value){
  62. case "SINGLE_PERCENT":
  63. percentRate.disabled = false;
  64. percentRate.rules[0].required = true;
  65. fixedRate.disabled = true;
  66. fixedRate.rules[0].required = false;
  67. break;
  68. case "SINGLE_FIXED":
  69. percentRate.disabled = true;
  70. percentRate.rules[0].required = false;
  71. fixedRate.disabled = false;
  72. fixedRate.rules[0].required = true;
  73. break;
  74. case "FIXED_MIX_PERCENT":
  75. case "PERCENT_MIX_CAP":
  76. percentRate.disabled = false;
  77. percentRate.rules[0].required = true;
  78. fixedRate.disabled = false;
  79. fixedRate.rules[0].required = true;
  80. break;
  81. default:
  82. break;
  83. }
  84. },
  85. dicData: [
  86. {
  87. label:'单笔百分比',
  88. value:'SINGLE_PERCENT',
  89. },
  90. {
  91. label:'单笔固定值',
  92. value:'SINGLE_FIXED',
  93. },
  94. {
  95. label:'单笔固定值+单笔百分比',
  96. value:'FIXED_MIX_PERCENT',
  97. },
  98. {
  99. label:'单笔百分比+封顶值',
  100. value:'PERCENT_MIX_CAP',
  101. }
  102. ],
  103. rules: [
  104. {
  105. required: true,
  106. message: '请输入积分策略',
  107. trigger: 'blur'
  108. }
  109. ]
  110. },
  111. {
  112. label: '单笔百分比',
  113. prop: 'percentRate',
  114. rules: [
  115. {
  116. required: false,
  117. message: '请输入单笔百分比',
  118. trigger: 'blur'
  119. }
  120. ]
  121. },
  122. {
  123. label: '单笔固定值',
  124. prop: 'fixedRate',
  125. rules: [
  126. {
  127. required: false,
  128. message: '请输入单笔固定值',
  129. trigger: 'blur'
  130. }
  131. ]
  132. },
  133. {
  134. label: '手续费承担方',
  135. prop: 'undertaker',
  136. type: 'select',
  137. dicData: [
  138. {
  139. label: '入驻商户',
  140. value: 'SETTLED_MERCHANT'
  141. },
  142. {
  143. label: '用户',
  144. value: 'USER'
  145. },
  146. {
  147. label: '标准商户',
  148. value: 'ORDINARY_MERCHANT'
  149. },
  150. {
  151. label: '平台商',
  152. value: 'PLATFORM_MERCHANT'
  153. },
  154. {
  155. label: '服务商',
  156. value: 'SAAS_SERVICE_PROVIDER'
  157. }
  158. ],
  159. rules: [
  160. {
  161. required: false,
  162. message: '请输入手续费承担方',
  163. trigger: 'blur'
  164. }
  165. ]
  166. },
  167. {
  168. label: '手续费收取方式',
  169. prop: 'paymentMethod',
  170. type: 'select',
  171. dicData: [
  172. {
  173. label: '实收',
  174. value: 'REAL_TIME'
  175. },
  176. {
  177. label: '预付实扣',
  178. value: 'PREPAID_REAL'
  179. },
  180. {
  181. label: '后收',
  182. value: 'UN_REAL_TIME'
  183. }
  184. ],
  185. rules: [
  186. {
  187. required: false,
  188. message: '请输入手续费收取方式',
  189. trigger: 'blur'
  190. }
  191. ]
  192. }
  193. ]
  194. }
  195. }
  196. },
  197. mounted() {
  198. this.init();
  199. },
  200. methods: {
  201. init() {
  202. queryProductFee({
  203. id:this.operateId
  204. }).then(res=>{
  205. this.productCodeSelect.option = res.data.data;
  206. this.productCodeSelect.value = res.data.data[0].productCode;
  207. this.selectChange(res.data.data[0].productCode);
  208. });
  209. },
  210. /**
  211. * 选择下拉框值
  212. * @param value
  213. */
  214. selectChange(value){
  215. const tab = this.productCodeSelect.option.find(ele=>{
  216. return ele.productCode===value;
  217. });
  218. this.form = tab;
  219. },
  220. submit(data, done) {
  221. const content = this.productCodeSelect.option.find(col=>{
  222. return col.productCode===data.productCode;
  223. });
  224. //拷贝对象值
  225. Object.assign(content,data);
  226. modifyProductFee({
  227. id:this.operateId,
  228. modifyProductInfo:JSON.stringify(this.productCodeSelect.option)
  229. }).then(res=>{
  230. this.$message.success("修改成功");
  231. done();
  232. },error => done());
  233. done();
  234. }
  235. }
  236. };
  237. </script>
  238. <style>
  239. </style>