cloudroam
2024-09-18 11acfd3894f38312940621e7f28acb639968e3db
pages/marketing/coupon/activity/index.vue
@@ -9,6 +9,7 @@
  couponSearchForm,
  getActivityEffectiveTime,
  getActivityReceiveTime,
  getImageUrlRules,
  couponColumn,
} from '@/utils/coupon-form'
export default {
@@ -39,10 +40,22 @@
          if (!isNew) {
            row.usageTypeStr = getActivityEffectiveTime(row)
            row.getStartDateStr = getActivityReceiveTime(row)
            getImageUrlRules(row,this.tableConfig.form)
          }
        },
        columns: [
          ...couponColumn(),
          {
            label: '优惠券图片',
            formatter: (row) => (
              <el-bus-image
                style="width:50px;height:50px"
                lazy={true}
                src={row.imageUrl}
              />
            ),
          },
          {
            label: '领取时间',
            formatter: getActivityReceiveTime,
@@ -53,6 +66,7 @@
            formatter: getActivityEffectiveTime,
            minWidth: 320,
          },
          { label: '领取渠道', prop: 'getTypeName', minWidth: 120 },
          { label: '已领取总数', prop: 'getNum', minWidth: 150 },
          { label: '剩余未领取总数', prop: 'unGetNum', minWidth: 150 },
          { label: '状态', prop: 'statusName', minWidth: 120 },
@@ -88,8 +102,19 @@
        searchForm: [
          {
            type: 'row',
            items: [...couponSearchForm()],
            items: [...couponSearchForm(),
              {
                label: '领取渠道:',
                id: 'getType',
                type: 'bus-select-dict',
                el: {
                  code: 'COUPON_GET_TYPE',
                  style: 'width:100%',
                },
              },
            ],
          },
        ],
        form: [
          ...couponForm(),
@@ -104,6 +129,36 @@
            str: true,
            strKey: 'getTypeName',
            rules: { required: true, message: '请选择领取渠道' },
            on: {
              change: (e, updateForm,obj) => {
                if(e[0]==='home'){
                  // 如果是首页领取的话,则图片为必传递
                  this.updateImageUrlRules(this.tableConfig.form,"imageUrl",true,"图片为必填项目")
                }else{
                  this.updateImageUrlRules(this.tableConfig.form,"imageUrl",false,"请输入图片")
                }
              },
            },
          },
          {
            label: '优惠券图片:',
            id: 'imageUrl',
            type: 'bus-upload',
            el: {
              listType: 'picture-card',
              limit: 1,
              limitSize: 2,
              tipText: '大小不超过2M',
              valueType: 'string',
            },
            forceDisabled: true,
            rules: {
              required: true,
              message: '请上传商品图片',
              trigger: 'blur',
            },
          },
          {
            label: '领取时间:',
@@ -214,8 +269,23 @@
        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('确定要发布吗?')
@@ -258,5 +328,19 @@
      title: '活动优惠券',
    }
  },
  methods: {
    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;
      }
    },
  },
}
</script>