seyason 1 tahun lalu
induk
melakukan
d8da407cdc

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

@@ -313,7 +313,11 @@
                                 <i class="el-icon-question" style="color:#606266"></i>
                             </el-tooltip>
             </el-tag>
-
+        </div>
+        <div class="yanjiu">
+            <p style="margin-left:10px;color:#666;">项目超期后不可填报</p>
+            <el-switch style="margin-left: 40px" v-model="timeType.notAllowedExpiredProject" active-color="#20a0ff" > </el-switch>
+            <span style="margin-left:10px;color:#999;">开启后超过计划结束日期的项目将不可填报</span>
         </div>
         <!-- <p style="margin-left:10px;color:#666;" v-if="user.timeType.pushReportData == 1">推送工时设置</p>
         <el-row :gutter="20" style="padding-top:10px;width:100%;margin:0 auto;padding-left:10px;padding-right:10px;" v-if="user.timeType.pushReportData == 1">
@@ -1286,6 +1290,7 @@
                         param.mainProjectState = param.mainProjectState ? 1 : 0
                         param.stopReport = param.stopReport? 1: 0;
                         param.notAllowedOnNonWorkday = param.notAllowedOnNonWorkday? 1: 0;
+                        param.notAllowedExpiredProject = param.notAllowedExpiredProject? 1: 0;
                         if(param.lockWorktime){
                             param.fillOvertime = 0
                             param.payOvertime = 0
@@ -1375,6 +1380,7 @@
                             this.timeType.reportAutoApproveDays = this.timeType.reportAutoApproveDays ? this.timeType.reportAutoApproveDays : 1
                             this.timeType.stopReport = this.timeType.stopReport? true: false;
                             this.timeType.notAllowedOnNonWorkday = this.timeType.notAllowedOnNonWorkday? true: false;
+                            this.timeType.notAllowedExpiredProject = this.timeType.notAllowedExpiredProject? true: false;
                             // this.timeType.alertNonWorkday = this.timeType.alertNonWorkday ? true : false
 
                             if(this.timeType.alertNonWorkday) {

+ 109 - 66
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -175,9 +175,15 @@
                                         </span>
                                     </span>
                                     <div class="checkbtn" style="padding-right:20px;">
-                                        <el-button v-if="item1.state >= 2 && user.id == item1.id" type="primary" size="small" @click="isSubstitude=false; fillInReport(index1,0)">{{$t('btn.editWorkReport')}}</el-button>
+                                        <!--编辑和删除日报-->
+                                        
+                                        <el-button v-if="item1.state >= 2 && user.id == item1.id && user.timeType.enableNewWeeklyfill == 1" type="primary" size="small" @click="isSubstitude=false;fillInReportCustom()">{{$t('btn.editWorkReport')}}</el-button>
+                                        <el-button v-if="item1.state >= 2 && user.id == item1.id && user.timeType.enableNewWeeklyfill != 1" type="primary" size="small" @click="isSubstitude=false; fillInReport(index1,0)">{{$t('btn.editWorkReport')}}</el-button>
                                         <el-button v-if="permissions.reportsDeleteAll && item1.state != 1" size="small" @click="guanli(item1)" style="float: right;">{{$t('btn.delete')}}</el-button>
                                     </div>
+                                    <div v-if="user.timeType.enableNewWeeklyfill == 1 && item1.summary != null" style="margin-left:20px;">
+                                        <p v-html="'<b>'+item1.summaryTitle+'</b><br>'+item1.summary.replace(/[\r\n]/g,'<br>')"> </p>
+                                    </div>
                                     <div class="one_daily_body">
                                         <el-timeline>
                                             <el-timeline-item v-for="(item2,index2) in item1.data" :key="index2">
@@ -942,25 +948,6 @@
                 </el-table>
             </el-form>
 
-            <!-- 按周填报项目筛选 -->
-            <!-- <div v-if="selConShow" class="selConStyle">
-                <div class="selConStyle_title">{{$t('defaultText.pleaseSelectTheItemYouWantToFillIn')}}</div>
-                <el-select v-model="selCon" multiple :placeholder="$t('defaultText.pleaseChoose')" filterable>
-                    <el-option
-                    v-for="item in fillProjectList"
-                    :disabled="item.status!=1 && item.status!=4"
-                    :key="item.id"
-                    :label="item.projectName + '\u3000' + item.projectCode"
-                    :value="item.id">
-                    <span style="float: left; color: #8492a6; font-size: 13px">{{ item.projectCode }}</span>
-                    <span style="float: right">{{ item.projectName }}</span>
-                    </el-option>
-                </el-select>
-            </div> -->
-            <!-- <span slot="footer" class="dialog-footer" v-if="selConShow">
-                <el-button @click="selListqx()">{{$t('btn.cancel')}}</el-button>
-                <el-button type="primary" @click="selListFun()">{{$t('btn.nextStep')}}</el-button>
-            </span> -->
             <span slot="footer" class="dialog-footer" >
                 <!-- <el-button @click="zhoAddlast()" style="float:left;" class="el-icon-back">{{$t('defaultText.selectProject')}}</el-button> -->
                 <el-button @click="closeAddWeeklyReport()" :loading="submitingReport">{{$t('btn.cancel')}}</el-button>
@@ -1061,7 +1048,6 @@
                     <el-select v-model="zhoBao.degreeId" :placeholder="$t('defaultText.pleaseChoose')" clearable="true" style="width: 355px" filterable>
                         <el-option v-for="item in zhoBao.wuduList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                     </el-select>
-                    
                 </div>
                 <!-- 自定义数值 -->
                 <div class="zhoFel" v-if="user.timeType.customDataActive">
@@ -1092,7 +1078,7 @@
                 </div>
                 <div class="zhoFel">
                     <p>{{$t('other.workMatters')}}</p>
-                    <el-input type="textarea" v-model="zhoBao.con" :placeholder="$t('other.tianworkMatters')" style="width: 355px" clearable></el-input>
+                    <el-input type="textarea" v-model="zhoBao.content" :placeholder="$t('other.tianworkMatters')" style="width: 355px" clearable></el-input>
                 </div>
             </div>
             <span slot="footer" class="dialog-footer">
@@ -2532,7 +2518,6 @@
                         //最近项目如果在fillProjectList中不存在,需要移除
                         topObj.peojectList = topObj.peojectList.filter(top=>this.fillProjectList.find(fp=>fp.id==top.id) != null);
                         this.integrationProjectList = [topObj, botomObj]
-                        console.log(this.integrationProjectList, '整合')
                     }else {
                         this.$message({
                             message: res.msg,
@@ -5524,6 +5509,39 @@
                 this.dialogVisible = true;
                 
             },
+
+            //按周填报的弹窗口中编辑单项目相关数据
+            setWeekFormReportItem(reportId, i, names, row,sss) {
+                console.log(sss)
+                this.http.post('/report/getReportById', {
+                    reportId: reportId
+                },
+                res => {
+                    if (res.code == "ok") {
+                        var data = res.data.report;
+                        sss.subProjectId = data.subProjectId
+                        sss.subProjectList = data.subProjectList;
+                        sss.stage = data.stage
+                        sss.subProjectList = data.subProjectList
+                        sss.stages = data.stages
+                        sss.taskGroups = data.taskGroups;
+                        sss.auditUserList = data.auditUserList;
+                        sss.degreeId = data.degreeId;
+                        sss.customData = data.customData;
+                        sss.wuduList = data.degreeList;
+                        this.zhoBaoIdx = i
+                        this.zhoBaoName = names
+                        this.zhoBao = sss
+                        this.zhis = row
+                        if (sss.groupId) {
+                            //最后一个参数表示是否保留stage的值,不要重置为空
+                            this.getGroupStages(this.zhoBao, 0, true)
+                        }
+                        this.$forceUpdate();
+                    }
+                });
+            },
+
             // 按周填报里内容的填写
             tianxies(item, i, names, row) {
                 if (item.state == 0) {
@@ -5564,8 +5582,7 @@
                     if(this.projectList[l].projectName == names) idd = this.projectList[l].id
                 }
                 obj.projectId = idd
-                this.selectProject(obj, 0)
-                // console.log(this.workForm.domains[0], '打印出来的')
+                
                 this.tianxieDialogVisible = true
                 this.scopess = item
                 var sss = {}
@@ -5577,9 +5594,10 @@
                     sss.state = 3;
                 }
                 sss.projectId = idd;
-                sss.con = item.con
                 sss.progress = item.progress
                 sss.time = item.time
+                sss.content = item.content;
+                console.log('333', sss.content)
                 if (sss.time == '' && this.reportTimeType.type == 2) {
                     //取已填时间范围中最大的一个作为开始时间
                     var startTime = '09:00';
@@ -5609,44 +5627,68 @@
                     //默认选中第一个
                     sss.basecostId = this.timeBasecostList[0].id;
                 }
-                var that = this
-                setTimeout(() =>{
-                    var isFirstEdit = false;
-                    if(Object.keys(item).length < 5) {
-                        //首次点开当前的这个cell,初始化数据
-                        isFirstEdit = true;
-                        sss.subProjectId = that.workForm.domains[0].subProjectId
-                        sss.stage = that.workForm.domains[0].stage
-                        sss.subProjectList = that.workForm.domains[0].subProjectList
-                        sss.stages = that.workForm.domains[0].stages
-                        sss.taskGroups = that.workForm.domains[0].taskGroups;
-                        sss.auditUserList = obj.auditUserList;
-                    } else {
-                        sss.subProjectId = item.subProjectId
-                        sss.stage = item.stage
-                        sss.subProjectList = item.subProjectList
-                        sss.stages = item.stages
-                        sss.taskGroups = item.taskGroups;
-                        sss.auditUserList = obj.auditUserList;
-                        sss.degreeId = item.degreeId;
-                        sss.customData = item.customData;
-                    }
+                var hasEdited = this.zhoData[i][names].hasEdited;
+                if (hasEdited) {
+                    //编辑过了
+                    sss.subProjectId = item.subProjectId
+                    sss.stage = item.stage
+                    sss.subProjectList = item.subProjectList
+                    sss.stages = item.stages
+                    sss.taskGroups = item.taskGroups;
+                    console.log(sss.taskGroups, '33333');
+                    sss.auditUserList = obj.auditUserList;
+                    sss.degreeId = item.degreeId;
+                    sss.customData = item.customData;
                     if (sss.auditUserList != null && sss.auditUserList.length==1) {
                         //只有一个审核人,自动设置上去
                         sss.projectAuditorId = sss.auditUserList[0].auditorId;
                     }
-                    sss.wuduList = row[0].wuduList
-                    // console.log(sss, '数据')
-                    that.zhoBaoIdx = i
-                    that.zhoBaoName = names
-                    that.zhoBao = sss
-                    that.zhis = row
+                    sss.wuduList = item.wuduList;
+                    this.zhoBaoIdx = i
+                    this.zhoBaoName = names
+                    this.zhoBao = sss
+                    this.zhis = row
                     if (sss.groupId) {
                         //最后一个参数表示是否保留stage的值,不要重置为空
-                        this.getGroupStages(that.zhoBao, 0, !isFirstEdit)
+                        this.getGroupStages(this.zhoBao, 0, true)
                     }
-                    that.$forceUpdate();
-                },600);
+                    this.$forceUpdate();
+                } else {
+                    //第一次打开,获取数据
+                    if (sss.id == -1) {
+                        //新填报的
+                        this.selectProject(obj, 0);
+                        var that = this
+                        setTimeout(() =>{
+                            sss.subProjectId = that.workForm.domains[0].subProjectId
+                            sss.subProjectList = item.subProjectList;
+                            sss.stage = that.workForm.domains[0].stage
+                            sss.subProjectList = that.workForm.domains[0].subProjectList
+                            sss.stages = that.workForm.domains[0].stages
+                            sss.taskGroups = that.workForm.domains[0].taskGroups;
+                            sss.auditUserList = obj.auditUserList;
+                            sss.degreeId = item.degreeId;
+                            sss.customData = item.customData;
+                            if (sss.auditUserList != null && sss.auditUserList.length==1) {
+                                //只有一个审核人,自动设置上去
+                                sss.projectAuditorId = sss.auditUserList[0].auditorId;
+                            }
+                            sss.wuduList = row[0].wuduList
+                            that.zhoBaoIdx = i
+                            that.zhoBaoName = names
+                            that.zhoBao = sss
+                            that.zhis = row
+                            if (sss.groupId) {
+                                //最后一个参数表示是否保留stage的值,不要重置为空
+                                this.getGroupStages(that.zhoBao, 0, false)
+                            }
+                            that.$forceUpdate();
+                        },600);
+                    } else {
+                        //编辑填报过的;数据库已经存在的
+                        this.setWeekFormReportItem(sss.id, i, names, row, sss);
+                    }
+                }
             },
             // 按周填报里内容的填写点击确定
             setWeekProItemData() {
@@ -5699,7 +5741,7 @@
                 if(this.user.timeType.customTextStatus == 1 && !this.zhoBao.customText){
                     errtips += this.user.timeType.customTextName + '、'
                 }
-                if(this.user.timeType.workContentState == 1 && !this.zhoBao.con){
+                if(this.user.timeType.workContentState == 1 && !this.zhoBao.content){
                     errtips +=  this.user.companyId==781?this.$t('other.specificcontentandresults')+'、': this.$t('other.workMatters') +'、'
                 }
                 if(errtips){
@@ -5713,6 +5755,7 @@
 
                 this.tianxieDialogVisible = false
                 var zhong = this.zhoData
+                this.zhoBao.hasEdited = true;
                 zhong[this.zhoBaoIdx][this.zhoBaoName] = this.zhoBao
                 this.zhoData = zhong
                 if(this.reportTimeType.type == 1) this.zhoXuan(this.zhoBao, this.zhoBaoIdx)
@@ -5793,7 +5836,7 @@
                             var xinzhi = this.selProjectList[j].projectName 
                             obj[xinzhi] = {}
                             obj[xinzhi].time = ''
-                            obj[xinzhi].con = ''
+                            obj[xinzhi].content = ''
                             obj[xinzhi].progress = 0
                             obj[xinzhi].workingTime = 0
                         }
@@ -6024,7 +6067,7 @@
                             var pName = newProject.projectName;
                             dayItem[pName] = {};
                             dayItem[pName].time = ''
-                            dayItem[pName].con = ''
+                            dayItem[pName].content = ''
                             dayItem[pName].progress = 0
                             dayItem[pName].workingTime = 0
                         }
@@ -6116,7 +6159,7 @@
                                 var pName = this.selProjectList[j].projectName 
                                 obj[pName] = {}
                                 obj[pName].time = ''
-                                obj[pName].con = ''
+                                obj[pName].content = ''
                                 obj[pName].progress = 0
                                 obj[pName].workingTime = 0
                             }
@@ -6293,10 +6336,10 @@
                                     var objjs = {}
                                     objjs.startTime = zhoD[j].time[0]
                                     objjs.endTime = zhoD[j].time[1]
-                                    if (zhoD[j].con == null || zhoD[j].con == '') {
-                                        zhoD[j].con == '-'
+                                    if (zhoD[j].content == null || zhoD[j].content == '') {
+                                        zhoD[j].content == '-'
                                     }
-                                    objjs.content = zhoD[j].con
+                                    objjs.content = zhoD[j].content
                                     lix.push(objjs)
                                     var zhiZhi = JSON.stringify(lix)
                                     zhiZhi = zhiZhi.replace(/,/g,"@");
@@ -6378,7 +6421,7 @@
                                         formData.append("endTime", zhoD[j].time[1]);
                                         formData.append("startTime", zhoD[j].time[0]);
                                         formData.append("multiWorktime", this.reportTimeType.multiWorktime);
-                                        zhoD[j].con == '' || zhoD[j].con == null ? formData.append("content", '-') : formData.append("content", zhoD[j].con)
+                                        zhoD[j].content == '' || zhoD[j].content == null ? formData.append("content", '-') : formData.append("content", zhoD[j].content)
                                         formData.append("isOvertime", 0)
                                         formData.append("professionProgress", "[]")
                                         if (zhoD[j].groupId) {
@@ -6459,7 +6502,7 @@
                                             formData.append("workingTime", zhoD[j].workingTime);
                                         }
                                         formData.append("multiWorktime", this.reportTimeType.multiWorktime);
-                                        zhoD[j].con == '' || zhoD[j].con == null ? formData.append("content", '-') : formData.append("content", zhoD[j].con)
+                                        zhoD[j].content == '' || zhoD[j].content == null ? formData.append("content", '-') : formData.append("content", zhoD[j].content)
                                         formData.append("isOvertime", 0)
                                         formData.append("professionProgress", "[]")
                                         if (zhoD[j].groupId) {

+ 9 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/weeklyCustomization.vue

@@ -77,6 +77,12 @@
                     </el-table-column>
                 </el-table>
             </div>
+            <div>
+                <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 6}" maxlength="1000" show-word-limit
+                    placeholder="请输入周总结"
+                    v-model="summaryContent">
+                    </el-input>
+            </div>
             <div class="weeklyCustomization_btn">
                 <el-button @click="handleClose()">取 消</el-button>
                 <el-button @click="submitWeekData(1)">暂 存</el-button>
@@ -101,6 +107,7 @@ export default {
     },
     data() {
         return {
+            summaryContent: null,
             weekTableData: [],
             projectList: [],
             nowTime: this.dayjs().format('YYYY-MM-DD'),
@@ -134,6 +141,7 @@ export default {
 
             let formData = new FormData();
             formData.append("draft", draft);
+            formData.append('summary', this.summaryContent);
             let fixation = {
                 id: -1,
                 projectId: '',
@@ -256,6 +264,7 @@ export default {
             }
             let { data } = await this.getData('/report/getWeeklyFillReportData', { targetDate: this.nowTime })
             console.log(JSON.parse(JSON.stringify(data)), '<===== 处理之前的')
+            this.summaryContent = data.summary;
             data.dateList.forEach(dateItem => {
                 const reportList = dateItem.reportList;
                 reportList.forEach(report => {

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

@@ -185,10 +185,8 @@
                 for (var i in list) {
                     if(list[i].name == '工时报告') {
                         this.routers.push({name: '查看日报',url: '/calendar',icon: 'description'})
-                        if(this.user.companyId != '1071') { // 针对物奇公司去掉填写日报
+                        if(this.user.timeType.enableNewWeeklyfill != 1) { // 针对新版按周填报去掉填写日报
                             this.routers.push({name: '填写日报',url: '/edit',icon: 'edit'})
-                            //物奇临时去掉按周填报
-                            // this.routers.push({name: '按周填报',url: '/weekEdit',icon: 'records'})
                         }
                         this.routers.push({name: '按周填报',url: '/weekEdit',icon: 'records'})
                     }

+ 19 - 17
fhKeeper/formulahousekeeper/timesheet_h5/src/views/view/index.vue

@@ -32,6 +32,10 @@
                             <span>{{ parseFloat(item.reportTime).toFixed(1) }}h</span>
                         </span>
                     </div>
+                    <div v-if="user.timeType.enableNewWeeklyfill == 1 && item.summary != null" style="margin-left:20px;"
+                         v-html="'<b>'+item.summaryTitle+'</b><br>'+item.summary.replace(/\r\n/g, '<br>')">
+                        
+                    </div>
                     <div v-for="(item1, index1) in item.data" class="one_report_data" :key="index1">
                         <div class="project_title" style="font-weight:bold;">项目:{{ item1.project }} <span
                                 :style="'color:' + statusColor[item1.state]">[
@@ -242,9 +246,13 @@ export default {
         },
         // 点击编辑
         editor(item) {
-            console.log(item, '编辑')
+            var path = '/edit';
+            if(this.user.timeType.enableNewWeeklyfill == 1) {
+                //物奇要填到按周填报
+                path = '/weekEdit';
+            }
             this.$router.push({
-                path: '/edit',
+                path: path,
                 query: {
                     date: this.nowTime
                 }
@@ -252,23 +260,17 @@ export default {
         },
         // 去填写日报
         toWriteReport() {
-            if(this.user.companyId == '1071') {
+            var path = '/edit';
+            if(this.user.timeType.enableNewWeeklyfill == 1) {
                 //物奇要填到按周填报
-                this.$router.push({
-                    path: '/weekEdit',
-                    query: {
-                        date: this.nowTime
-                    }
-                });
-            } else {
-                this.$router.push({
-                    path: '/edit',
-                    query: {
-                        date: this.nowTime
-                    }
-                });
+                path = '/weekEdit';
             }
-            
+            this.$router.push({
+                path: path,
+                query: {
+                    date: this.nowTime
+                }
+            });
         }
     },
     mounted() {