addScheme.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <div>
  3. <el-button size="small" type="primary" @click="onAdd(dialogVisible = true)">{{$t(`新建方案`)}}</el-button>
  4. <el-drawer
  5. :title="$t(`新建提成方案`)"
  6. :visible.sync="dialogVisible"
  7. :wrapperClosable="false"
  8. size="900px"
  9. direction="rtl"
  10. append-to-body
  11. @close="onClose">
  12. <div class="drawer__panel">
  13. <el-row :gutter="20">
  14. <el-form :model="form" :rules="rules" ref="form" :label-width="tool.onlyZh('90px')" label-position="right" size="mini">
  15. <el-col :span="12">
  16. <el-form-item :label="$t(`商品大类`)" prop="value">
  17. <el-select v-model="form.value" style="width:100%">
  18. <el-option v-for="item in categoriesList" :key="item.index" :value="item.value" :label="$t(item.remarks)"></el-option>
  19. </el-select>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="24">
  23. <el-form-item :label="$t(`产品售价折扣区间及其提成比例`)+':'" prop="valuereward" :label-width="tool.onlyZh('245px')">
  24. <span style="color:#c0c4cc;">({{$t(`上限值、下限值表示为牌价的折扣值`)}})</span>
  25. <el-button size="small" type="success" style="float: right" @click="delRow" :disabled="list.length === 0">{{$t(`删除末行`)}}</el-button>
  26. <el-button size="small" type="primary" style="float: right" class="inline-16" @click="addRow">{{$t(`添加行`)}}</el-button>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="24">
  30. <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true" :height="'600px'">
  31. <template v-slot:customcol="scope">
  32. <div v-if="scope.column.columnname === 'rewardstart'">
  33. <el-input v-model="scope.column.data.rewardstart" :placeholder="$t(`请填写`)" type="number" ></el-input>
  34. </div>
  35. <div v-else-if="scope.column.columnname === 'includerewardstart'">
  36. <el-select v-model="scope.column.data.includerewardstart" :placeholder="$t('请选择')">
  37. <el-option :label="$t(`是`)" value="1"></el-option>
  38. <el-option :label="$t(`否`)" value="0"></el-option>
  39. </el-select>
  40. </div>
  41. <div v-else-if="scope.column.columnname === 'rewardend'">
  42. <el-input v-model="scope.column.data.rewardend" :placeholder="$t(`请填写`)" type="number"></el-input>
  43. </div>
  44. <div v-else-if="scope.column.columnname === 'includerewardend'">
  45. <el-select v-model="scope.column.data.includerewardend" :placeholder="$t('请选择')">
  46. <el-option :label="$t(`是`)" value="1"></el-option>
  47. <el-option :label="$t(`否`)" value="0"></el-option>
  48. </el-select>
  49. </div>
  50. <div v-else-if="scope.column.columnname === 'reward_rate'">
  51. <el-input v-model="scope.column.data.reward_rate" :placeholder="$t(`请填写`)" type="number"></el-input>
  52. </div>
  53. <p v-else>{{$t(scope.column.data[scope.column.columnname])}}</p>
  54. </template>
  55. </tableLayout>
  56. </el-col>
  57. </el-form>
  58. </el-row>
  59. </div>
  60. <div class="fixed__btn__panel">
  61. <el-button size="small" @click="onClose" class="normal-btn-width">{{$t('取 消')}}</el-button>
  62. <el-button size="small" type="primary" :loading="loading" @click="onSubmit" class="normal-btn-width">{{$t(`确定保存`)}}</el-button>
  63. </div>
  64. </el-drawer>
  65. </div>
  66. </template>
  67. <script>
  68. export default {
  69. name: "addScheme",
  70. data(){
  71. return {
  72. dialogVisible:false,
  73. form:{
  74. "action": "1",//1 新增 0 更新
  75. "type":'商品大类',
  76. "value": "",//商品大类
  77. "valuereward": []
  78. },
  79. rules:{
  80. value:[
  81. { required: true, message: this.$t('未选择商品大类'), trigger: 'change'},
  82. ],
  83. valuereward:[
  84. { required: true, message: this.$t('未设置产品售价折扣区间及其提成比例'), trigger: 'change'},
  85. ],
  86. },
  87. categoriesList:[],
  88. tablecols:[],
  89. list:[],
  90. loading:false,
  91. errorMessage:""
  92. }
  93. },
  94. methods:{
  95. onAdd(){
  96. this.getCategoriesList()
  97. },
  98. addRow(){
  99. this.list.push(
  100. {
  101. "rewardstart": "",
  102. "rewardend": "",
  103. "includerewardstart": "0",
  104. "includerewardend": "0",
  105. "reward_rate": "0",
  106. "rowindex":this.list.length + 1
  107. }
  108. )
  109. },
  110. delRow(){
  111. this.list.pop()
  112. },
  113. /*获取可选商品大类*/
  114. async getCategoriesList () {
  115. const res = await this.$store.dispatch('optiontypeselect','categories')
  116. this.categoriesList = res.data
  117. },
  118. validateInput(value1,value2){
  119. if (value1 && value2 !== ''){
  120. if (value1 > value2){
  121. this.errorMessage = this.$t('不合法')
  122. return false
  123. }
  124. }
  125. },
  126. onSubmit(){
  127. this.form.valuereward = this.list
  128. this.$refs.form.validate(async (valid)=>{
  129. if (!valid) return false
  130. this.form.action = '1'
  131. this.form.valuereward.forEach(item=>{
  132. item.rewardstart = item.rewardstart?(item.rewardstart/100).toFixed(4):''
  133. item.rewardend = item.rewardend?(item.rewardend/100).toFixed(4):''
  134. item.reward_rate = item.reward_rate?(item.reward_rate/100).toFixed(4):0
  135. })
  136. const res = await this.$api.requested({
  137. "id": 20240311150704,
  138. "content":this.form
  139. })
  140. if (res.code === 0){
  141. this.form.valuereward.forEach(item=>{
  142. item.rewardstart = item.rewardstart?Math.round((item.rewardstart*100)*100)/100:''
  143. item.rewardend = item.rewardend?Math.round((item.rewardend*100)*100)/100:''
  144. item.reward_rate = item.reward_rate?Math.round((item.reward_rate*100)*100)/100:0
  145. })
  146. }
  147. this.tool.showMessage(res,()=>{
  148. this.form = {
  149. "action": "1",//0 新增 1 更新
  150. "type":'商品大类',
  151. "value": "",//商品大类
  152. "valuereward": []
  153. }
  154. this.list = []
  155. this.dialogVisible = false
  156. this.$emit('addSuccess')
  157. })
  158. })
  159. },
  160. onClose(){
  161. this.form = {
  162. "action": "0",//0 新增 1 更新
  163. "type":'商品大类',
  164. "value": "",//商品大类
  165. "valuereward": []
  166. }
  167. this.list = []
  168. this.dialogVisible = false
  169. this.$emit('addSuccess')
  170. }
  171. },
  172. created() {
  173. this.tablecols = this.tool.tabelCol(this.$route.name).commissionSet.tablecols
  174. }
  175. }
  176. </script>
  177. <style scoped>
  178. </style>