From e06e563a554ee12b752e20e3a1aa5f26839fda63 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 17 十月 2024 14:45:57 +0800
Subject: [PATCH] add:销售合计统计运费+打包费;售后扣平台款字段,增加增加统计售后“打包运费(散户)”字段

---
 pages/marketing/coupon/activity/index.vue |  147 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 138 insertions(+), 9 deletions(-)

diff --git a/pages/marketing/coupon/activity/index.vue b/pages/marketing/coupon/activity/index.vue
index 631647f..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,10 +41,21 @@
           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,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 },
         ],
         // 页面上要到分,后端要传到秒
@@ -89,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: [
@@ -105,6 +129,44 @@
             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: '领取时间:',
@@ -119,6 +181,7 @@
             commonRules: true,
             commonFormat: true,
             commonFormatProps: ['getStartDate', 'getEndDate'],
+            rules: dateTimeRules(),
           },
           {
             label: '使用时间:',
@@ -155,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: '领取后有效时间:',
@@ -205,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('确定要发布吗?')
@@ -259,5 +376,17 @@
       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>

--
Gitblit v1.9.3