From c03ce23371f770aa9ed2a552b214ff658ebb6cda Mon Sep 17 00:00:00 2001 From: Echo <1711788888@qq.com> Date: Wed, 3 Sep 2025 22:32:56 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=A1=B5=EF=BC=8C=E4=BC=98=E5=8C=96vip?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config.js | 6 +++--- src/view/goods/vip/index.vue | 32 +++++++++++++++++++++++++++++--- src/view/user/user/index.vue | 4 ++-- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/config.js b/src/config.js index e9d0d5a..b9dbc60 100644 --- a/src/config.js +++ b/src/config.js @@ -326,11 +326,11 @@ export const USER_TABLE_CONFIG = { slot: 'status' },{ attrs: { - label: '创建时间', - prop: 'CreatedAt', + label: 'VIP到期时间', + prop: 'vip_expire_time', align: 'center' }, - slot: 'CreatedAt' + slot: 'vip_expire_time' },{ attrs: { label: '用户类别', diff --git a/src/view/goods/vip/index.vue b/src/view/goods/vip/index.vue index d18d2a2..fd35b5a 100644 --- a/src/view/goods/vip/index.vue +++ b/src/view/goods/vip/index.vue @@ -102,8 +102,15 @@ + + +
+ + 选择讲师 +
+
@@ -115,6 +122,7 @@ + @@ -124,10 +132,14 @@ import { ElMessage, ElMessageBox } from 'element-plus' import { ref, reactive } from 'vue' import { useAppStore } from '@/pinia' import { formatDate } from '@/utils/format' +import UserChoose from '@/components/userChoose/index.vue' defineOptions({ name: 'VipList' }) +// 讲师选择组件注册 +const userChooseRef = ref() + const appStore = useAppStore() const btnLoading = ref(false) @@ -143,7 +155,9 @@ const formData = ref({ level: undefined, price: undefined, expiration: undefined, - des: '' + des: '', + teacher_id: undefined, + teacher_name: '' }) const rule = reactive({ @@ -151,9 +165,10 @@ const rule = reactive({ { required: true, message: '请输入名称', trigger: ['blur','input'] }, { whitespace: true, message: '不能只输入空格', trigger: ['blur','input'] } ], - level: [ { required: true, message: '请输入等级', trigger: ['blur','input'] } ], + level: [ { required: true, message: '请输入等级', trigger: ['blur','input','change'] } ], price: [ { required: true, message: '请输入价格', trigger: ['blur','input'] } ], - expiration: [ { required: true, message: '请输入有效期', trigger: ['blur','input'] } ] + expiration: [ { required: true, message: '请输入有效期', trigger: ['blur','input'] } ], + teacher_name: [ { validator: (r,v,cb)=>{ if(formData.value.level===3 && !v){ cb(new Error('请选择讲师')); } else { cb(); } }, trigger:['change','blur'] } ] }) const searchRule = reactive({ @@ -236,6 +251,7 @@ const type = ref('') const formatLevel = (level) => { if (level === 1) return 'Vip' if (level === 2) return 'Svip' + if (level === 3) return '讲师会员' return level } @@ -322,6 +338,16 @@ const enterDialog = async () => { } }) } + +// 选择讲师 +const openTeacherDialog = () => { + userChooseRef.value?.open() +} +const onChooseTeacher = (teacher) => { + if (!teacher) return + formData.value.teacher_id = teacher.ID + formData.value.teacher_name = teacher.nick_name +}