|
@@ -36,6 +36,7 @@
|
|
<el-menu-item index="1-12" v-if="permissions.reportPersonnel || permissions.reportResponsible" @click="ssl(11)"><p>{{ $t('statisticsofpersonnelhours') }}</p></el-menu-item>
|
|
<el-menu-item index="1-12" v-if="permissions.reportPersonnel || permissions.reportResponsible" @click="ssl(11)"><p>{{ $t('statisticsofpersonnelhours') }}</p></el-menu-item>
|
|
<el-menu-item index="1-15" v-if="permissions.reportMonthlyPersonnel || permissions.reportResponsiblePersonnel" @click="ssl(14)"><p>{{ $t('ren-yuan-yue-du-gong-shi-biao') }}</p></el-menu-item>
|
|
<el-menu-item index="1-15" v-if="permissions.reportMonthlyPersonnel || permissions.reportResponsiblePersonnel" @click="ssl(14)"><p>{{ $t('ren-yuan-yue-du-gong-shi-biao') }}</p></el-menu-item>
|
|
<el-menu-item index="1-16" v-if="permissions.reportAllDepartmentParticipation || permissions.reportResponsibleDepartmentParticipation" @click="ssl(15)"><p>{{ $t('bumenchanyuqingkuang') }}</p></el-menu-item>
|
|
<el-menu-item index="1-16" v-if="permissions.reportAllDepartmentParticipation || permissions.reportResponsibleDepartmentParticipation" @click="ssl(15)"><p>{{ $t('bumenchanyuqingkuang') }}</p></el-menu-item>
|
|
|
|
+ <el-menu-item index="1-17" v-if="permissions.reportPhaseHours || permissions.reportStageWorkingTime" @click="ssl(16)"><p>项目各分组与阶段工时表</p></el-menu-item>
|
|
<!-- <el-menu-item index="1-12"><p @click="ssl(11)">人员工时统计表</p></el-menu-item> -->
|
|
<!-- <el-menu-item index="1-12"><p @click="ssl(11)">人员工时统计表</p></el-menu-item> -->
|
|
</el-submenu>
|
|
</el-submenu>
|
|
</el-menu>
|
|
</el-menu>
|
|
@@ -69,7 +70,7 @@
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
<!-- 时间段筛选 -->
|
|
<!-- 时间段筛选 -->
|
|
- <template v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 12 || ins == 5">
|
|
|
|
|
|
+ <template v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 12 || ins == 5 || ins == 16">
|
|
<span>
|
|
<span>
|
|
<span class="demonstration" style="color:#999;padding:0 10px">
|
|
<span class="demonstration" style="color:#999;padding:0 10px">
|
|
{{ ins == 15 ? $t('xiang-mu-chuang-jian-shi-jian-duan') : $t('message.period') }}
|
|
{{ ins == 15 ? $t('xiang-mu-chuang-jian-shi-jian-duan') : $t('message.period') }}
|
|
@@ -780,6 +781,21 @@
|
|
<el-table-column align="center" prop="tripPeopleCount" :label="'出差人数'" min-width="150"></el-table-column>
|
|
<el-table-column align="center" prop="tripPeopleCount" :label="'出差人数'" min-width="150"></el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
|
|
|
|
|
|
+ <!-- 项目各分组与阶段工时表 -->
|
|
|
|
+ <el-table v-if="ins == 16" key="16" border :data="groupingItemsArr" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
|
+ <el-table-column align="center" prop="projectCode" label="项目编号" min-width="150"></el-table-column>
|
|
|
|
+ <el-table-column align="center" prop="projectName" label="项目名称" min-width="150"></el-table-column>
|
|
|
|
+ <el-table-column align="center" prop="groupName" label="任务分组" min-width="150"></el-table-column>
|
|
|
|
+ <el-table-column align="center" prop="workingTime" label="分组合计工时" min-width="150"></el-table-column>
|
|
|
|
+ <el-table-column align="center" :label="item" min-width="150" v-for="(item, index) in groupingItemsArrTitle" :key="index">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <div>
|
|
|
|
+ {{scope.row.categoryList | categoryListName(scope.column.label)}}
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+
|
|
<!--工具条-->
|
|
<!--工具条-->
|
|
<el-col :span="24" class="toolbar" v-if="ins != 6">
|
|
<el-col :span="24" class="toolbar" v-if="ins != 6">
|
|
<el-pagination
|
|
<el-pagination
|
|
@@ -1047,13 +1063,14 @@ export default {
|
|
this.$t('pojectbalancesheetincomestatement'),this.$t('customerprojectprofitstatement'),this.$t('projectphasetimesheet'),
|
|
this.$t('pojectbalancesheetincomestatement'),this.$t('customerprojectprofitstatement'),this.$t('projectphasetimesheet'),
|
|
this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
|
|
this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
|
|
this.$t('statisticsofstafffillingintimerate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
|
|
this.$t('statisticsofstafffillingintimerate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
|
|
- this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang')],
|
|
|
|
|
|
+ this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), '各分组与阶段工时表'],
|
|
|
|
|
|
shuzArr: [this.$t('projectreport'),this.$t('projectTaskReport'),this.$t('projectcoststatement'),
|
|
shuzArr: [this.$t('projectreport'),this.$t('projectTaskReport'),this.$t('projectcoststatement'),
|
|
this.$t('projectbalancesheet'),this.$t('customerprojectincomestatement'),this.$t('projectphasetimesheet'),
|
|
this.$t('projectbalancesheet'),this.$t('customerprojectincomestatement'),this.$t('projectphasetimesheet'),
|
|
this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
|
|
this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
|
|
this.$t('employeereporttimelinessrate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
|
|
this.$t('employeereporttimelinessrate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
|
|
- this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang')],
|
|
|
|
|
|
+ this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), '各分组与阶段工时表'],
|
|
|
|
+
|
|
ins: 10000,
|
|
ins: 10000,
|
|
user: JSON.parse(sessionStorage.user),
|
|
user: JSON.parse(sessionStorage.user),
|
|
overTimeList: [], // 项目加班情况统计列表
|
|
overTimeList: [], // 项目加班情况统计列表
|
|
@@ -1112,7 +1129,9 @@ export default {
|
|
year: '2022',
|
|
year: '2022',
|
|
quarter: 1
|
|
quarter: 1
|
|
},
|
|
},
|
|
- exportLoading: false
|
|
|
|
|
|
+ exportLoading: false,
|
|
|
|
+ groupingItemsArr: [],
|
|
|
|
+ groupingItemsArrTitle: []
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {},
|
|
computed: {},
|
|
@@ -1142,7 +1161,6 @@ export default {
|
|
this.monthPersonnel = year + '-' + yue
|
|
this.monthPersonnel = year + '-' + yue
|
|
},
|
|
},
|
|
filters: {
|
|
filters: {
|
|
-
|
|
|
|
numberToCurrency(value) {
|
|
numberToCurrency(value) {
|
|
if (value == undefined || !value) return '0.00'
|
|
if (value == undefined || !value) return '0.00'
|
|
value = value.toFixed(2)
|
|
value = value.toFixed(2)
|
|
@@ -1172,6 +1190,15 @@ export default {
|
|
s += '0';
|
|
s += '0';
|
|
}
|
|
}
|
|
return s;
|
|
return s;
|
|
|
|
+ },
|
|
|
|
+ categoryListName(value, label) {
|
|
|
|
+ let str = '-'
|
|
|
|
+ for(var i in value) {
|
|
|
|
+ if(value[i].stagesName == label) {
|
|
|
|
+ str = value[i].workingTime
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return str
|
|
}
|
|
}
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
@@ -1192,6 +1219,7 @@ export default {
|
|
if(this.permissions.reportPersonnel || this.permissions.reportResponsible) {this.ssl(11);this.defaultActive = '1-12';return}
|
|
if(this.permissions.reportPersonnel || this.permissions.reportResponsible) {this.ssl(11);this.defaultActive = '1-12';return}
|
|
if(this.permissions.reportMonthlyPersonnel || this.permissions.reportResponsiblePersonnel) {this.ssl(14);this.defaultActive = '1-15';return}
|
|
if(this.permissions.reportMonthlyPersonnel || this.permissions.reportResponsiblePersonnel) {this.ssl(14);this.defaultActive = '1-15';return}
|
|
if(this.permissions.reportAllDepartmentParticipation || this.permissions.reportResponsibleDepartmentParticipation) {this.ssl(15);this.defaultActive = '1-16';return}
|
|
if(this.permissions.reportAllDepartmentParticipation || this.permissions.reportResponsibleDepartmentParticipation) {this.ssl(15);this.defaultActive = '1-16';return}
|
|
|
|
+ if(this.permissions.reportPhaseHours || this.permissions.reportStageWorkingTime) {this.ssl(16);this.defaultActive = '1-17';return}
|
|
{this.allWrong = false}
|
|
{this.allWrong = false}
|
|
},
|
|
},
|
|
rowspan(spanArr,position,spanName){
|
|
rowspan(spanArr,position,spanName){
|
|
@@ -1431,8 +1459,12 @@ export default {
|
|
this.getMonthlyPersonnel()
|
|
this.getMonthlyPersonnel()
|
|
} else if(this.ins == 15) {
|
|
} else if(this.ins == 15) {
|
|
this.getDepartmentsInvolved()
|
|
this.getDepartmentsInvolved()
|
|
|
|
+ } else if(this.ins == 16) {
|
|
|
|
+ this.groupingItems()
|
|
|
|
+ }
|
|
|
|
+ if(this.ins != 16) {
|
|
|
|
+ this.getUserList()
|
|
}
|
|
}
|
|
- this.getUserList()
|
|
|
|
},
|
|
},
|
|
exportExcel() {
|
|
exportExcel() {
|
|
var url = "/project";
|
|
var url = "/project";
|
|
@@ -1539,6 +1571,12 @@ export default {
|
|
url += "/exportDeptPartInProjects"
|
|
url += "/exportDeptPartInProjects"
|
|
sl.month = this.monthPersonnel + '-01'
|
|
sl.month = this.monthPersonnel + '-01'
|
|
sl.departmentId = this.departmentIdArray.length > 0 ? this.departmentIdArray[this.departmentIdArray.length - 1] : ''
|
|
sl.departmentId = this.departmentIdArray.length > 0 ? this.departmentIdArray[this.departmentIdArray.length - 1] : ''
|
|
|
|
+ } else if(this.ins == 16) {
|
|
|
|
+ fName = '各分组阶段工时表' + '.xls'
|
|
|
|
+ url += "/exportProjectGroupAndCategoryWorkTime"
|
|
|
|
+ sl.startDate = this.rangeDatas[0]
|
|
|
|
+ sl.endDate = this.rangeDatas[1]
|
|
|
|
+ sl.projectId = this.proJuctId
|
|
}
|
|
}
|
|
this.http.post(url, sl,
|
|
this.http.post(url, sl,
|
|
res => {
|
|
res => {
|
|
@@ -1809,6 +1847,38 @@ export default {
|
|
})
|
|
})
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
+ // 项目各分组与阶段工时表
|
|
|
|
+ groupingItems() {
|
|
|
|
+ this.listLoading = true
|
|
|
|
+ this.http.post('/project/projectGroupAndCategoryWorkTime', {
|
|
|
|
+ startDate: this.rangeDatas[0],
|
|
|
|
+ endDate: this.rangeDatas[1],
|
|
|
|
+ projectId: this.proJuctId,
|
|
|
|
+ pageIndex: this.page,
|
|
|
|
+ pageSize: this.size,
|
|
|
|
+ },
|
|
|
|
+ res => {
|
|
|
|
+ this.listLoading = false
|
|
|
|
+ if (res.code == "ok") {
|
|
|
|
+ // console.log(res.data, '数据来源')
|
|
|
|
+ this.groupingItemsArr = res.data.data
|
|
|
|
+ this.groupingItemsArrTitle = res.data.titleList
|
|
|
|
+ this.total = res.data.total
|
|
|
|
+ } else {
|
|
|
|
+ this.listLoading = false
|
|
|
|
+ this.$message({
|
|
|
|
+ message: res.msg,
|
|
|
|
+ type: "error"
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ error => {
|
|
|
|
+ this.$message({
|
|
|
|
+ message: error,
|
|
|
|
+ type: "error"
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ },
|
|
overTime() {
|
|
overTime() {
|
|
this.listLoading = true;
|
|
this.listLoading = true;
|
|
var obj = {
|
|
var obj = {
|