Browse Source

费用报销模块支持项目经理审核模式

seyason 1 year ago
parent
commit
20d7108d8c

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseItem.java

@@ -103,6 +103,9 @@ public class ExpenseItem extends Model<ExpenseItem> {
     @TableField(exist = false)
     private String projectName;
 
+    @TableField(exist = false)
+    private Integer isIncharger;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 32 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -95,6 +95,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
     @Resource
     private ExpenseAuditSettingMapper expenseAuditSettingMapper;
 
+
     @Override
     public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) {
         HttpRespMsg msg = new HttpRespMsg();
@@ -354,6 +355,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         QueryWrapper<ExpenseSheet> queryWrapper = new QueryWrapper<ExpenseSheet>();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         queryWrapper.eq("company_id", sheet.getCompanyId()).orderByDesc("id");
+        ExpenseAuditSetting expenseAuditSetting = expenseAuditSettingMapper.selectById(sheet.getCompanyId());
 
         if (!StringUtils.isEmpty(sheet.getCode())) {
             queryWrapper.eq("code", sheet.getCode());
@@ -362,9 +364,31 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         if (sheet.getStatus() != null) {
             queryWrapper.eq("status", sheet.getStatus());
         }
-        if (!StringUtils.isEmpty(sheet.getOwnerId())) {
-            queryWrapper.eq("owner_id", sheet.getOwnerId());
+        //增加按项目经理审核模式下,项目经理可以查看相关费用报销单的条件
+        if (expenseAuditSetting == null || expenseAuditSetting.getAuditType() == 0) {
+            if (!StringUtils.isEmpty(sheet.getOwnerId())) {
+                queryWrapper.eq("owner_id", sheet.getOwnerId());
+            }
+        } else {
+            if (sheet.getStatus() != null) {
+                //取待审核的
+                //项目经理审核模式下,只能查看自己项目的费用报销单
+                List<Integer> projectIds = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", sheet.getOwnerId())).stream().map(Project::getId).collect(Collectors.toList());
+                if (projectIds.size() > 0) {
+                    queryWrapper.in("id", expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIds)).stream().map(ExpenseItem::getExpenseId).distinct().collect(Collectors.toList()));
+                } else {
+                    //没有项目的项目经理,不显示任何数据
+                    queryWrapper.eq("id", -1);
+                }
+            } else {
+                //取自己的
+                if (!StringUtils.isEmpty(sheet.getOwnerId())) {
+                    queryWrapper.eq("owner_id", sheet.getOwnerId());
+                }
+            }
+
         }
+
         if (sheet.getType() != null) {
             queryWrapper.eq("type", sheet.getType());
         }
@@ -412,12 +436,18 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
 
     @Override
     public HttpRespMsg getDetail(Integer id) {
+        String token = request.getHeader("TOKEN");
         ExpenseSheet expenseSheet = expenseSheetMapper.selectById(id);
         List<ExpenseItem> list = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().eq("expense_id", id));
         List<Project> Project = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", expenseSheet.getCompanyId()));
         for (ExpenseItem expenseItem : list) {
             for (Project project : Project) {
                 if ((project.getId().equals(expenseItem.getProjectId()))){
+                    if (token.equals(project.getInchargerId())) {
+                        expenseItem.setIsIncharger(1);
+                    } else {
+                        expenseItem.setIsIncharger(0);
+                    }
                     expenseItem.setProjectName(project.getProjectName());
                     break;
                 }

+ 11 - 9
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -28,7 +28,7 @@
                   <span>{{permissions.costAll?$t('listofreimbursementvouchers'):$t('myexpensevoucher')}}</span>
                 </template>
                 <el-menu-item index="2-1" ><p @click="bills(false)" >{{ $t('documentlist') }}</p></el-menu-item>
-                <el-menu-item index="2-2" v-if="permissions.costAudit"><p @click="bills(true)">{{ $t('documentreview') }}</p></el-menu-item>
+                <el-menu-item index="2-2" ><p @click="bills(true)">{{ $t('documentreview') }}</p></el-menu-item>
               </el-submenu>
                 <!-- <el-menu-item index="3" @select="bills" @click="bills(false)" v-if="user.role == 0">
                   <i class="iconfont firerock-iconbaoxiaodan"></i>
@@ -309,9 +309,14 @@
                       <el-button icon="el-icon-delete"  circle size="mini" style="margin-left:10px;" @click.stop.native="deleteItem(scope.row)" v-show="permissions.costAudit || scope.row.status == 1 || scope.row.status == 2 "></el-button>
                       </div>
                       <div v-if="isAuditList">
-                        <el-button  size="mini"  @click.stop.native="downloadByA(scope.row)" >{{ $t('cha-kan') }}</el-button>
-                      <el-button  size="mini" style="margin-left:5px;" @click.stop.native="approve(scope.row)" >{{ $t('btn.through') }}</el-button>
-                      <el-button  size="mini" style="margin-left:5px;" @click.stop.native="denyReason(scope.row)" >{{ $t('btn.rejected') }}</el-button>
+                          <div v-if="auditTypeItem.auditType == 0">
+                            <el-button  size="mini"  @click.stop.native="downloadByA(scope.row)" >{{ $t('cha-kan') }}</el-button>
+                            <el-button  size="mini"  style="margin-left:5px;" @click.stop.native="approve(scope.row)" >{{ $t('btn.through') }}</el-button>
+                            <el-button  size="mini" style="margin-left:5px;" @click.stop.native="denyReason(scope.row)" >{{ $t('btn.rejected') }}</el-button>
+                          </div>
+                          <div v-if="auditTypeItem.auditType == 1">
+                            <el-button  size="mini"  @click.stop.native="approve(scope.row)" >审核</el-button>
+                          </div>
                       </div>
                   </template>
               </el-table-column>
@@ -401,11 +406,8 @@
                       <span style="float: right;margin-left: 20px">{{ item.projectName }}</span>
                     </el-option>
                   </el-select>
-                  <!-- <span v-else>{{projectIdName[scope.$index].projectName}}</span> -->
                   <div v-else>
-                    <div v-for="(item, index) in projectIdName" :key="index">
-                      <span v-if="item.id == scope.row.projectId">{{item.projectName}}</span>
-                    </div>
+                    <span>{{ scope.row.projectName }}</span>
                   </div>
                 </template>
             </el-table-column>
@@ -493,7 +495,7 @@
             </el-table-column>
             <el-table-column prop="status" label="审核" width="172" v-if="auditTypeItem.auditType == 1 && showSingleAudit" fixed="right">
               <template slot-scope="scope">
-                  <el-button @click="approveSingle(scope.row)">通过</el-button><el-button @click="denySingle(scope.row)">驳回</el-button>
+                  <el-button v-if="scope.row.isIncharger" @click="approveSingle(scope.row)">通过</el-button><el-button v-if="scope.row.isIncharger" @click="denySingle(scope.row)">驳回</el-button>
                 </template>
             </el-table-column>
           </el-table>