浏览代码

修改手机版校验账号有效期, 修复日报提交错误bug. 增加近期任务的接口。

seyason 3 年之前
父节点
当前提交
b0f3fd1d1d

+ 4 - 4
fhKeeper/formulahousekeeper/inva_4_tivo/index.html

@@ -341,7 +341,7 @@
                 <div class="li">
                     <div class="li_con">
                         <div>Excel简易版</div>
-                        <div>¥<span>50</span>/人/年</div>
+                        <div>¥<span>58</span>/人/年</div>
                     </div>
                     <div>
                         <ul style="padding: 0;">
@@ -366,7 +366,7 @@
                 <div class="li">
                     <div class="li_con">
                         <div>基础版</div>
-                        <div>¥<span>180</span>/人/年</div>
+                        <div>¥<span>188</span>/人/年</div>
                     </div>
                     <div>
                         <ul style="padding: 0;">
@@ -391,7 +391,7 @@
                 <div class="li">
                     <div class="li_con">
                         <div>项目管理专业版</div>
-                        <div>¥<span>240</span>/人/年</div>
+                        <div>¥<span>268</span>/人/年</div>
                     </div>
                     <div>
                         <ul style="padding: 0;">
@@ -416,7 +416,7 @@
                 <div class="li">
                     <div class="li_con">
                         <div>建筑工程专业版</div>
-                        <div>¥<span>300</span>/人/年</div>
+                        <div>¥<span>318</span>/人/年</div>
                     </div>
                     <div>
                         <ul style="padding: 0;">

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

@@ -387,6 +387,7 @@ public class ReportController {
                             if (progress != null && progress[i] != null) {
                                 report.setProgress(progress[i]);
                             }
+                            hourCost = subsUser.getCost();
                             //计算工时和成本
                             if (report.getMultiWorktime() == 0) {
                                 fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i],  sdf);
