Sfoglia il codice sorgente

新增图片预览组件,调整图片上传组件

zhulu 2 anni fa
parent
commit
250b45e47f

+ 201 - 0
src/components/ImageListPreview/index.vue

@@ -0,0 +1,201 @@
+<template>
+  <!-- <el-image
+    :src="`${realSrc}`"
+    fit="cover"
+    :style="`width:${realWidth};height:${realHeight};`"
+    :preview-src-list="realSrcList"
+  >
+    <div slot="error" class="image-slot">
+      <i class="el-icon-picture-outline"></i>
+    </div>
+  </el-image> -->
+
+  <div class="uploaders">
+    <div class="images">
+      <div v-for="(v, i) in fileList" :key="i">
+        <!-- -->
+        <slot v-if="$slots.default"
+              :v="v"
+              :i="i"></slot>
+        <!-- -->
+        <div class="image relative"
+             v-else>
+          <el-image :src="v"
+                    class="avatar"
+                    :preview-src-list="fileList"
+                    :z-index="6000" />
+          <!-- <i v-show="!disabled"
+             class="el-icon-error"
+             @click="onRemove(i)"></i> -->
+        </div>
+      </div>
+  </div>
+   </div> 
+</template>
+
+<script>
+export default {
+  name: "ImageListPreview",
+  data() {
+    return {
+      fileList: [],
+    }
+  },
+  watch: {
+    value: {
+      immediate: true,
+      handler(newVal) {
+        if(newVal){
+        const list = Array.isArray(newVal) ? newVal : this.value.split(",");
+        this.fileList = list.map((url) => ({ name: url, url }));}
+        else{
+          this.fileList =[];
+        }
+      },
+    },
+  },
+  props: {
+    value: {
+      type: [Array,String],
+      default: [],
+    },
+    src: {
+      type: String,
+      default: ""
+    },
+    width: {
+      type: [Number, String],
+      default: ""
+    },
+    height: {
+      type: [Number, String],
+      default: ""
+    }
+  },
+  computed: {
+    realSrc() {
+      if (!this.src) {
+        return;
+      }
+      let real_src = this.src.split(",")[0];
+      return real_src;
+    },
+    realSrcList() {
+      if (!this.src) {
+        return;
+      }
+      let real_src_list = this.src.split(",");
+      let srcList = [];
+      real_src_list.forEach(item => {
+        return srcList.push(item);
+      });
+      return srcList;
+    },
+    realWidth() {
+      return typeof this.width == "string" ? this.width : `${this.width}px`;
+    },
+    realHeight() {
+      return typeof this.height == "string" ? this.height : `${this.height}px`;
+    }
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-image {
+  border-radius: 5px;
+  background-color: #ebeef5;
+  box-shadow: 0 0 5px 1px #ccc;
+  ::v-deep .el-image__inner {
+    transition: all 0.3s;
+    cursor: pointer;
+    &:hover {
+      transform: scale(1.2);
+    }
+  }
+  ::v-deep .image-slot {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 100%;
+    height: 100%;
+    color: #909399;
+    font-size: 30px;
+  }
+}
+$width: 100px;
+$height: 100px;
+
+.uploaders {
+  .red {
+    font-size: 12px;
+  }
+  //
+  .image {
+    float: left;
+    margin-right: 4px;
+    margin-bottom: 4px;
+    width: $width;
+    height: $height;
+    border: 1px solid #d9d9d9;
+    position: relative;
+
+    .avatar {
+      width: 100%;
+      height: 100%;
+    }
+
+    &:hover {
+      i.el-icon-error {
+        display: block;
+      }
+    }
+    i.el-icon-error {
+      display: none;
+      position: absolute;
+      top: 4px;
+      right: 4px;
+      font-size: 20px;
+    }
+  }
+
+  //
+  .uploader {
+    width: $width;
+    height: $height;
+    float: left;
+    position: relative;
+    margin-right: 4px;
+    margin-bottom: 4px;
+    .el-upload {
+      width: 100%;
+      height: 100%;
+      border: 1px dashed #d9d9d9;
+      border-radius: 6px;
+      cursor: pointer;
+      position: relative;
+      overflow: hidden;
+    }
+    .el-upload:hover {
+      border-color: #20a0ff;
+    }
+    .avatar {
+      width: 100%;
+      height: 100%;
+      display: block;
+    }
+    .avatar-uploader-icon {
+      font-size: 28px;
+      color: #8c939d;
+      position: absolute;
+      left: 50%;
+      top: 50%;
+      transform: translate(-50%, -50%);
+    }
+    .el-upload__input {
+      opacity: 0;
+      position: absolute;
+    }
+  }
+}
+</style>

+ 10 - 3
src/components/ImageUpload/index.vue

@@ -213,7 +213,13 @@ export default {
               : window.origin + res.data.url;
           let arr = [];
           arr.push({ name: res.data.name, url: imgUrl });
-          this.fileList = arr;
+          if(this.type=='more'){
+            this.fileList = this.fileList.concat(arr);
+          }
+          else{
+            this.fileList = arr;
+          }
+          
           //emit完整图片URL路径
           this.$emit("input", this.listToString(this.fileList));
           // //非完整图片URL路径
@@ -266,8 +272,8 @@ export default {
       this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
     },
     // 上传成功回调
-    handleUploadSuccess(res, file) {
-      console.log(res, "res");
+    handleUploadSuccess(res, file,fileList) {
+      console.log("handleUploadSuccess",res,file,fileList);
       if (res.code === 200) {
         let imgUrl = process.env.VUE_APP_BASE_API + res.data.url;
         this.uploadList.push({ name: res.data.name, url: imgUrl });
@@ -302,6 +308,7 @@ export default {
     // 上传结束处理
     uploadedSuccessfully() {
       if (this.number > 0 && this.uploadList.length === this.number) {
+        debugger
         this.fileList = this.fileList.concat(this.uploadList);
         this.uploadList = [];
         this.number = 0;

+ 4 - 0
src/main.js

@@ -35,6 +35,9 @@ import FileUpload from "@/components/FileUpload"
 import ImageUpload from "@/components/ImageUpload"
 // 图片预览组件
 import ImagePreview from "@/components/ImagePreview"
+
+// 图片预览组件
+import ImageListPreview from "@/components/ImageListPreview"
 // 字典标签组件
 import DictTag from '@/components/DictTag'
 // 头部标签组件
@@ -71,6 +74,7 @@ Vue.component('Editor', Editor)
 Vue.component('FileUpload', FileUpload)
 Vue.component('ImageUpload', ImageUpload)
 Vue.component('ImagePreview', ImagePreview)
+Vue.component('ImageListPreview', ImageListPreview)
 Vue.component('TreeSelect', TreeSelect)
 
 Vue.use(directive)

+ 1 - 0
src/store/getters.js

@@ -14,6 +14,7 @@ const getters = {
   orgName: state => state.user.orgName,
   introduction: state => state.user.introduction,
   roles: state => state.user.roles,
+  roleList: state => state.user.roleList,
   permissions: state => state.user.permissions,
   permission_routes: state => state.permission.routes,
   topbarRouters:state => state.permission.topbarRouters,

+ 10 - 0
src/store/modules/user.js

@@ -9,6 +9,7 @@ const user = {
     orgId:'',
     avatar: '',
     roles: [],
+    roleList:[],
     permissions: [],
     orgName: '',
   },
@@ -32,6 +33,9 @@ const user = {
     SET_ROLES: (state, roles) => {
       state.roles = roles
     },
+    SET_ROLELIST: (state, roleList) => {
+      state.roleList = roleList
+    },
     SET_ORG_ID: (state, orgId) => {
       state.orgId = orgId
     },
@@ -74,10 +78,16 @@ const user = {
           const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/u29.svg") : user.avatar;
           if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
             commit('SET_ROLES', res.roles)
+            console.log("SET_ROLES",res.roles);
             commit('SET_PERMISSIONS', res.permissions)
           } else {
             commit('SET_ROLES', ['ROLE_DEFAULT'])
           }
+          if (res.roleList && res.roleList.length > 0) { // 验证返回的roles是否是一个非空数组
+            commit('SET_ROLELIST', res.roleList)
+          } else {
+            commit('SET_ROLELIST', ['ROLE_DEFAULT'])
+          }
           commit('SET_NAME', user.name)
           commit('SET_AVATAR', avatar)
           commit('SET_ORG_ID', user.orgId)

+ 37 - 27
src/views/core/edu/task/dialog.info.vue

@@ -6,8 +6,8 @@
                     label-suffix=":">
                     <el-row>
 
-                         <!-- 培训主题 -->
-                         <el-col :span="12">
+                        <!-- 培训主题 -->
+                        <el-col :span="12">
                             <el-form-item prop="type" label="培训主题">{{
                                 formData.title
                             }}</el-form-item>
@@ -25,11 +25,11 @@
                                 formData.eduJobNames
                             }}</el-form-item>
                         </el-col> -->
-                        <!-- 类型 -->   
+                        <!-- 类型 -->
                         <el-col :span="12">
-                            <el-form-item label="类型"> 
+                            <el-form-item label="类型">
                                 <template>
-                                    <dict-tag :options="dict.type.edu_type" :value="formData.type"/>
+                                    <dict-tag :options="dict.type.edu_type" :value="formData.type" />
                                 </template>
                             </el-form-item>
                         </el-col>
@@ -46,14 +46,14 @@
                             }}</el-form-item>
                         </el-col>
 
-                           <!-- 培训开始时间 -->
-                           <el-col :span="12">
+                        <!-- 培训开始时间 -->
+                        <el-col :span="12">
                             <el-form-item prop="trainingStartDateTime" label="培训开始时间">{{
                                 formData.trainingStartDateTime
                             }}</el-form-item>
                         </el-col>
-                          <!-- 培训截止时间 -->
-                          <el-col :span="12">
+                        <!-- 培训截止时间 -->
+                        <el-col :span="12">
                             <el-form-item prop="trainingEndDateTime" label="培训截止时间">{{
                                 formData.trainingEndDateTime
                             }}</el-form-item>
@@ -82,47 +82,49 @@
                                 formData.note
                             }}</el-form-item>
                         </el-col>
-                     
-                       
+
+
                         <!-- 参与人数 -->
                         <el-col :span="12">
                             <el-form-item prop="dueCount" label="参与人员">{{
-                                formData.taskUserList ? formData.taskUserList.filter((x) => x.type===1)
-                                    .map((v) => v.userName).join(","):""
+                                formData.taskUserList ? formData.taskUserList.filter((x) => x.type === 1)
+                                    .map((v) => v.userName).join(",") : ""
                             }}</el-form-item>
                         </el-col>
                         <el-col :span="12">
                             <el-form-item prop="dueCount" label="缺陷人员">{{
-                                 formData.taskUserList ? formData.taskUserList.filter((x) => x.type===2)
-                                    .map((v) => v.userName).join(","):""
+                                formData.taskUserList ? formData.taskUserList.filter((x) => x.type === 2)
+                                    .map((v) => v.userName).join(",") : ""
                             }}</el-form-item>
                         </el-col>
-                          <!-- 图片 -->
-                        <el-col :span="12">
+                        <!-- 图片 -->
+                        <el-col :span="24">
                             <el-form-item prop="imageList" label="培训图片">
-                                <k-multi-upload :disabled="!!id" v-model="formData.imageList" limit="4" byModule
-                                    moduleName="edu-training" v-if="isShow" />
+                                <ImageListPreview v-model="formData.imageList"></ImageListPreview>
+                                <!-- <k-multi-upload :disabled="!!id" v-model="formData.imageList" limit="4" byModule
+                                    moduleName="edu-training" v-if="isShow" /> -->
                             </el-form-item>
                         </el-col>
-                         <!-- 图片 -->
-                        <el-col :span="12">
+                        <!-- 图片 -->
+                        <el-col :span="24">
                             <el-form-item prop="imageList" label="签名图片">
-                                <k-multi-upload :disabled="!!id" v-model="formData.imageList" limit="4" byModule
-                                    moduleName="edu-training" v-if="isShow" />
+                                <ImageListPreview v-model="formData.signImageList"></ImageListPreview>
+                                <!-- <k-multi-upload :disabled="!!id" v-model="formData.imageList" limit="4" byModule
+                                    moduleName="edu-training" v-if="isShow" /> -->
                             </el-form-item>
                         </el-col>
 
-                         <!-- 文件 -->
-                        <el-col :span="12">
+                        <!-- 文件 -->
+                        <el-col :span="24">
                             <el-form-item prop="fileList" label="文件" :disabled="true">
                                 <div v-for="(v, i) in formData.fileList" :key="i">
                                     <a class="downloadLink" @click="onDownload(v.url, v.name)">
                                         {{ v.name }}
                                     </a>
                                 </div>
-                                
+
                             </el-form-item>
-                        </el-col>                        
+                        </el-col>
                     </el-row>
                 </el-form>
             </div>
@@ -167,6 +169,7 @@ export default {
                 actualCount: null,
                 content: null,
                 imageList: null,
+                signImageList:null,
                 org: {},
                 ...other,
             };
@@ -178,6 +181,7 @@ export default {
             else {
                 getEduTask(id).then(response => {
                     this.formData = response.data;
+                    this.formData.signImageList=this.getSingImageList();
                     this.loading = false;
                 })
             }
@@ -197,6 +201,12 @@ export default {
                 this_.saveAs(blob, filename);
             });
         },
+        getSingImageList() {
+            let res = this.formData.taskUserList ? this.formData.taskUserList.filter((x) => x.type === 1 && x.sign == 1)
+                .map((v) => v.signImage).join(",") : null;
+            console.log("getSingImage",res)
+            return res;
+        },
         getBlob(url, cb) {
             var xhr = new XMLHttpRequest();
             xhr.open("GET", url, true);

+ 61 - 23
src/views/core/edu/task/dialog.perform.vue

@@ -40,13 +40,15 @@
             </el-col>
             <el-col :span="12">
               <el-form-item v-if="formData.id" prop="dateTime" label="培训开始时间">
-                <el-date-picker v-model="formData.trainingStartDateTime" type="datetime" placeholder="选择日期">
+                <el-date-picker v-model="formData.trainingStartDateTime" :picker-options="startDatepickerOptions"     
+                  type="datetime" placeholder="选择日期"  @change="startDateChanged">
                 </el-date-picker>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item v-if="formData.id" prop="dateTime" label="培训结束时间">
-                <el-date-picker v-model="formData.trainingEndDateTime" type="datetime" placeholder="选择日期">
+                <el-date-picker v-model="formData.trainingEndDateTime" :picker-options="endDatepickerOptions"
+                  type="datetime" placeholder="选择日期">
                 </el-date-picker>
               </el-form-item>
             </el-col>
@@ -164,6 +166,7 @@
 <script>
 import { mapState, mapMutations } from "vuex";
 import { getEduTask, recordEduTask } from "@/api/core/edu/eduTask";
+import dayjs from "dayjs";
 import KTextarea from "@/components/common/textarea.vue";
 import KSelect from "@/components/common/userselect.vue";
 import imgUpload from "@/components/ImageUpload/index.vue";
@@ -187,6 +190,14 @@ export default {
         // dueCount: [{ required: true, message: "请输入应到人数" }],
         // actualCount: [{ required: true, message: "请输入实到人数" }],
       },
+      startDatepickerOptions: {
+        disabledDate(time) {
+          return false;
+        },
+      },
+      endDatepickerOptions: {
+        disabledDate: this.endDisabledDate,
+      },
     };
   },
   dicts: ['edu_type', 'edu_task_status'],
@@ -235,18 +246,18 @@ export default {
           this.formData.fileList = [];
         }
         if (this.formData.taskUserList) {
-          let list1 = this.formData.taskUserList.filter((element) => 
+          let list1 = this.formData.taskUserList.filter((element) =>
             element.type === 1
           );
-          console.log("list1",list1)
-          this.formData.absenceList = list1 ? list1.map((a) =>{ return a.userId;})
+          console.log("list1", list1)
+          this.formData.absenceList = list1 ? list1.map((a) => { return a.userId; })
             : [];
 
-          let list2 = this.formData.taskUserList.filter((element) => 
+          let list2 = this.formData.taskUserList.filter((element) =>
             element.type === 2
           );
-          console.log("list2",list2)
-          this.formData.absentList = list2 ? list2.map((a) =>{ return a.userId;})
+          console.log("list2", list2)
+          this.formData.absentList = list2 ? list2.map((a) => { return a.userId; })
             : [];
         }
         else {
@@ -254,7 +265,7 @@ export default {
           this.formData.absentList = [];
         }
       })
-      console.log("getEduTask",this.formData);
+      console.log("getEduTask", this.formData);
     },
     async show(id, other = {}) {
       this.id = id;
@@ -270,10 +281,10 @@ export default {
       if (this.formData.taskUserList) {
         this.formData.taskUserList = this.formData.taskUserList.filter(x => x.type == 1);
       }
-      else{
-        this.formData.taskUserList=[];
+      else {
+        this.formData.taskUserList = [];
       }
-      let tempList  = list.map(x => {
+      let tempList = list.map(x => {
         return {
           userId: x.id,
           userName: x.name,
@@ -289,8 +300,8 @@ export default {
       if (this.formData.taskUserList) {
         this.formData.taskUserList = this.formData.taskUserList.filter(x => x.type == 2);
       }
-      else{
-        this.formData.taskUserList=[];
+      else {
+        this.formData.taskUserList = [];
       }
       let tempList = list.map(x => {
         return {
@@ -306,18 +317,27 @@ export default {
     // 事件
     onHide() {
       this.isShow = false;
-      this.formData=this.reset();
+      this.formData = this.reset();
     },
-    async onSave(){
+    async onSave() {
       if (!this.validatePerson()) {
         this.$message.error("参与人员与缺席人员重复,请重新选择!");
         return;
       }
-      let request ={submitType:1,...this.formData};
+      let request = { submitType: 1, ...this.formData };
+      if (request.trainingStartDateTime)
+        request.trainingStartDateTime = dayjs(request.trainingStartDateTime).format('YYYY-MM-DD HH:mm:ss')
+
+      if (request.trainingEndDateTime)
+        request.trainingEndDateTime = dayjs(request.trainingEndDateTime).format('YYYY-MM-DD HH:mm:ss')
+      // if(request.imageList)
+      //   request.imageList=request.imageList.split(',').map(x=>{return x;});
+
       recordEduTask(request).then((v) => {
-          this.$emit("success", this.formData);
-          this.onHide();
-        });
+        this.$emit("success", this.formData);
+        this.onHide();
+        this.$modal.msgSuccess("培训登记暂存成功");
+      });
     },
     async onSubmit() {
       await this.$refs.form.validate();
@@ -329,10 +349,11 @@ export default {
       } else if (!this.validatePerson()) {
         this.$message.error("参与人员与缺席人员重复,请重新选择!");
       } else {
-        let request ={submitType:2,...this.formData};
+        let request = { submitType: 2, ...this.formData };
         recordEduTask(request).then((v) => {
           this.$emit("success", this.formData);
           this.onHide();
+          this.$modal.msgSuccess("培训登记提交成功");
         });
         // this.$emit("success");
         // this.onHide();
@@ -348,8 +369,25 @@ export default {
       return true;
     },
     uploadTriggerEvent(value) { },
-    // 事件
-    //apimark//
+
+    endDisabledDate(time) {
+      //小于开始日期禁止选择
+      let startDate = new Date();
+      startDate.setTime(startDate.getTime() - 3600 * 1000 * 24);
+      if (this.formData.trainingStartDateTime) {
+        startDate = new Date(dayjs(this.formData.trainingStartDateTime).format('YYYY-MM-DD'));
+        startDate.setTime(startDate.getTime() - 3600 * 1000 * 24);
+      }
+      return time.getTime() < new Date(startDate).getTime()
+
+    },
+    startDateChanged(time) {
+      console.log("startDateChanged",time,this.formData.trainingStartDateTime ,this.formData.trainingEndDateTime)
+      if (dayjs(this.formData.trainingStartDateTime).isAfter(dayjs(this.formData.trainingEndDateTime))) {
+        this.formData.trainingEndDateTime = this.formData.trainingStartDateTime;
+        console.log("trainingEndDateTime",this.formData.trainingEndDateTime)
+      }
+    },
   },
   mounted() { },
 };

+ 53 - 18
src/views/core/edu/task/index.vue

@@ -16,6 +16,14 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="任务时间" prop="rangen">
+        <el-date-picker
+          v-model="queryParams.range"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择开始日期">
+        </el-date-picker>
+      </el-form-item>
       <el-form-item label="培训类型" prop="type">
         <el-select v-model="queryParams.type" placeholder="请选择执行机构类型" clearable>
             <el-option
@@ -42,14 +50,7 @@
             />
           </el-select>
       </el-form-item>
-      <el-form-item label="任务时间" prop="rangen">
-        <el-date-picker
-          v-model="queryParams.range"
-          type="daterange"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择开始日期">
-        </el-date-picker>
-      </el-form-item>
+      
       <!-- <el-form-item label="截止日期" prop="endDate">
         <el-date-picker clearable
           v-model="queryParams.endDate"
@@ -223,12 +224,12 @@
           <span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
         </template> -->
       </el-table-column>
-      <el-table-column label="培训时间" align="center" width="180">
-        <template slot-scope="scope">
+      <el-table-column label="培训时间" align="center" prop="trainingStartDateTime" width="180">
+        <!-- <template slot-scope="scope">
           <span>{{ parseTime(scope.row.trainingStartDateTime, '{y}-{m}-{d}') }}</span>
-        </template>
+        </template> -->
       </el-table-column>
-      <el-table-column label="应到人数" align="center" prop="dueCount" />
+      <!-- <el-table-column label="应到人数" align="center" prop="dueCount" /> -->
       <el-table-column label="状态" align="center" prop="status" >
         <template slot-scope="scope">
             <dict-tag :options="dict.type.edu_task_status" :value="scope.row.status"/>
@@ -239,14 +240,15 @@
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-edit"
+            icon="el-icon-view"
             @click="handleDetail(scope.row.id)"
             v-hasPermi="['system:eduTask:detail']"
           >详情</el-button>
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-delete"
+            icon="el-icon-document-add"
+            v-if="canPerform(scope.row)"
             @click="handleRecorded(scope.row.id)"
             v-hasPermi="['system:eduTask:remove']"
           >培训登记</el-button>
@@ -361,8 +363,8 @@
       </div>
     </el-dialog>
 
-    <dialog-info ref="infoDialog" @success="refresh(true)"></dialog-info>
-    <dialog-perform ref="performDialog" @success="refresh(true)"></dialog-perform>
+    <dialog-info ref="infoDialog" @success="handleQuery(true)"></dialog-info>
+    <dialog-perform ref="performDialog" @success="handleQuery(true)"></dialog-perform>
   </div>
 </template>
 
@@ -371,6 +373,7 @@ import { listEduTask, getEduTask, delEduTask, addEduTask, updateEduTask } from "
 import OrgTree from "@/components/orgTree";
 import DialogInfo from "./dialog.info";
 import DialogPerform from "./dialog.perform";
+import dayjs from "dayjs";
 export default {
   name: "EduTask",
   dicts: ['edu_task_status', 'edu_type'],
@@ -405,7 +408,7 @@ export default {
         pageSize: 10,
         checkSub:false,
         title: null,
-        orgId: null,
+        orgId: this.$store.getters.orgId,
         type: null,
         status: null,
         range: null,
@@ -526,7 +529,39 @@ export default {
       this.download('system/eduTask/export', {
         ...this.queryParams
       }, `eduTask_${new Date().getTime()}.xlsx`)
-    }
+    },
+    canPerform(row) {
+      // debugger
+      let flag = 0;
+      if(row.status>0) return false;
+      if(!row.taskRoleList)   return false;
+      let isOver =this.isNotOverOrUnStart(row);
+      console.log("isNotOverOrUnStart",isOver);
+      row.taskRoleList.forEach((taskRole) => {
+        this.$store.getters.roleList.forEach((role) => {
+          if (taskRole.roleId == role.roleId) {
+            flag = 1;
+          }
+        });
+      });
+      return (flag == 1) && isOver;
+    },
+    isNotOverOrUnStart(row) {
+      const currentTime = dayjs().startOf('day'); // 获取当前时间,并将时分秒部分设置为00时00分00秒
+      const startDate = dayjs(row.startDate).startOf('day'); // 转换开始时间为 Moment.js 对象,并将时分秒部分设置为00时00分00秒
+
+      const endDate = dayjs(row.endDate).startOf('day'); // 转换结束时间为 Moment.js 对象,并将时分秒部分设置为00时00分00秒
+      // 判断开始时间和结束时间是否是同一天
+      const isSameDay = startDate.isSame(endDate, 'day');
+      console.log("isOverOrUnStart",currentTime,startDate,endDate);
+      // 如果是同一天,则判断当前时间是否在开始时间和结束时间之间(包括开始和结束时间)
+      // if (isSameDay) {
+      //   return dayjs(currentTime).isBetween(startDate, endDate, null, '[]');
+      // }
+
+      // 如果不是同一天,则判断当前时间是否早于开始时间或晚于结束时间
+      return !(currentTime < startDate || currentTime > endDate);
+    },
   }
 };
 </script>