Browse Source

普通报销相关修改

chenjun 1 year ago
parent
commit
d751e6dc09

+ 1 - 0
client/src/utils/dict.ts

@@ -96,6 +96,7 @@ export const getDictLabel = (dictType: string, value: any): string => {
 export enum DICT_TYPE {
   USER_TYPE = 'user_type',
   COMMON_STATUS = 'common_status',
+  COMMON_STATE = 'common_state',
   SYSTEM_TENANT_PACKAGE_ID = 'system_tenant_package_id',
   TERMINAL = 'terminal', // 终端
 

+ 49 - 23
client/src/views/OaSystem/financialManagement/ptbxDeptPage/index.vue

@@ -11,12 +11,20 @@
       </div>
       <div class="form">
         <span class="formSpan">报销人:</span>
-        <el-input v-model="queryParams.userId" placeholder="请输入报销人" style="width: 160px" />
+        <el-select v-model="queryParams.userId" filterable clearable placeholder="请选择报销人">
+          <el-option
+            v-for="item in userList"
+            :key="item.id"
+            :label="item.nickname"
+            :value="item.id"
+          />
+        </el-select>
       </div>
       <div class="form" style="width: 380px">
         <span class="formSpan">申请时间:</span>
         <el-date-picker
           v-model="queryParams.applyTime"
+          value-format="YYYY-MM-DD HH:mm:ss"
           type="daterange"
           unlink-panels
           range-separator="到"
@@ -26,7 +34,25 @@
       </div>
       <div class="form">
         <span class="formSpan">状态:</span>
-        <el-input v-model="queryParams.status" style="width: 160px" />
+        <el-select v-model="queryParams.status" placeholder="状态" clearable class="!w-240px">
+          <el-option
+            v-for="dict in getIntDictOptions(DICT_TYPE.FINANCE_STATUS)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </div>
+      <div class="form">
+        <span class="formSpan">是否代办:</span>
+        <el-select v-model="queryParams.isAgent" placeholder="是否代办" clearable class="!w-240px">
+          <el-option
+            v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATE)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
       </div>
       <div class="from">
         <div class="btnBox">
@@ -34,10 +60,6 @@
             <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
             查询</el-button
           >
-          <el-button type="primary">
-            <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
-            导出</el-button
-          >
         </div>
       </div>
     </div>
@@ -45,7 +67,7 @@
       <ul>
         <li v-for="(item, index) in infoList" :key="index" class="mr-40px">
           <p>{{ item.name }}:</p>
-          <h4 class="font-size-18px">{{ item.num }}</h4>
+          <h4 class="font-size-18px">{{ item.num.toFixed(2) }}</h4>
         </li>
       </ul>
     </div>
@@ -67,18 +89,11 @@
           label="申请时间"
         />
         <el-table-column align="center" prop="totalAmount" label="报销总金额" />
-        <el-table-column
-          show-overflow-tooltip="true"
-          align="center"
-          prop="projectName"
-          label="项目名称"
-        />
-        <el-table-column
-          show-overflow-tooltip="true"
-          align="center"
-          prop="projectDeptName"
-          label="项目部门"
-        />
+        <el-table-column label="是否代办" align="center" prop="isAgent">
+          <template #default="scope">
+            <dict-tag :type="DICT_TYPE.COMMON_STATE" :value="scope.row.isAgent" />
+          </template>
+        </el-table-column>
         <el-table-column align="center" prop="status" label="状态" />
         <el-table-column align="center" label="操作" width="80" fixed="right">
           <template #default="scope">
@@ -103,7 +118,9 @@
 </template>
 
 <script setup lang="ts">
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import * as CommonCostApi from '@/api/oa/commonCost'
+import * as UserApi from '@/api/system/user'
 import { dateFormatter2 } from '@/utils/formatTime'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 import TableLayout from '../../oaViews/layout/TableLayout.vue'
@@ -113,7 +130,6 @@ defineOptions({ name: 'CommonCostDept' })
 const { wsCache } = useCache()
 const user = wsCache.get(CACHE_KEY.USER)
 const userDeptId = user.user.deptId ? user.user.deptId : ''
-const router = useRouter()
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
@@ -122,25 +138,28 @@ const queryParams = reactive({
   deptId: userDeptId,
   applyTime: [],
   status: undefined,
+  isAgent: undefined,
   totalAmount: undefined
 })
 const infoList: any = ref([
   {
     name: '报销总金额(元)',
-    num: '0'
+    num: 0
   },
   {
     name: '已报销总金额(元)',
-    num: '0'
+    num: 0
   },
   {
     name: '办理中总金额(元)',
-    num: '0'
+    num: 0
   }
 ])
 const loading = ref(true) // 列表的加载中
 const total = ref(0) // 列表的总页数
 const list = ref([]) // 列表的数
+const router = useRouter()
+const userList = ref<UserApi.UserVO[]>([]) // 用户列表
 
 /** 查询列表 */
 const getList = async () => {
@@ -187,8 +206,15 @@ const handleCurrentChange = (pageNo: number) => {
   getList()
 }
 
+/** 用户列表 */
+const initDeptUsers = async () => {
+  // 获得用户列表
+  userList.value = await UserApi.getSimpleDeptUserAllList(userDeptId)
+}
+
 /** 初始化 */
 onMounted(() => {
+  initDeptUsers()
   getList()
   getOverview()
 })

+ 6 - 1
client/src/views/OaSystem/financialManagement/ptbxPage/index.vue

@@ -51,7 +51,7 @@
         <span class="formSpan">是否代办:</span>
         <el-select v-model="queryParams.isAgent" placeholder="是否代办" clearable class="!w-240px">
           <el-option
-            v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
+            v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATE)"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
@@ -113,6 +113,11 @@
           label="申请时间"
         />
         <el-table-column align="center" prop="totalAmount" label="报销总金额" />
+        <el-table-column label="是否代办" align="center" prop="isAgent">
+          <template #default="scope">
+            <dict-tag :type="DICT_TYPE.COMMON_STATE" :value="scope.row.isAgent" />
+          </template>
+        </el-table-column>
         <el-table-column align="center" prop="status" label="状态" />
         <el-table-column align="center" label="操作" width="80" fixed="right">
           <template #default="scope">

+ 13 - 18
client/src/views/OaSystem/mineCenter/rightChild/ptbx.vue

@@ -11,7 +11,14 @@
       </div>
       <div class="form">
         <span class="formSpan">状态:</span>
-        <el-input v-model="queryParams.status" style="width: 160px" />
+        <el-select v-model="queryParams.status" placeholder="状态" clearable class="!w-240px">
+          <el-option
+            v-for="dict in getIntDictOptions(DICT_TYPE.FINANCE_STATUS)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
       </div>
       <div class="from">
         <div class="btnBox">
@@ -26,7 +33,7 @@
       <ul>
         <li v-for="(item, index) in infoList" :key="index" class="mr-40px">
           <p>{{ item.name }}:</p>
-          <h4 class="font-size-18px">{{ item.num }}</h4>
+          <h4 class="font-size-18px">{{ item.num.toFixed(2) }}</h4>
         </li>
       </ul>
     </div>
@@ -41,18 +48,6 @@
           label="申请时间"
         />
         <el-table-column align="center" prop="totalAmount" label="报销总金额" />
-        <el-table-column
-          show-overflow-tooltip="true"
-          align="center"
-          prop="projectName"
-          label="项目名称"
-        />
-        <el-table-column
-          show-overflow-tooltip="true"
-          align="center"
-          prop="projectDeptName"
-          label="项目部门"
-        />
         <el-table-column align="center" prop="status" label="状态" />
         <el-table-column align="center" label="操作" width="80" fixed="right">
           <template #default="scope">
@@ -77,6 +72,7 @@
 </template>
 
 <script setup lang="ts">
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import * as CommonCostApi from '@/api/oa/commonCost'
 import { dateFormatter2 } from '@/utils/formatTime'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
@@ -93,7 +89,6 @@ const queryParams = reactive({
   pageSize: 10,
   commonCostNo: undefined,
   userId: userId,
-  deptId: userId,
   applyTime: [],
   status: undefined,
   totalAmount: undefined
@@ -101,15 +96,15 @@ const queryParams = reactive({
 const infoList: any = ref([
   {
     name: '报销总金额(元)',
-    num: '0'
+    num: 0
   },
   {
     name: '已报销总金额(元)',
-    num: '0'
+    num: 0
   },
   {
     name: '办理中总金额(元)',
-    num: '0'
+    num: 0
   }
 ])
 const loading = ref(true) // 列表的加载中

+ 12 - 8
zjugis-business/src/main/java/com/zjugis/business/flow/commoncost/dao/CommonCostDao.java

@@ -9,6 +9,8 @@ import com.zjugis.framework.mybatis.core.mapper.BaseMapperX;
 import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
@@ -35,6 +37,7 @@ public interface CommonCostDao extends BaseMapperX<CommonCostDO> {
                 .likeIfPresent(CommonCostDO::getCommonCostNo, reqVO.getCommonCostNo())
                 .betweenIfPresent(CommonCostDO::getApplyTime, reqVO.getApplyTime())
                 .eqIfPresent(CommonCostDO::getTotalAmount, reqVO.getTotalAmount())
+                .eqIfPresent(CommonCostDO::getIsAgent, reqVO.getIsAgent())
                 .eqIfPresent(CommonCostDO::getFlowStatus, reqVO.getStatus())
                 .in(CommonCostDO::getFlowStatus, FLOW_FINISHED, FLOW_PAYMENT)
                 .orderByDesc(CommonCostDO::getApplyTime));
@@ -47,36 +50,37 @@ public interface CommonCostDao extends BaseMapperX<CommonCostDO> {
                 .likeIfPresent(CommonCostDO::getCommonCostNo, reqVO.getCommonCostNo())
                 .betweenIfPresent(CommonCostDO::getApplyTime, reqVO.getApplyTime())
                 .eqIfPresent(CommonCostDO::getTotalAmount, reqVO.getTotalAmount())
+                .eqIfPresent(CommonCostDO::getIsAgent, reqVO.getIsAgent())
                 .eqIfPresent(CommonCostDO::getFlowStatus, reqVO.getStatus())
                 .in(CommonCostDO::getFlowStatus, FLOW_FINISHED, FLOW_PAYMENT)
                 .orderByDesc(CommonCostDO::getApplyTime));
     }
 
-    default PageResult<CommonCostDO> getCommonCostDeptPage(CommonCostPageReqVO reqVO, List<String> projectIds) {
+    default PageResult<CommonCostDO> getCommonCostDeptPage(CommonCostPageReqVO reqVO, Collection<String> ids) {
         return selectPage(reqVO, new LambdaQueryWrapperX<CommonCostDO>()
                 .eqIfPresent(CommonCostDO::getUserId, reqVO.getUserId())
                 .likeIfPresent(CommonCostDO::getCommonCostNo, reqVO.getCommonCostNo())
                 .betweenIfPresent(CommonCostDO::getApplyTime, reqVO.getApplyTime())
                 .eqIfPresent(CommonCostDO::getTotalAmount, reqVO.getTotalAmount())
+                .eqIfPresent(CommonCostDO::getIsAgent, reqVO.getIsAgent())
                 .eqIfPresent(CommonCostDO::getFlowStatus, reqVO.getStatus())
+                .inIfPresent(CommonCostDO::getId, ids)
                 .in(CommonCostDO::getFlowStatus, FLOW_FINISHED, FLOW_PAYMENT)
-                .and(wq -> wq.eq(CommonCostDO::getDeptId, reqVO.getDeptId())
-                        .or()
-                        .in(CommonCostDO::getProjectId, projectIds))
+                .eq(CommonCostDO::getDeptId, reqVO.getDeptId())
                 .orderByDesc(CommonCostDO::getApplyTime));
     }
 
-    default List<CommonCostDO> getCommonCostDeptList(CommonCostPageReqVO reqVO, List<String> projectIds) {
+    default List<CommonCostDO> getCommonCostDeptList(CommonCostPageReqVO reqVO, Collection<String> ids) {
         return selectList(new LambdaQueryWrapperX<CommonCostDO>()
                 .eqIfPresent(CommonCostDO::getUserId, reqVO.getUserId())
                 .likeIfPresent(CommonCostDO::getCommonCostNo, reqVO.getCommonCostNo())
                 .betweenIfPresent(CommonCostDO::getApplyTime, reqVO.getApplyTime())
                 .eqIfPresent(CommonCostDO::getTotalAmount, reqVO.getTotalAmount())
+                .eqIfPresent(CommonCostDO::getIsAgent, reqVO.getIsAgent())
                 .eqIfPresent(CommonCostDO::getFlowStatus, reqVO.getStatus())
+                .inIfPresent(CommonCostDO::getId, ids)
                 .in(CommonCostDO::getFlowStatus, FLOW_FINISHED, FLOW_PAYMENT)
-                .and(wq -> wq.eq(CommonCostDO::getDeptId, reqVO.getDeptId())
-                        .or()
-                        .in(CommonCostDO::getProjectId, projectIds))
+                .eq(CommonCostDO::getDeptId, reqVO.getDeptId())
                 .orderByDesc(CommonCostDO::getApplyTime));
     }
 

+ 8 - 4
zjugis-business/src/main/java/com/zjugis/business/flow/commoncost/service/CommonCostServiceImpl.java

@@ -251,8 +251,10 @@ public class CommonCostServiceImpl implements CommonCostService {
     @Override
     public PageResult<CommonCostRespVO> getCommonCostDeptPage(CommonCostPageReqVO pageReqVO) {
         List<Project> projects = projectService.selectByDeptId(pageReqVO.getDeptId());
-        List<String> deptProjectIds = convertList(projects, Project::getId);
-        PageResult<CommonCostDO> pageResult = commonCostDao.getCommonCostDeptPage(pageReqVO, deptProjectIds);
+        Set<String> deptProjectIds = convertSet(projects, Project::getId);
+        List<CommonCostDetailDO> detailList = commonCostDetailService.getListByProjectIds(deptProjectIds);
+        Set<String> ids = convertSet(detailList, CommonCostDetailDO::getCommonCostId);
+        PageResult<CommonCostDO> pageResult = commonCostDao.getCommonCostDeptPage(pageReqVO, ids);
         PageResult<CommonCostRespVO> commonCostRespVOPageResult = getCommonCostRespVOPageResult(pageResult);
         return commonCostRespVOPageResult;
     }
@@ -273,8 +275,10 @@ public class CommonCostServiceImpl implements CommonCostService {
     @Override
     public CommonCostOverviewVO getCommonCostOverviewDept(CommonCostPageReqVO pageReqVO) {
         List<Project> projects = projectService.selectByDeptId(pageReqVO.getDeptId());
-        List<String> deptProjectIds = convertList(projects, Project::getId);
-        List<CommonCostDO> commonCostList = commonCostDao.getCommonCostDeptList(pageReqVO, deptProjectIds);
+        Set<String> deptProjectIds = convertSet(projects, Project::getId);
+        List<CommonCostDetailDO> detailList = commonCostDetailService.getListByProjectIds(deptProjectIds);
+        Set<String> ids = convertSet(detailList, CommonCostDetailDO::getCommonCostId);
+        List<CommonCostDO> commonCostList = commonCostDao.getCommonCostDeptList(pageReqVO, ids);
         CommonCostOverviewVO result = new CommonCostOverviewVO();
         double totalAmount = commonCostList.stream().collect(Collectors.summarizingDouble(value -> value.getTotalAmount().doubleValue())).getSum();
         double totalUseAmount = commonCostList.stream().filter(useMoneyDO -> useMoneyDO.getFlowStatus() == FLOW_FINISHED).collect(Collectors.summarizingDouble(value -> value.getTotalAmount().doubleValue())).getSum();