Просмотр исходного кода

商品活动新增时根据问卷类型显示商品原价并且保存时判断价格限制和时间限制;列表显示优惠力度和优惠后价格

htc 2 недель назад
Родитель
Сommit
befb6b3ef1
2 измененных файлов с 43 добавлено и 10 удалено
  1. 6 0
      src/api/agent/indexTwo.js
  2. 37 10
      src/views/modules/business/activity.vue

+ 6 - 0
src/api/agent/indexTwo.js

@@ -242,6 +242,12 @@ export function deleteAdvert(data) {
 
 
 // ---start 商品活动
+export function getPriceByType(type) {
+  return request({
+    url: `/core.v2/queproduct/getByType/${type}`,
+    method: 'get'
+  })
+}
 export function getGoodActivityList(query) {
   return request({
     url: `/core/event/manage/page`,

+ 37 - 10
src/views/modules/business/activity.vue

@@ -4,24 +4,30 @@
         <div class="add adf">
             <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增活动</el-button>
         </div>
-        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无广告" max-height="578px" style="margin-top: 18px;">
+        <el-table :data="dataList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无广告" max-height="738px" style="margin-top: 18px;">
             <el-table-column label="序号" width="50">
                 <template #default="scope">
                     {{ scope.$index + 1 }}
                 </template>
             </el-table-column>
-            <el-table-column label="活动名称" prop="eventName"></el-table-column>
+            <el-table-column label="活动名称" prop="eventName" width="140"></el-table-column>
             <el-table-column label="问卷类型" prop="queType">
                 <template #default="{ row }">{{ queTypeDict[row.queType]||'' }}</template>
             </el-table-column>
             <el-table-column label="优惠类型" prop="discountMode">
                 <template #default="{ row }">{{ discountModeDict[row.discountMode]||'' }}</template>
             </el-table-column>
-            <el-table-column label="优惠价格" prop="title">
-                <template #default="{ row }">{{ row.discountValue||0 }}{{ row.discountMode==1?'%':'元' }}</template>
+            <el-table-column label="优惠力度" prop="" width="140">
+                <template #default="{ row }">{{ row.discountMode==1?('原价的'+(row.discountValue||0)+'%'):('原价减去'+(row.discountValue||0)+'元') }}</template>
             </el-table-column>
-            <el-table-column label="活动开始时间" prop="beginAt"></el-table-column>
-            <el-table-column label="活动结束时间" prop="endAt"></el-table-column>
+            <el-table-column label="优惠后价格" prop="">
+                <template #default="{ row }">{{ row.discountMode==1?(row.price*row.discountValue/100):((row.price-row.discountValue).toFixed(2)) }}元</template>
+            </el-table-column>
+            <el-table-column label="商品原价" prop="price">
+                <template #default="{ row }">{{ row.price||0 }}元</template>
+            </el-table-column>
+            <el-table-column label="活动开始时间" prop="beginAt" width="140"></el-table-column>
+            <el-table-column label="活动结束时间" prop="endAt" width="140"></el-table-column>
             <el-table-column label="对应用户标签" prop="userBrief">
                 <template #default="{ row }">{{ user_brief.find(u=>u.value==row.userBrief)?.label||'' }}</template>
             </el-table-column>
@@ -32,7 +38,7 @@
             </el-table-column>
             <el-table-column label="活动说明" prop="remark" show-overflow-tooltip></el-table-column>
             <el-table-column label="创建时间" prop="createDate" width="160"></el-table-column>
-            <el-table-column label="操作" width="200">
+            <el-table-column label="操作" width="120">
                 <template #default="scope">
                     <el-button link type="text" size="mini" @click="handleEdit(scope.row)">编辑</el-button>
                     <el-button link type="text" size="mini" @click="handleDelete(scope.row)">删除</el-button>
@@ -57,15 +63,18 @@
                     <el-input v-model="goodActivityForm.eventName" placeholder="请输入活动名称"></el-input>
                 </el-form-item>
                 <el-form-item label="问卷类型" prop="queType">
-                    <el-select v-model="goodActivityForm.queType" placeholder="请选择问卷类型" style="width:100%">
-                        <el-option label="初级" :value="5"></el-option>
+                    <el-select v-model="goodActivityForm.queType" placeholder="请选择问卷类型" style="width:100%" @change="queTypeChange">
+                        <!-- <el-option label="初级" :value="5"></el-option>
                         <el-option label="中级" :value="4"></el-option>
-                        <el-option label="高级" :value="3"></el-option>
+                        <el-option label="高级" :value="3"></el-option> -->
                         <el-option label="基础版" :value="1"></el-option>
                         <el-option label="专业版" :value="2"></el-option>
                         <el-option label="专家版" :value="0"></el-option>
                     </el-select>
                 </el-form-item>
+                <el-form-item label="商品原价" prop="" v-if="goodActivityForm.queType===0||goodActivityForm.queType===1||goodActivityForm.queType===2">
+                    <el-input v-model="goodPrice" disabled></el-input>
+                </el-form-item>
                 <el-form-item label="优惠类型" prop="discountMode">
                     <el-select v-model="goodActivityForm.discountMode" placeholder="请选择优惠类型" style="width:100%">
                         <el-option label="折扣" :value="1"></el-option>
@@ -124,6 +133,7 @@
     const { proxy } = getCurrentInstance();
     const { user_brief } = proxy.useDict("user_brief");
     import {
+        getPriceByType,
         getGoodActivityList,
         addGoodActivity,
         updateGoodActivity,
@@ -148,6 +158,7 @@
         '1': '折扣',
         '0': '抵扣'
     })
+    const goodPrice = ref(0)
     const dataList = ref([])
     const total = ref(0)
     const loading = ref(false)
@@ -194,6 +205,13 @@
         ]
     })
 
+    const queTypeChange = (e)=>{
+        if(e>2) return
+        getPriceByType(e).then(res=>{
+            goodPrice.value = (res.data?.price||0)+'元';
+        })
+    }
+
     const getList = async () => {
         let query = {...queryParams.value};
         loading.value = true;
@@ -248,6 +266,15 @@
     const submitForm = () => {
         proxy.$refs.goodActivityRef.validate((valid) => {
             if (valid) {
+                if(goodPrice.value&&goodActivityForm.value.discountMode===0){
+                    if(goodActivityForm.value.discountValue>goodPrice.value) return proxy.$message.error('优惠值不能大于原价');
+                }
+                if(goodActivityForm.value.discountMode===1){
+                    if(goodActivityForm.value.discountValue>100) return proxy.$message.error('折扣不能大于100%');
+                    if(goodActivityForm.value.discountValue<0) return proxy.$message.error('折扣不能小于0%');
+                }
+                if(Date.parse(goodActivityForm.value.beginAt)>Date.parse(goodActivityForm.value.endAt)) return proxy.$message.error('开始时间不能大于结束时间')
+
                 buttonLoading.value = true;
                 if(goodActivityForm.value.id){
                     updateGoodActivity(goodActivityForm.value).then((res)=>{