[fix]优化代码
This commit is contained in:
@ -16,3 +16,11 @@ export interface FormData {
|
|||||||
attribute1: string | undefined,
|
attribute1: string | undefined,
|
||||||
checkInScore: number
|
checkInScore: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 会员标签
|
||||||
|
|
||||||
|
export interface GroupItem {
|
||||||
|
groupName: string; // 分组名称
|
||||||
|
id: number; // 用户id
|
||||||
|
createTime: string; // 添加时间
|
||||||
|
}
|
||||||
|
|||||||
@ -18,6 +18,11 @@ interface EquityArrayItem {
|
|||||||
equityValue: number;
|
equityValue: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface CouponItem {
|
||||||
|
id?: number,
|
||||||
|
couponName: string
|
||||||
|
}
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
|
||||||
@ -34,7 +39,7 @@ const formData = ref({
|
|||||||
backgroundUrl: undefined,
|
backgroundUrl: undefined,
|
||||||
status: false,
|
status: false,
|
||||||
remarks: undefined,
|
remarks: undefined,
|
||||||
levelEquityList: []
|
levelEquityList: [] as EquityArrayItem[]
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
levelName: [{ required: true, message: '等级名称不能为空', trigger: 'blur' }],
|
levelName: [{ required: true, message: '等级名称不能为空', trigger: 'blur' }],
|
||||||
@ -48,7 +53,9 @@ const formRef = ref() // 表单 Ref
|
|||||||
const open = async (type: string, id?: number) => {
|
const open = async (type: string, id?: number) => {
|
||||||
getAllEquityList()
|
getAllEquityList()
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
tableRadio.value = null
|
tableRadio.value = {
|
||||||
|
couponName: ''
|
||||||
|
}
|
||||||
dialogTitle.value = t('action.' + type)
|
dialogTitle.value = t('action.' + type)
|
||||||
formType.value = type
|
formType.value = type
|
||||||
resetForm()
|
resetForm()
|
||||||
@ -88,7 +95,7 @@ const submitForm = async () => {
|
|||||||
if (!formRef.value) return
|
if (!formRef.value) return
|
||||||
const valid = await formRef.value.validate()
|
const valid = await formRef.value.validate()
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
let equityArray = ref<EquityArrayItem[]>([]);
|
let equityArray: EquityArrayItem[] = []
|
||||||
let errorMessageMap = {
|
let errorMessageMap = {
|
||||||
'integral': '积分需大于0',
|
'integral': '积分需大于0',
|
||||||
'discount': '折扣需大于0',
|
'discount': '折扣需大于0',
|
||||||
@ -102,7 +109,7 @@ const submitForm = async () => {
|
|||||||
} else if (item.type === 'coupon') {
|
} else if (item.type === 'coupon') {
|
||||||
if (tableRadio.value?.id) {
|
if (tableRadio.value?.id) {
|
||||||
item.equityValue = tableRadio.value.id
|
item.equityValue = tableRadio.value.id
|
||||||
equityArray.value.push({
|
equityArray.push({
|
||||||
equityId: item.id,
|
equityId: item.id,
|
||||||
equityValue: item.equityValue
|
equityValue: item.equityValue
|
||||||
});
|
});
|
||||||
@ -111,14 +118,14 @@ const submitForm = async () => {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
equityArray.value.push({
|
equityArray.push({
|
||||||
equityId: item.id,
|
equityId: item.id,
|
||||||
equityValue: item.equityValue
|
equityValue: item.equityValue
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
formData.value.levelEquityList = equityArray.value
|
formData.value.levelEquityList = equityArray
|
||||||
console.log(formData.value, 'formData')
|
console.log(formData.value, 'formData')
|
||||||
// 提交请求
|
// 提交请求
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
@ -181,7 +188,7 @@ const handleCurrentChange = (val) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 选中商品
|
// 选中商品
|
||||||
const multipleTableRef = ref(null)
|
const multipleTableRef = ref()
|
||||||
const handleSelectionChange = (val) => {
|
const handleSelectionChange = (val) => {
|
||||||
if (val.length > 1) {
|
if (val.length > 1) {
|
||||||
let del_row = val.shift();
|
let del_row = val.shift();
|
||||||
@ -190,7 +197,9 @@ const handleSelectionChange = (val) => {
|
|||||||
multipleSelection.value = val
|
multipleSelection.value = val
|
||||||
}
|
}
|
||||||
// 保存选择优惠券ID
|
// 保存选择优惠券ID
|
||||||
const tableRadio = ref(null)
|
const tableRadio = ref<CouponItem>({
|
||||||
|
couponName: ''
|
||||||
|
})
|
||||||
const saveIdList = () => {
|
const saveIdList = () => {
|
||||||
tableRadio.value = multipleSelection.value[0]
|
tableRadio.value = multipleSelection.value[0]
|
||||||
console.log(multipleSelection.value, 'multipleSelection', tableRadio.value, 'tableRadio')
|
console.log(multipleSelection.value, 'multipleSelection', tableRadio.value, 'tableRadio')
|
||||||
@ -318,7 +327,7 @@ const resetForm = () => {
|
|||||||
<div class="flex items-center mb-1" v-else-if="item.type === 'coupon'">
|
<div class="flex items-center mb-1" v-else-if="item.type === 'coupon'">
|
||||||
<el-checkbox v-model="item.selected" :label="item.typeName" />
|
<el-checkbox v-model="item.selected" :label="item.typeName" />
|
||||||
<span class="select-coupon-btn mr-1" @click="oponCoupon">选择优惠券</span>
|
<span class="select-coupon-btn mr-1" @click="oponCoupon">选择优惠券</span>
|
||||||
<span v-if="tableRadio">已选优惠券:{{tableRadio.couponName}}</span>
|
<span v-if="tableRadio.id">已选优惠券:{{tableRadio.couponName}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mb-1" v-else>
|
<div class="flex items-center mb-1" v-else>
|
||||||
<el-checkbox v-model="item.selected" :label="item.typeName" />
|
<el-checkbox v-model="item.selected" :label="item.typeName" />
|
||||||
|
|||||||
@ -109,16 +109,27 @@
|
|||||||
|
|
||||||
<script setup lang="ts" name="UserLevelEquityRef">
|
<script setup lang="ts" name="UserLevelEquityRef">
|
||||||
import { dateFormatter } from '@/utils/formatTime'
|
import { dateFormatter } from '@/utils/formatTime'
|
||||||
|
import { ref, reactive } from "vue";
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import * as UserLevelEquityRefApi from '@/api/member/userLevelEquityRef'
|
import * as UserLevelEquityRefApi from '@/api/member/userLevelEquityRef'
|
||||||
import UserLevelEquityRefForm from './UserLevelEquityRefForm.vue'
|
import UserLevelEquityRefForm from './UserLevelEquityRefForm.vue'
|
||||||
|
|
||||||
|
interface QueryParams {
|
||||||
|
pageNo: number;
|
||||||
|
pageSize: number;
|
||||||
|
levelId: number | null;
|
||||||
|
equityId: number | null;
|
||||||
|
createTime: any;
|
||||||
|
}
|
||||||
|
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const total = ref(0) // 列表的总页数
|
const total = ref(0) // 列表的总页数
|
||||||
const list = ref([]) // 列表的数据
|
const list = ref([]) // 列表的数据
|
||||||
const queryParams = reactive({
|
|
||||||
|
const queryParams = reactive<QueryParams>({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
levelId: null,
|
levelId: null,
|
||||||
|
|||||||
@ -121,18 +121,28 @@
|
|||||||
<script setup lang="ts" name="UserLevelGrowthValueConfig">
|
<script setup lang="ts" name="UserLevelGrowthValueConfig">
|
||||||
import { dateFormatter } from '@/utils/formatTime'
|
import { dateFormatter } from '@/utils/formatTime'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
import * as UserLevelGrowthValueConfigApi from '@/api/member/userLevelGrowthValueConfig'
|
import * as UserLevelGrowthValueConfigApi from '@/api/member/userLevelGrowthValueConfig'
|
||||||
import UserLevelGrowthValueConfigForm from './UserLevelGrowthValueConfigForm.vue'
|
import UserLevelGrowthValueConfigForm from './UserLevelGrowthValueConfigForm.vue'
|
||||||
|
|
||||||
|
interface QueryParams {
|
||||||
|
pageNo: number
|
||||||
|
pageSize: number
|
||||||
|
type?: number
|
||||||
|
typeName: string | null
|
||||||
|
growthValue: number | null
|
||||||
|
createTime: any
|
||||||
|
}
|
||||||
|
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const total = ref(0) // 列表的总页数
|
const total = ref(0) // 列表的总页数
|
||||||
const list = ref([]) // 列表的数据
|
const list = ref([]) // 列表的数据
|
||||||
const queryParams = reactive({
|
const queryParams = reactive<QueryParams>({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
type: null,
|
type: undefined,
|
||||||
typeName: null,
|
typeName: null,
|
||||||
growthValue: null,
|
growthValue: null,
|
||||||
createTime: []
|
createTime: []
|
||||||
|
|||||||
@ -35,18 +35,23 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import * as UserTagApi from '@/api/member/userTag'
|
import * as UserTagApi from '@/api/member/userTag'
|
||||||
import * as UserTagGroupApi from '@/api/member/userTagGroup'
|
import * as UserTagGroupApi from '@/api/member/userTagGroup'
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
|
|
||||||
|
interface GroupData {
|
||||||
|
id: number
|
||||||
|
groupName: string
|
||||||
|
}
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const list = ref([]) // 列表的数据
|
const list = ref<GroupData[]>([]) // 列表的数据
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
tagName: undefined,
|
tagName: '',
|
||||||
groupId: undefined
|
groupId: undefined
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
@ -77,7 +82,7 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|||||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
// 校验表单
|
// 校验表单
|
||||||
if (!formRef) return
|
if (!formRef.value) return
|
||||||
const valid = await formRef.value.validate()
|
const valid = await formRef.value.validate()
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
// 提交请求
|
// 提交请求
|
||||||
@ -110,7 +115,7 @@ const getList = async () => {
|
|||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formData.value = {
|
formData.value = {
|
||||||
id: undefined,
|
id: undefined,
|
||||||
tagName: undefined,
|
tagName: '',
|
||||||
groupId: undefined
|
groupId: undefined
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
|
|||||||
@ -1,17 +1,18 @@
|
|||||||
<script setup lang="ts" name="TagGroup">
|
<script setup lang="ts" name="TagGroup">
|
||||||
import { defineProps, toRefs, ref } from 'vue';
|
import { defineProps, toRefs, ref } from 'vue';
|
||||||
import * as UserTagGroupApi from '@/api/member/userTagGroup'
|
import * as UserTagGroupApi from '@/api/member/userTagGroup'
|
||||||
|
import { GroupItem } from "@/types/member";
|
||||||
import UserGroupForm from "@/views/member/userTag/components/UserGroupForm.vue";
|
import UserGroupForm from "@/views/member/userTag/components/UserGroupForm.vue";
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const activeId = ref<number | null>(null)
|
const activeId = ref<number | null>(null)
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
groupList: {
|
groupList: {
|
||||||
type: Array,
|
type: Array as () => GroupItem[],
|
||||||
default: () => []
|
default: () => []
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const emit = defineEmits(['changeGroup', 'delSuccess'])
|
const emit = defineEmits(['changeGroup', 'delSuccess', 'success'])
|
||||||
// 切换分组
|
// 切换分组
|
||||||
const changeGroup = (id:number | null) => {
|
const changeGroup = (id:number | null) => {
|
||||||
activeId.value = id
|
activeId.value = id
|
||||||
|
|||||||
@ -86,16 +86,17 @@
|
|||||||
import * as UserTagApi from '@/api/member/userTag'
|
import * as UserTagApi from '@/api/member/userTag'
|
||||||
import UserTagForm from './UserTagForm.vue'
|
import UserTagForm from './UserTagForm.vue'
|
||||||
import TagGroup from "@/views/member/userTag/components/TagGroup.vue";
|
import TagGroup from "@/views/member/userTag/components/TagGroup.vue";
|
||||||
import { ref } from 'vue'
|
import { ref, reactive } from 'vue'
|
||||||
import * as UserTagGroupApi from "@/api/member/userTagGroup";
|
import * as UserTagGroupApi from "@/api/member/userTagGroup";
|
||||||
import UserGroupForm from "@/views/member/userTag/components/UserGroupForm.vue";
|
import UserGroupForm from "@/views/member/userTag/components/UserGroupForm.vue";
|
||||||
|
import {GroupItem} from "@/types/member";
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const total = ref(0) // 列表的总页数
|
const total = ref(0) // 列表的总页数
|
||||||
const list = ref([]) // 列表的数据
|
const list = ref([]) // 列表的数据
|
||||||
const groupList = ref([]) // 列表的数据
|
const groupList = ref<GroupItem[]>([]) // 列表的数据
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
|
|||||||
@ -110,15 +110,24 @@
|
|||||||
<script setup lang="ts" name="UserTagGroup">
|
<script setup lang="ts" name="UserTagGroup">
|
||||||
import { dateFormatter } from '@/utils/formatTime'
|
import { dateFormatter } from '@/utils/formatTime'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
import * as UserTagGroupApi from '@/api/member/userTagGroup'
|
import * as UserTagGroupApi from '@/api/member/userTagGroup'
|
||||||
import UserTagGroupForm from './UserTagGroupForm.vue'
|
import UserTagGroupForm from './UserTagGroupForm.vue'
|
||||||
|
|
||||||
|
interface QueryParams {
|
||||||
|
pageNo: number;
|
||||||
|
pageSize: number;
|
||||||
|
groupName: string | null;
|
||||||
|
sorted: string | null;
|
||||||
|
createTime: any;
|
||||||
|
}
|
||||||
|
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const total = ref(0) // 列表的总页数
|
const total = ref(0) // 列表的总页数
|
||||||
const list = ref([]) // 列表的数据
|
const list = ref([]) // 列表的数据
|
||||||
const queryParams = reactive({
|
const queryParams = reactive<QueryParams>({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
groupName: null,
|
groupName: null,
|
||||||
|
|||||||
Reference in New Issue
Block a user