|
@@ -44,8 +44,8 @@
|
|
|
<el-menu-item index="1-22" v-if="permissions.reportSortScaleTable" @click="ssl(21)"><p>项目分类工时占比表</p></el-menu-item>
|
|
|
<el-menu-item index="1-23" v-if="permissions.reportSortDetailTable || permissions.reportSortSectionDetailTable" @click="ssl(22)"><p>分类工时明细表</p></el-menu-item>
|
|
|
<el-menu-item index="1-24" v-if="permissions.reportStaffProject" @click="ssl(23)"><p>员工项目进度表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-25" v-if="permissions.reportProjectConsumptionFirst" @click="ssl(24)"><p>项目耗用进度表1</p></el-menu-item>
|
|
|
- <el-menu-item index="1-26" v-if="permissions.reportProjectConsumptionTwo" @click="ssl(25)"><p>项目耗用进度表2</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-25" v-if="permissions.reportProjectConsumptionFirst" @click="ssl(24)"><p>分组耗用进度表</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-26" v-if="permissions.reportProjectConsumptionTwo" @click="ssl(25)"><p>项目耗用进度表</p></el-menu-item>
|
|
|
<el-menu-item index="1-27" v-if="permissions.reportStaffTaskAccomplished" @click="ssl(26)"><p>员工任务完成表</p></el-menu-item>
|
|
|
</el-submenu>
|
|
|
</el-menu>
|
|
@@ -78,8 +78,8 @@
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
- <!-- 时间段筛选 -->
|
|
|
- <template v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 12 || ins == 5 || ins == 16 || ins == 17 || ins == 18 || ins == 20 || ins == 21 || ins == 22">
|
|
|
+ <!-- 时间段筛选 ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 12 || ins == 5 || ins == 16 || ins == 17 || ins == 18 || ins == 20 || ins == 21 || ins == 22 -->
|
|
|
+ <template v-if="screeningCondition.timePeriod.includes(ins)">
|
|
|
<span>
|
|
|
<span class="demonstration" style="color:#999;padding:0 10px">
|
|
|
{{ ins == 15 ? $t('xiang-mu-chuang-jian-shi-jian-duan') : $t('message.period') }}
|
|
@@ -95,7 +95,17 @@
|
|
|
项目分类
|
|
|
</span>
|
|
|
<el-select v-model="projectSortId" placeholder="请选择" @change="picks()" size="small">
|
|
|
- <el-option v-for="item in projectSortList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
+ <el-option v-for="item in projectSortList" :key="item.id" :label="item.name" :value="item.id" ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ <template v-if="ins == 25">
|
|
|
+ <span>
|
|
|
+ <span class="demonstration" style="color:#999;padding:0 10px">
|
|
|
+ 项目分类
|
|
|
+ </span>
|
|
|
+ <el-select v-model="projectSortIdTwo" placeholder="请选择" @change="picks()" size="small" clearable>
|
|
|
+ <el-option v-for="item in projectSortListTwo" :key="item.id" :label="item.name" :value="item.id" ></el-option>
|
|
|
</el-select>
|
|
|
</span>
|
|
|
</template>
|
|
@@ -106,7 +116,8 @@
|
|
|
<el-option label="查看部门审核人" :value="0"></el-option>
|
|
|
</el-select> -->
|
|
|
<!-- 项目筛选 -->
|
|
|
- <el-select v-if="ins != 4 && ins != 8 && ins != 9 && ins != 19 && ins != 10 && ins != 11 && ins != 14 && ins != 15 && ins != 17 && ins != 20 && ins != 21 && ins != 22" v-model="proJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="projectChange()" style="margin-left:10px">
|
|
|
+ <!-- <el-select v-if="ins != 4 && ins != 8 && ins != 9 && ins != 19 && ins != 10 && ins != 11 && ins != 14 && ins != 15 && ins != 17 && ins != 20 && ins != 21 && ins != 22" v-model="proJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="projectChange()" style="margin-left:10px"> -->
|
|
|
+ <el-select v-if="!screeningCondition.project.includes(ins)" v-model="proJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="projectChange()" style="margin-left:10px">
|
|
|
<el-option v-for="(item) in proListOvertime" :key="item.id" :label="item.projectName + (item.projectCode ? item.projectCode : '')" :value="item.id">
|
|
|
<span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
|
|
|
<span style="float: right;font-size: 13px;margin-left: 20px">{{ item.projectName }}</span>
|
|
@@ -125,17 +136,17 @@
|
|
|
<el-select v-if="ins == 16" multiple v-model="groupNames" @change="onGroupSelectChange" clearable size="small" filterable collapse-tags placeholder="请选择任务分组" style="margin-left:10px;">
|
|
|
<el-option v-for="item in taskgroupList" :key="item.name" :label="item.name" :value="item.name"></el-option>
|
|
|
</el-select>
|
|
|
- <!-- 月份选择 -->
|
|
|
- <el-date-picker v-if="ins == 14 || ins == 15 || ins == 19" value-format="yyyy-MM" v-model="monthPersonnel" type="month" :placeholder="$t('Selectmonth')" :clearable="false" @change="selcts()" size="small"></el-date-picker>
|
|
|
+ <!-- 月份选择 v-if="ins == 14 || ins == 15 || ins == 19" -->
|
|
|
+ <el-date-picker v-if="screeningCondition.months.includes(ins)" value-format="yyyy-MM" v-model="monthPersonnel" type="month" :placeholder="$t('Selectmonth')" :clearable="false" @change="selcts()" size="small"></el-date-picker>
|
|
|
|
|
|
- <!-- 部门筛选 -->
|
|
|
- <el-cascader v-if="(ins == 15 || (ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14)) && user.userNameNeedTranslate != 1" v-model="departmentIdArray" :options="departmentList" :placeholder="$t('qing-xuan-ze-bu-men')"
|
|
|
+ <!-- 部门筛选 ins == 15 || (ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14) -->
|
|
|
+ <el-cascader v-if="(screeningCondition.departments.includes(ins) || (ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel)) && user.userNameNeedTranslate != 1" v-model="departmentIdArray" :options="departmentList" :placeholder="$t('qing-xuan-ze-bu-men')"
|
|
|
:props="{ checkStrictly: true,expandTrigger: 'hover',multiple: ins == 6 ? true : false }" collapse-tags :show-all-levels="false" clearable
|
|
|
@change="selcts(9)" size="small" style="margin-left:10px"
|
|
|
></el-cascader>
|
|
|
|
|
|
<!-- 部门筛选 -->
|
|
|
- <vueCascader :size="'small'" :widthStr="'125'" :clearable="true" :subject="departmentList" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="((ins == 15 || (ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14)) && user.userNameNeedTranslate == 1)" :selectNameChuan="$t('qing-xuan-ze-bu-men')"></vueCascader>
|
|
|
+ <vueCascader :size="'small'" :widthStr="'125'" :clearable="true" :subject="departmentList" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="(screeningCondition.departments.includes(ins) || (ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel)) && user.userNameNeedTranslate == 1" :selectNameChuan="$t('qing-xuan-ze-bu-men')"></vueCascader>
|
|
|
<!-- <vueCascader :size="'small'" :widthStr="'125'" :clearable="true" :subject="departmentList" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="((ins == 15 || (ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel) || (ins == 14)) && user.userNameNeedTranslate != 1)" :selectNameChuan="$t('qing-xuan-ze-bu-men')"></vueCascader> -->
|
|
|
|
|
|
<!-- 任务筛选 -->
|
|
@@ -155,12 +166,12 @@
|
|
|
<el-option :label="item" :value="item" v-for="item,index in areaList" :key="index"></el-option>
|
|
|
</el-select>
|
|
|
|
|
|
- <!-- 人员筛选 -->
|
|
|
- <el-select v-if="(ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 14 || ins == 18) && user.userNameNeedTranslate != '1'" v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="width:100px">
|
|
|
+ <!-- 人员筛选 ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 14 || ins == 18 -->
|
|
|
+ <el-select v-if="(screeningCondition.staff.includes(ins)) && user.userNameNeedTranslate != '1'" v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="width:100px">
|
|
|
<el-option v-for="(item, index) in selUserList" :key="index" :label="item.name" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
|
|
|
- <selectCat :subject="selUserList" :filterable="true" :searchBoxTop="'1'" :subjectId="userId" :clearable="true" :size="mini" @selectCal="selectCal" v-if="(ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 14 || ins == 18) && user.userNameNeedTranslate == '1'"></selectCat>
|
|
|
+ <selectCat :subject="selUserList" :filterable="true" :searchBoxTop="'1'" :subjectId="userId" :clearable="true" :size="mini" @selectCal="selectCal" v-if="(screeningCondition.staff.includes(ins)) && user.userNameNeedTranslate == '1'"></selectCat>
|
|
|
|
|
|
|
|
|
<!-- 待审核筛选切换 -->
|
|
@@ -1027,7 +1038,7 @@
|
|
|
<ww-open-data type='departmentName' :openid='scope.row.deptName'></ww-open-data>
|
|
|
</span>
|
|
|
<span v-if="user.userNameNeedTranslate != '1'">
|
|
|
- {{scope.row.userName}}
|
|
|
+ {{scope.row.deptName}}
|
|
|
</span>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -1057,8 +1068,130 @@
|
|
|
</el-table-column>
|
|
|
|
|
|
</el-table>
|
|
|
+
|
|
|
+ <!-- 员工项目进度表 -->
|
|
|
+ <el-table v-if="ins == 23" :key="23" border :data="isbeCustomReport.projectSchedule" highlight-current-row v-loading="listLoading" :height="(+tableHeight) - 1" style="width: 100%;" :span-method="objectSpanMethod">
|
|
|
+ <el-table-column align="center" prop="departmentName" label="部门" width="150">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'">
|
|
|
+ <ww-open-data type='departmentName' :openid='scope.row.departmentName'></ww-open-data>
|
|
|
+ </span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">
|
|
|
+ {{scope.row.deptName}}
|
|
|
+ </span>
|
|
|
+ <!-- {{ scope.row.departmentName }} -->
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="center" prop="userName" label="人员" width="150">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'">
|
|
|
+ <ww-open-data type='userName' :openid='scope.row.userName'></ww-open-data>
|
|
|
+ </span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">
|
|
|
+ {{scope.row.userName}}
|
|
|
+ </span>
|
|
|
+ <!-- {{scope.row.userName}} -->
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="center" prop="projectName" label="项目名称"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="projectCode" label="项目编号"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="residueTime" label="剩余工时(h)" width="150"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <!-- 分组耗用进度表 -->
|
|
|
+ <el-table v-if="ins == 24" :key="24" border :data="isbeCustomReport.consumptionSchedule" highlight-current-row v-loading="listLoading" :height="(+tableHeight + 50) - 1" style="width: 100%;" :span-method="objectSpanMethod">
|
|
|
+ <el-table-column align="center" prop="department_name" label="负责部门" min-width="150">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'">
|
|
|
+ <ww-open-data type='departmentName' :openid='scope.row.corpwxDeptId'></ww-open-data>
|
|
|
+ </span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">
|
|
|
+ {{scope.row.departmentName}}
|
|
|
+ </span>
|
|
|
+ <!-- {{ scope.row.corpwxDeptId }} -->
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="center" prop="groupName" label="任务分组" min-width="150"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="planHour" label="计划工时(财务)" width="120"></el-table-column>
|
|
|
+ <el-table-column align="center" label="实际工时成本">
|
|
|
+ <el-table-column align="center" prop="normalHour" label="正常工时(h)" width="100"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="overHour" label="加班工时(h)" width="100"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="realHour" label="合计工时(h)" width="100"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="realCost" label="合计工时成本" width="140"></el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="center" prop="process" label="工时耗用率" width="150"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <!-- 项目耗用进度表 -->
|
|
|
+ <el-table v-if="ins == 25" :key="25" border :data="isbeCustomReport.consumptionScheduleTwo" highlight-current-row v-loading="listLoading" :height="(+tableHeight) - 1" style="width: 100%;" >
|
|
|
+ <el-table-column align="center" prop="projectName" label="项目名称" min-width="220"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="categoryName" label="项目分类" min-width="150"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="projectCode" label="项目编号" min-width="150"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="planHour" label="分配工时(h)" width="100"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="realHour" label="已消耗工时(h)" width="120"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="realCost" label="已消耗工时成本(¥)" width="150"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="residueHour" label="剩余工时(h)" width="100"></el-table-column>
|
|
|
+ <el-table-column align="center" label="参与员工" min-width="150">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div class="participatingEmployee">
|
|
|
+ <div v-for="(item,index) in scope.row.userProgress" :key="index">
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'">
|
|
|
+ <ww-open-data type='userName' :openid='item.userName'></ww-open-data>
|
|
|
+ {{item.progress}}%
|
|
|
+ </span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">
|
|
|
+ {{item.userName}} {{item.progress}}%
|
|
|
+ </span>
|
|
|
+ <!-- {{item.userName}} {{item.progress}}% -->
|
|
|
+ <span v-if="index < scope.row.userProgress.length - 1">,</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <!-- 员工任务完成表 -->
|
|
|
+ <el-table v-if="ins == 26" :key="26" border :data="isbeCustomReport.taskCompletionSheet" highlight-current-row v-loading="listLoading" :height="(+tableHeight) - 1" style="width: 100%;" :span-method="objectSpanMethod">
|
|
|
+ <el-table-column align="center" prop="departmentName" label="部门" min-width="150">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'">
|
|
|
+ <ww-open-data type='departmentName' :openid='scope.row.departmentName'></ww-open-data>
|
|
|
+ </span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">
|
|
|
+ {{scope.row.departmentName}}
|
|
|
+ </span>
|
|
|
+ <!-- {{ scope.row.departmentName }} -->
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="center" prop="w" label="人员" min-width="150">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'">
|
|
|
+ <ww-open-data type='userName' :openid='scope.row.userName'></ww-open-data>
|
|
|
+ </span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">
|
|
|
+ {{scope.row.userName}}
|
|
|
+ </span>
|
|
|
+ <!-- {{scope.row.userName}} -->
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="center" prop="projectName" label="项目名称" min-width="150"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="projectCode" label="项目编号" min-width="150"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="taskName" label="项目任务" min-width="150"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="planHour" label="计划工时(h)" min-width="150"></el-table-column>
|
|
|
+ <el-table-column align="center" prop="consumeTime" label="消耗工时(h)" min-width="150"></el-table-column>
|
|
|
+ </el-table>
|
|
|
<!--工具条-->
|
|
|
- <el-col :span="24" class="toolbar" v-if="ins != 6 && ins != 20 && ins != 21">
|
|
|
+ <el-col :span="24" class="toolbar" v-if="ins != 6 && ins != 20 && ins != 21 && ins != 24">
|
|
|
<el-pagination
|
|
|
v-if="ins == 12"
|
|
|
@size-change="groupSizeChange"
|
|
@@ -1318,7 +1451,13 @@ export default {
|
|
|
props: {},
|
|
|
data() {
|
|
|
return {
|
|
|
-
|
|
|
+ screeningCondition: { // 筛选条件的判断
|
|
|
+ project: [4, 8, 9, 10, 11, 14, 15, 17, 19, 20, 21, 22, 24], // 项目筛选条件 (不等于)
|
|
|
+ months: [14, 15, 19], // 月份筛选条件 (等于)
|
|
|
+ staff: [6, 8, 9, 19, 11, 14, 18, 23, 25, 26], // 人员筛选条件 (等于)
|
|
|
+ departments: [14, 15, 23, 26], // 部门筛选条件 (等于)
|
|
|
+ timePeriod: [5, 6, 8, 9, 10, 11, 12, 16, 17, 18, 20, 21, 22, 24, 26], // 时间段筛选条件 (等于)
|
|
|
+ },
|
|
|
efficentList:[],
|
|
|
groupNames: [],
|
|
|
taskgroupList: [],
|
|
@@ -1376,14 +1515,14 @@ export default {
|
|
|
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('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), '子项目工时成本表', '任务重启表', 'FTE报表', '有效工时率表', '项目分类工时占比表', '分类工时明细表',
|
|
|
- '员工项目进度表', '项目耗用进度表1', '项目耗用进度表2', '员工任务完成表'],
|
|
|
+ '员工项目进度表', '分组耗用进度表', '项目耗用进度表', '员工任务完成表'],
|
|
|
|
|
|
shuzArr: [this.$t('projectreport'),this.$t('projectTaskReport'),this.$t('projectcoststatement'),
|
|
|
this.$t('projectbalancesheet'),this.$t('customerprojectincomestatement'),this.$t('projectphasetimesheet'),
|
|
|
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('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), '子项目工时成本表', '任务重启表', 'FTE报表','有效工时率表', '项目分类工时占比表', '分类工时明细表',
|
|
|
- '员工项目进度表', '项目耗用进度表1', '项目耗用进度表2', '员工任务完成表'],
|
|
|
+ '员工项目进度表', '分组耗用进度表', '项目耗用进度表', '员工任务完成表'],
|
|
|
|
|
|
ins: 10000,
|
|
|
user: JSON.parse(sessionStorage.user),
|
|
@@ -1499,11 +1638,20 @@ export default {
|
|
|
projectSortId: '', // 项目分类选中的id
|
|
|
projectSortName: '', // 项目分类选中的Name
|
|
|
projectSortList: [], // 项目分类
|
|
|
+ projectSortListTwo: [],
|
|
|
+ projectSortIdTwo: '',
|
|
|
|
|
|
projectTaskgroupList: [], // 选择项目的任务分组
|
|
|
projectGroupId: '', // 选择项目的任务分组id
|
|
|
|
|
|
detailProjectId:null,//报销费用详情项目id
|
|
|
+
|
|
|
+ isbeCustomReport: { // 依斯倍定制报表数据
|
|
|
+ projectSchedule: [], // 员工项目进度表
|
|
|
+ consumptionSchedule: [], // 分组耗用进度表
|
|
|
+ consumptionScheduleTwo: [], // 项目耗用进度表
|
|
|
+ taskCompletionSheet: [], // 员工任务完成表
|
|
|
+ }
|
|
|
};
|
|
|
},
|
|
|
computed: {},
|
|
@@ -1611,13 +1759,14 @@ export default {
|
|
|
if(this.permissions.reportStaffTaskAccomplished) {this.ssl(26);this.defaultActive = '1-27';return} else
|
|
|
{this.allWrong = false}
|
|
|
},
|
|
|
- rowspan(spanArr,position,spanName){
|
|
|
- this.list1.forEach((item,index) => {
|
|
|
+ rowspan(spanArr,position,spanName,dataItem = []){
|
|
|
+ let newArray = dataItem.length > 0 ? dataItem : this.list1
|
|
|
+ newArray.forEach((item,index) => {
|
|
|
if(index == 0){
|
|
|
spanArr.push(1)
|
|
|
position = 0
|
|
|
}else {
|
|
|
- if(this.list1[index][spanName] == this.list1[index-1][spanName]){
|
|
|
+ if(newArray[index][spanName] == newArray[index-1][spanName]){
|
|
|
spanArr[position] += 1
|
|
|
spanArr.push(0)
|
|
|
}else {
|
|
@@ -1629,7 +1778,7 @@ export default {
|
|
|
},
|
|
|
objectSpanMethod({ row, column, rowIndex, columnIndex }){
|
|
|
const { companyId } = this.user
|
|
|
- if(columnIndex == 0){
|
|
|
+ if(columnIndex == 0 && this.listArr1.length > 0){
|
|
|
const _row = this.listArr1[rowIndex]
|
|
|
const _col = _row > 0 ? 1 : 0
|
|
|
return {
|
|
@@ -1637,7 +1786,7 @@ export default {
|
|
|
colspan: _col
|
|
|
}
|
|
|
}
|
|
|
- if(columnIndex == 1){
|
|
|
+ if(columnIndex == 1 && this.listArr2.length > 0){
|
|
|
const _row = this.listArr2[rowIndex]
|
|
|
const _col = _row > 0 ? 1 : 0
|
|
|
return {
|
|
@@ -1645,7 +1794,7 @@ export default {
|
|
|
colspan: _col
|
|
|
}
|
|
|
}
|
|
|
- if(columnIndex == 2 && companyId == '3092') {
|
|
|
+ if(columnIndex == 2 && companyId == '3092' && this.listArr3.length > 0) {
|
|
|
const _row = this.listArr3[rowIndex]
|
|
|
const _col = _row > 0 ? 1 : 0
|
|
|
return {
|
|
@@ -1859,7 +2008,7 @@ export default {
|
|
|
this.getGroupWorktimeAll()
|
|
|
},
|
|
|
getList(e) {
|
|
|
- let noUserList = [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
|
|
|
+ let noUserList = [16, 17, 18, 19, 20, 21, 22, 24, 25, 26]
|
|
|
if(this.ins == 15) {
|
|
|
this.rangeDatas = null
|
|
|
} else if(!e){
|
|
@@ -1926,6 +2075,19 @@ export default {
|
|
|
if(this.ins == 22) {
|
|
|
this.getHoursDetailClass()
|
|
|
}
|
|
|
+
|
|
|
+ if(this.ins == 23) {
|
|
|
+ this.getProjectSchedule()
|
|
|
+ }
|
|
|
+ if(this.ins == 24) {
|
|
|
+ this.getConsumptionSchedule()
|
|
|
+ }
|
|
|
+ if(this.ins == 25) {
|
|
|
+ this.getConsumptionScheduleTwo()
|
|
|
+ }
|
|
|
+ if(this.ins == 26) {
|
|
|
+ this.getTaskCompletionSheet()
|
|
|
+ }
|
|
|
},
|
|
|
exportExcel() {
|
|
|
var url = "/project";
|
|
@@ -2074,6 +2236,33 @@ export default {
|
|
|
sl.categoryId = this.projectSortId
|
|
|
sl.startDate = this.rangeDatas[0]
|
|
|
sl.endDate = this.rangeDatas[1]
|
|
|
+ } else if(this.ins == 23) {
|
|
|
+ fName = '员工项目进度表' + '.xlsx'
|
|
|
+ url = "/project/exportUserProjectProcessList"
|
|
|
+ let dept = this.departmentIdArray[this.departmentIdArray.length - 1]
|
|
|
+ this.proJuctId ? sl.projectId = this.proJuctId : ''
|
|
|
+ this.userId ? sl.userId = this.userId : ''
|
|
|
+ dept ? sl.deptId = dept : ''
|
|
|
+ } else if(this.ins == 24) {
|
|
|
+ fName = '分组耗用进度表' + '.xlsx'
|
|
|
+ url = "/project/exportGroupExpendProcessList"
|
|
|
+ sl.startDate = this.rangeDatas[0]
|
|
|
+ sl.endDate = this.rangeDatas[1]
|
|
|
+ } else if(this.ins == 25) {
|
|
|
+ fName = '项目耗用进度表' + '.xlsx'
|
|
|
+ url = "/project/exportProjectExpendProcessList"
|
|
|
+ this.proJuctId ? sl.projectId = this.proJuctId : ''
|
|
|
+ this.userId ? sl.userId = this.userId : ''
|
|
|
+ this.projectSortIdTwo ? sl.categoryId = this.projectSortIdTwo : ''
|
|
|
+ } else if(this.ins == 26) {
|
|
|
+ fName = '员工任务完成表' + '.xlsx'
|
|
|
+ url = "/project/exportUserTaskProcessList"
|
|
|
+ let dept = this.departmentIdArray[this.departmentIdArray.length - 1]
|
|
|
+ this.proJuctId ? sl.projectId = this.proJuctId : ''
|
|
|
+ this.userId ? sl.userId = this.userId : ''
|
|
|
+ dept ? sl.deptId = dept : ''
|
|
|
+ sl.startDate = this.rangeDatas[0]
|
|
|
+ sl.endDate = this.rangeDatas[1]
|
|
|
}
|
|
|
this.http.post(url, sl,
|
|
|
res => {
|
|
@@ -3168,6 +3357,19 @@ export default {
|
|
|
console.log(this.projectSortName)
|
|
|
this.getHoursDetailClass()
|
|
|
}
|
|
|
+
|
|
|
+ if(this.ins == 23) {
|
|
|
+ this.getProjectSchedule()
|
|
|
+ }
|
|
|
+ if(this.ins == 24) {
|
|
|
+ this.getConsumptionSchedule()
|
|
|
+ }
|
|
|
+ if(this.ins == 25) {
|
|
|
+ this.getConsumptionScheduleTwo()
|
|
|
+ }
|
|
|
+ if(this.ins == 26) {
|
|
|
+ this.getTaskCompletionSheet()
|
|
|
+ }
|
|
|
},
|
|
|
// 任务重启表
|
|
|
taskRestart() {
|
|
@@ -3488,6 +3690,7 @@ export default {
|
|
|
let dataList = data || []
|
|
|
dataList.push({id: 0, name: '未分类'})
|
|
|
this.projectSortList = dataList
|
|
|
+ this.projectSortListTwo = dataList.filter((item) => item.name == '报价项目' || item.name == '售后工程项目' || item.name == '售后报价项目')
|
|
|
this.projectSortId = dataList[0].id
|
|
|
this.projectSortName = dataList[0].name
|
|
|
},
|
|
@@ -3498,10 +3701,100 @@ export default {
|
|
|
})
|
|
|
this.projectTaskgroupList = data
|
|
|
},
|
|
|
+ // 合并重置数据
|
|
|
+ resetMerge() {
|
|
|
+ this.listArr1 = []
|
|
|
+ this.listArr2 = []
|
|
|
+ this.listArr3 = []
|
|
|
+ this.listPosition1 = 0
|
|
|
+ this.listPosition2 = 0
|
|
|
+ this.listPosition3 = 0
|
|
|
+ },
|
|
|
+ // 获取员工项目进度表
|
|
|
+ async getProjectSchedule() {
|
|
|
+ let parameter = {
|
|
|
+ pageIndex: this.page,
|
|
|
+ pageSize: this.size,
|
|
|
+ }
|
|
|
+ let dept = this.departmentIdArray[this.departmentIdArray.length - 1]
|
|
|
+ this.proJuctId ? parameter.projectId = this.proJuctId : ''
|
|
|
+ this.userId ? parameter.userId = this.userId : ''
|
|
|
+ dept ? parameter.deptId = dept : ''
|
|
|
+ this.listLoading = true
|
|
|
+ let { data } = await this.postData('/project/userProjectProcessList', {
|
|
|
+ ...parameter
|
|
|
+ })
|
|
|
+ this.resetMerge()
|
|
|
+ this.rowspan(this.listArr1, this.listPosition1, 'corpwxDeptId', data.record)
|
|
|
+ this.rowspan(this.listArr2, this.listPosition2, 'corpwxUserId', data.record)
|
|
|
+ this.isbeCustomReport.projectSchedule = data.record
|
|
|
+ this.total = data.total
|
|
|
+ this.listLoading = false
|
|
|
+ },
|
|
|
+ // 分组耗用进度表
|
|
|
+ async getConsumptionSchedule() {
|
|
|
+ let parameter = {
|
|
|
+ startDate: this.rangeDatas[0],
|
|
|
+ endDate: this.rangeDatas[1],
|
|
|
+ }
|
|
|
+ this.listLoading = true
|
|
|
+ let { data } = await this.postData('/project/groupExpendProcessList', {
|
|
|
+ ...parameter
|
|
|
+ })
|
|
|
+ this.resetMerge()
|
|
|
+ this.rowspan(this.listArr1, this.listPosition1, 'corpwxDeptId', data.record)
|
|
|
+ this.isbeCustomReport.consumptionSchedule = data.record
|
|
|
+ this.total = data.total
|
|
|
+ this.listLoading = false
|
|
|
+ },
|
|
|
+ // 项目耗用进度表
|
|
|
+ async getConsumptionScheduleTwo() {
|
|
|
+ let parameter = {
|
|
|
+ pageIndex: this.page,
|
|
|
+ pageSize: this.size,
|
|
|
+ }
|
|
|
+ this.proJuctId ? parameter.projectId = this.proJuctId : ''
|
|
|
+ this.userId ? parameter.userId = this.userId : ''
|
|
|
+ this.projectSortIdTwo ? parameter.categoryId = this.projectSortIdTwo : ''
|
|
|
+ this.listLoading = true
|
|
|
+ let { data } = await this.postData('/project/projectExpendProcessList', {
|
|
|
+ ...parameter
|
|
|
+ })
|
|
|
+ this.isbeCustomReport.consumptionScheduleTwo = data.record
|
|
|
+ this.total = data.total
|
|
|
+ this.listLoading = false
|
|
|
+ },
|
|
|
+ // 员工任务完成表
|
|
|
+ async getTaskCompletionSheet() {
|
|
|
+ let parameter = {
|
|
|
+ pageIndex: this.page,
|
|
|
+ pageSize: this.size,
|
|
|
+ startDate: this.rangeDatas[0],
|
|
|
+ endDate: this.rangeDatas[1],
|
|
|
+ }
|
|
|
+ let dept = this.departmentIdArray[this.departmentIdArray.length - 1]
|
|
|
+ this.proJuctId ? parameter.projectId = this.proJuctId : ''
|
|
|
+ this.userId ? parameter.userId = this.userId : ''
|
|
|
+ dept ? parameter.deptId = dept : ''
|
|
|
+ this.listLoading = true
|
|
|
+ let { data } = await this.postData('/project/userTaskProcessList', {
|
|
|
+ ...parameter
|
|
|
+ })
|
|
|
+ this.resetMerge()
|
|
|
+ this.rowspan(this.listArr1, this.listPosition1, 'corpwxDeptId', data.record)
|
|
|
+ this.rowspan(this.listArr2, this.listPosition2, 'corpwxUserId', data.record)
|
|
|
+ this.isbeCustomReport.taskCompletionSheet = data.record
|
|
|
+ this.total = data.total
|
|
|
+ this.listLoading = false
|
|
|
+ }
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
<style scoped>
|
|
|
+.participatingEmployee {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+}
|
|
|
.sliderSetup {
|
|
|
display: flex;
|
|
|
align-items: center;
|