From 8a9ac0d564a56d1ecc22bdf19e1dc2510fa6813b Mon Sep 17 00:00:00 2001
From: wuhui_zzw <1760308791@qq.com>
Date: Thu, 11 Jan 2024 10:32:47 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=9A=E7=94=A8=E6=88=B7?=
=?UTF-8?q?=E5=85=91=E6=8D=A2=E9=A2=9D=E5=BA=A6=E6=8C=81=E6=9C=89=E4=BF=A1?=
=?UTF-8?q?=E6=81=AF&=E7=94=A8=E6=88=B7=E5=85=91=E6=8D=A2=E9=A2=9D?=
=?UTF-8?q?=E5=BA=A6=E5=8F=98=E6=9B=B4=E8=AE=B0=E5=BD=95=E4=BF=A1=E6=81=AF?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9F=A5=E7=9C=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/marketing.js | 23 +-
src/router/modules/marketing.js | 654 ++++++++++---------
src/views/marketing/exchange/index.vue | 3 +
src/views/marketing/exchange/quota/index.vue | 224 +++++++
4 files changed, 588 insertions(+), 316 deletions(-)
create mode 100644 src/views/marketing/exchange/index.vue
create mode 100644 src/views/marketing/exchange/quota/index.vue
diff --git a/src/api/marketing.js b/src/api/marketing.js
index 94f3588..c900678 100644
--- a/src/api/marketing.js
+++ b/src/api/marketing.js
@@ -715,13 +715,30 @@ export function integralOrderDeleteApi(id) {
export function holdIntegralList(data) {
return request.get(`user/integral/hold_list`, data)
}
-
-// 持有积分 - 列表
+// 持有积分 - 统计
export function holdIntegralTitleApi(data) {
return request.get(`user/integral/hold_list_title`, data)
}
-
// 赠送积分 - 列表
export function giveIntegralList(data) {
return request.get(`user/integral/give_list`, data)
}
+
+// 兑换额度 - 顶部统计
+export function exchangeQuotaTitle() {
+ return request.get(`user/exchange_quota/quota_title`)
+}
+// 兑换额度 - 持有信息列表&变更记录列表
+export function exchangeQuotaList(apiName = 'list',data) {
+ // list=持有信息列表,record_list=变更记录列表
+ return request.get(`user/exchange_quota/quota_${apiName}`,data)
+}
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/marketing.js b/src/router/modules/marketing.js
index d1fbc58..75a36b8 100644
--- a/src/router/modules/marketing.js
+++ b/src/router/modules/marketing.js
@@ -1,238 +1,238 @@
-
import Layout from '@/layout'
-import { roterPre } from '@/settings'
+import {roterPre} from '@/settings'
+
const marketingRouter =
-{
- path: `${roterPre}/marketing`,
- name: 'marketing',
- meta: {
- title: '营销'
- },
- alwaysShow: true,
- component: Layout,
- redirect: 'noRedirect',
- children: [
- {
- path: 'coupon',
- name: 'Coupon',
- meta: {
- title: '优惠券',
- noCache: true
- },
- redirect: 'noRedirect',
- component: () => import('@/views/marketing/coupon/index'),
- children: [
- {
- path: 'list',
- name: 'CouponList',
- meta: {
- title: '优惠劵列表',
- noCache: true
- },
- component: () => import('@/views/marketing/coupon/couponList/index')
- },
- {
- path: 'user',
- name: 'CouponUser',
- meta: {
- title: '会员领取记录',
- noCache: true
- },
- component: () => import('@/views/marketing/coupon/couponUser/index')
- }
- ]
+ {
+ path: `${roterPre}/marketing`,
+ name: 'marketing',
+ meta: {
+ title: '营销'
},
- {
- path: 'platform_coupon',
- name: 'Platform_coupon',
- meta: {
- title: '平台优惠券',
- noCache: true
+ alwaysShow: true,
+ component: Layout,
+ redirect: 'noRedirect',
+ children: [
+ {
+ path: 'coupon',
+ name: 'Coupon',
+ meta: {
+ title: '优惠券',
+ noCache: true
+ },
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/coupon/index'),
+ children: [
+ {
+ path: 'list',
+ name: 'CouponList',
+ meta: {
+ title: '优惠劵列表',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/coupon/couponList/index')
+ },
+ {
+ path: 'user',
+ name: 'CouponUser',
+ meta: {
+ title: '会员领取记录',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/coupon/couponUser/index')
+ }
+ ]
},
- redirect: 'noRedirect',
- component: () => import('@/views/marketing/platformCoupon/index'),
- children: [
- {
- path: 'list',
- name: 'PlatformCouponlist',
- meta: {
- title: '优惠劵列表',
- noCache: true
- },
- component: () => import('@/views/marketing/platformCoupon/couponList/index')
+ {
+ path: 'platform_coupon',
+ name: 'Platform_coupon',
+ meta: {
+ title: '平台优惠券',
+ noCache: true
},
- {
- path: 'couponRecord',
- name: 'CouponRecord',
- meta: {
- title: '优惠卷领取记录',
- noCache: true
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/platformCoupon/index'),
+ children: [
+ {
+ path: 'list',
+ name: 'PlatformCouponlist',
+ meta: {
+ title: '优惠劵列表',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/platformCoupon/couponList/index')
},
- component: () => import('@/views/marketing/platformCoupon/couponRecord/index')
- },
- {
- path: 'creatCoupon/:id?',
- name: 'CreatCoupon',
- meta: {
- title: '添加优惠劵',
- noCache: true,
- activeMenu: `${roterPre}/marketing/Platform_coupon/list`
+ {
+ path: 'couponRecord',
+ name: 'CouponRecord',
+ meta: {
+ title: '优惠卷领取记录',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/platformCoupon/couponRecord/index')
},
- component: () => import('@/views/marketing/platformCoupon/couponList/creatCoupon')
- },
- {
- path: 'couponSend',
- name: 'CouponSend',
- meta: {
- title: '优惠券发送记录',
- noCache: true
+ {
+ path: 'creatCoupon/:id?',
+ name: 'CreatCoupon',
+ meta: {
+ title: '添加优惠劵',
+ noCache: true,
+ activeMenu: `${roterPre}/marketing/Platform_coupon/list`
+ },
+ component: () => import('@/views/marketing/platformCoupon/couponList/creatCoupon')
},
- component: () => import('@/views/marketing/platformCoupon/couponSend/index')
- },
- {
- path: 'instructions',
- name: 'Instructions',
- meta: {
- title: '使用说明',
- noCache: true
+ {
+ path: 'couponSend',
+ name: 'CouponSend',
+ meta: {
+ title: '优惠券发送记录',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/platformCoupon/couponSend/index')
},
- component: () => import('@/views/marketing/platformCoupon/couponInstructions/index')
- }
- ]
- },
- {
- path: 'studio',
- name: 'Studio',
- meta: {
- title: '直播间',
- noCache: true
+ {
+ path: 'instructions',
+ name: 'Instructions',
+ meta: {
+ title: '使用说明',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/platformCoupon/couponInstructions/index')
+ }
+ ]
},
- redirect: 'noRedirect',
- component: () => import('@/views/marketing/studio/index'),
- children: [
- {
- path: 'list',
- name: 'StudioList',
- meta: {
- title: '直播间列表',
- noCache: true
- },
- component: () => import('@/views/marketing/studio/studioList/index')
- }
- ]
- },
- {
- path: 'broadcast',
- name: 'Broadcast',
- meta: {
- title: '直播',
- noCache: true
- },
- redirect: 'noRedirect',
- component: () => import('@/views/marketing/broadcast/index'),
- children: [
- {
- path: 'list',
- name: 'BroadcastList',
- meta: {
- title: '直播商品列表',
- noCache: true
- },
- component: () => import('@/views/marketing/broadcast/broadcastList/index')
- }
- ]
- },
- {
- path: 'seckill',
- name: 'Seckill',
- meta: {
- title: '秒杀管理',
- noCache: true
- },
- redirect: 'noRedirect',
- component: () => import('@/views/marketing/seckill/index'),
- children: [
- {
- path: 'seckillConfig',
- name: 'SeckillConfig',
- meta: {
- title: '秒杀配置',
- noCache: true
- },
- component: () => import('@/views/marketing/seckill/seckillConfig/index')
+ {
+ path: 'studio',
+ name: 'Studio',
+ meta: {
+ title: '直播间',
+ noCache: true
},
- {
- path: 'list',
- name: 'SpikeList',
- meta: {
- title: '秒杀列表',
- noCache: true
- },
- component: () => import('@/views/marketing/seckill/seckillGoods/index.vue')
- }
- ]
- },
- {
- path: 'presell',
- name: 'preSell',
- meta: {
- title: '预售商品管理',
- noCache: true
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/studio/index'),
+ children: [
+ {
+ path: 'list',
+ name: 'StudioList',
+ meta: {
+ title: '直播间列表',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/studio/studioList/index')
+ }
+ ]
},
- redirect: 'noRedirect',
- component: () => import('@/views/marketing/seckill/index'),
- children: [
- {
- path: 'list',
- name: `preSaleList`,
- meta: {
- title: '预售商品',
- noCache: true
- },
- component: () => import('@/views/marketing/preSale/index')
+ {
+ path: 'broadcast',
+ name: 'Broadcast',
+ meta: {
+ title: '直播',
+ noCache: true
},
- {
- path: 'agreement',
- name: `preSaleAgreement`,
- meta: {
- title: '预售协议',
- noCache: true
- },
- component: () => import('@/views/marketing/preSale/agreement')
- }
- ]
- },
- {
- path: 'assist',
- name: 'assist',
- meta: {
- title: '助力活动商品',
- noCache: true
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/broadcast/index'),
+ children: [
+ {
+ path: 'list',
+ name: 'BroadcastList',
+ meta: {
+ title: '直播商品列表',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/broadcast/broadcastList/index')
+ }
+ ]
},
- redirect: 'noRedirect',
- component: () => import('@/views/marketing/assist/index'),
- children: [
- {
- path: 'goods_list',
- name: `assistProductList`,
- meta: {
- title: '助力活动商品',
- noCache: true
- },
- component: () => import('@/views/marketing/assist/assist_goods/index')
+ {
+ path: 'seckill',
+ name: 'Seckill',
+ meta: {
+ title: '秒杀管理',
+ noCache: true
},
- {
- path: 'list',
- name: `assist`,
- meta: {
- title: '助力活动列表',
- noCache: true
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/seckill/index'),
+ children: [
+ {
+ path: 'seckillConfig',
+ name: 'SeckillConfig',
+ meta: {
+ title: '秒杀配置',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/seckill/seckillConfig/index')
},
- component: () => import('@/views/marketing/assist/assist_list/index')
+ {
+ path: 'list',
+ name: 'SpikeList',
+ meta: {
+ title: '秒杀列表',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/seckill/seckillGoods/index.vue')
+ }
+ ]
+ },
+ {
+ path: 'presell',
+ name: 'preSell',
+ meta: {
+ title: '预售商品管理',
+ noCache: true
},
- ]
- },
- {
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/seckill/index'),
+ children: [
+ {
+ path: 'list',
+ name: `preSaleList`,
+ meta: {
+ title: '预售商品',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/preSale/index')
+ },
+ {
+ path: 'agreement',
+ name: `preSaleAgreement`,
+ meta: {
+ title: '预售协议',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/preSale/agreement')
+ }
+ ]
+ },
+ {
+ path: 'assist',
+ name: 'assist',
+ meta: {
+ title: '助力活动商品',
+ noCache: true
+ },
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/assist/index'),
+ children: [
+ {
+ path: 'goods_list',
+ name: `assistProductList`,
+ meta: {
+ title: '助力活动商品',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/assist/assist_goods/index')
+ },
+ {
+ path: 'list',
+ name: `assist`,
+ meta: {
+ title: '助力活动列表',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/assist/assist_list/index')
+ },
+ ]
+ },
+ {
path: 'combination',
name: 'combinAtion',
meta: {
@@ -271,99 +271,99 @@ const marketingRouter =
},
]
},
- {
- path: 'integral',
- name: 'Integral',
- meta: {
- title: '积分',
- noCache: true
+ {
+ path: 'integral',
+ name: 'Integral',
+ meta: {
+ title: '积分',
+ noCache: true
+ },
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/integral/index'),
+ children: [
+ {
+ path: 'config',
+ name: `integralConfig`,
+ meta: {
+ title: '积分配置',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/config/index')
+ },
+ {
+ path: 'log',
+ name: `integralLog`,
+ meta: {
+ title: '积分日志',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/log/index')
+ },
+ {
+ path: 'hold',
+ name: `integralHold`,
+ meta: {
+ title: '持有积分',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/hold/index')
+ },
+ {
+ path: 'classify',
+ name: `integralClassify`,
+ meta: {
+ title: '积分商品分类',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/classify/index')
+ },
+ {
+ path: 'proList',
+ name: `integralProductList`,
+ meta: {
+ title: '积分商品列表',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/productList/index')
+ },
+ {
+ path: 'addProduct/:id?/:edit?',
+ name: `addIntegralProduct`,
+ meta: {
+ title: '添加积分商品',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/addProduct/index')
+ },
+ {
+ path: 'orderList',
+ name: `IntegralOrderList`,
+ meta: {
+ title: '兑换记录',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/orderList/index')
+ },
+ {
+ path: 'sign',
+ name: `signConfig`,
+ meta: {
+ title: '签到配置',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/sign/index')
+ },
+ {
+ path: 'give',
+ name: `integralGive`,
+ meta: {
+ title: '赠送记录',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/integral/give/index')
+ },
+ ]
},
- redirect: 'noRedirect',
- component: () => import('@/views/marketing/integral/index'),
- children: [
- {
- path: 'config',
- name: `integralConfig`,
- meta: {
- title: '积分配置',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/config/index')
- },
- {
- path: 'log',
- name: `integralLog`,
- meta: {
- title: '积分日志',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/log/index')
- },
- {
- path: 'hold',
- name: `integralHold`,
- meta: {
- title: '持有积分',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/hold/index')
- },
- {
- path: 'classify',
- name: `integralClassify`,
- meta: {
- title: '积分商品分类',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/classify/index')
- },
- {
- path: 'proList',
- name: `integralProductList`,
- meta: {
- title: '积分商品列表',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/productList/index')
- },
- {
- path: 'addProduct/:id?/:edit?',
- name: `addIntegralProduct`,
- meta: {
- title: '添加积分商品',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/addProduct/index')
- },
- {
- path: 'orderList',
- name: `IntegralOrderList`,
- meta: {
- title: '兑换记录',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/orderList/index')
- },
- {
- path: 'sign',
- name: `signConfig`,
- meta: {
- title: '签到配置',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/sign/index')
- },
- {
- path: 'give',
- name: `integralGive`,
- meta: {
- title: '赠送记录',
- noCache: true
- },
- component: () => import('@/views/marketing/integral/give/index')
- },
- ]
- },
{
path: 'discounts',
name: 'discounts',
@@ -446,9 +446,37 @@ const marketingRouter =
component: () => import('@/views/marketing/border/borderList/addBorder')
}
]
- }
- ],
+ },
+ {
+ path: 'exchange',
+ name: 'Exchange',
+ meta: {
+ title: '兑换管理',
+ noCache: true
+ },
+ redirect: 'noRedirect',
+ component: () => import('@/views/marketing/exchange/index'),
+ children: [
+ {
+ path: 'quota',
+ name: `exchangeQuota`,
+ meta: {
+ title: '兑换额度',
+ noCache: true
+ },
+ component: () => import('@/views/marketing/exchange/quota/index')
+ }
-}
+
+
+ ]
+ },
+
+
+
+
+ ],
+
+ }
export default marketingRouter
diff --git a/src/views/marketing/exchange/index.vue b/src/views/marketing/exchange/index.vue
new file mode 100644
index 0000000..98240ae
--- /dev/null
+++ b/src/views/marketing/exchange/index.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/views/marketing/exchange/quota/index.vue b/src/views/marketing/exchange/quota/index.vue
new file mode 100644
index 0000000..05dce73
--- /dev/null
+++ b/src/views/marketing/exchange/quota/index.vue
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
{{ scope.row.nickname }}
+
ID:{{ scope.row.uid }}
+
+
+
+
+
+
+
+
+
+
+ {{ (scope.row.surplus_quota - scope.row.freeze_quota).toFixed(2) }}
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
{{ scope.row.nickname }}
+
ID:{{ scope.row.uid }}
+
+
+
+
+
+
+
+
+ 增加
+ 减少
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+