Pārlūkot izejas kodu

Merge branch 'master' of http://114.55.67.98:8070/Natural_p1/zjugis_OA

songxy 1 gadu atpakaļ
vecāks
revīzija
c1dec3178f

+ 1 - 1
client/src/views/OaSystem/home/index.scss

@@ -4,7 +4,7 @@
   height: 100%;
   $margin-r: 20px;
   $borderRadius: 10px;
-  padding: 20px 0px;
+  padding-top: 15px;
   .header {
     height: 56px;
     padding: 0px 15px;

+ 2 - 1
client/src/views/OaSystem/oaLayout/header.vue

@@ -22,7 +22,8 @@ onMounted(() => {})
 <style lang="scss" scoped>
 .header {
   width: calc(100%);
-  height: 112px;
+  height: 60px;
+  margin-bottom: 10px;
   // background: #183868;
   display: flex;
   align-items: center;

+ 3 - 3
client/src/views/OaSystem/oaLayout/index.vue

@@ -48,14 +48,14 @@ onMounted(() => {})
     width: calc(100% - 184px);
     height: 100%;
     background: #eaf1f9;
-    padding: 15px 30px;
+    padding: 15px 15px;
     .layout-header {
       width: 100%;
-      height: 162px;
+      height: 100px;
     }
     .layout-content {
       width: 100%;
-      height: calc(100% - 162px);
+      height: calc(100% - 100px);
     }
   }
 }

+ 47 - 31
client/src/views/OaSystem/oaLayout/menus.vue

@@ -20,20 +20,18 @@
     </div>
     <div class="menus-tabs">
       <el-menu default-active="2" class="el-menu-vertical-demo">
-        <div v-for="(item, index) in reactiveData.routes" :key="index">
-          <el-sub-menu :index="String(index)" v-if="item.children">
-            <template #title>
-              <Icon :icon="item.icon" />
-              <span>{{ item.name }}</span>
-            </template>
-            <el-menu-item @click="menuClick(item, i)" v-for="(l, i) in item.children" :key="i">{{
-              l.name
-            }}</el-menu-item>
-          </el-sub-menu>
-          <el-menu-item @click="menuClick(item, index)" :index="String(index)" v-else>
+        <div
+          v-for="(item, index) in reactiveData.routes"
+          :key="index"
+          class="menuDiv"
+          @mouseenter="handleMouseEnter(item, index)"
+          @mouseleave="handleMouseLeave(item, index)"
+        >
+          <el-menu-item @click="menuClick(item, index)" :index="String(index)">
             <Icon :icon="item.icon" />
             <span>{{ item.name }}</span>
           </el-menu-item>
+          <MenusActive :menuData="menuData" v-if="mouseenterIndex == index" />
         </div>
       </el-menu>
     </div>
@@ -44,11 +42,10 @@ import { Icon } from '@/components/Icon'
 import { useRouter } from 'vue-router'
 import { ElMessageBox } from 'element-plus'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
-import { useDesign } from '@/hooks/web/useDesign'
 import avatarImg from '@/assets/imgs/avatar.gif'
 import { useUserStore } from '@/store/modules/user'
 import { useTagsViewStore } from '@/store/modules/tagsView'
-import { useAppStore } from '@/store/modules/app'
+import MenusActive from './menusActive.vue'
 defineOptions({ name: 'Header' })
 const { t } = useI18n()
 
@@ -57,19 +54,15 @@ const { wsCache } = useCache()
 const { push, replace } = useRouter()
 
 const userStore = useUserStore()
-const appStore = useAppStore()
 const tagsViewStore = useTagsViewStore()
 
-const { getPrefixCls } = useDesign()
-
-const prefixCls = getPrefixCls('user-info')
-
 const user = wsCache.get(CACHE_KEY.USER)
 
 const avatar = user.user.avatar ? user.user.avatar : avatarImg
 
 const userName = user.user.nickname ? user.user.nickname : 'Admin'
