com-coupon.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. use common\helpers\AddonHelper;
  4. ComponentHelper::loadComponentView('coupon-select', AddonHelper::getAddonRootPath('Coupon') . 'backend/views/components');
  5. ?>
  6. <template id="com-coupon">
  7. <div class="com-coupon">
  8. <el-card class="edit-card" shadow="never">
  9. <div slot="header" class="clearfix">
  10. <div class="card-title">优惠券设置<span class="card-sub-title"></span></div>
  11. </div>
  12. <el-form :model="form" size="small">
  13. <el-form-item label="是否开启" prop="is_enable">
  14. <el-switch :active-value="1" :inactive-value="0" v-model="form.is_enable"></el-switch>
  15. </el-form-item>
  16. <el-row :gutter="10" v-if="form.is_enable == 1">
  17. <el-form-item label="选择优惠券">
  18. <el-button type="primary" size="mini" @click="handle('select')">选择优惠券</el-button>
  19. </el-form-item>
  20. <el-form-item label="已选优惠券">
  21. <el-row :gutter="3">
  22. <el-col :span="3" v-for="(item,index) in form.multiple_selection" :key="index">
  23. <el-card shadow="always" style="position: relative; margin-right: 10px;">
  24. <div>{{item.name}}</div>
  25. <div>优惠方式:{{ item.discount_method }}</div>
  26. <div>赠送数量:<span>{{item.num}}</span></div>
  27. <el-button type="danger" icon="el-icon-delete" circle style="position: absolute; right: 8px;top: 10px;" @click="handle('delete', index)"></el-button>
  28. </el-card>
  29. </el-col>
  30. </el-row>
  31. </el-form-item>
  32. <el-form-item label="赠送方式">
  33. <el-radio-group v-model="form.send_type">
  34. <el-radio :label="0">订单完成</el-radio>
  35. <el-radio :label="1">支付完成</el-radio>
  36. </el-radio-group>
  37. </el-form-item>
  38. </el-row>
  39. </el-form>
  40. </el-card>
  41. <coupon-select :coupon-loading="couponLoading" :coupon_arr="form.multiple_selection" @submit="handleCoupon" @close="couponLoading = false"></coupon-select>
  42. </div>
  43. </template>
  44. <script>
  45. Vue.component('com-coupon', {
  46. template: "#com-coupon",
  47. props: {
  48. setting: {
  49. type: Object,
  50. default: () => {
  51. return {};
  52. }
  53. },
  54. coupon_type_map: {
  55. type: Object,
  56. default: () => {
  57. return {};
  58. }
  59. },
  60. goods_id: {
  61. type: Number | String,
  62. default: 0
  63. }
  64. },
  65. data() {
  66. return {
  67. couponLoading: false,
  68. form: {
  69. is_enable: 0,
  70. multiple_selection: [],
  71. send_type: 0
  72. }
  73. }
  74. },
  75. watch: {
  76. form:{
  77. deep:true,
  78. immediate: true,
  79. handler(value){
  80. this.$emit("select", {Coupon: this.form});
  81. }
  82. }
  83. },
  84. mounted: function() {
  85. if (this.goods_id) this.coupon();
  86. },
  87. methods: {
  88. handleCoupon(data) {
  89. this.couponLoading = false;
  90. this.form.multiple_selection = data
  91. },
  92. handle(type, data = null, data2 = null) {
  93. switch (type) {
  94. case 'select':
  95. this.couponLoading = true;
  96. break;
  97. case 'delete':
  98. this.form.multiple_selection.splice(data, 1);
  99. break;
  100. }
  101. },
  102. //优惠券列表
  103. coupon() {
  104. request({
  105. params: {
  106. r: 'coupon/coupon/get-setting-coupon',
  107. },
  108. method: 'post',
  109. data: {
  110. goods_id: this.goods_id
  111. }
  112. }).then(res => {
  113. this.form.is_enable = res.data.data.is_enable
  114. this.form.send_type = res.data.data.send_type
  115. this.form.multiple_selection = res.data.data.coupon
  116. })
  117. },
  118. }
  119. });
  120. </script>