Преглед на файлове

添加商品促销功能完善

zhh преди 6 години
родител
ревизия
e9be957d2a

+ 8 - 0
src/api/memberLevel.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+export function fetchList(params) {
+  return request({
+    url:'/memberLevel/list',
+    method:'get',
+    params:params
+  })
+}

+ 9 - 3
src/views/pms/product/add.vue

@@ -10,8 +10,12 @@
     <add-product-sale v-show="showStatus[1]" v-model="productParam"></add-product-sale>
     <add-product-attr v-show="showStatus[2]"></add-product-attr>
     <add-product-relation v-show="showStatus[3]"></add-product-relation>
-    <el-button style="margin-top: 12px;" @click="prev">上一步</el-button>
-    <el-button style="margin-top: 12px;" @click="next">下一步</el-button>
+    <div style="display: block;text-align: center;margin-top: 50px">
+      <el-button-group>
+        <el-button icon="el-icon-arrow-left" @click="prev">上一步</el-button>
+        <el-button type="primary" @click="next">下一步<i class="el-icon-arrow-right el-icon--right"></i></el-button>
+      </el-button-group>
+    </div>
   </el-card>
 </template>
 <script>
@@ -36,6 +40,7 @@
     flashPromotionPrice: 0,
     flashPromotionSort: 0,
     giftPoint: 0,
+    giftGrowth: 0,
     keywords: '',
     lowStock: 0,
     name: '',
