Просмотр исходного кода

审核模式为6, 针对明夷电子,支持给员工设置一层还是两层审核。

seyason 1 год назад
Родитель
Сommit
9cb65035b4

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -198,12 +198,12 @@ public class UserController {
      * departmentCascade 部门层叠关系字符串 默认"0"
      */
     @RequestMapping("/insertUser")
-    public HttpRespMsg insertUser(String id, @RequestParam String name, String phone,
+    public HttpRespMsg insertUser(String id, @RequestParam String name, String phone, Integer onlyAuditOnce,
                                   @RequestParam Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate,
                                     String position, String certJson,String inductionDate,String superiorId,
                                     String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
-        return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
+        return userService.insertUser(id, name, phone, onlyAuditOnce, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
                     position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber, inactiveDate);
     }
 

+ 8 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java

@@ -21,7 +21,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2023-03-01
+ * @since 2023-08-16
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -286,10 +286,16 @@ public class User extends Model<User> {
     /**
      * 是否存在日报
      * 0-否 1-是
-    */
+     */
     @TableField(exist = false)
     private Integer isExistsReport;
 
+    /**
+     * 仅直属或部门一层审核,在report_audit_type=6时有效
+     */
+    @TableField("only_audit_once")
+    private Integer onlyAuditOnce;
+
 
     @Override
     protected Serializable pkVal() {

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -35,7 +35,7 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg insertCompany(String companyName, String name, String phone, String vcode, String pwd, Integer type, String from);
 
-    HttpRespMsg insertUser(String id, String name, String phone, Integer roleId, Double monthCost, Double cost, Integer departmentId,
+    HttpRespMsg insertUser(String id, String name, String phone,Integer onlyAuditOnce, Integer roleId, Double monthCost, Double cost, Integer departmentId,
                            Integer salaryType, String costApplyDate, String position, String certJson,
                            HttpServletRequest request,String inductionDate, String superiorId,String plate1,
                            String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate);

+ 29 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1773,6 +1773,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 //人员所属部门负责人审核或者直属领导审核
                 boolean hasAuditAllPri = sysFunctionService.hasPriviledge(user.getRoleId(), "审核全员日报");
                 List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, creator_id, create_date, project_id,audit_dept_managerid,department_audit_state, project_auditor_id, is_dept_audit").in("id", ids));
+                Integer onlyAuditOnce = userMapper.selectById(reportList.get(0).getCreatorId()).getOnlyAuditOnce();
                 for (Report r : reportList) {
                     //直属领导审核或者部门负责人审核
                     Report newReport = new Report();
@@ -1795,14 +1796,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                     || (r.getIsDeptAudit() == 1 && user.getId().equals(r.getAuditDeptManagerid())))){
                                 //进入下一个节点,日报审核人审核
                                 newReport.setDepartmentAuditState(1);
-                                newReport.setProjectAuditState(0);
                                 newReport.setIsDeptAudit(0);
-                                ProjectAuditor auditor = projectAuditorMapper.selectOne(new QueryWrapper<ProjectAuditor>().eq("project_id", r.getProjectId()).last("limit 1"));
-                                if (auditor == null) {
-                                    httpRespMsg.setError("项目尚未设置日报审核人");
-                                    return httpRespMsg;
+                                //填报人如果设置了仅一层审核,那就直接通过了
+                                if (onlyAuditOnce == 1) {
+                                    newReport.setState(1);
+                                    newReport.setProjectAuditState(1);
+                                    newReport.setProjectAuditTime(LocalDateTime.now());
                                 } else {
-                                    newReport.setProjectAuditorId(auditor.getAuditorId());
+                                    newReport.setProjectAuditState(0);
+                                    ProjectAuditor auditor = projectAuditorMapper.selectOne(new QueryWrapper<ProjectAuditor>().eq("project_id", r.getProjectId()).last("limit 1"));
+                                    if (auditor == null) {
+                                        httpRespMsg.setError("项目尚未设置日报审核人");
+                                        return httpRespMsg;
+                                    } else {
+                                        newReport.setProjectAuditorId(auditor.getAuditorId());
+                                    }
                                 }
                             }else {
                                 httpRespMsg.setError("您无权审核该日报");
@@ -2872,7 +2880,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     updateBatchById(updateReportList);
                 }
             } else if(timeType.getReportAuditType() == 5 || timeType.getReportAuditType() == 6){
-                allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name, department_id").eq("company_id", company.getId()));
+                allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name, department_id, only_audit_once").eq("company_id", company.getId()));
                 List<Report> updateReportList = new ArrayList<>();
                 //人员所属部门负责人审核或者直属领导审核
                 boolean hasAuditAllPri = sysFunctionService.hasPriviledge(user.getRoleId(), "审核全员日报");
@@ -2904,13 +2912,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                     || (r.getIsDeptAudit() == 1 && user.getId().equals(r.getAuditDeptManagerid())))){
                                 //进入下一个节点,日报审核人审核
                                 newReport.setDepartmentAuditState(1);
-                                newReport.setProjectAuditState(0);
-                                ProjectAuditor auditor = projectAuditorMapper.selectOne(new QueryWrapper<ProjectAuditor>().eq("project_id", r.getProjectId()).last("limit 1"));
-                                if (auditor == null) {
-                                    httpRespMsg.setError("项目尚未设置日报审核人");
-                                    return httpRespMsg;
+                                User curReportor = allUsers.stream().filter(u->u.getId().equals(r.getCreatorId())).findFirst().get();
+                                Integer onlyAuditOnce = curReportor.getOnlyAuditOnce();
+                                if (onlyAuditOnce == 1) {
+                                    newReport.setState(1);
+                                    newReport.setProjectAuditState(1);
+                                    newReport.setProjectAuditTime(LocalDateTime.now());
                                 } else {
-                                    newReport.setProjectAuditorId(auditor.getAuditorId());
+                                    newReport.setProjectAuditState(0);
+                                    ProjectAuditor auditor = projectAuditorMapper.selectOne(new QueryWrapper<ProjectAuditor>().eq("project_id", r.getProjectId()).last("limit 1"));
+                                    if (auditor == null) {
+                                        httpRespMsg.setError("项目尚未设置日报审核人");
+                                        return httpRespMsg;
+                                    } else {
+                                        newReport.setProjectAuditorId(auditor.getAuditorId());
+                                    }
                                 }
                             }else {
                                 httpRespMsg.setError("您无权审核该日报");

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -1279,7 +1279,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
     //新增或修改用户
     @Override
-    public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Double monthCost, Double cost,
+    public HttpRespMsg insertUser(String targetId, String name, String phone, Integer onlyAuditOnce, Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request,String inductionDate,
                                   String superiorId,   String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
@@ -1318,6 +1318,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                                 .setName(name)
                                 .setPassword(MD5Util.getPassword("000000"))
                                 .setPhone(phone)
+                                .setOnlyAuditOnce(onlyAuditOnce)
                                 .setRoleId(roleId)
                                 .setRoleName(sysRoleMapper.selectById(roleId).getRolename())
                                 .setCompanyId(creator.getCompanyId())
@@ -1399,6 +1400,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 userMapper.updateById(oldUser
                         .setName(name)
                         .setPhone(phone)
+                        .setOnlyAuditOnce(onlyAuditOnce)
                         .setRoleId(roleId)
                         .setRoleName(sysRoleMapper.selectById(roleId).getRolename())
                         .setMonthCost(monthCostValue)

Разница между файлами не показана из-за своего большого размера
+ 6 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml


+ 4 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -98,7 +98,7 @@
             
             <!-- 备注 -->
             <el-form-item :label="$t('bei-zhu')" style="display: block; width: 70%; float: left;">
-              <el-input type="textarea" v-model="addForm.remark" :autosize="{minRows: 2, maxRows: 2}"></el-input>
+              <el-input type="textarea" v-model="addForm.remark" :autosize="{minRows: 2, maxRows: 2}"  maxlength="100"></el-input>
             </el-form-item>
             <!-- 总费用 -->
             <!-- <div style="float: left; line-height: 55px;margin-left:20px">总费用 <el-link disabled v-model="addForm.totalAmount">{{addForm.totalAmount}}</el-link> 元</div> -->
@@ -373,7 +373,7 @@
               </el-select>
             </el-form-item>
             <el-form-item :label="$t('bei-zhu')" style="width: 280px">
-              <el-input v-model="ParticularsList.remark" :disabled="flg"></el-input>
+              <el-input v-model="ParticularsList.remark" :disabled="flg"  maxlength="100"></el-input>
             </el-form-item>
             <el-form-item :label="$t('totalcostos')">
               ¥{{ParticularsList.totalAmount | numberToCurrency}}&nbsp;&nbsp;{{$t('yuan')}}
@@ -461,7 +461,7 @@
             </el-table-column>
             <el-table-column prop="remark" :label="$t('bei-zhu')" width="300">
               <template slot-scope="scope"> 
-                <el-input size="small" v-if="!flg" v-model="scope.row.remark"></el-input>
+                <el-input size="small" v-if="!flg" v-model="scope.row.remark" maxlength="100"></el-input>
                 <span v-else>{{scope.row.remark}}</span>
               </template>
             </el-table-column>
@@ -740,7 +740,7 @@
             </el-table-column>
             <el-table-column prop="remark" :label="$t('bei-zhu')" width="300">
               <template slot-scope="scope"> 
-                <el-input size="small" v-if="!flg" v-model="scope.row.remark"></el-input>
+                <el-input size="small" v-if="!flg" v-model="scope.row.remark"  maxlength="100"></el-input>
                 <span v-else>{{scope.row.remark}}</span>
               </template>
             </el-table-column>

+ 10 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -425,6 +425,12 @@
                       <vueCascader :size="'medium'" :widthStr="'430'" :clearable="true && user.userNameNeedTranslate != 1" :subject="option" :subjectId="insertForm.departmentId" :radios="true" :distinction="'2'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1" ></vueCascader>
 
                   </el-form-item>
+                  <el-form-item label="审核层级" v-if="user.timeType.reportAuditType == 6">
+                      <el-radio-group v-model="insertForm.onlyAuditOnce" >
+                      <el-radio  :label="0" >两层审核</el-radio>
+                      <el-radio  :label="1">一层审核</el-radio>
+                      </el-radio-group>
+                  </el-form-item>
                   <el-form-item v-if="user.timeType.reportAuditType == 5 || user.timeType.reportAuditType == 6">
                       <span slot="label">
                         <span>直属审核人</span>
@@ -2662,7 +2668,8 @@ export default {
                 plate3: res.data.plate3,
                 plate4: res.data.plate4,
                 plate5: res.data.plate5,
-                jobNumber: res.data.jobNumber
+                jobNumber: res.data.jobNumber,
+                onlyAuditOnce: res.data.onlyAuditOnce
               };
               this.$set(this.insertForm, 'inductionDate', res.data.inductionDate)
               this.getUserCustomConfig(1);
@@ -2705,6 +2712,7 @@ export default {
           plate4: null,
           plate5: null,
           jobNumber:null,
+          onlyAuditOnce: 0,
         };
         this.title = this.$t('addorialstaff');
         this.getUserCustomConfig();
@@ -2764,6 +2772,7 @@ export default {
             plate4: this.insertForm.plate4,
             plate5: this.insertForm.plate5,
             jobNumber: this.insertForm.jobNumber,
+            onlyAuditOnce: this.insertForm.onlyAuditOnce,
           };
           if (this.insertForm.isActive == 0) {
             form.inactiveDate = this.insertForm.inactiveDate;

+ 15 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

@@ -24,7 +24,7 @@
                 <van-grid-item v-if="weekIndex != 7">
                     <van-button type="default" size="mini" class="selectgxbtn" @click="addWeekIndex()" icon="plus"></van-button>
                 </van-grid-item>
-                <div class="kaoqin" v-if="kaoqinText"><span>当日考勤记录:</span><span>{{kaoqinText}}</span></div>
+                <div class="kaoqin2" v-if="kaoqinText"><span>当日考勤:</span><span>{{kaoqinText}}</span></div>
                 <div class="kaoqin" v-if="workTimeText"><span>已填报工时:</span><span>{{workTimeText}}小时</span></div>
                 <div class="submitClear">
                     <van-button type="default" size="small" @click="submitClear">清空</van-button>
@@ -617,7 +617,10 @@
                 }).then(res => {
                     if(res.code == 'ok'){
                         if(res.data){
-                            this.kaoqinText = res.data.startTime + '-' + res.data.endTime + ',' + res.data.workHours + '小时'
+                            this.kaoqinText = res.data.startTime + '-' + res.data.endTime + ',工作' + res.data.workHours + 'h';
+                            if (res.data.askLeaveTime) {
+                                this.kaoqinText += ' | 请假'+res.data.askLeaveTime+'h';
+                            }
                             if((this.user.timeType.showDdCardtime == 1 || this.user.timeType.showCorpwxCardtime == 1) && this.reportTimeType.type == 1){
                                 this.$set(this.currentForm,'cardtime',res.data.workHours)
                             }
@@ -2227,6 +2230,16 @@
         font-size: 0.35rem;
         line-height: 0.64rem;
     }
+    .kaoqin2{
+        width: 100%;
+        padding: 0.1rem;
+        background-color: #fff;
+        color: #969799;
+        display: flex;
+        align-items: center;
+        font-size: 0.35rem;
+        line-height: 0.64rem;
+    }
     .kaoqin span{
         width: 50%;
         text-align: center;

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/expense/index.vue

@@ -82,7 +82,7 @@
                             @cancel="typeShow = false; $forceUpdate();" />
                     </van-popup>
                     <!-- 备注 -->
-                    <van-field v-model="editForm.remark" label="备注" type="textarea"></van-field>
+                    <van-field v-model="editForm.remark" label="备注" type="textarea" maxlength="100"></van-field>
                     <!-- 发票 -->
                     <van-field label="发票" readonly>
                         <template #input>总费用: ¥{{ totalCost }}</template>
@@ -110,7 +110,7 @@
                             <van-field label="税额:" readonly v-if="user.timeType.easyExpense==0">
                                 <template #input>¥{{ getTaxValue(item.amount, item.taxPercent) }}</template>
                             </van-field>
-                            <van-field label="备注:" v-model="item.remark" autosize></van-field>
+                            <van-field label="备注:" v-model="item.remark" autosize maxlength="100"></van-field>
                             <van-field label="报销凭证:" @click="invoiceIndex = index" clickable>
                                 <template #input>
                                     <van-uploader v-model="uploader[index]" :before-read="beforeRead"