فهرست منبع

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper into master

seyason 2 سال پیش
والد
کامیت
c8429d0b44
24فایلهای تغییر یافته به همراه277 افزوده شده و 39 حذف شده
  1. 32 8
      fhKeeper/formulahousekeeper/inva_4_tivo/css/index.css
  2. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/dd1.png
  3. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/dd2.png
  4. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/dd3.png
  5. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/dd4.png
  6. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/dd5.png
  7. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/dd6.png
  8. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/dd7.png
  9. 33 2
      fhKeeper/formulahousekeeper/inva_4_tivo/index.html
  10. 19 4
      fhKeeper/formulahousekeeper/inva_4_tivo/js/index.js
  11. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/PermissionController.java
  12. 10 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SysFunction.java
  13. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/PermissionService.java
  14. 100 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/PermissionServiceImpl.java
  15. 9 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  16. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  17. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  18. 1 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  19. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/SysFunctionMapper.xml
  20. 8 6
      fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue
  21. 6 2
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  22. 26 0
      fhKeeper/formulahousekeeper/timesheet/src/views/quanx/quanx.vue
  23. 2 2
      fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue
  24. 19 2
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 32 - 8
fhKeeper/formulahousekeeper/inva_4_tivo/css/index.css

@@ -3,6 +3,7 @@
     width: 100%;
     height: 6.375rem;
     position: relative;
+    box-shadow: 0px 0px 0px #fff;
 }
 .navigationBarBack {
     width: 100%;
@@ -153,25 +154,46 @@
     text-align: center;
     font-size: 1.625rem !important;
     color: #595959;
+    position: relative;
 }
 .manContent img {
-    /* margin-top: 10.5625rem;
-    margin-bottom: 1.6875rem; */
-    margin-top: 16.25rem;
+    margin-top: 18.25rem;
     margin-bottom: 3.4375rem;
-    width: 12.875rem;
-    height: 12.875rem;
+    width: 9.875rem;
+    height: 9.875rem;
 }
 .manContent p {
-    font-size: 1.9375rem !important;
+    font-size: 1.75rem !important;
     color: #595959;
     font-weight: bold;
     word-spacing: .9375rem;
-    letter-spacing:.3125rem
+    letter-spacing:.3125rem;
 }
 .manContent span {
     color: #5e95f8;
 }
