From 28a0e90b2f77e479a5e51a9e7326a49683d37b8b Mon Sep 17 00:00:00 2001
From: Leo_Ding <2405260743@qq.com>
Date: Thu, 14 Aug 2025 18:35:30 +0800
Subject: [PATCH] signupNum
---
.env.dev | 4 +-
src/apis/modules/equiteMgt.js | 17 +
src/enums/useEnum.js | 10 +-
src/locales/lang/zh-CN/menu.js | 11 +-
src/router/routes/equiteMgt.js | 17 +
src/router/routes/index.js | 4 +-
src/router/routes/ycequite.js | 2 +-
src/views/activity/components/EditDialog.vue | 44 +--
src/views/banner/components/EditDialog.vue | 1 +
src/views/equiteMgt/components/EditDialog.vue | 293 ++++++++++++++++++
src/views/equiteMgt/index.vue | 240 ++++++++++++++
src/views/regional/hoseBookList/index.vue | 59 ++--
12 files changed, 650 insertions(+), 52 deletions(-)
create mode 100644 src/apis/modules/equiteMgt.js
create mode 100644 src/router/routes/equiteMgt.js
create mode 100644 src/views/equiteMgt/components/EditDialog.vue
create mode 100644 src/views/equiteMgt/index.vue
diff --git a/.env.dev b/.env.dev
index 365132d..d6e6707 100644
--- a/.env.dev
+++ b/.env.dev
@@ -12,8 +12,8 @@ VITE_ROUTER_BASE=/
VITE_ROUTER_HISTORY=hash
# api
-VITE_API_BASIC=https://zh.shibeitong.com
-# VITE_API_BASIC=http://10.10.1.6:8070
+# VITE_API_BASIC=https://zh.shibeitong.com
+VITE_API_BASIC=http://10.10.1.6:8070
VITE_API_HTTP=/api/v1/
# storage
VITE_STORAGE_NAMESPACE = gin-admin_local_
\ No newline at end of file
diff --git a/src/apis/modules/equiteMgt.js b/src/apis/modules/equiteMgt.js
new file mode 100644
index 0000000..0cd7f23
--- /dev/null
+++ b/src/apis/modules/equiteMgt.js
@@ -0,0 +1,17 @@
+/**
+ * 区域模块接口
+ */
+import request from '@/utils/request'
+
+// 获取项目列表
+export const getProjectList = (params) => request.basic.get('/api/v1/products', params)
+// 获取单挑数据
+export const getItem = (id) => request.basic.get(`/api/v1/products/${id}`)
+// 添加条目
+export const createProject = (params) => request.basic.post('/api/v1/products', params)
+// 更新role
+export const updateItem = (id, params) => request.basic.put(`/api/v1/products/${id}`, params)
+// 删除数据
+export const delItem = (id) => request.basic.delete(`/api/v1/products/${id}`)
+export const getCategory = (params) => request.basic.get('/api/v1/product-categories', params)
+
diff --git a/src/enums/useEnum.js b/src/enums/useEnum.js
index e33335a..6ddf175 100644
--- a/src/enums/useEnum.js
+++ b/src/enums/useEnum.js
@@ -47,9 +47,15 @@ const equiteEnum = new EnumManager([
// {value:7,name:'kangyang'},
// {value:8,name:'fangchan'},
]);
+const typerEnum=new EnumManager([
+ {value:'product',name:'实体产品'},
+ {value:'hotel',name:'酒店'},
+ {value:'table',name:'表单'},
+ {value:'qrcode',name:'二维码'},
+
+])
export {
- customersEnum,areaEnum,rightEnum,equiteEnum
-
+ customersEnum,areaEnum,rightEnum,equiteEnum,typerEnum
}
// // 获取整个数组
// console.log(roleEnum.getAll());
diff --git a/src/locales/lang/zh-CN/menu.js b/src/locales/lang/zh-CN/menu.js
index 8c31c2a..5716e0c 100644
--- a/src/locales/lang/zh-CN/menu.js
+++ b/src/locales/lang/zh-CN/menu.js
@@ -73,9 +73,9 @@ export default {
lotteryProduct: '奖品列表',
lotteryOrders: '抽奖记录',
- equite: '南通权益兑换',
+ equite: '南通权益兑换记录',
hotel: '酒店优惠',
- parentChild: '亲子礼遇',
+ parentChild: '线上会员礼遇',
jiazhuang: '家装团购',
life: '生活服务',
lvyou: '旅游',
@@ -87,7 +87,7 @@ export default {
aiya: '爱牙抵用券',
yllvs: '医疗绿色',
- ycequite: '盐城权益兑换',
+ ycequite: '盐城权益兑换记录',
ycjztg: '家装团购',
ycqwsc: '全屋纱窗安装服务',
ycfwjbj: '房屋精保洁',
@@ -95,8 +95,9 @@ export default {
ycxwybm: '盐城享物业便民',
ycjd: '盐城市内景点畅玩',
ycyllvs: '医疗绿色通道',
- ycparentChild: '亲子权益',
+ ycparentChild: '线上会员礼遇',
ycbirth: '生日礼遇',
activityOrder:'活动报名列表',
- banner:'首页轮播图'
+ banner:'首页轮播图',
+ equiteMgt:'权益兑换'
}
diff --git a/src/router/routes/equiteMgt.js b/src/router/routes/equiteMgt.js
new file mode 100644
index 0000000..75c987b
--- /dev/null
+++ b/src/router/routes/equiteMgt.js
@@ -0,0 +1,17 @@
+import { CoffeeOutlined } from '@ant-design/icons-vue'
+
+export default [
+ {
+ path: 'equiteMgt/index',
+ name: 'equiteMgt',
+ component: 'equiteMgt/index.vue',
+ meta: {
+ icon: CoffeeOutlined,
+ title: '权益列表',
+ isMenu: true,
+ keepAlive: true,
+ permission: '*',
+ }
+
+ }
+]
diff --git a/src/router/routes/index.js b/src/router/routes/index.js
index 3ab78b3..f791d74 100644
--- a/src/router/routes/index.js
+++ b/src/router/routes/index.js
@@ -19,6 +19,7 @@ import equite from './equite'
import ycequite from './ycequite'
import lottery from './lottery'
+import equiteMgt from './equiteMgt'
export default [
...home,
@@ -40,5 +41,6 @@ export default [
...activity,
...equite,
...lottery,
- ...ycequite
+ ...ycequite,
+ ...equiteMgt
]
diff --git a/src/router/routes/ycequite.js b/src/router/routes/ycequite.js
index d314106..a88f833 100644
--- a/src/router/routes/ycequite.js
+++ b/src/router/routes/ycequite.js
@@ -88,7 +88,7 @@ export default [
name: 'ycparentChild',
component: 'ycequite/ycparentChild/index.vue',
meta: {
- title: '亲子权益',
+ title: '线上会员礼遇',
isMenu: true,
keepAlive: true,
permission: '*',
diff --git a/src/views/activity/components/EditDialog.vue b/src/views/activity/components/EditDialog.vue
index f82edba..6f4a55c 100644
--- a/src/views/activity/components/EditDialog.vue
+++ b/src/views/activity/components/EditDialog.vue
@@ -10,7 +10,7 @@
-
+
@@ -18,17 +18,23 @@
-
+
-
+
-
+
-
+
@@ -50,7 +56,7 @@
style="width: 100%;" :rows="4">
-
+
@@ -59,7 +65,7 @@
-
+
-
+
@@ -90,7 +97,7 @@ import { useI18n } from 'vue-i18n'
import dayjs from 'dayjs'
import GxUpload from '@/components/GxUpload/index.vue'
import { customersEnum, areaEnum } from "@/enums/useEnum"
-import {spliceUrl} from "@/utils/util"
+import { spliceUrl } from "@/utils/util"
const emit = defineEmits(['ok'])
const { t } = useI18n() // 解构出t方法
const { modal, showModal, hideModal, showLoading, hideLoading } = useModal()
@@ -114,7 +121,7 @@ formRules.value = {
return Promise.resolve()
}
}],
- fileList: [{
+ fileList: [{
required: true, message: '请上传图片', trigger: 'change', validator: (_, value) => {
if (!value || !value.length) {
return Promise.reject(new Error('请上传图片'));
@@ -169,9 +176,9 @@ async function handleEdit(record = {}) {
formData.value.startAt = dayjs(data.startAt)
formData.value.endAt = dayjs(data.endAt)
formData.value.endSignupAt = dayjs(data.endSignupAt)
-
- if (data.images&&data.images.length>0) {
- formData.value.fileList = data.images.map(item=>config('http.apiBasic') + item)
+
+ if (data.images && data.images.length > 0) {
+ formData.value.fileList = data.images.map(item => config('http.apiBasic') + item)
}
} catch (error) {
message.error({ content: error.message })
@@ -191,8 +198,9 @@ function handleOk() {
showLoading()
const params = {
...values,
- cover:spliceUrl(formData.value.fileList[0]),
- images:formData.value.fileList?formData.value.fileList.map(item=>spliceUrl(item)):[]
+ cover: spliceUrl(formData.value.fileList[0]),
+ images: formData.value.fileList ? formData.value.fileList.map(item => spliceUrl(item)) : [],
+ signupNum: formData.value.signupNum || 0,
}
let result = null
switch (modal.value.type) {
@@ -231,10 +239,10 @@ function handleCancel() {
hideModal()
}
const onRangeChange = (value, dateString) => {
- console.log('value',value)
+ console.log('value', value)
console.log('Formatted Selected Time: ', dateString);
- formData.value.startAt=dayjs(dateString[0])
- formData.value.endAt=dayjs(dateString[1])
+ formData.value.startAt = dayjs(dateString[0])
+ formData.value.endAt = dayjs(dateString[1])
console.log(formData.value)
};
diff --git a/src/views/banner/components/EditDialog.vue b/src/views/banner/components/EditDialog.vue
index aa7e2d0..e2170f6 100644
--- a/src/views/banner/components/EditDialog.vue
+++ b/src/views/banner/components/EditDialog.vue
@@ -67,6 +67,7 @@ formRules.value = {
status: [{ required: true, message: '请选择状态', trigger: 'change' }],
sequence: [{ required: true, message: '请选择顺序', trigger: 'change' }],
img: [{ required: true, message: '请上传图片', trigger: 'change' }],
+ areaId: [{ required: true, message: '请选择区域', trigger: 'change' }],
}
/**
* 新建
diff --git a/src/views/equiteMgt/components/EditDialog.vue b/src/views/equiteMgt/components/EditDialog.vue
new file mode 100644
index 0000000..a83e61f
--- /dev/null
+++ b/src/views/equiteMgt/components/EditDialog.vue
@@ -0,0 +1,293 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ item.name }}
+
+
+
+
+
+
+ {{
+ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ value.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/equiteMgt/index.vue b/src/views/equiteMgt/index.vue
new file mode 100644
index 0000000..dd7707c
--- /dev/null
+++ b/src/views/equiteMgt/index.vue
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 南通
+ 盐城
+
+
+
+
+
+ {{ $t('button.reset') }}
+
+ {{ $t('button.search') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新增权益
+
+
+
+
+
+
+
+
+ {{ record.expireAt && dayjs(record.expireAt).format('YYYY-MM-DD HH:mm') }}
+
+
+ 点击查看
+
+
+
+ 启用
+ 停用
+
+
+
+ {{ areaEnum.getName(record.areaId) }}
+
+
+ {{ typerEnum.getName(record.type) }}
+
+
+
+
+ 编辑
+
+
+
+
+ {{ $t('pages.system.delete') }}
+
+
+
+
+
+
+
+
+
+
+
+ 暂无图片
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/regional/hoseBookList/index.vue b/src/views/regional/hoseBookList/index.vue
index 01c9903..d5926e3 100644
--- a/src/views/regional/hoseBookList/index.vue
+++ b/src/views/regional/hoseBookList/index.vue
@@ -29,7 +29,7 @@
- -->
+ -->
@@ -44,14 +44,18 @@
-
+
{{ areaEnum.getName(record.areaId) }}
-
+
-
- {{ dayjs(record.pushAt).format('YYYY-MM-DD') }}
+
+ {{ dayjs(record.pushAt).format('YYYY-MM-DD') }}
+
+
+ 点击查看
启用
@@ -72,11 +76,17 @@
-
-
+
+
+
+
@@ -90,11 +100,12 @@ import { config } from '@/config'
import dayjs from 'dayjs'
import { usePagination } from '@/hooks'
import EditDialog from './components/EditDialog.vue'
-import { PlusOutlined, EditOutlined, DeleteOutlined,QrcodeOutlined } from '@ant-design/icons-vue'
+import { PlusOutlined, EditOutlined, DeleteOutlined, QrcodeOutlined } from '@ant-design/icons-vue'
import { useI18n } from 'vue-i18n'
import qrlogo from '@/assets/qrlogo.png'
import { customersEnum, areaEnum } from "@/enums/useEnum"
const content = ref('')
+const modalType=ref(1)
const qrValue = ref('')
const qropen = ref(false)
defineOptions({
@@ -102,13 +113,13 @@ defineOptions({
})
const { t } = useI18n() // 解构出t方法
const columns = [
- { title: '所属区域', dataIndex: 'areaId', width: 90, align: 'center' },
- { title: '封面', dataIndex: 'cover', width: 120,align:'center'},
- { title: '房刊标题', dataIndex: 'title', width: 120,align:'center', ellipsis: true},
+ { title: '所属区域', dataIndex: 'areaId', width: 90, align: 'center' },
+ { title: '封面', dataIndex: 'cover', width: 120, align: 'center' },
+ { title: '房刊标题', dataIndex: 'title', width: 120, align: 'center', ellipsis: true },
{ title: '楼盘名称', dataIndex: 'name', key: 'title', ellipsis: true },
{ title: '发布时间', dataIndex: 'pushAt', key: 'pushAt' },
- { title: '内容', dataIndex: 'content', key: 'title',ellipsis: true },
- { title: '状态', dataIndex: 'status', key: 'introduce', width: 100,align:'center' },
+ { title: '内容', dataIndex: 'content', key: 'title', ellipsis: true },
+ { title: '状态', dataIndex: 'status', key: 'introduce', width: 100, align: 'center' },
{ title: t('button.action'), key: 'action', fixed: 'right', width: 150, align: 'center' },
]
@@ -198,17 +209,19 @@ function handleResetSearch() {
getPageList()
}
const createQrcode = (params) => {
- const {name,areaId,id}=params
- const item={ title:name,
- typer:'activity',
- pathUrl:'/pages/sceneDetail/index.vue',
+ const { name, areaId, id } = params
+ const item = {
+ title: name,
+ typer: 'activity',
+ pathUrl: '/pages/sceneDetail/index.vue',
areaId,
- relationId:id,
- kvalue1:'',
- kvalue2:'',
- kvalue3:'',
- kvalue4:'',
- kvalue5:'',}
+ relationId: id,
+ kvalue1: '',
+ kvalue2: '',
+ kvalue3: '',
+ kvalue4: '',
+ kvalue5: '',
+ }
qrValue.value = JSON.stringify(item)
console.log(qrValue.value)
qropen.value = true