Parcourir la source

fix: fix bugs

gemercheung il y a 3 ans
Parent
commit
47044fa2a9
1 fichiers modifiés avec 67 ajouts et 8 suppressions
  1. 67 8
      src/views/notification/addModal.vue

+ 67 - 8
src/views/notification/addModal.vue

@@ -7,6 +7,8 @@
     okText="立刻发布"
     width="60%"
     min-width="600px"
+    :height="550"
+    :showOkBtn="!isView"
     @ok="handleOk"
   >
     <div class="pt-3px pr-3px">
@@ -16,7 +18,7 @@
 </template>
 <script lang="ts">
   // computed
-  import { defineComponent, ref } from 'vue';
+  import { defineComponent, h, ref } from 'vue';
 
   import { addNoticeApi, editNoticeApi } from '/@/api/notification/list';
   import { BasicModal, useModalInner } from '/@/components/Modal';
@@ -27,9 +29,12 @@
   // import { useUserStore } from '/@/store/modules/user';
   // import { Tinymce } from '/@/components/Tinymce';
   import { uploadApi } from '/@/api/advertisement/list';
-  import { formatToDateTime } from '/@/utils/dateUtil';
+  import { dateUtil, formatToDateTime } from '/@/utils/dateUtil';
+  import { TableImg } from '/@/components/Table';
 
   const { t } = useI18n();
+  const now = dateUtil();
+
   export default defineComponent({
     components: { BasicModal, BasicForm },
     props: {
@@ -65,13 +70,30 @@
             span: 22,
           },
         },
-
         {
           field: 'selectTime',
           component: 'RangePicker',
           componentProps: {
             format: 'YYYY-MM-DD HH:mm',
             showTime: true,
+            disabledDate(current) {
+              return current && current < now;
+            },
+            disabledTime(_) {
+              // if (type === 'start') {
+              //   return {
+              //     // ...Array(dateUtil().minute()).keys()
+              //     disabledHours: () => [...Array(dateUtil().hour()).keys()],
+              //     disabledMinutes: () => [],
+              //     disabledSeconds: () => [],
+              //   };
+              // }
+              return {
+                disabledHours: () => [...Array(dateUtil().hour()).keys()],
+                disabledMinutes: () => [],
+                disabledSeconds: () => [],
+              };
+            },
           },
           label: '时间段',
           required: true,
@@ -84,13 +106,17 @@
                 if (!value) {
                   return Promise.reject('请选择时间段');
                 }
-                console.log('value[0]', value[0].unix());
-                console.log('value[1]', value[1].unix());
-                if (value[0].unix() > value[1].unix() - 60) {
+                // console.log('check', rule, value, record);
+                // // console.log('value[1]', value[1].unix());
+                if (value[0].unix() > value[1].unix()) {
                   return Promise.reject('开始时间要小于结束时间');
                 }
+                if (value[0].unix() > value[1].unix() - 300) {
+                  return Promise.reject('时间段最小5分钟');
+                }
                 return Promise.resolve();
               },
+
               trigger: 'change',
             },
           ],
@@ -143,7 +169,7 @@
             validateTrigger: 'blur',
           },
           ifShow: ({ model }) => {
-            return model['type'] === 1;
+            return model['type'] === 1 && !isView.value;
           },
           componentProps: {
             api: uploadApi,
@@ -162,10 +188,35 @@
             span: 22,
           },
         },
+        {
+          field: 'content2Image',
+          component: 'Input',
+          required: true,
+          ifShow: ({ model }) => {
+            return model['type'] === 1 && isView.value;
+          },
+          render: ({ model, field }) => {
+            return h(TableImg, {
+              imgList: [model[field]],
+              size: 160,
+              style: {
+                height: 160,
+              },
+            });
+          },
+          label: '内容',
+          colProps: {
+            span: 10,
+          },
+        },
       ];
       const title = ref('创新消息');
       const { createMessage } = useMessage();
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
+        fieldMapToTime: [
+          // 支持多个字段
+          ['selectTime', ['startTime', 'endTime'], 'YYYY-MM-DD HH:mm'],
+        ],
         labelWidth: 120,
         schemas,
         showActionButtonGroup: false,
@@ -191,7 +242,7 @@
         });
         if (data.isView) {
           isView.value = true;
-          title.value = '编辑消息';
+          title.value = '查看消息';
           setFieldsValue({
             ...data,
           });
@@ -208,6 +259,7 @@
           if (data.type === 1) {
             setFieldsValue({
               content2: [data.content],
+              content2Image: [data.content],
             });
           }
           updateSchemas = schemas.map((item: FormSchema) => {
@@ -225,6 +277,13 @@
 
       async function handleOk() {
         let data = await validate();
+        if (
+          data.selectTime[0].valueOf() < dateUtil().valueOf() ||
+          data.selectTime[1].valueOf() < dateUtil().valueOf()
+        ) {
+          createMessage.warn('开始或结束时间不能少于当前时间');
+          return;
+        }
         console.log('data', data);
 
         const requestApi = data.id ? editNoticeApi : addNoticeApi;