@@ -426,6 +427,7 @@ public class ReportController {
                         .setCost(hourCost.multiply(new BigDecimal(workingTime)))
                         .setTimeType(timeType);
             } else if (report.getReportTimeType() == 1|| report.getReportTimeType() == 3) {
+                System.out.println("hourCost="+hourCost+", workingTime="+workingTime);
                 report.setWorkingTime(workingTime)
                         .setCost(hourCost.multiply(new BigDecimal(workingTime)));
             } else if (report.getReportTimeType() == 2) {

+ 7 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -438,14 +438,16 @@ public class TaskController {
     }
 
     @RequestMapping("/getRecentTask")
-    public HttpRespMsg getRecentTask(Integer projectId) {
+    public HttpRespMsg getRecentTask(Integer projectId, @RequestParam(required = false, defaultValue = "0") Integer isSubstitude) {
         HttpRespMsg msg = new HttpRespMsg();
         String userId = request.getHeader("Token");
+        if (isSubstitude == 0) {
+            msg.data = taskMapper.recentSimpleList(projectId, userId);
+        } else {
+            //代填的情况,获取的是项目中的所有任务
+            msg.data = taskMapper.recentSimpleList(projectId, null);
+        }
 
-        //查询直接子任务
-        QueryWrapper<UserRecentTask> queryWrapper = new QueryWrapper<UserRecentTask>().eq("project_id", projectId).eq("user_id", userId);
-        queryWrapper.orderByDesc("id");
-        msg.data = userRecentTaskService.list(queryWrapper);
         return msg;
     }
 

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskMapper.java

@@ -35,4 +35,6 @@ public interface TaskMapper extends BaseMapper<Task> {
     Integer getProjectTaskCount(Integer companyId);
 
     List getTaskWithProjectName(@Param(Constants.WRAPPER) Wrapper wrapper, Integer pageStart, Integer pageSize);
+
+    List recentSimpleList(Integer projectId, String userId);
 }

+ 13 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml

@@ -83,6 +83,7 @@
         <result column="parent_tname" property="parentTname" />
         <result column="finish_date" property="finishDate" />
         <result column="project_name" property="projectName" />
+        <result column="stages_name" property="stagesName" />
     </resultMap>
 
 
@@ -157,11 +158,22 @@
     </select>
 
     <select id="getTaskWithProjectName" resultMap="RichResultMap">
-        SELECT task.*, project.`project_name` FROM task LEFT JOIN project ON project.id = task.`project_id`
+        SELECT task.*, project.`project_name`, stages.stages_name FROM task LEFT JOIN project ON project.id = task.`project_id`
+        left join stages on stages.id = task.stages_id
         ${ew.customSqlSegment}
         ORDER BY task.indate desc
         <if test="pageStart != null and pageSize != null">
             limit #{pageStart}, #{pageSize}
         </if>
     </select>
+
+    <select id="recentSimpleList" resultType="java.util.Map">
+        select task.id as taskId, task.name as taskName, stages.stages_name as stagesName
+        from task left join stages on stages.id = task.stages_id
+        where task.project_id = #{projectId}
+        <if test="userId != null">
+            and executor_id = #{userId}
+        </if>
+        and task_status = 0 order by task.id desc limit 30
+    </select>
 </mapper>

+ 22 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -64,15 +64,15 @@
       <div class="staff" v-if="!displayTable">
         <!-- 公共 -->
         <div class="public">
-          <el-form :model="addForm" label-width="80px">
+          <el-form :model="addForm" ref="mainAddForm" label-width="80px" :rules="addFormRules">
             <!-- <el-form :model="form" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> -->
             <!-- 报销人 -->
-            <el-form-item label="报销人" >
+            <el-form-item label="报销人" prop="ownerId">
               <!--普通员工只能自己填报自己的 -->
               <el-select v-model="addForm.ownerId" placeholder="请选择报销人" style="width: 150px" :disabled="user.role == 0" filterable="true">
                 <span v-for="(item, index) in users" :key="index">
                   <el-option :label="item.name" :value="item.id"></el-option>
-                </span>
+                </span> 
               </el-select>
             </el-form-item>
             <!-- 填报日期 -->
@@ -271,7 +271,7 @@
         <!-- 内容主体 -->
         <div class="informant"><!--  报销人 -->
           <el-form :model="ParticularsList" label-width="80px">
-            <el-form-item label="报销人" style="width: 270px">
+            <el-form-item label="报销人" style="width: 270px" :rules="{ required: true, message: '请选择报销人', trigger: 'blur' }">
               <!-- <el-input v-show="flg" v-model="ParticularsList.ownerName" disabled ></el-input> -->
               <el-select v-model="ParticularsList.ownerId" placeholder="请选择报销人" style="width: 150px" :disabled="flg || ParticularsList.ownerId == ParticularsList.operatorId">
                 <span v-for="(item, index) in users" :key="index">
@@ -395,6 +395,7 @@ export default {
   props: {},
   data() {
     return {
+      addFormRules:{ownerId: [{ required: true, message: "请选择报销人", trigger: "blur" }],},
       isAuditList: false,
       statusTxt:["审核通过","待审核", "已驳回", "已撤销"],
       user: JSON.parse(sessionStorage.getItem("user")),
@@ -641,9 +642,23 @@ export default {
     },
     // 提交事件
     submits() {
-      this.add()
-      this.addForm = {code:null,ownerId:null,createDate: null,type:this.z, ticketNum:1,remark:null,totalAmount:0,}
-      this.invoiceList = []
+      
+      this.$refs.mainAddForm.validate(valid => {
+            if (valid) {
+              if (this.invoiceList.length == 0) {
+                this.$message({
+                    message: '请添加发票',
+                    type: "error"
+                });
+                return;
+              }
+              this.add();
+                  this.addForm = {code:null,ownerId:null,createDate: null,type:this.z, ticketNum:1,remark:null,totalAmount:0,}
+                  this.invoiceList = []
+              
+            }
+      });
+      
     },
     // 点击新增
     addxz() {

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

@@ -277,7 +277,9 @@
                         <!-- 项目的阶段 -->
                         <span v-if="user.company.packageProject == 1 && domain.stages != null && domain.stages.length> 0" 
                             style="margin-left:30px;">投入阶段</span>
-                        <el-select v-model="domain.stage" placeholder="请选择" style="width:200px;margin-left:10px;" clearable="true" v-if="user.company.packageProject == 1 && domain.stages != null && domain.stages.length> 0"
+                        <el-select v-model="domain.stage" placeholder="请选择" style="width:200px;margin-left:10px;" 
+                        clearable="true" v-if="user.company.packageProject == 1 && domain.stages != null && domain.stages.length> 0"
+                        @change="changeStages(domain, index)"
                         :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                             <el-option v-for="item in domain.stages" :key="item" :label="item" :value="item"></el-option>
                         </el-select>
@@ -337,6 +339,7 @@
                             <span v-if="user.company.packageProject == 1 && domain.stages != null && domain.stages.length> 0" 
                                 style="margin-left:30px;">投入阶段</span>
                             <el-select v-model="domain.stage" placeholder="请选择" style="width:200px;margin-left:10px;" clearable="true" v-if="user.company.packageProject == 1 && domain.stages != null && domain.stages.length> 0"
+                                @change="changeStages(domain, index)"
                             :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                                 <el-option v-for="item in domain.stages" :key="item" :label="item" :value="item"></el-option>
                             </el-select>
@@ -978,10 +981,12 @@
                 //项目相关的近期任务
                 if (this.user.company.packageProject == 1) {
                     this.http.post('/task/getRecentTask',{ 
-                        projectId: domain.projectId
+                        projectId: domain.projectId,
+                        isSubstitude:this.isSubstitude?1:0
                     },
                     res => {
                         if (res.code == "ok") {
+                            this.workForm.domains[index].allTaskList = res.data;
                             this.workForm.domains[index].taskList = res.data;
                             this.$forceUpdate();
                         } 
@@ -1003,6 +1008,15 @@
                     this.getProjectStages(domain, index);
                 }
             },
+            //切换任务阶段
+            changeStages(domain, index) {
+                if (domain.stage == null || domain.stage == '') {
+                    this.workForm.domains[index].taskList = this.workForm.domains[index].allTaskList;
+                } else {
+                    this.workForm.domains[index].taskList = this.workForm.domains[index].allTaskList.filter(t=>t.stagesName == domain.stage);
+                }
+            },
+
             getProjectStages(domain, index) {
                 this.http.post("/stages/getProjectStages", {projectId: domain.projectId},
                     res => {

二进制
fhKeeper/formulahousekeeper/timesheet_h5/src/assets/img/kf.jpg


+ 7 - 0
fhKeeper/formulahousekeeper/timesheet_h5/src/router/index.js

@@ -88,6 +88,13 @@ const router = new Router({
         },
         component: () => import("@/views/project/index")
     },
+    {
+        path: "/error",
+        meta: {
+            title: "错误提示"
+        },
+        component: () => import("@/views/error/index")
+    },
     {
         path: "/my",
         component: () => import("@/views/my/index"),

+ 0 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -716,7 +716,6 @@
             },
 
             getTaskList(projectId) {
-                console.log('==============='+projectId);
                 //如果是专业版,需要列出任务列表
                 if (this.user.company.packageProject == 1) {
                     this.$axios.post("/task/getRecentTask", {projectId: projectId})

+ 56 - 0
fhKeeper/formulahousekeeper/timesheet_h5/src/views/error/index.vue

@@ -0,0 +1,56 @@
+<template>
+    <div>
+        <div class="login_form">
+            <p style="color:red;font-size:16px;">{{errorMsg}}</p>
+            <p style="color:#666;">欢迎添加客服微信,咨询使用</p>
+            <p><img src="../../assets/img/kf.jpg" style="width:100%;" /></p>
+            <p>QQ:3052894409</p>
+            <p>电话:<a href="tel://15895914665">15895914665</a></p>
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+                errorMsg: localStorage.errorMsg,
+                user: JSON.parse(localStorage.userInfo),
+                
+                total: 0,
+                page: 1,
+                size: 20,
+                list: [],
+                loading: false,
+                finished: false,
+                error: false,
+                refreshing: false,
+                
+            };
+        },
+        created() {
+        },
+        methods: {
+            
+
+        },
+
+        mounted() {
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    
+</style>
+<style lang="less">
+.login_form {
+    padding: 30px;;
+}
+.login_form p {
+    line-height: 40px;
+}
+    .van-nav-bar .van-icon , .van-nav-bar__text {
+        color: #20a0ff;
+    }
+</style>

+ 23 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/index/index.vue

@@ -137,15 +137,37 @@
                             });
             this.getMessage();
             this.bindIfNessary();
+            if (localStorage.userInfo != null) {
+                this.getAccountInfo();
+            }
+            
         },
         components: {
             Footer
         },
         methods: {
+            //获取账户信息
+            getAccountInfo() {
+                this.$axios.get('/user/loginByUserId', {params:{userId: this.user.id}})
+                            .then(res => {
+                                console.log(res);
+                                if (res.code == 'error') {
+                                    localStorage.errorMsg = res.msg;
+                                    //账号信息有问题,不能使用。
+                                    this.$router.push("/error");
+                                } else {
+                                    
+                                    localStorage.userInfo = JSON.stringify(res.data);
+                                    this.user = res.data;
+                                } 
+                            }).catch(err=> {
+                                alert('err=' + err);
+                            });
+            },
             bindIfNessary() {
                 let href = window.location.href;
                 var requestUrl = "";
-                if (this.isCorpWX && (this.user.corpwxUserid != null|| this.user.corpwxUserid == undefined || this.user.corpwxUserid == 'undefined')) {//优先检查企业微信环境
+                if (this.isCorpWX && (this.user.corpwxUserid == null|| this.user.corpwxUserid == undefined || this.user.corpwxUserid == 'undefined')) {//优先检查企业微信环境
                     requestUrl = "/wxcorp/bindCorpWeiXin";
                 } else if (this.isWX && (this.user.wxOpenid == null || this.user.wxOpenid == undefined || this.user.wxOpenid == 'undefined')) {
                     requestUrl = "/wechat/bindWeiXin";