From 0ebc22340d4a1009d53ac1f47604891fecd0f47c Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期二, 24 九月 2024 10:18:21 +0800 Subject: [PATCH] add:会员等级筛选 --- pages/marketing/coupon/activity/index.vue | 125 +++++++++++++++++++++++++++++++++-------- 1 files changed, 100 insertions(+), 25 deletions(-) diff --git a/pages/marketing/coupon/activity/index.vue b/pages/marketing/coupon/activity/index.vue index e9564a1..7f65ee6 100644 --- a/pages/marketing/coupon/activity/index.vue +++ b/pages/marketing/coupon/activity/index.vue @@ -9,7 +9,9 @@ couponSearchForm, getActivityEffectiveTime, getActivityReceiveTime, + getImageUrlRules, couponColumn, + dateTimeRules, } from '@/utils/coupon-form' export default { data() { @@ -39,6 +41,7 @@ if (!isNew) { row.usageTypeStr = getActivityEffectiveTime(row) row.getStartDateStr = getActivityReceiveTime(row) + getImageUrlRules(row, this.tableConfig.form) } }, columns: [ @@ -63,10 +66,10 @@ formatter: getActivityEffectiveTime, minWidth: 320, }, + { label: '领取渠道', prop: 'getTypeName', minWidth: 120 }, { label: '已领取总数', prop: 'getNum', minWidth: 150 }, { label: '剩余未领取总数', prop: 'unGetNum', minWidth: 150 }, { label: '状态', prop: 'statusName', minWidth: 120 }, - { label: '领取渠道', prop: 'getTypeName', minWidth: 120 }, { label: '操作人', prop: 'createByName', minWidth: 120 }, ], // 页面上要到分,后端要传到秒 @@ -99,7 +102,18 @@ searchForm: [ { type: 'row', - items: [...couponSearchForm()], + items: [ + ...couponSearchForm(), + { + label: '领取渠道:', + id: 'getType', + type: 'bus-select-dict', + el: { + code: 'COUPON_GET_TYPE', + style: 'width:100%', + }, + }, + ], }, ], form: [ @@ -116,17 +130,25 @@ strKey: 'getTypeName', rules: { required: true, message: '请选择领取渠道' }, on: { - change: (e, updateForm,obj) => { - - if(e[0]==='home'){ + change: (e, updateForm, obj) => { + if (e[0] === 'home') { // 如果是首页领取的话,则图片为必传递 - this.updateImageUrlRules(this.tableConfig.form,"imageUrl",true,"图片为必填项目") - }else{ - this.updateImageUrlRules(this.tableConfig.form,"imageUrl",false,"请输入图片") + this.updateImageUrlRules( + this.tableConfig.form, + 'imageUrl', + true, + '图片为必填项目' + ) + } else { + this.updateImageUrlRules( + this.tableConfig.form, + 'imageUrl', + false, + '请输入图片' + ) } }, }, - }, { label: '优惠券图片:', @@ -159,6 +181,7 @@ commonRules: true, commonFormat: true, commonFormatProps: ['getStartDate', 'getEndDate'], + rules: dateTimeRules(), }, { label: '使用时间:', @@ -195,6 +218,31 @@ commonFormatProps: ['usageStartDate', 'usageEndDate'], hidden: (row, item, mode) => row.usageType !== 'fixed' || mode === 'view', + rules: (row) => { + return [ + dateTimeRules(), + { + validator: (rule, value, callback) => { + if ( + Array.isArray(row.getStartDate) && + row.getStartDate.filter((i) => !!i).length === 2 && + Array.isArray(value) && + value.filter((i) => !!i).length === 2 + ) { + if (value[0] < row.getStartDate[0]) { + callback(new Error('使用开始时间不能小于领取开始时间')) + } else if (value[1] < row.getStartDate[1]) { + callback(new Error('使用结束时间不能小于领取结束时间')) + } else { + callback() + } + } else { + callback() + } + }, + }, + ] + }, }, { label: '领取后有效时间:', @@ -245,18 +293,47 @@ controls: false, }, unit: '张', - rules: { - required: true, - message: '请输入每人限领', - trigger: 'blur', - }, + rules: (row) => [ + { + required: true, + message: '请输入每人限领', + trigger: 'blur', + }, + { + validator: (rule, value, callback) => { + if (value > row.couponAmount) { + callback(new Error('每人限领不能大于发放数量')) + } else { + callback() + } + }, + trigger: 'blur', + }, + ], }, ], extraButtons: [ { text: '发布', - show: (row) => - row.status === 'inactive' || row.status === 'expired', + show: (row) => { + // row.status === 'inactive' || row.status === 'expired' + // const now = new Date(); // 获取当前时间 + // const startDate = new Date(row.getStartDate); // 获取开始时间 + // const endDate = new Date(row.getEndDate); // 获取结束时间 + // // 判断当前时间是否在开始时间和结束时间之间 + // const isInTimeRange = now >= startDate && now <= endDate; + const now = new Date() // 获取当前时间 + const endDate = new Date(row.getEndDate) // 获取结束时间 + // 判断当前时间是否已经超过领取结束时间 + const isAfterEndDate = now <= endDate + if ( + isAfterEndDate && + (row.status === 'inactive' || row.status === 'expired') + ) { + return true + } + return false + }, atClick: async (row) => { try { await this.$elBusUtil.confirm('确定要发布吗?') @@ -300,16 +377,14 @@ } }, methods: { - updateImageUrlRules(form,id,required,message) { - const curField =form.find( - (field) => field.id === id - ); + updateImageUrlRules(form, id, required, message) { + const curField = form.find((field) => field.id === id) if (curField && curField.rules && required) { - curField.rules.required = true; - curField.rules.message = message; - }else if(curField && curField.rules){ - curField.rules.required = false; - curField.rules.message = message; + curField.rules.required = true + curField.rules.message = message + } else if (curField && curField.rules) { + curField.rules.required = false + curField.rules.message = message } }, }, -- Gitblit v1.9.3