Pārlūkot izejas kodu

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

songxy 11 mēneši atpakaļ
vecāks
revīzija
f974c669f5

+ 10 - 0
client/src/views/OaSystem/personnelManagement/components/FileUpload.vue

@@ -0,0 +1,10 @@
+<template>
+  <div></div>
+</template>
+<script lang="ts" setup>
+/**
+ * @description 附件上传
+ */
+// import { UploadImg, UploadImgs, UploadFile } from '@/components/UploadFile'
+</script>
+<style scoped lang="scss"></style>

+ 1 - 0
client/src/views/OaSystem/personnelManagement/dailyCenter/editorDetail.vue

@@ -38,6 +38,7 @@
       :initialData="formData.weeklyWorkloadList"
       :nowDate="writeData?.date"
     />
+
     <div class="footBox" v-if="isUpDate">
       <el-button type="primary" @click="sendReportHandle(false)">更新</el-button>
     </div>

+ 12 - 6
client/src/views/OaSystem/personnelManagement/ygdaPage/SchoolTable.vue

@@ -20,18 +20,19 @@
       }"
       :data="tableData"
     >
-      <el-table-column prop="major" label="专业">
-        <template #default="scope">
-          <el-input v-model="scope.row.major" v-if="scope.row.isEdit" />
-          <span v-else>{{ scope.row.major }}</span>
-        </template>
-      </el-table-column>
       <el-table-column prop="byxx" label="毕业学校">
         <template #default="scope">
           <el-input v-model="scope.row.byxx" v-if="scope.row.isEdit" />
           <span v-else>{{ scope.row.byxx }}</span>
         </template>
       </el-table-column>
+      <el-table-column prop="major" label="专业">
+        <template #default="scope">
+          <el-input v-model="scope.row.major" v-if="scope.row.isEdit" />
+          <span v-else>{{ scope.row.major }}</span>
+        </template>
+      </el-table-column>
+
       <el-table-column prop="bysj" label="毕业时间">
         <template #default="scope">
           <el-date-picker