@@ -48,6 +53,7 @@
       {
         memberLevelId: 0,
         memberPrice: 0,
+        memberLevelName:null
       }
     ],
     productFullReductionList: [
@@ -102,7 +108,7 @@
     productSn: '',
     promotionEndTime: '',
     promotionPerLimit: 0,
-    promotionPrice: 0,
+    promotionPrice: null,
     promotionStartTime: '',
     promotionType: 0,
     publishStatus: 0,

+ 1 - 1
src/views/pms/product/components/addProductInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div style="margin-top: 50px">
-    <el-form :model="value" :rules="rules" ref="productInfoForm" label-width="150px" style="width: 520px" size="small">
+    <el-form :model="value" :rules="rules" ref="productInfoForm" label-width="150px" style="width: 600px" size="small">
       <el-form-item label="商品分类:" prop="productCategoryId">
         <el-cascader
           v-model="selectProductCateValue"

+ 182 - 9
src/views/pms/product/components/addProductSale.vue

@@ -1,11 +1,11 @@
 <template>
   <div style="margin-top: 50px">
-    <el-form :model="value" ref="productSaleForm" label-width="150px" style="width: 520px" size="small">
+    <el-form :model="value" ref="productSaleForm" label-width="150px" style="width: 600px" size="small">
       <el-form-item label="赠送积分:">
         <el-input v-model="value.giftPoint"></el-input>
       </el-form-item>
       <el-form-item label="赠送成长值:">
-        <el-input></el-input>
+        <el-input v-model="value.giftGrowth"></el-input>
       </el-form-item>
       <el-form-item label="积分购买限制:">
         <el-input v-model="value.usePointLimit"></el-input>
@@ -57,41 +57,214 @@
       <el-form-item label="商品备注:">
         <el-input v-model="value.note" type="textarea" :autoSize="true"></el-input>
       </el-form-item>
+      <el-form-item label="选择优惠方式:">
+        <el-radio-group v-model="value.promotionType" size="small">
+          <el-radio-button :label="0">无优惠</el-radio-button>
+          <el-radio-button :label="1">特惠促销</el-radio-button>
+          <el-radio-button :label="2">会员价格</el-radio-button>
+          <el-radio-button :label="3">阶梯价格</el-radio-button>
+          <el-radio-button :label="4">满减价格</el-radio-button>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item v-show="value.promotionType===1">
+        <div>
+          开始时间:
+          <el-date-picker
+          v-model="value.promotionStartTime"
+          value-format="timestamp"
+          type="datetime"
+          :picker-options="pickerOptions1"
+          placeholder="选择开始时间">
+        </el-date-picker>
+        </div>
+        <div class="littleMargin">
+          结束时间:
+          <el-date-picker
+          v-model="value.promotionEndTime"
+          value-format="timestamp"
+          type="datetime"
+          :picker-options="pickerOptions1"
+          placeholder="选择结束时间">
+        </el-date-picker>
+        </div>
+        <div class="littleMargin">
+          促销价格:
+          <el-input style="width: 220px"v-model="value.promotionPrice" placeholder="输入促销价格"></el-input>
+        </div>
+
+      </el-form-item>
+      <el-form-item v-show="value.promotionType===2">
+       <div v-for="(item, index) in value.memberPriceList" :class="{littleMargin:index!==0}">
+            {{item.memberLevelName}}:<el-input v-model="item.memberPrice" style="width: 200px"></el-input>
+       </div>
+      </el-form-item>
+      <el-form-item v-show="value.promotionType===3">
+        <el-table :data="value.productLadderList"
+                  style="width: 80%" border>
+          <el-table-column
+            label="数量"
+            align="center"
+            width="120">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.count"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="价格"
+            align="center"
+            width="120">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.price"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            label="操作">
+            <template slot-scope="scope">
+              <el-button type="text" @click="handleRemoveProductLadder(scope.$index, scope.row)">删除</el-button>
+              <el-button type="text" @click="handleAddProductLadder(scope.$index, scope.row)">添加</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-form-item>
+      <el-form-item v-show="value.promotionType===4">
+        <el-table :data="value.productFullReductionList"
+                  style="width: 80%" border>
+          <el-table-column
+            label="满"
+            align="center"
+            width="120">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.fullPrice"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="立减"
+            align="center"
+            width="120">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.reducePrice"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            label="操作">
+            <template slot-scope="scope">
+              <el-button type="text" @click="handleRemoveFullReduction(scope.$index, scope.row)">删除</el-button>
+              <el-button type="text" @click="handleAddFullReduction(scope.$index, scope.row)">添加</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-form-item>
     </el-form>
   </div>
 </template>
 
 <script>
+  import {fetchList as fetchMemberLevelList} from '@/api/memberLevel'
   export default {
     name: "addProductSale",
     props: {
       value: Object
     },
+    data() {
+      return {
+        selectServiceList: [],
+        pickerOptions1: {
+          disabledDate(time) {
+            return time.getTime() < Date.now();
+          }
+        }
+      }
+    },
+    created(){
+      fetchMemberLevelList({defaultStatus:0}).then(response=>{
+          let memberPriceList=[];
+          for(let i=0;i<response.data.length;i++){
+            let item = response.data[i];
+            memberPriceList.push({memberLevelId:item.id,memberLevelName:item.name})
+          }
+          this.value.memberPriceList=memberPriceList;
+      });
+    },
     watch: {
       selectServiceList: function (newValue) {
-        let serviceIds='';
+        let serviceIds = '';
         if (newValue != null && newValue.length > 0) {
           for (let i = 0; i < newValue.length; i++) {
             serviceIds += newValue[i] + ',';
           }
           if (serviceIds.endsWith(',')) {
-            serviceIds = serviceIds.substr(0,serviceIds.length - 1)
+            serviceIds = serviceIds.substr(0, serviceIds.length - 1)
           }
-          this.value.serviceIds=serviceIds;
+          this.value.serviceIds = serviceIds;
         } else {
           this.value.serviceIds = null;
         }
 
       }
     },
-    data() {
-      return {
-        selectServiceList: []
+    methods:{
+      handleRemoveProductLadder(index,row){
+        let productLadderList = this.value.productLadderList;
+        if(productLadderList.length===1){
+          productLadderList.pop();
+          productLadderList.push({
+            count: 0,
+            discount: 0,
+            price: 0
+          })
+        }else{
+          productLadderList.splice(index,1);
+        }
+      },
+      handleAddProductLadder(index,row){
+        let productLadderList = this.value.productLadderList;
+        if(productLadderList.length<3){
+          productLadderList.push({
+            count: 0,
+            discount: 0,
+            price: 0
+          })
+        }else{
+          this.$message({
+            message: '最多只能添加三条',
+            type: 'warning'
+          });
+        }
+      },
+      handleRemoveFullReduction(index,row){
+        let fullReductionList = this.value.productFullReductionList;
+        if(fullReductionList.length===1){
+          fullReductionList.pop();
+          fullReductionList.push({
+            fullPrice: 0,
+            reducePrice: 0
+          });
+        }else{
+          fullReductionList.splice(index,1);
+        }
+      },
+      handleAddFullReduction(index,row){
+        let fullReductionList = this.value.productFullReductionList;
+        if(fullReductionList.length<3){
+          fullReductionList.push({
+            fullPrice: 0,
+            reducePrice: 0
+          });
+        }else{
+          this.$message({
+            message: '最多只能添加三条',
+            type: 'warning'
+          });
+        }
       }
     }
   }
 </script>
 
 <style scoped>
-
+  .littleMargin{
+    margin-top: 10px;
+  }
 </style>