+.manConDD {
+    display: flex;
+    justify-content: center;
+    flex-wrap: wrap;
+    text-align: center;
+    position: absolute;
+    width: 256px;
+}
+.manConDD img {
+    width: 6rem !important;
+    height: 6rem !important;
+    margin-top: 0;
+    margin-bottom: 1.5625rem;
+}
+.manContent .manConDD p {
+    width: 100%;
+    text-align: center;
+    font-size: 20px !important;
+    font-weight: normal;
+    word-spacing: 0;
+    letter-spacing:0
+}
 /* 智能 */
 .smart {
     width: 100%;
@@ -697,7 +719,8 @@
 /* 尝试滚动 */
 .jiesao {
     /* height: 200vh; */
-    height: 125.8125rem;
+    /* height: 125.8125rem; */
+    height: 137.5rem;
     width: 100%;
 }
 .managements {
@@ -736,6 +759,7 @@ body {
     /* background: url(../image/backk.jpg) no-repeat;
     background-size: 100%; */
     background: #fff;
+    box-shadow: 1px 3px 5px 0px #ddd;
 }
 .abc .til {
     color: #fff !important;

BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/dd1.png


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/dd2.png


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/dd3.png


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/dd4.png


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/dd5.png


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/dd6.png


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/dd7.png


+ 33 - 2
fhKeeper/formulahousekeeper/inva_4_tivo/index.html

@@ -97,8 +97,39 @@
             <!-- <div class="manImg"><img src="./image/gongshi.jpg" alt=""></div> -->
             <div class="connont">
                 <div class="manContent">
-                    <img id="jiesaoImg" src="./image/gsgj.png" alt="" style="padding-top: 300px;">
-                    <p id="jiesaoP" style="opacity: 0;">化繁为简  只需一个<span>工时管家</span></p>
+                    <!-- <img id="jiesaoImg" src="./image/gsgj.png" alt="" style="padding-top: 300px;"> -->
+                    <div style="position: relative;z-index: 2;">
+                        <img id="jiesaoImg" src="./image/gsgj.png" alt="">
+                        <p id="jiesaoP">化繁为简  只需一个<span>工时管家</span></p>
+                    </div>
+                    <div class="manConDD" id="manConDD1" style="left: 50%;margin-left: -128px;top: 30px;transform:translate(0,293px);">
+                        <img src="./image/dd1.png" alt="">
+                        <p id="manConDDp1" style="opacity: 0;">可集成到企业微信、钉钉</p>
+                    </div>
+                    <div class="manConDD" id="manConDD2" style="right: 160px;top: 200px;transform:translate(-362px,123px);">
+                        <img src="./image/dd2.png" alt="">
+                        <p id="manConDDp2" style="opacity: 0;">可以设置工时审批流</p>
+                    </div>
+                    <div class="manConDD" id="manConDD3" style="right: 160px;bottom: -60px;transform:translate(-362px,-141px);">
+                        <img src="./image/dd3.png" alt="">
+                        <p id="manConDDp3" style="opacity: 0;">多层级项目任务结构</p>
+                    </div>
+                    <div class="manConDD" id="manConDD4" style="right: 360px;bottom: -260px;transform:translate(-162px,-339px);">
+                        <img src="./image/dd4.png" alt="">
+                        <p id="manConDDp4" style="opacity: 0;">支持定制开发、私有化部署</p>
+                    </div>
+                    <div class="manConDD" id="manConDD5" style="left: 360px;bottom: -260px;transform:translate(162px,-339px);">
+                        <img src="./image/dd5.png" alt="">
+                        <p id="manConDDp5" style="opacity: 0;">图形化统计、Excel报表</p>
+                    </div>
+                    <div class="manConDD" id="manConDD6" style="left: 160px;bottom: -60px;transform:translate(362px,-141px);">
+                        <img src="./image/dd6.png" alt="">
+                        <p id="manConDDp6" style="opacity: 0;">模板可搭配、最高性价比</p>
+                    </div>
+                    <div class="manConDD" id="manConDD7" style="left: 160px;top: 200px;transform:translate(362px,123px);">
+                        <img src="./image/dd7.png" alt="">
+                        <p id="manConDDp7" style="opacity: 0;">自动下发漏填、待审核提醒</p>
+                    </div>
                 </div>
             </div>
         </div>

+ 19 - 4
fhKeeper/formulahousekeeper/inva_4_tivo/js/index.js

@@ -37,7 +37,7 @@ $('.auss li').hover(function () {
 let screenHeight = $(window).height()
 // 系统智能的高度
 let jiesaoTop = $('.jiesao').offset().top
-
+ 
 // 智能引擎的高度
 let znyqTop = $('.znyq').offset().top
 
@@ -66,9 +66,24 @@ $(window).scroll(function () {
     // 系统管理滚动计算
     if (currentTop > jiesaoTop && currentTop < (jiesaoTop + screenHeight)) {
         let jiesaoopacity = (currentTop - jiesaoTop) / screenHeight
-        let jiesaopadding = (1 - jiesaoopacity) * 300 + 'px'
-        $('#jiesaoP').css({'opacity': jiesaoopacity})
-        $('#jiesaoImg').css({'padding-top': jiesaopadding})
+        // let jiesaopadding = (1 - jiesaoopacity) * 300 + 'px'
+        let jieMIngcs = jiesaoopacity > 0.8 ? jiesaoopacity : '0'
+        // 文字加透明
+        $('#manConDDp1').css({'opacity': jieMIngcs})
+        $('#manConDDp2').css({'opacity': jieMIngcs})
+        $('#manConDDp3').css({'opacity': jieMIngcs})
+        $('#manConDDp4').css({'opacity': jieMIngcs})
+        $('#manConDDp5').css({'opacity': jieMIngcs})
+        $('#manConDDp6').css({'opacity': jieMIngcs})
+        $('#manConDDp7').css({'opacity': jieMIngcs})
+        // 偏移
+        $('#manConDD1').css({'transform': `translate(0, ${(1 - jiesaoopacity) * 293}px)`})
+        $('#manConDD2').css({'transform': `translate(-${(1 - jiesaoopacity) * 362}px, ${(1 - jiesaoopacity) * 123}px)`})
+        $('#manConDD3').css({'transform': `translate(-${(1 - jiesaoopacity) * 362}px, -${(1 - jiesaoopacity) * 141}px)`})
+        $('#manConDD4').css({'transform': `translate(-${(1 - jiesaoopacity) * 162}px, -${(1 - jiesaoopacity) * 339}px)`})
+        $('#manConDD5').css({'transform': `translate(${(1 - jiesaoopacity) * 162}px, -${(1 - jiesaoopacity) * 339}px)`})
+        $('#manConDD6').css({'transform': `translate(${(1 - jiesaoopacity) * 362}px, -${(1 - jiesaoopacity) * 141}px)`})
+        $('#manConDD7').css({'transform': `translate(${(1 - jiesaoopacity) * 362}px, ${(1 - jiesaoopacity) * 123}px)`})
     }
     // 智能引擎滚动计算
     if(currentTop > znyqTop && currentTop < (znyqTop + screenHeight) && currentTop < 3000) {

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/PermissionController.java

@@ -83,6 +83,11 @@ public class PermissionController {
         return permissionService.getAuthority(role, companyId);
     }
 
+    @RequestMapping("/exportData")
+    public HttpRespMsg exportData(@RequestParam Integer role, @RequestParam Integer companyId){
+        return permissionService.exportData(role,companyId);
+    }
+
     @RequestMapping("/switchAuthority")
     public HttpRespMsg switchAuthority(@RequestParam Integer role, @RequestParam Integer id) {
         return permissionService.switchAuthority(role, id);

+ 10 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SysFunction.java

@@ -1,21 +1,22 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+
 /**
  * <p>
  * 菜单功能权限关联表
  * </p>
  *
  * @author Seyason
- * @since 2022-04-05
+ * @since 2022-06-30
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -129,6 +130,11 @@ public class SysFunction extends Model<SysFunction> {
     @TableField("finance_audit")
     private Integer financeAudit;
 
+    /**
+     * 备注
+     */
+    @TableField("remarks")
+    private String remarks;
 
     @TableField(exist = false)
     private boolean checked;

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/PermissionService.java

@@ -34,4 +34,6 @@ public interface PermissionService extends IService<Permission> {
     HttpRespMsg savePermission(Integer role, String moduleList);
 
     HttpRespMsg setDefaultRole(Integer id, Integer companyId);
+
+    HttpRespMsg exportData(Integer role, Integer companyId);
 }

+ 100 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/PermissionServiceImpl.java

@@ -11,15 +11,18 @@ import com.management.platform.service.PermissionService;
 import com.management.platform.service.SysRoleFunctionService;
 import com.management.platform.service.SysRoleModuleService;
 import com.management.platform.util.HttpRespMsg;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -33,6 +36,8 @@ import java.util.stream.Collectors;
 @Service
 @Transactional
 public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements PermissionService {
+    @Value(value = "${upload.path}")
+    private String path;
     @Resource
     private UserMapper userMapper;
     @Resource
@@ -335,6 +340,97 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         return new HttpRespMsg();
     }
 
+    @Override
+    public HttpRespMsg exportData(Integer role, Integer companyId) {
+        HttpRespMsg msg = getAuthority(role, companyId);
+        List<SysModule> menuList= (List<SysModule>) msg.data;
+        HSSFWorkbook wb=new HSSFWorkbook();
+        HSSFSheet sheet=wb.createSheet("权限数据统计");
+        //设置每一列的列宽
+        sheet.setColumnWidth(0,256*15);
+        sheet.setColumnWidth(1,256*20);
+        sheet.setColumnWidth(2,256*50);
+
+        List<String> titles = Arrays.asList("模块","功能","备注");
+        HSSFRow row = sheet.createRow(0);
+        HSSFCellStyle style = wb.createCellStyle();
+        style.setBorderBottom(BorderStyle.valueOf((short)1));
+        style.setBorderLeft(BorderStyle.valueOf((short)1));
+        style.setBorderRight(BorderStyle.valueOf((short)1));
+        style.setBorderTop(BorderStyle.valueOf((short)1));
+        //水平居中
+        style.setAlignment(HorizontalAlignment.CENTER);
+        //垂直对齐
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        style.setBottomBorderColor(IndexedColors.BLACK.index);
+        //背景颜色
+        style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        HSSFFont headerFont1 = (HSSFFont) wb.createFont();
+        //字体加粗
+        headerFont1.setBold(true);
+        //字体类型
+        headerFont1.setFontName("黑体");
+        //字体大小
+        headerFont1.setFontHeightInPoints((short)15);
+        style.setFont(headerFont1);
+        //创建标题
+        HSSFCell cell = null;
+        for (int i = 0; i < titles.size(); i++) {
+            cell = row.createCell(i);
+            cell.setCellValue(titles.get(i));
+            cell.setCellStyle(style);
+        }
+        //初始化起始行和结束行
+        int startRow = 1;
+        for (int i = 0; i < menuList.size(); i++) {
+            //利用模块合并单元格(合并行)
+            List<SysFunction> functionList = menuList.get(i).getFunctionList();
+            int endRow = startRow + functionList.size() -1;
+            if (functionList.size() > 1){
+                sheet.addMergedRegion(new CellRangeAddress(startRow,endRow, 0, 0));
+                for (int j = 0; j < functionList.size(); j++) {
+                    row = sheet.createRow(startRow + j);
+                    row.createCell(0).setCellValue(menuList.get(i).getName());
+                    row.createCell(1).setCellValue(functionList.get(j).getName());
+                    row.createCell(2).setCellValue(functionList.get(j).getRemarks());
+                }
+            }else {
+                row = sheet.createRow(startRow);
+                row.createCell(0).setCellValue(menuList.get(i).getName());
+                List<SysModule> children = menuList.get(i).getChildren();
+                if(children.size()>0){
+                    for (int k = 0; k < children.size(); k++) {
+                        row = sheet.createRow(startRow+k);
+                        row.createCell(0).setCellValue(children.get(k).getName());
+                    }
+                }
+            }
+            startRow = endRow + 1;
+        }
+        //导出excel
+        String result="系统提示:Excel文件导出成功!";
+        String title= "权限数据统计_"+System.currentTimeMillis();
+        String fileName= title+".xls";
+        try {
+            File dir = null;
+            dir = new File(path);
+            // D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+            FileOutputStream os = new FileOutputStream(path+fileName);//保存到本地
+            wb.write(os);
+            os.flush();
+            os.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        httpRespMsg.data ="/upload/"+fileName;
+        return httpRespMsg;
+    }
+
     private List<Integer> getCheckedFunList(JSONObject menu) {
         List<Integer> funIds = new ArrayList<>();
         JSONArray funList = menu.getJSONArray("functionList");

+ 9 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -2810,7 +2810,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
         List<HashMap> projectList = projectMapper.getBaseCostAndRealCost(companyId, null, null, null);
         List<List<String>> exportList = new ArrayList<>();
-        String[] titles = {"项目编号", "项目名称", "当前总预算", "已发生总工时成本"};
+        String[] titles = {"项目编号", "项目名称", "当前总预算","当前剩余预算","总剩余预算","已发生总工时成本"};
         ArrayList<String> headList = Lists.list(titles);
         //列,根据定义的工时预警类型的成本项来
         List<ProjectBasecostSetting> settingList = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId).eq("alarm_type", 1));
@@ -2843,6 +2843,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                 }
                 item.put("realcostList", proRealCost);
+                BigDecimal baseCost=new BigDecimal(String.valueOf(item.get("baseCost")));
+                baseCost=baseCost.subtract((BigDecimal) item.get("feeMan"));
+                BigDecimal baseCurcost=new BigDecimal(String.valueOf(item.get("baseCurcost")));
+                baseCurcost=baseCurcost.subtract((BigDecimal) item.get("feeMan"));
+                item.put("remainingBudget",baseCost);
+                item.put("currentRemainingBudget",baseCurcost);
             }
         }
         DecimalFormat df = new DecimalFormat("#0.00");
@@ -2852,6 +2858,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             data.add((String)project.get("projectCode"));
             data.add((String)project.get("projectName"));
             data.add(project.get("baseCurcost") != null?project.get("baseCurcost").toString():"");
+            data.add(project.get("currentRemainingBudget") != null?project.get("currentRemainingBudget").toString():"");
+            data.add(project.get("remainingBudget") != null?project.get("remainingBudget").toString():"");
             data.add(""+project.get("feeMan"));
             List<ProjectCurrentcost> curList = (List<ProjectCurrentcost>)project.get("curcostList");
             List<HashMap> realList = (List<HashMap>)project.get("realcostList");

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

@@ -2940,7 +2940,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
                 allReportByDate = dealDataList;
             }
-
+            System.out.println(allReportByDate);
             DecimalFormat df = new DecimalFormat("#0.0");
             for (Map<String, Object> map : allReportByDate) {
                 HSSFRow row = sheet.createRow(rowNum);

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -713,6 +713,7 @@
             and rp.dept_id=#{departmentId}
         </if>
         group by us.id
+        order by rp.dept_id
         <if test="start!=null and size!=null">
             limit #{start},#{size}
         </if>
@@ -732,6 +733,7 @@
             and rp.dept_id=#{departmentId}
         </if>
         group by us.id
+        order by rp.dept_id
         <if test="start!=null and size!=null">
             limit #{start},#{size}
         </if>) total

+ 1 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -157,12 +157,11 @@
             AND a.project_id = #{projectId}
         </if>
         <if test="leaderId != null">
-            AND b.incharger_id = #{leaderId}
+            AND (b.incharger_id = #{leaderId} or a.creator_id=#{leaderId})
         </if>
         <if test="departmentId != null">
             AND department.department_id = #{departmentId}
         </if>
-
         ORDER BY a.creator_id, a.create_date desc
     </select>
 

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/SysFunctionMapper.xml

@@ -22,6 +22,7 @@
         <result column="package_finance" property="packageFinance" />
         <result column="sync_corpwx_time" property="syncCorpwxTime" />
         <result column="finance_audit" property="financeAudit" />
+        <result column="remarks" property="remarks" />
     </resultMap>
     <resultMap id="BaseResultMap1" type="com.management.platform.entity.vo.SysRichFunction">
         <id column="id" property="id" />
@@ -34,7 +35,7 @@
     </resultMap>
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, name, icon, code, module_id, seq, use_state, package_time, package_project, package_oa, package_expense, package_customer, package_engineering, package_contract, package_etimecard, package_finance, sync_corpwx_time, finance_audit
+        id, name, icon, code, module_id, seq, use_state, package_time, package_project, package_oa, package_expense, package_customer, package_engineering, package_contract, package_etimecard, package_finance, sync_corpwx_time, finance_audit, remarks
     </sql>
     <select id="getRoleFunctions" resultMap="BaseResultMap1" >
         select sys_function.id, sys_function.name, sys_function.icon, sys_function.code, sys_function.module_id, sys_function.seq, sys_module.name as module_name

+ 8 - 6
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -1,6 +1,6 @@
 <template>
   <section id="section">
-    <div class="sidebars" ref="sidebars" :style="'width: 180px;display: block;background: #fff;height:'+hubs+ 'px'">
+    <div class="sidebars" ref="sidebars" :style="'width: 180px;display: block;overflow:hidden;background: #fff;height:'+hubs+ 'px'">
       <h3><i class="iconfont firerock-iconbaoxiao" style="padding-right: 10px"></i>请假管理</h3>
       <el-divider ></el-divider>
       <el-col :span="12">
@@ -124,7 +124,7 @@
                     </el-radio-group>
                 </el-form-item>
                 <!-- 选择审批人 -->
-                <el-form-item label="审批人" style="width:300px" :prop="mustApprover">
+                <el-form-item label="审批人" style="width:300px" prop="projectAuditorJson">
                     <el-select style="display:inline-block;width:250px;" multiple v-model="addForm.projectAuditorJson" placeholder="请选择">
                       <el-option
                       v-for="item in approverList"
@@ -667,7 +667,7 @@ export default {
         tel: [{required: true, validator: checkTel, trigger: 'blur'}],
         timeDays: [{required: true, validator: checks, trigger: 'blur'}],
         leaveType: [{ required: true, message: "请选择请假类型", trigger: "blur" }],
-        approver: [{ required: true, message: "请选择审批人", trigger: "blur" }]
+        projectAuditorJson: [{ required: true, message: "请选择审批人", trigger: "blur" }]
       },
       user: JSON.parse(sessionStorage.getItem("user")),
       shuz: ['事假填报', '病假填报', '年假填报', '产假填报'],
@@ -813,7 +813,6 @@ export default {
       txselnum: 0,
 
       approverList: [],
-      mustApprover: '',
       isDingding: 0,
       vacationList: [],
       leaveTypeList: [],
@@ -987,8 +986,11 @@ export default {
       },res => {
         if(res.code == 'ok'){
           this.approverList = res.data
-          if(this.approverList.length != 0){
-            this.mustApprover = 'approver'
+          if(this.approverList.length == 0){
+            this.$message({
+              message: '当前无审批人,请联系管理员配置审批人',
+              type: 'warning'
+            })
           }
           // console.log('list',res.data);
         }else {

+ 6 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -2348,7 +2348,8 @@ a {
                         taskGpIncharge: item.taskGpIncharge,
                         category:item.category,
                         projectDesc: item.projectDesc,
-                        projectMainId: item.projectMainId
+                        projectMainId: item.projectMainId,
+                        creatorId: item.creatorId
                     }
                     this.deleteVif = item.creatorId
                     console.log("handleadd",this.deleteVif,this.addForm.id)
@@ -2713,7 +2714,10 @@ a {
             this.getProjectBaseConfigList();
             this.getClfConfigList()
             this.yanjiuzx()
-            this.getMainProject()
+            if(this.user,timeType.mainProjectState == 1){
+                this.getMainProject()
+            }
+            
         }
     };
 </script>

+ 26 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/quanx/quanx.vue

@@ -31,7 +31,9 @@
                 <div>
                     <el-button size="small" @click="handleAdd('编辑角色', '立即修改', scope.row)" :style="scope.row.rolename != '超级管理员' ? '' : 'visibility:hidden;'">编辑角色</el-button>
                     <el-button type="primary" size="small" @click="shisha(scope.row.id), roleName = scope.row.rolename" v-if="scope.row.rolename !='超级管理员' || (scope.row.rolename =='超级管理员' && user.roleName == '超级管理员')">分配权限</el-button>
+                    
                     <el-button type="danger" size="small" @click="deteHand(scope.row)" v-if="scope.row.rolename != '超级管理员'">删除</el-button>
+                    <el-button size="small" @click="exportAuthority(scope.row)" v-if="scope.row.rolename != '超级管理员'" style="margin-left:30px">导出权限</el-button>
                 </div>
             </template>
         </el-table-column>
@@ -457,6 +459,30 @@ export default {
                   type: "error"
               });
           });
+      },
+      exportAuthority(row){ // 导出权限
+      console.log(row);
+        this.http.post('permission/exportData',{
+          role: row.id,
+          companyId: this.user.companyId
+        },res => {
+          if(res.code == 'ok'){
+            var a = document.createElement('a');
+            a.download = "权限数据统计.xls";
+            a.href = res.data;
+            a.click();
+          }else{
+            this.$message({
+              message: res.msg,
+              type: 'error'
+            })
+          }
+        },err => {
+          this.$message({
+            message: err,
+            type: 'error'
+          })
+        })
       }
   },
 };

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -206,7 +206,7 @@
         <p style="margin-left:10px;color:#666;">普通员工填报日报时间限制</p>
         <el-row :gutter="20" style="padding-top:10px;width:100%;margin:0 auto;padding-left:10px;padding-right:10px;">
         <el-col :span="24" >
-            <div class="panel" style="height:60px;">
+            <div class="panel" style="height:120px;">
                 <el-form :inline="true" :model="timeType"  style="margin-top:10px;">
                  
                 <el-form-item label="补填时间" prop="fillMonths">
@@ -216,7 +216,7 @@
                     </el-select>
                     <span style="color:#666;margin-left:10px;">(说明:系统管理员为员工代填日报时不受补填时间的限制)</span>
                     <span class="lockworktime"><el-checkbox v-model="timeType.fillAhead" label="可提前填报" /></span>
-                </el-form-item>
+                </el-form-item><br>
                 <el-form-item label="员工填报及时日" prop="timeliness" v-if="user.company.packageProject">
                     <el-select v-model="timeType.timeliness">
                         <el-option label="当天" :value="0"></el-option>

+ 19 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -4610,9 +4610,26 @@
 
             // 改变月份
             changeMonth() {
-                if (this.isBatch == 0 && !this.isSubstitude) {
+                if (this.isBatch == 0) {
+                    if(this.user.timeType.fillAhead == 0){
+                        let date_a = new Date(this.workForm.createDate)
+                        let date_b = new Date(sessionStorage.msg)
+                        if(date_a.getTime() > date_b.getTime()){
+                            this.workForm.createDate = sessionStorage.msg
+                        }
+                    }
                     //只有按天填报才能获取当天的日报
-                    this.getReport()
+                    if(!this.isSubstitude){
+                        this.getReport()
+                    }
+                }else {
+                    if(this.user.timeType.fillAhead == 0){
+                        let date_a = new Date(this.workForm.createDate[1])
+                        let date_b = new Date(sessionStorage.msg)
+                        if(date_a.getTime() > date_b.getTime()){
+                            this.workForm.createDate[1] = sessionStorage.msg
+                        }
+                    }
                 }
             },
             // 判断时间段