@@ -225,6 +226,11 @@ const onEditItem = (index: number) => {
 // 删除
 const deleteRow = (index: number) => {
   tableData.value.splice(index, 1)
+  const changeData = cloneDeep(tableData.value).map((item: any) => {
+    delete item.isEdit
+    return item
+  })
+  $emit('onSave', changeData)
 }
 // 回填正确路径
 const imageUrl = (url) => {

+ 5 - 0
client/src/views/OaSystem/personnelManagement/ygdaPage/TechCertificate.vue

@@ -203,6 +203,11 @@ const onEditItem = (index: number) => {
 // 删除
 const deleteRow = (index: number) => {
   tableData.value.splice(index, 1)
+  const changeData = cloneDeep(tableData.value).map((item: any) => {
+    delete item.isEdit
+    return item
+  })
+  $emit('onSave', changeData)
 }
 // 回填正确路径
 const imageUrl = (url) => {

+ 5 - 0
client/src/views/OaSystem/personnelManagement/ygdaPage/WorkTable.vue

@@ -195,6 +195,11 @@ const onEditItem = (index: number) => {
 // 删除
 const deleteRow = (index: number) => {
   tableData.value.splice(index, 1)
+  const changeData = cloneDeep(tableData.value).map((item: any) => {
+    delete item.isEdit
+    return item
+  })
+  $emit('onSave', changeData)
 }
 </script>
 <style scoped lang="scss">

+ 12 - 7
client/src/views/OaSystem/personnelManagement/ygdaPage/familyTable.vue

@@ -20,19 +20,19 @@
       }"
       :data="tableData"
     >
-      <el-table-column prop="name" label="姓名">
+      <el-table-column prop="name" label="姓名" width="120">
         <template #default="scope">
           <el-input v-model="scope.row.name" v-if="scope.row.isEdit" />
           <span v-else>{{ scope.row.name }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="xb" label="性别">
+      <el-table-column prop="xb" label="性别" width="120">
         <template #default="scope">
           <el-select
             v-if="scope.row.isEdit"
             v-model="scope.row.xb"
             style="width: 100%"
-            placeholder="请选择学历水平"
+            placeholder="请选择"
           >
             <el-option
               v-for="opt in sexOptions"
@@ -56,19 +56,19 @@
           <span v-else>{{ scope.row.zz }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="lxdh" label="联系电话">
+      <el-table-column prop="lxdh" label="联系电话" width="180">
         <template #default="scope">
           <el-input v-model="scope.row.lxdh" v-if="scope.row.isEdit" />
           <span v-else>{{ scope.row.lxdh }}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="gx" label="与本人关系">
+      <el-table-column prop="gx" label="与本人关系" width="140">
         <template #default="scope">
           <el-select
             v-if="scope.row.isEdit"
             v-model="scope.row.gx"
             style="width: 100%"
-            placeholder="请选择学历水平"
+            placeholder="请选择"
           >
             <el-option
               v-for="opt in relationOptions"
@@ -77,7 +77,7 @@
               :value="opt.value"
             />
           </el-select>
-          <span v-else>{{ degreeShowValue(scope.row.gx, sexOptions) }}</span>
+          <span v-else>{{ degreeShowValue(scope.row.gx, relationOptions) }}</span>
         </template>
       </el-table-column>
       <el-table-column fixed="right" label="操作" width="140" v-if="!readOnly">
@@ -208,6 +208,11 @@ const onEditItem = (index: number) => {
 // 删除
 const deleteRow = (index: number) => {
   tableData.value.splice(index, 1)
+  const changeData = cloneDeep(tableData.value).map((item: any) => {
+    delete item.isEdit
+    return item
+  })
+  $emit('onSave', changeData)
 }
 </script>
 <style scoped lang="scss">

+ 5 - 0
client/src/views/OaSystem/personnelManagement/ygdaPage/performanceTable.vue

@@ -170,6 +170,11 @@ const onEditItem = (index: number) => {
 // 删除
 const deleteRow = (index: number) => {
   tableData.value.splice(index, 1)
+  const changeData = cloneDeep(tableData.value).map((item: any) => {
+    delete item.isEdit
+    return item
+  })
+  $emit('onSave', changeData)
 }
 </script>
 <style scoped lang="scss">

+ 16 - 3
client/src/views/OaSystem/personnelManagement/ygdaPage/staffDetail.vue

@@ -228,18 +228,31 @@ const savePerformanceList = (data: any[]) => {
         </div>
 
         <div class="my-portrait-item">
-          <WorkTable :defaultData="formData['workList']" @onSave="saveWorkList" />
+          <WorkTable
+            :defaultData="formData['workList']"
+            @onSave="saveWorkList"
+            :onlyRead="type == 'view'"
+          />
         </div>
         <div class="my-portrait-item">
-          <FamilyTable :defaultData="formData['familyList']" @onSave="saveFamilyList" />
+          <FamilyTable
+            :defaultData="formData['familyList']"
+            @onSave="saveFamilyList"
+            :onlyRead="type == 'view'"
+          />
         </div>
         <div class="my-portrait-item">
-          <SchoolTable :defaultData="formData['schoolList']" @onSave="saveSchoolList" />
+          <SchoolTable
+            :defaultData="formData['schoolList']"
+            @onSave="saveSchoolList"
+            :onlyRead="type == 'view'"
+          />
         </div>
         <div class="my-portrait-item">
           <PerformanceTable
             :defaultData="formData['performanceList']"
             @onSave="savePerformanceList"
+            :onlyRead="type == 'view'"
           />
         </div>
         <el-row justify="end">

+ 3 - 2
zjugis-business/src/main/java/com/zjugis/business/flow/leave/event/LeaveEvent.java

@@ -362,8 +362,9 @@ public class LeaveEvent extends BaseController {
         try {
             String flowInstanceId = flowInstance.get("id").toString();
             LeaveDO entity = leaveService.findByInstanceId(flowInstanceId);
-            DeptRespDTO deptRespDTO = deptApi.getSecondDeptByDeptId(entity.getDeptId()).getCheckedData();
-            if (entity != null && deptRespDTO!= null && entity.getUserId().equals(deptRespDTO.getLeaderUserId())) {
+            List<PostRespDTO> postList = postApi.getPostByUser(entity.getUserId()).getCheckedData();
+            Set<String> postCodes = convertSet(postList, PostRespDTO::getCode);
+            if (entity != null && CollectionUtil.contains(postCodes, "fgslz")) {
                 return "true";
             }
             return "false";

+ 9 - 6
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/staff/RecordsServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.framework.common.pojo.CommonResult;
+import com.zjugis.framework.common.util.date.DateUtils;
 import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.zjugis.module.adm.api.staff.dto.StaffRecordsDTO;
 import com.zjugis.module.adm.api.staff.dto.StaffReportDTO;
@@ -32,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.ZoneOffset;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -154,9 +156,9 @@ public class RecordsServiceImpl implements RecordsService {
         if (CollectionUtil.isNotEmpty(schoolList)) {
             List<SchoolDetailDO> schools = schoolList.stream().sorted(
                     (o1, o2) -> {
-                        int b1 = Integer.parseInt(o1.getXl());
-                        int b2 = Integer.parseInt(o2.getXl());
-                        return Integer.compare(b1, b2);
+                        long b1 =  o1.getBysj().toInstant(ZoneOffset.of("+8")).toEpochMilli();
+                        long b2 = o2.getBysj().toInstant(ZoneOffset.of("+8")).toEpochMilli();
+                        return -Long.compare(b2, b1);
                     }
             ).collect(Collectors.toList());
             vo.setSchoolList(schools);
@@ -207,11 +209,12 @@ public class RecordsServiceImpl implements RecordsService {
         updateSchoolList(vo.getUserId(), vo.getSchoolList());
         if (CollectionUtil.isNotEmpty(vo.getSchoolList())) {
             //获取最高学历 更新到档案中 用于统计员工学历
+
             List<SchoolDetailDO> schools = vo.getSchoolList().stream().filter(v -> StrUtil.isNotEmpty(v.getByxx())).sorted(
                     (o1, o2) -> {
-                        int b1 = Integer.parseInt(o1.getXl());
-                        int b2 = Integer.parseInt(o2.getXl());
-                        return Integer.compare(b2, b1);
+                        long b1 =  o1.getBysj().toInstant(ZoneOffset.of("+8")).toEpochMilli();
+                        long b2 = o2.getBysj().toInstant(ZoneOffset.of("+8")).toEpochMilli();
+                        return Long.compare(b2, b1);
                     }
             ).collect(Collectors.toList());
 

+ 21 - 4
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/service/user/AdminUserServiceImpl.java

@@ -62,6 +62,16 @@ public class AdminUserServiceImpl implements AdminUserService {
     @Value("${sys.user.init-password:123456}")
     private String userInitPassword;
 
+    @Value("${roleId.bj}")
+    private Long bjRoleId;
+
+    @Value("${roleId.normal}")
+    private Long normalRoleId;
+
+    @Value("${deptId.beijing}")
+    private String bjDeptId;
+
+
     @Resource
     private AdminUserMapper userMapper;
 
@@ -594,10 +604,17 @@ public class AdminUserServiceImpl implements AdminUserService {
         userDept.setUserId(userId);
         userDept.setDeptId(dto.getDeptId());
         updateUserDept(userDept);
+        
 
+        //员工角色新增  如果是北京的就给北京的角色
+        Set<Long> roleIds;
+        List<String> deptIds = Arrays.asList(bjDeptId.split(","));
+        if(deptIds.contains(dto.getDeptId())){
+             roleIds= asSet(bjRoleId); //角色全部默认为北京员工
+        }else {
+            roleIds=asSet(normalRoleId); //默认为普通员工
+        }
 
-        //员工角色新增
-        Set<Long> roleIds = asSet(2L); //角色全部默认为普通员工
         permissionService.assignUserRole(userId, roleIds);
 
         return userId;
@@ -640,10 +657,10 @@ public class AdminUserServiceImpl implements AdminUserService {
     public AdminUserDO getNextLeader(String id) {
         AdminUserDO adminUserDO = userMapper.selectById(id);
         DeptDO dept = deptService.getDept(adminUserDO.getDeptId());
-        if(dept.getLeaderUserId().equals(id)){
+        if (dept.getLeaderUserId().equals(id)) {
             DeptLeaderDO deptLeader = deptLeaderService.getDeptLeaderByDeptId(dept.getId());
             return userMapper.selectById(deptLeader.getUserId());
-        }else {
+        } else {
             return userMapper.selectById(dept.getLeaderUserId());
         }
     }

+ 7 - 0
zjugis-module-system/zjugis-module-system-biz/src/main/resources/application-dev.yaml

@@ -195,3 +195,10 @@ justauth:
     type: REDIS
     prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
     timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
+
+
+deptId:
+  beijing: edfdc01c-4202-4063-8166-2a30fc8d4638,36a2efd8-ed81-419c-a4dd-ca00ca93e484,5e32a0b4-5f07-4bd8-8d66-b37c13f064bf
+roleId:
+  bj: 3000021
+  normal: 2

+ 6 - 0
zjugis-module-system/zjugis-module-system-biz/src/main/resources/application-prod.yaml

@@ -195,3 +195,9 @@ justauth:
     type: REDIS
     prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
     timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
+
+deptId:
+  beijing: edfdc01c-4202-4063-8166-2a30fc8d4638,36a2efd8-ed81-419c-a4dd-ca00ca93e484,5e32a0b4-5f07-4bd8-8d66-b37c13f064bf
+roleId:
+  bj: 3000021
+  normal: 2