-const titleName = ref(appStore.title)
+
+const mouseenterIndex = ref(-1)
 const loginOut = () => {
   ElMessageBox.confirm(t('common.loginOutMessage'), t('common.reminder'), {
     confirmButtonText: t('common.ok'),
@@ -83,14 +76,10 @@ const loginOut = () => {
     })
     .catch(() => {})
 }
-const toProfile = async () => {
-  push('/user/profile')
-}
 
 const reactiveData: any = reactive({
   routes: []
 })
-const headerTitleName: any = ref('') // 标题名称
 const router = useRouter()
 
 const initMenus = async () => {
@@ -98,20 +87,34 @@ const initMenus = async () => {
   let locals: any = localStorage.getItem('roleRouters')
   let roleRouters = JSON.parse(JSON.parse(locals).v)[0].children
 
-  let childName = uid.name
   let childArr = roleRouters.slice(0, roleRouters.length)
   reactiveData.routes = childArr
 }
 
 const menuClick = (item: any, idx: any) => {
-  if (item.children) {
-    push('/oaSystem/' + item.path + '/' + item.children[idx].path)
-  } else {
+  // if (item.children) {
+  //   push('/oaSystem/' + item.path + '/' + item.children[idx].path)
+  // } else {
+  //   push('/oaSystem/' + item.path)
+  // }
+  if (item.children == null) {
     push('/oaSystem/' + item.path)
+  } else {
+    return
   }
-  // push(item.path)
 }
-
+const menuData = ref()
+const handleMouseEnter = (item: any, index: any) => {
+  if (item.children != null) {
+    mouseenterIndex.value = index
+    menuData.value = item
+  } else {
+    mouseenterIndex.value = -1
+  }
+}
+const handleMouseLeave = (item: any, index: any) => {
+  mouseenterIndex.value = -1
+}
 /** 初始化 **/
 onMounted(() => {
   initMenus()
@@ -125,11 +128,13 @@ onMounted(() => {
 
   .menus-user {
     width: 100%;
-    height: 200px;
+    height: 180px;
     display: flex;
     flex-wrap: wrap;
     justify-content: center;
     padding-top: 40px;
+    border-bottom: 1px solid #5383bd;
+    margin-bottom: 20px;
     .userImg {
       width: 60px;
       height: 60px;
@@ -164,7 +169,7 @@ onMounted(() => {
     }
     .userInfo {
       width: 100%;
-      margin-top: -25px;
+      margin-top: 0px;
       h4 {
         text-align: center;
         color: #fff;
@@ -206,6 +211,9 @@ onMounted(() => {
   .menus-tabs {
     width: 100%;
     height: calc(100% - 250px);
+    .menuDiv {
+      position: relative;
+    }
   }
 }
 
@@ -215,6 +223,14 @@ onMounted(() => {
     background-color: transparent;
     span {
       color: #fff;
+      font-size: 16px;
+    }
+
+    .is-active {
+      background-color: transparent;
+    }
+    .el-menu-item:hover {
+      background-color: #113468;
     }
   }
 }

+ 52 - 0
client/src/views/OaSystem/oaLayout/menusActive.vue

@@ -0,0 +1,52 @@
+<template>
+  <div class="menusActive">
+    <ul>
+      <li v-for="(item, index) in menuList" @click="menuClick(item, index)" :key="index">
+        {{ item.name }}
+      </li>
+    </ul>
+  </div>
+</template>
+<script setup lang="ts">
+import { useRouter } from 'vue-router'
+const { push } = useRouter()
+const props = defineProps({
+  menuData: {
+    type: Object
+  }
+})
+
+const menuList = ref(props.menuData.children)
+const pushName = ref(props.menuData.path)
+
+const menuClick = (item, index) => {
+  console.log('/oaSystem/' + pushName.value + '/' + item.path)
+
+  push('/oaSystem/' + pushName.value + '/' + item.path)
+}
+
+/** 初始化 **/
+onMounted(() => {})
+</script>
+<style lang="scss" scoped>
+.menusActive {
+  position: absolute;
+  right: -200px;
+  top: 0;
+  width: 200px;
+  height: 200px;
+  height: auto;
+  padding: 15px;
+  background-color: #fff;
+  z-index: 9999;
+  ul {
+    width: 100%;
+
+    li {
+      width: auto;
+      height: 30px;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 140 - 22
client/src/views/OaSystem/oaLayout/tagList.vue

@@ -2,26 +2,90 @@
   <div class="_tagList">
     <div class="tag-view">
       <ul>
-        <li v-for="(item, index) in visitedViews" :key="index">
-          <router-link :to="{ ...item }" exact v-slot="{ navigate }" v-if="index == 0">
-            <div class="homeBox" @click="navigate">
-              <Icon :icon="item.meta.icon || ''" />
-              <p>{{ item.meta.title }}</p>
-            </div>
-          </router-link>
-          <router-link :to="{ ...item }" exact v-slot="{ navigate }" v-else>
-            <div class="fhomeBox" @click="navigate">
-              <div>
+        <ContextMenu
+          :ref="itemRefs.set"
+          :schema="[
+            {
+              icon: 'ep:refresh',
+              label: t('common.reload'),
+              disabled: selectedTag?.fullPath !== item.fullPath,
+              command: () => {
+                refreshSelectedTag(item)
+              }
+            },
+            {
+              icon: 'ep:close',
+              label: t('common.closeTab'),
+              disabled: !!visitedViews?.length && selectedTag?.meta.affix,
+              command: () => {
+                closeSelectedTag(item)
+              }
+            },
+            {
+              divided: true,
+              icon: 'ep:d-arrow-left',
+              label: t('common.closeTheLeftTab'),
+              disabled:
+                !!visitedViews?.length &&
+                (item.fullPath === visitedViews[0].fullPath ||
+                  selectedTag?.fullPath !== item.fullPath),
+              command: () => {
+                closeLeftTags()
+              }
+            },
+            {
+              icon: 'ep:d-arrow-right',
+              label: t('common.closeTheRightTab'),
+              disabled:
+                !!visitedViews?.length &&
+                (item.fullPath === visitedViews[visitedViews.length - 1].fullPath ||
+                  selectedTag?.fullPath !== item.fullPath),
+              command: () => {
+                closeRightTags()
+              }
+            },
+            {
+              divided: true,
+              icon: 'ep:discount',
+              label: t('common.closeOther'),
+              disabled: selectedTag?.fullPath !== item.fullPath,
+              command: () => {
+                closeOthersTags()
+              }
+            }
+          ]"
+          v-for="(item, index) in visitedViews"
+          :key="index"
+          :tag-item="item"
+          :class="[
+            `${prefixCls}__item`,
+            item?.meta?.affix ? `${prefixCls}__item--affix` : '',
+            {
+              'is-active': isActive(item)
+            }
+          ]"
+          @visible-change="visibleChange"
+        >
+          <li>
+            <router-link :to="{ ...item }" exact v-slot="{ navigate }" v-if="index == 0">
+              <div class="homeBox" @click="navigate">
                 <Icon :icon="item.meta.icon || ''" />
                 <p>{{ item.meta.title }}</p>
               </div>
-              <img
-                @click.stop.prevent="closeSelectedTag(item)"
-                src="@/assets/imgs/OA/layout/close.png"
-              />
-            </div>
-          </router-link>
-        </li>
+            </router-link>
+            <router-link :to="{ ...item }" exact v-slot="{ navigate }" v-else>
+              <div class="fhomeBox" @click="navigate">
+                <div>
+                  <p>{{ item.meta.title }}</p>
+                </div>
+                <img
+                  @click.stop.prevent="closeSelectedTag(item)"
+                  src="@/assets/imgs/OA/layout/close.png"
+                />
+              </div>
+            </router-link>
+          </li>
+        </ContextMenu>
       </ul>
     </div>
   </div>
@@ -33,13 +97,21 @@ import { useRouter } from 'vue-router'
 import { usePermissionStore } from '@/store/modules/permission'
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { filterAffixTags } from './helper'
+import { useTemplateRefsList } from '@vueuse/core'
+import { ContextMenu, ContextMenuExpose } from '@/layout/components/ContextMenu'
+import { useI18n } from '@/hooks/web/useI18n'
+import { useDesign } from '@/hooks/web/useDesign'
+const { getPrefixCls } = useDesign()
+const prefixCls = getPrefixCls('tags-view')
+const { t } = useI18n()
 const selectedTag = ref<RouteLocationNormalizedLoaded>()
 const { currentRoute, push, replace } = useRouter()
 const permissionStore = usePermissionStore()
 const routers = computed(() => permissionStore.getRouters)
 const tagsViewStore = useTagsViewStore()
 const affixTagArr = ref<RouteLocationNormalizedLoaded[]>([])
-
+// 所有右键菜单组件的元素
+const itemRefs = useTemplateRefsList<ComponentRef<typeof ContextMenu & ContextMenuExpose>>()
 const visitedViews = computed(() => tagsViewStore.getVisitedViews)
 // 初始化tag
 const initTags = () => {
@@ -52,6 +124,44 @@ const initTags = () => {
   }
 }
 
+// 右键菜单装填改变的时候
+const visibleChange = (visible: boolean, tagItem: RouteLocationNormalizedLoaded) => {
+  if (visible) {
+    for (const v of unref(itemRefs)) {
+      const elDropdownMenuRef = v.elDropdownMenuRef
+      if (tagItem.fullPath !== v.tagItem.fullPath) {
+        elDropdownMenuRef?.handleClose()
+      }
+    }
+  }
+}
+// 关闭其它
+const closeOthersTags = () => {
+  tagsViewStore.delOthersViews(unref(selectedTag) as RouteLocationNormalizedLoaded)
+}
+
+// 重新加载
+const refreshSelectedTag = async (view?: RouteLocationNormalizedLoaded) => {
+  if (!view) return
+  tagsViewStore.delCachedView()
+  const { path, query } = view
+  await nextTick()
+  replace({
+    path: '/redirect' + path,
+    query: query
+  })
+}
+
+// 关闭左侧
+const closeLeftTags = () => {
+  tagsViewStore.delLeftViews(unref(selectedTag) as RouteLocationNormalizedLoaded)
+}
+
+// 关闭右侧
+const closeRightTags = () => {
+  tagsViewStore.delRightViews(unref(selectedTag) as RouteLocationNormalizedLoaded)
+}
+
 // 新增tag
 const addTags = () => {
   const { name } = unref(currentRoute)
@@ -102,6 +212,8 @@ watch(
 )
 /** 初始化 **/
 onMounted(() => {
+  console.log(selectedTag)
+
   initTags()
   addTags()
 })
@@ -121,11 +233,11 @@ li {
 }
 ._tagList {
   width: 100%;
-  height: 50px;
+  height: 30px;
   display: flex;
   align-items: center;
-  background-color: #fff;
-  border-radius: 20px;
+  background: rgba(255, 255, 255, 0.5);
+  border-radius: 10px;
   .tag-view {
     width: 100%;
     height: 100%;
@@ -141,7 +253,7 @@ li {
           display: block;
           width: auto;
           height: 100%;
-          border-radius: 20px 20px 20px 20px;
+          border-radius: 10px;
           color: inherit;
           text-decoration: none;
           padding: 2px;
@@ -156,6 +268,7 @@ li {
           justify-content: center;
           p {
             margin-left: 5px;
+            font-size: 16px;
           }
         }
         .fhomeBox {
@@ -171,6 +284,7 @@ li {
             justify-content: center;
             p {
               margin-left: 5px;
+              font-size: 16px;
             }
           }
           img {
@@ -188,4 +302,8 @@ li {
   border: 2px solid #2e77e6;
   padding: 0px !important;
 }
+
+.el-dropdown {
+  height: 100%;
+}
 </style>

+ 8 - 25
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/controller/admin/attendance/AttendanceSheetController.java

@@ -19,7 +19,6 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
-import java.util.Collection;
 import java.util.List;
 
 import static com.zjugis.framework.common.pojo.CommonResult.success;
@@ -34,12 +33,6 @@ public class AttendanceSheetController {
     @Resource
     private AttendanceSheetService attendanceSheetService;
 
-    @PostMapping("/create")
-    @Operation(summary = "创建行政管理_考勤")
-    @PreAuthorize("@ss.hasPermission('adm:attendance-sheet:create')")
-    public CommonResult<Integer> createAttendanceSheet(@Valid @RequestBody AttendanceSheetCreateReqVO createReqVO) {
-        return success(attendanceSheetService.createAttendanceSheet(createReqVO));
-    }
 
     @PutMapping("/update")
     @Operation(summary = "更新行政管理_考勤")
@@ -49,15 +42,6 @@ public class AttendanceSheetController {
         return success(true);
     }
 
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除行政管理_考勤")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('adm:attendance-sheet:delete')")
-    public CommonResult<Boolean> deleteAttendanceSheet(@RequestParam("id") Integer id) {
-        attendanceSheetService.deleteAttendanceSheet(id);
-        return success(true);
-    }
-
     @GetMapping("/get")
     @Operation(summary = "获得行政管理_考勤")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
@@ -69,19 +53,18 @@ public class AttendanceSheetController {
 
     @GetMapping("/list")
     @Operation(summary = "获得行政管理_考勤列表")
-    @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
     @PreAuthorize("@ss.hasPermission('adm:attendance-sheet:query')")
-    public CommonResult<List<AttendanceSheetRespVO>> getAttendanceSheetList(@RequestParam("ids") Collection<Integer> ids) {
-        List<AttendanceSheetDO> list = attendanceSheetService.getAttendanceSheetList(ids);
+    public CommonResult<List<AttendanceSheetRespVO>> getAttendanceSheetList(@Valid AttendanceSheetListReqVO listVO) {
+        List<AttendanceSheetDO> list = attendanceSheetService.getAttendanceSheetList(listVO);
         return success(AttendanceSheetConvert.INSTANCE.convertList(list));
     }
 
-    @GetMapping("/page")
-    @Operation(summary = "获得行政管理_考勤分页")
-    @PreAuthorize("@ss.hasPermission('adm:attendance-sheet:query')")
-    public CommonResult<PageResult<AttendanceSheetRespVO>> getAttendanceSheetPage(@Valid AttendanceSheetPageReqVO pageVO) {
-        PageResult<AttendanceSheetDO> pageResult = attendanceSheetService.getAttendanceSheetPage(pageVO);
-        return success(AttendanceSheetConvert.INSTANCE.convertPage(pageResult));
+    @GetMapping("/list-me")
+    @Operation(summary = "获得行政管理_考勤列表_我的")
+    @PreAuthorize("@ss.hasPermission('adm:attendance-sheet:query-me')")
+    public CommonResult<List<AttendanceSheetRespVO>> getAttendanceSheetListMe(@Valid AttendanceSheetListMeReqVO listVO) {
+        List<AttendanceSheetDO> list = attendanceSheetService.getAttendanceSheetListMe(listVO);
+        return success(AttendanceSheetConvert.INSTANCE.convertList(list));
     }
 
     @GetMapping("/export-excel")

+ 3 - 4
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/controller/admin/attendance/vo/sheet/AttendanceSheetBaseVO.java

@@ -1,12 +1,11 @@
 package com.zjugis.module.adm.controller.admin.attendance.vo.sheet;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
-import java.math.BigDecimal;
-import javax.validation.constraints.*;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import static com.zjugis.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 

+ 30 - 0
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/controller/admin/attendance/vo/sheet/AttendanceSheetListMeReqVO.java

@@ -0,0 +1,30 @@
+package com.zjugis.module.adm.controller.admin.attendance.vo.sheet;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.zjugis.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 行政管理_我的考勤分页 Request VO")
+@Data
+@ToString(callSuper = true)
+public class AttendanceSheetListMeReqVO {
+
+    @Schema(description = "考勤时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] attendanceTime;
+
+    @Schema(description = "考勤状态", example = "2")
+    private Integer attendanceStatus;
+
+    @Schema(description = "考勤类型(1:上午;2:下午)", example = "1")
+    private Integer attendanceType;
+
+    @Schema(description = "其他考勤状态分钟(除了出勤)")
+    private Integer otherMinute;
+
+}

+ 1 - 12
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/controller/admin/attendance/vo/sheet/AttendanceSheetPageReqVO.java → zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/controller/admin/attendance/vo/sheet/AttendanceSheetListReqVO.java

@@ -12,15 +12,8 @@ import static com.zjugis.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_
 
 @Schema(description = "管理后台 - 行政管理_考勤分页 Request VO")
 @Data
-@EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class AttendanceSheetPageReqVO extends PageParam {
-
-    @Schema(description = "用户ID", example = "26099")
-    private Long userId;
-
-    @Schema(description = "用户名(工号)", example = "赵六")
-    private String username;
+public class AttendanceSheetListReqVO {
 
     @Schema(description = "用户昵称", example = "王五")
     private String nickname;
@@ -38,8 +31,4 @@ public class AttendanceSheetPageReqVO extends PageParam {
     @Schema(description = "其他考勤状态分钟(除了出勤)")
     private Integer otherMinute;
 
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
 }

+ 17 - 7
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/dal/mysql/attendance/AttendanceSheetMapper.java

@@ -4,11 +4,13 @@ import com.zjugis.framework.common.pojo.PageResult;
 import com.zjugis.framework.mybatis.core.mapper.BaseMapperX;
 import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetExportReqVO;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetPageReqVO;
+import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetListMeReqVO;
+import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetListReqVO;
 import com.zjugis.module.adm.dal.dataobject.attendance.AttendanceSheetDO;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
+import static com.zjugis.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
 /**
  * 行政管理_考勤 Mapper
@@ -18,17 +20,15 @@ import java.util.List;
 @Mapper
 public interface AttendanceSheetMapper extends BaseMapperX<AttendanceSheetDO> {
 
-    default PageResult<AttendanceSheetDO> selectPage(AttendanceSheetPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<AttendanceSheetDO>()
-                .eqIfPresent(AttendanceSheetDO::getUserId, reqVO.getUserId())
-                .likeIfPresent(AttendanceSheetDO::getUsername, reqVO.getUsername())
+    default List<AttendanceSheetDO> selectList(AttendanceSheetListReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<AttendanceSheetDO>()
                 .likeIfPresent(AttendanceSheetDO::getNickname, reqVO.getNickname())
                 .betweenIfPresent(AttendanceSheetDO::getAttendanceTime, reqVO.getAttendanceTime())
                 .eqIfPresent(AttendanceSheetDO::getAttendanceStatus, reqVO.getAttendanceStatus())
                 .eqIfPresent(AttendanceSheetDO::getAttendanceType, reqVO.getAttendanceType())
                 .eqIfPresent(AttendanceSheetDO::getOtherMinute, reqVO.getOtherMinute())
-                .betweenIfPresent(AttendanceSheetDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(AttendanceSheetDO::getId));
+                .orderByDesc(AttendanceSheetDO::getUsername)
+                .orderByDesc(AttendanceSheetDO::getAttendanceTime));
     }
 
     default List<AttendanceSheetDO> selectList(AttendanceSheetExportReqVO reqVO) {
@@ -44,4 +44,14 @@ public interface AttendanceSheetMapper extends BaseMapperX<AttendanceSheetDO> {
                 .orderByDesc(AttendanceSheetDO::getId));
     }
 
+    default List<AttendanceSheetDO> selectListMe(AttendanceSheetListMeReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<AttendanceSheetDO>()
+                .eqIfPresent(AttendanceSheetDO::getUserId,  getLoginUserId())
+                .betweenIfPresent(AttendanceSheetDO::getAttendanceTime, reqVO.getAttendanceTime())
+                .eqIfPresent(AttendanceSheetDO::getAttendanceStatus, reqVO.getAttendanceStatus())
+                .eqIfPresent(AttendanceSheetDO::getAttendanceType, reqVO.getAttendanceType())
+                .eqIfPresent(AttendanceSheetDO::getOtherMinute, reqVO.getOtherMinute())
+                .orderByDesc(AttendanceSheetDO::getUsername)
+                .orderByDesc(AttendanceSheetDO::getAttendanceTime));
+    }
 }

+ 10 - 14
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/attendance/AttendanceSheetService.java

@@ -1,10 +1,7 @@
 package com.zjugis.module.adm.service.attendance;
 
 import com.zjugis.framework.common.pojo.PageResult;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetCreateReqVO;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetExportReqVO;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetPageReqVO;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetUpdateReqVO;
+import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.*;
 import com.zjugis.module.adm.dal.dataobject.attendance.AttendanceRecordDO;
 import com.zjugis.module.adm.dal.dataobject.attendance.AttendanceSheetDO;
 
@@ -52,18 +49,10 @@ public interface AttendanceSheetService {
     /**
      * 获得行政管理_考勤列表
      *
-     * @param ids 编号
-     * @return 行政管理_考勤列表
-     */
-    List<AttendanceSheetDO> getAttendanceSheetList(Collection<Integer> ids);
-
-    /**
-     * 获得行政管理_考勤分页
-     *
-     * @param pageReqVO 分页查询
+     * @param listReqVO 分页查询
      * @return 行政管理_考勤分页
      */
-    PageResult<AttendanceSheetDO> getAttendanceSheetPage(AttendanceSheetPageReqVO pageReqVO);
+    List<AttendanceSheetDO> getAttendanceSheetList(AttendanceSheetListReqVO listReqVO);
 
     /**
      * 获得行政管理_考勤列表, 用于 Excel 导出
@@ -90,4 +79,11 @@ public interface AttendanceSheetService {
      * @param attendanceRecordDOList
      */
     void buildAfternoonAttendanceSheet(List<AttendanceRecordDO> attendanceRecordDOList);
+
+    /**
+     * 获得行政管理_我的考勤列表
+     * @param listVO
+     * @return
+     */
+    List<AttendanceSheetDO> getAttendanceSheetListMe(AttendanceSheetListMeReqVO listVO);
 }

+ 10 - 13
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/attendance/AttendanceSheetServiceImpl.java

@@ -1,10 +1,7 @@
 package com.zjugis.module.adm.service.attendance;
 
 import com.zjugis.framework.common.pojo.PageResult;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetCreateReqVO;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetExportReqVO;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetPageReqVO;
-import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.AttendanceSheetUpdateReqVO;
+import com.zjugis.module.adm.controller.admin.attendance.vo.sheet.*;
 import com.zjugis.module.adm.convert.attendance.AttendanceSheetConvert;
 import com.zjugis.module.adm.dal.dataobject.attendance.AttendanceRecordDO;
 import com.zjugis.module.adm.dal.dataobject.attendance.AttendanceSheetDO;
@@ -99,11 +96,11 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
      */
     private static final Integer ATTENDANCE_STATUS_OTHER = 20;
     /**
-     * 其他
+     * 早上
      */
     private static final Integer ATTENDANCE_TYPE_AM = 1;
     /**
-     * 其他
+     * 下午
      */
     private static final Integer ATTENDANCE_TYPE_PM = 2;
     @Resource
@@ -151,13 +148,8 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
     }
 
     @Override
-    public List<AttendanceSheetDO> getAttendanceSheetList(Collection<Integer> ids) {
-        return attendanceSheetMapper.selectBatchIds(ids);
-    }
-
-    @Override
-    public PageResult<AttendanceSheetDO> getAttendanceSheetPage(AttendanceSheetPageReqVO pageReqVO) {
-        return attendanceSheetMapper.selectPage(pageReqVO);
+    public List<AttendanceSheetDO> getAttendanceSheetList(AttendanceSheetListReqVO listReqVO) {
+        return attendanceSheetMapper.selectList(listReqVO);
     }
 
     @Override
@@ -289,6 +281,11 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
         attendanceSheetMapper.insertBatch(attendanceSheetDOList);
     }
 
+    @Override
+    public List<AttendanceSheetDO> getAttendanceSheetListMe(AttendanceSheetListMeReqVO listVO) {
+        return attendanceSheetMapper.selectListMe(listVO);
+    }
+
     @NotNull
     private AttendanceSheetDO getAttendanceAfternoonSheetDO(LocalTime normalTimePm, LocalTime finishPmFlag, String username, AttendanceRecordDO lastRecord, AdminUserRespDTO user) {
         AttendanceSheetDO afternoonSheetDO;