pointInt.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. define({
  2. name: "pointInt",
  3. template: `
  4. <div>
  5. <el-form label-width="140px">
  6. <div class="vue-main-title">
  7. <div class="vue-main-title-left"></div>
  8. <div class="vue-main-title-content">购物抵扣</div>
  9. </div>
  10. <div style="margin:0 auto;width:80%;">
  11. <el-form-item class="rad" label="购物抵扣开关">
  12. <el-radio v-model="json.deduction_set" :label="0">关闭</el-radio>
  13. <el-radio v-model="json.deduction_set" :label="1">开启</el-radio>
  14. </el-form-item>
  15. <div style="margin-left:155px;" v-if="json.deduction_set == 1">
  16. <el-input style="width:350px;" v-model="json.deduction_set_min" maxlength="300" oninput="if(value<0)value=''" type="number">
  17. <template slot="prepend">商品抵扣比例</template>
  18. <template slot="append">至</template>
  19. </el-input>
  20. <el-input style="width:250px;margin-left:-10px;" v-model="json.deduction_set_max" maxlength="300" oninput="if(value<0)value=''" type="number">
  21. </el-input>
  22. <div class="form-item_tips">商品最低至最高抵扣比例, 商品独立的的比例</div>
  23. </div>
  24. </div>
  25. <div class="vue-main-title">
  26. <div class="vue-main-title-left"></div>
  27. <div class="vue-main-title-content">购物上级赠送</div>
  28. </div>
  29. <div style="margin:0 auto;width:80%;">
  30. <el-form-item class="rad" label="购物上级赠送">
  31. <el-radio v-model="json.parent_award" :label="0">关闭</el-radio>
  32. <el-radio v-model="json.parent_award" :label="1">开启</el-radio>
  33. </el-form-item>
  34. <div v-if="json.parent_award == 1">
  35. <el-form-item v-if="integralSet.parent_award == 1">
  36. <el-row :gutter="25" class="gutter">
  37. <el-col :span="6">购物上一级赠送比例</el-col>
  38. <el-col :span="18" class="flex-col">
  39. <el-input v-model="json.parent_award_proportion" maxlength="300" oninput="if(value<0)value=''" type="number">
  40. <template slot="append">%</template>
  41. </el-input>
  42. <el-input style="margin-left: 10px" v-model="json.parent_award_fixed" maxlength="300" oninput="if(value<0)value=''" type="number">
  43. <template slot="append">{{pluginName}}</template>
  44. </el-input>
  45. </el-col>
  46. </el-row>
  47. <el-row :gutter="25" class="gutter">
  48. <el-col :span="6">购物上二级赠送比例</el-col>
  49. <el-col :span="18" class="flex-col">
  50. <el-input v-model="json.second_award_proportion" maxlength="300" oninput="if(value<0)value=''" type="number">
  51. <template slot="append">%</template>
  52. </el-input>
  53. <el-input style="margin-left: 10px" v-model="json.second_award_fixed" maxlength="300" oninput="if(value<0)value=''" type="number">
  54. <template slot="append">{{pluginName}}</template>
  55. </el-input>
  56. </el-col>
  57. </el-row>
  58. </el-form-item>
  59. <el-form-item class="row-item" v-else-if="integralSet.parent_award == 2">
  60. <el-row :gutter="25" class="gutter">
  61. <el-col :span="4"><div class="grid-content bg-purple">等级名称</div></el-col>
  62. <el-col :span="10"><div class="grid-content bg-purple" style="text-align: center;">一级赠送比例</div></el-col>
  63. <el-col :span="10"><div class="grid-content bg-purple" style="text-align: center;">二级赠送比例</div></el-col>
  64. </el-row>
  65. <el-row :gutter="25" class="gutter" v-for="(level, index) in commissionLevels" :key="level.id">
  66. <el-col :span="4">
  67. <div class="grid-content bg-purple">{{level.name}}</div>
  68. </el-col>
  69. <el-col :span="10" class="flex-col">
  70. <el-input v-model="level.first_level_rate" maxlength="300" oninput="if(value<0)value=''" type="number">
  71. <template slot="append">%</template>
  72. </el-input>
  73. <el-input v-model="level.first_level_fixed" style="margin-left: 10px" maxlength="300" oninput="if(value<0)value=''" type="number">
  74. <template slot="append">{{pluginName}}</template>
  75. </el-input>
  76. </el-col>
  77. <el-col :span="10" class="flex-col">
  78. <el-input v-model="level.second_level_rate" maxlength="300" oninput="if(value<0)value=''" type="number">
  79. <template slot="append">%</template>
  80. </el-input>
  81. <el-input v-model="level.second_level_fixed" style="margin-left: 10px" maxlength="300" oninput="if(value<0)value=''" type="number">
  82. <template slot="append">{{pluginName}}</template>
  83. </el-input>
  84. </el-col>
  85. </el-row>
  86. </el-form-item>
  87. <el-form-item v-else>
  88. <span>亲~您还没有开启购物上级赠送哦~您可以前往{{ pluginName }}设置处开启</span>
  89. <el-link type="primary" @click="toBaseSet">【点击前往{{ integralSet.pluginName }}设置】</el-link>
  90. </el-form-item>
  91. </div>
  92. </div>
  93. <div class="vue-main-title">
  94. <div class="vue-main-title-left"></div>
  95. <div class="vue-main-title-content">购物赠送</div>
  96. </div>
  97. <div style="margin:0 auto;width:80%;">
  98. <el-form-item class="rad" label="购物赠送" >
  99. <el-radio v-model="json.is_self_reward" :label="0">关闭</el-radio>
  100. <el-radio v-model="json.is_self_reward" :label="1">开启</el-radio>
  101. </el-form-item>
  102. <el-form-item class="rad">
  103. <el-radio v-model="json.self_reward_type" :label="0">比例</el-radio>
  104. <el-radio v-model="json.self_reward_type" :label="1">固定值</el-radio>
  105. </el-form-item>
  106. <div style="margin-left:155px;">
  107. <el-input style="width:300px;" v-model="json.self_award" maxlength="300" oninput="if(value<0)value=''" type="number">
  108. <template slot="append">{{json.self_reward_type == 0 ? '%' : pluginName}}</template>
  109. </el-input>
  110. </div>
  111. <el-form-item class="row-item" label="按会员等级赠送积分">
  112. <el-row :gutter="25" class="gutter">
  113. <el-col :span="6"><div class="grid-content bg-purple">会员等级</div></el-col>
  114. <el-col :span="5"><div class="grid-content bg-purple" style="text-align: center;">赠送数量</div></el-col>
  115. </el-row>
  116. <el-row :gutter="25" class="gutter" v-for="(level, index) in memberLevels" :key="level.id">
  117. <el-col :span="6">
  118. <div class="grid-content bg-purple">{{level.level_name}}</div>
  119. </el-col>
  120. <el-col :span="5" class="flex-col">
  121. <el-input v-model="level.give_integral" maxlength="300" oninput="if(value<0)value=''" type="number">
  122. <template slot="append">消费积分</template>
  123. </el-input>
  124. </el-col>
  125. </el-row>
  126. <div class="tip">
  127. 不受购物赠送开关影响<br/>
  128. 如果设置为空,则走会员等级统一设置<br/>
  129. 如果设置为0,则不赠送<br/>
  130. 如:购买2件,设置10消费积分,不管成交价格是多少,购买后获得20消费积分
  131. </div>
  132. </el-form-item>
  133. </div>
  134. </el-form>
  135. </div>
  136. `,
  137. style: `
  138. .row-item .el-input-group__append{
  139. width: 80px;
  140. text-align: center;
  141. }
  142. .el-row {
  143. margin-top:10px;
  144. }
  145. .flex-col {
  146. display: flex;
  147. }
  148. `,
  149. props: {
  150. form: {
  151. default() {
  152. return {};
  153. },
  154. },
  155. },
  156. data() {
  157. return {
  158. integralSet: {},
  159. pluginName: '',
  160. json: {
  161. deduction_set: 0,
  162. deduction_set_min: '',
  163. deduction_set_max: '',
  164. parent_award: 0,
  165. parent_award_proportion: '',
  166. parent_award_fixed: '',
  167. second_award_proportion: '',
  168. second_award_fixed: '',
  169. is_self_reward: 0,
  170. self_reward_type: 0,
  171. self_award: '',
  172. commission_level_award: ''
  173. },
  174. commissionLevels: [],
  175. memberLevels:[],
  176. };
  177. },
  178. mounted () {
  179. if (this.form.integralGoods) {
  180. this.json = this.pick(this.form.integralGoods, Object.keys(this.json));
  181. }
  182. this.integralSet = this.form.integralSet;
  183. this.pluginName = this.form.integralSet.plugin_name ? this.form.integralSet.plugin_name : '消费积分';
  184. this.commissionLevels = this.form.commissionLevels ? JSON.parse(JSON.stringify(this.form.commissionLevels)) : [];
  185. this.memberLevels = this.form.memberLevels ? JSON.parse(JSON.stringify(this.form.memberLevels)) : [];
  186. },
  187. methods: {
  188. pick(obj, params) {
  189. return params.reduce((iter, val) => (val in obj && (iter[val] = obj[val]), iter), {});
  190. },
  191. assignParams (origin, target, params) {
  192. params.forEach(item => {
  193. (item in origin) && (target[item] = origin[item]);
  194. })
  195. },
  196. prevent(e){
  197. let keynum = window.event ? e.keyCode : e.which; //获取键盘码
  198. if (keynum ==189|| keynum==190||keynum == 109 ||keynum == 110 ) {
  199. e.target.value = ""
  200. }
  201. },
  202. filterList (list=[]) {
  203. let levelArr = {};
  204. list.forEach((item, index) => {
  205. levelArr[item.fromName] = this.pick(item, [
  206. "first_level_rate",
  207. "first_level_fixed",
  208. "second_level_rate",
  209. "second_level_fixed"
  210. ]);
  211. })
  212. return levelArr;
  213. },
  214. toBaseSet () {
  215. let url = this.changeURLArg(window.location.href, "route", "plugin.integral.Backend.Controllers.base-set.store");
  216. window.location.href = url;
  217. },
  218. changeURLArg(url,arg,arg_val){
  219. var pattern=arg+'=([^&]*)';
  220. var replaceText=arg+'='+arg_val;
  221. if(url.match(pattern)){
  222. var tmp='/('+ arg+'=)([^&]*)/gi';
  223. tmp=url.replace(eval(tmp),replaceText);
  224. return tmp;
  225. }else{
  226. if(url.match('[\?]')){
  227. return url+'&'+replaceText;
  228. }else{
  229. return url+'?'+replaceText;
  230. }
  231. }
  232. },
  233. validate(){
  234. let formData = {};
  235. if (this.json.parent_award == 1 && this.integralSet.parent_award == 1) {
  236. this.assignParams(this.json, formData, [
  237. "parent_award_proportion",
  238. "parent_award_fixed",
  239. "second_award_proportion",
  240. "second_award_fixed"
  241. ]);
  242. } else if (this.json.parent_award == 1 && this.integralSet.parent_award == 2) {
  243. formData.commission_level_award = this.filterList(this.commissionLevels);
  244. }
  245. formData.memberLevels = this.memberLevels;
  246. this.assignParams(this.json, formData, [
  247. 'deduction_set',
  248. 'deduction_set_min',
  249. 'deduction_set_max',
  250. 'parent_award',
  251. 'is_self_reward',
  252. 'self_reward_type',
  253. 'self_award',
  254. ]);
  255. return formData;
  256. },
  257. }
  258. });