|
@@ -10,30 +10,30 @@
|
|
|
:default-active="defaultActive"
|
|
|
class="el-menu-vertical-demo"
|
|
|
@select="staffs"
|
|
|
- background-color="#ffffff"
|
|
|
+ background-color="#ffffff"
|
|
|
text-color="#666666"
|
|
|
active-text-color="#20A0FF"
|
|
|
style="width:200px">
|
|
|
<el-submenu index="1">
|
|
|
<template slot="title">
|
|
|
<i class="iconfont firerock-iconbaobiao"></i>
|
|
|
- <span>项目报表服务</span>
|
|
|
+ <span>{{ $t('navigation.projectReportingService') }}</span>
|
|
|
</template>
|
|
|
- <el-menu-item index="1-1" v-if="permissions.reportProject || permissions.reportAllProject"><p @click="ssl(0)">项目报表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-2" v-if="permissions.reportTask || permissions.reportAllTask"><p @click="ssl(1)">项目任务报表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-3" v-if="permissions.reportCostOf || permissions.reportAllCostOf"><p @click="ssl(2)">项目成本报表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-14" v-if="permissions.reportAllOutputValue || permissions.reportOutputValue"><p @click="ssl(13)">项目成本基线表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-9" v-if="permissions.reportAllTimeDivide || permissions.reportTimeDivide"><p @click="ssl(8)">人员工时分配表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-4" v-if="permissions.reportCostWarning"><p @click="ssl(7)">工时成本预警表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-5" v-if="permissions.reportBalance || permissions.reportAllBalance"><p @click="ssl(3)">项目收支平衡表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-6" v-if="user.company.packageCustomer == 1 && permissions.reportProfits"><p @click="ssl(4)">客户项目利润表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-7" v-if="permissions.reportPhase || permissions.reportAllPhase"><p @click="ssl(5)">项目阶段工时表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-13" v-if="permissions.reportAllGroup || permissions.reportGroup"><p @click="ssl(12)">任务分组工时表</p></el-menu-item>
|
|
|
- <el-menu-item index="1-8" v-if="permissions.reportAllOvertime || permissions.reportOvertime"><p @click="ssl(6)">加班情况统计表</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-1" v-if="permissions.reportProject || permissions.reportAllProject"><p @click="ssl(0)">{{ $t('projectreport') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-2" v-if="permissions.reportTask || permissions.reportAllTask"><p @click="ssl(1)">{{ $t('projectTaskReport') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-3" v-if="permissions.reportCostOf || permissions.reportAllCostOf"><p @click="ssl(2)">{{ $t('projectcoststatement') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-14" v-if="permissions.reportAllOutputValue || permissions.reportOutputValue"><p @click="ssl(13)">{{ $t('projectcostbaselinetable') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-9" v-if="permissions.reportAllTimeDivide || permissions.reportTimeDivide"><p @click="ssl(8)">{{ $t('personneltimeallocationtable') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-4" v-if="permissions.reportCostWarning"><p @click="ssl(7)">{{ $t('timecostearlywarningtable') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-5" v-if="permissions.reportBalance || permissions.reportAllBalance"><p @click="ssl(3)">{{ $t('projectbalancesheet') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-6" v-if="user.company.packageCustomer == 1 && permissions.reportProfits"><p @click="ssl(4)">{{ $t('customerprojectincomestatement') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-7" v-if="permissions.reportPhase || permissions.reportAllPhase"><p @click="ssl(5)">{{ $t('projectphasetimesheet') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-13" v-if="permissions.reportAllGroup || permissions.reportGroup"><p @click="ssl(12)">{{ $t('taskgrouptimesheet') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-8" v-if="permissions.reportAllOvertime || permissions.reportOvertime"><p @click="ssl(6)">{{ $t('statisticsofovertimework') }}</p></el-menu-item>
|
|
|
|
|
|
- <el-menu-item index="1-10" v-if="permissions.reportAllTimely || permissions.reportTimely"><p @click="ssl(9)">员工填报及时率</p></el-menu-item>
|
|
|
- <el-menu-item index="1-11" v-if="permissions.reportAuditRate"><p @click="ssl(10)">日报待审核统计</p></el-menu-item>
|
|
|
- <el-menu-item index="1-12" v-if="permissions.reportPersonnel || permissions.reportResponsible"><p @click="ssl(11)">人员工时统计表</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-10" v-if="permissions.reportAllTimely || permissions.reportTimely"><p @click="ssl(9)">{{ $t('employeereporttimelinessrate') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-11" v-if="permissions.reportAuditRate"><p @click="ssl(10)">{{ $t('dailyreporttobereviewedstatistics') }}</p></el-menu-item>
|
|
|
+ <el-menu-item index="1-12" v-if="permissions.reportPersonnel || permissions.reportResponsible"><p @click="ssl(11)">{{ $t('statisticsofpersonnelhours') }}</p></el-menu-item>
|
|
|
<!-- <el-menu-item index="1-12"><p @click="ssl(11)">人员工时统计表</p></el-menu-item> -->
|
|
|
</el-submenu>
|
|
|
</el-menu>
|
|
@@ -55,11 +55,11 @@
|
|
|
<div class="headScreen" style="width:70%">
|
|
|
<!-- 客户项目利润表的筛选 -->
|
|
|
<template v-if="ins == 4">
|
|
|
- <el-select v-model="customerId" placeholder="请选择客户" clearable filterable size="small" @change="selcts(4)" style="margin-right:20px">
|
|
|
+ <el-select v-model="customerId" :placeholder="$t('pleaseelectcustomers')" clearable filterable size="small" @change="selcts(4)" style="margin-right:20px">
|
|
|
<el-option v-for="(item) in customerList" :key="item.id" :label="item.customerName" :value="item.id">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
- <el-select v-model="cusProJuctId" placeholder="请选择项目" clearable filterable size="small" @change="selcts()" popper-class="projectSelectPopperClass">
|
|
|
+ <el-select v-model="cusProJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="selcts()" popper-class="projectSelectPopperClass">
|
|
|
<el-option v-for="(item) in cusProListOvertime" :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;">{{ item.projectName }}</span>
|
|
@@ -68,8 +68,8 @@
|
|
|
</template>
|
|
|
<!-- 时间段筛选 -->
|
|
|
<template v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11 || ins == 12">
|
|
|
- <span class="demonstration" style="color:#999;padding:0 10px">时间段</span>
|
|
|
- <el-date-picker v-model="rangeDatas" type="daterange" value-format="yyyy-MM-dd" placeholder="选择开始日期" @change="picks()" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width:300px" :clearable="false" size="small"> </el-date-picker>
|
|
|
+ <span class="demonstration" style="color:#999;padding:0 10px">{{ $t('message.period') }}</span>
|
|
|
+ <el-date-picker v-model="rangeDatas" type="daterange" value-format="yyyy-MM-dd" :placeholder="$t('selectstartdate')" @change="picks()" :range-separator="$t('other.to')" :start-placeholder="$t('time.startDate')" :end-placeholder="$t('time.endDate')" style="width:300px" :clearable="false" size="small"> </el-date-picker>
|
|
|
</template>
|
|
|
|
|
|
<!-- 按部门/项目筛选 -->
|
|
@@ -78,7 +78,7 @@
|
|
|
<el-option label="查看部门审核人" :value="0"></el-option>
|
|
|
</el-select> -->
|
|
|
<!-- 项目筛选 -->
|
|
|
- <el-select v-if="ins != 4 && ins != 8 && ins != 9 && ins != 10 && ins != 11" v-model="proJuctId" placeholder="请选择项目" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
|
|
|
+ <el-select v-if="ins != 4 && ins != 8 && ins != 9 && ins != 10 && ins != 11" v-model="proJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="selcts()" 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>
|
|
@@ -86,70 +86,70 @@
|
|
|
</el-select>
|
|
|
|
|
|
<!-- 部门筛选 -->
|
|
|
- <el-cascader v-if="(ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel)" v-model="departmentIdArray" :options="departmentList" placeholder="请选择部门"
|
|
|
+ <el-cascader v-if="(ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || (ins == 11 && permissions.reportPersonnel)" v-model="departmentIdArray" :options="departmentList" :placeholder="$t('qing-xuan-ze-bu-men')"
|
|
|
:props="{ checkStrictly: true,expandTrigger: 'hover' }" :show-all-levels="false" clearable
|
|
|
@change="selcts(9)" size="small" style="margin-left:10px"
|
|
|
></el-cascader>
|
|
|
|
|
|
<!-- 任务筛选 -->
|
|
|
- <el-select v-if="ins == 1" v-model="taskTypeId" placeholder="请选择类型" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
|
|
|
+ <el-select v-if="ins == 1" v-model="taskTypeId" :placeholder="$t('pleaseselecttype')" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
|
|
|
<el-option v-for="(item) in taskTypeObj" :key="item.id" :label="item.value" :value="item.id">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
|
|
|
<!-- 人员筛选 -->
|
|
|
- <el-select v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11" v-model="userId" placeholder="请选择人员" @change="selcts()" clearable filterable size="small" style="margin-left:10px;width:150px">
|
|
|
+ <el-select v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10 || ins == 11" v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="margin-left:10px;width:150px">
|
|
|
<el-option v-for="(item, index) in selUserList" :key="index" :label="item.name" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
|
|
|
<!-- 待审核筛选切换 -->
|
|
|
<el-radio-group v-model="stateKey" size="small" v-if="ins == 10 && user.timeType.reportWorkflow == 1" style="margin-left:10px;margin-top:-3.33px" @change="stateKeySel">
|
|
|
- <el-radio-button :label="1">项目待审核</el-radio-button>
|
|
|
- <el-radio-button :label="0">部门待审核</el-radio-button>
|
|
|
+ <el-radio-button :label="1">{{ $t('projectbereviewed') }}</el-radio-button>
|
|
|
+ <el-radio-button :label="0">{{ $t('departmentobereviewed') }}</el-radio-button>
|
|
|
</el-radio-group>
|
|
|
<!-- 项目阶段筛选 -->
|
|
|
- <el-select v-if="ins == 5" multiple v-model="stageNames" @visible-change="visibleSelcts" @clear="visibleSelcts(false)" clearable size="small" filterable collapse-tags placeholder="请选择阶段" style="margin-left:10px;">
|
|
|
+ <el-select v-if="ins == 5" multiple v-model="stageNames" @visible-change="visibleSelcts" @clear="visibleSelcts(false)" clearable size="small" filterable collapse-tags :placeholder="$t('pleaseselectstage')" style="margin-left:10px;">
|
|
|
<el-option v-for="item in firstStages" :key="item" :label="item" :value="item"></el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
- <p style="float: right;margin-right: 25px;width:10%" ><el-button type="primary" @click="exportExcel" size="mini">报表导出</el-button></p>
|
|
|
+ <p style="float: right;margin-right: 25px;width:10%" ><el-button type="primary" @click="exportExcel" size="mini">{{ $t('reporderived') }}</el-button></p>
|
|
|
</div>
|
|
|
<div ref="staff" style="margin: 5px 0px 0px 10px; width: 98%">
|
|
|
<div class="staff" ref="tabless" :style="'width:'+(windowWidth - 430)+'px'">
|
|
|
<!--项目报表 -->
|
|
|
<el-table v-if="ins == 0" key="0" border :data="list0" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="projectCode" label="项目编号" width="120"></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" width="200">
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" width="200">
|
|
|
<template slot-scope="scope" >
|
|
|
{{scope.row.projectName}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="inchargerName" label="项目经理" width="130">
|
|
|
+ <el-table-column prop="inchargerName" :label="$t('projectmanager')" width="130">
|
|
|
<template slot-scope="scope" >
|
|
|
{{scope.row.inchargerName}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="contractAmount" label="合同金额(元)" align="right">
|
|
|
+ <el-table-column prop="contractAmount" :label="$t('he-tong-jine-yuan')" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.contractAmount.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="status" label="状态" >
|
|
|
+ <el-table-column prop="status" :label="$t('state.states')" >
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.status == null?"-":statusTxt[scope.row.status]}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="planStartDate" label="计划开始时间" >
|
|
|
+ <el-table-column prop="planStartDate" :label="$t('schedulestarttime')" >
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.planStartDate}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="planEndDate" label="计划结束时间">
|
|
|
+ <el-table-column prop="planEndDate" :label="$t('scheduleendtime')">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.planEndDate}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="progress" label="完成度">
|
|
|
+ <el-table-column prop="progress" :label="$t('completeness')">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.progress==null?"-":scope.row.progress}}%
|
|
|
</template>
|
|
@@ -158,41 +158,41 @@
|
|
|
|
|
|
<!-- 项目任务报表 -->
|
|
|
<el-table v-if="ins == 1" key="1" border :data="list1" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;" :span-method="objectSpanMethod">
|
|
|
- <el-table-column prop="project_code" label="项目编号" width="120"></el-table-column>
|
|
|
- <el-table-column prop="project_name" label="项目名称" width="200">
|
|
|
+ <el-table-column prop="project_code" :label="$t('Itemno')" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="project_name" :label="$t('headerTop.projectName')" width="200">
|
|
|
<template slot-scope="scope" >
|
|
|
<!-- {{scope.row.project_name}} -->
|
|
|
<span style="color: #cacaca" v-if="scope.row.customName == '——'">{{scope.row.customName}}</span>
|
|
|
<span v-else>{{scope.row.customName}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="name" label="任务名称" width="300">
|
|
|
+ <el-table-column prop="name" :label="$t('nameofthetask')" width="300">
|
|
|
<template slot-scope="scope" >
|
|
|
{{scope.row.name}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="executor_name" label="执行人" width="200"></el-table-column>
|
|
|
- <el-table-column prop="plan_hours" label="计划工时(h)" width="150">
|
|
|
+ <el-table-column prop="executor_name" :label="$t('zhi-hang-ren')" width="200"></el-table-column>
|
|
|
+ <el-table-column prop="plan_hours" :label="$t('plantime')+'(h)'" width="150">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.plan_hours == null? 0:scope.row.plan_hours.toFixed(1)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="real_hours" label="实际工时(h)" width="150">
|
|
|
+ <el-table-column prop="real_hours" :label="$t('shi-ji-gong-shi')+'(h)'" width="150">
|
|
|
<template slot-scope="scope">
|
|
|
<font :style="'color:'+(scope.row.real_hours > scope.row.plan_hours?'red':'')">{{scope.row.real_hours == null? 0:scope.row.real_hours.toFixed(1)}}</font>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="task_status" label="状态" width="80" >
|
|
|
+ <el-table-column prop="task_status" :label="$t('state.states')" width="80" >
|
|
|
<template slot-scope="scope">
|
|
|
{{taskStatusTxt[scope.row.task_status]}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="task_type" label="类型" width="120">
|
|
|
+ <el-table-column prop="task_type" :label="$t('types')" width="120">
|
|
|
<template slot-scope="scope">
|
|
|
{{taskTypeTxt[scope.row.task_type]}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="end_date" label="截止日期" width="120">
|
|
|
+ <el-table-column prop="end_date" :label="$t('expirationdate')" width="120">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.end_date}}
|
|
|
</template>
|
|
@@ -201,88 +201,88 @@
|
|
|
|
|
|
<!--项目成本报表 -->
|
|
|
<el-table v-if="ins == 2" key="2" border :data="list2" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="projectCode" label="项目编号" width="120"></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" >
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" >
|
|
|
<template slot-scope="scope" >
|
|
|
{{scope.row.projectName}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeMan" label="人工成本" width="100" align="right">
|
|
|
+ <el-table-column prop="feeMan" :label="$t('artificialcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeMan==null?0:scope.row.feeMan.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeNormal" label="一般费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeNormal" :label="$t('generalcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeNormal==null?0:scope.row.feeNormal.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeTravel" label="差旅费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeTravel" :label="$t('travelexpenses')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeTravel==null?0:scope.row.feeTravel.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeOutsourcing" label="外包费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeOutsourcing" :label="$t('outsourcingcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeOutsourcing==null?0:scope.row.feeOutsourcing.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="总费用" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('totalcostos')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{(scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing).toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="费用明细" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('costdetail')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-link type="primary" :underline="false" @click="showDetail(scope.row)">报销明细</el-link>
|
|
|
+ <el-link type="primary" :underline="false" @click="showDetail(scope.row)">{{ $t('reimbursementdetail') }}</el-link>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
<!--项目收支平衡表 -->
|
|
|
<el-table v-if="ins == 3" key="3" border :data="list3" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="projectCode" label="项目编号" width="120"></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" >
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" >
|
|
|
<template slot-scope="scope" >
|
|
|
{{scope.row.projectName}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="contractAmount" label="合同金额" width="100" align="right">
|
|
|
+ <el-table-column prop="contractAmount" :label="$t('contractamount')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.contractAmount.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeMan" label="人工成本" width="100" align="right">
|
|
|
+ <el-table-column prop="feeMan" :label="$t('artificialcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeMan.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeNormal" label="一般费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeNormal" :label="$t('generalcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeNormal.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeTravel" label="差旅费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeTravel" :label="$t('travelexpenses')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeTravel.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeOutsourcing" label="外包费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeOutsourcing" :label="$t('outsourcingcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeOutsourcing.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="总费用" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('totalcostos')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{(scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing).toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="利润" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('profits')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{((scope.row.contractAmount==null?0:scope.row.contractAmount) - (scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing)).toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="利润率" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('profitmargin')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{(scope.row.contractAmount==null||scope.row.contractAmount==0)?'-':((scope.row.contractAmount - (scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing))*100/scope.row.contractAmount).toFixed(1)+"%"}}
|
|
|
</template>
|
|
@@ -292,48 +292,48 @@
|
|
|
<el-table v-if="ins == 4" border :data="list4" key="4"
|
|
|
highlight-current-row v-loading="listLoading" :height="tableHeight"
|
|
|
style="width: 100%;">
|
|
|
- <el-table-column prop="customerName" label="客户名称" ></el-table-column>
|
|
|
- <el-table-column prop="projectNames" label="相关项目">
|
|
|
+ <el-table-column prop="customerName" :label="$t('customername')" ></el-table-column>
|
|
|
+ <el-table-column prop="projectNames" :label="$t('relatedprojects')">
|
|
|
<template slot-scope="scope" >
|
|
|
<el-Link @click="expandRow(scope.row, scope.$index)">{{scope.row.projectNames}}</el-Link>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="contractAmount" label="合同金额" width="100" align="right">
|
|
|
+ <el-table-column prop="contractAmount" :label="$t('contractamount')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.contractAmount.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeMan" label="人工成本" width="100" align="right">
|
|
|
+ <el-table-column prop="feeMan" :label="$t('artificialcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeMan.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeNormal" label="一般费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeNormal" :label="$t('generalcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeNormal.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeTravel" label="差旅费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeTravel" :label="$t('travelexpenses')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeTravel.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeOutsourcing" label="外包费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeOutsourcing" :label="$t('outsourcingcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeOutsourcing.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="总费用" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('totalcostos')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{(scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing).toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="利润" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('profits')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{((scope.row.contractAmount==null?0:scope.row.contractAmount) - (scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing)).toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="利润率" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('profitmargin')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{(scope.row.contractAmount==null||scope.row.contractAmount==0)?'-':((scope.row.contractAmount - (scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing))*100/scope.row.contractAmount).toFixed(1)+"%"}}
|
|
|
</template>
|
|
@@ -343,8 +343,8 @@
|
|
|
<el-table v-if="ins == 5" border :data="list5" key="5"
|
|
|
highlight-current-row v-loading="listLoading" :height="tableHeight"
|
|
|
style="width: 100%;" ref="table">
|
|
|
- <el-table-column prop="projectCode" label="项目编号" width="120" fixed ></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" width="240" fixed >
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" width="120" fixed ></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" width="240" fixed >
|
|
|
<template slot-scope="scope" >
|
|
|
{{scope.row.projectName}}
|
|
|
</template>
|
|
@@ -359,9 +359,9 @@
|
|
|
|
|
|
<!-- 任务分组工时表 -->
|
|
|
<el-table v-if="ins == 12" border :data="groupWorktimeList.left" key="12_2" highlight-current-row :height="tableHeight" v-loading="groupListLoading" style="width:33%;float:left;">
|
|
|
- <el-table-column label="按任务分组统计" header-align="center">
|
|
|
- <el-table-column prop="groupName" label="分组名称" min-width="100"></el-table-column>
|
|
|
- <el-table-column prop="workingTime" label="工时(h)" min-width="50" align="right" header-align="center">
|
|
|
+ <el-table-column :label="$t('statisticsarecollectedbytaskgroup')" header-align="center">
|
|
|
+ <el-table-column prop="groupName" :label="$t('groupname')" min-width="100"></el-table-column>
|
|
|
+ <el-table-column prop="workingTime" :label="$t('time.workingHours')+'(h)'" min-width="50" align="right" header-align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<span style="margin-right:20px">{{scope.row.workingTime ? scope.row.workingTime.toFixed(1) : ''}}</span>
|
|
|
</template>
|
|
@@ -371,11 +371,11 @@
|
|
|
<el-table v-if="ins == 12" border :data="groupWorktimeList.right" key="12"
|
|
|
highlight-current-row v-loading="listLoading" :height="tableHeight"
|
|
|
style="width: 66%;float:right;" ref="grouptable">
|
|
|
- <el-table-column label="按项目统计" header-align="center">
|
|
|
- <el-table-column prop="projectCode" label="项目编号" min-width="75"></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" min-width="125"></el-table-column>
|
|
|
- <el-table-column prop="groupName" label="分组名称" min-width="100"></el-table-column>
|
|
|
- <el-table-column prop="workingTime" label="工时(h)" min-width="50" align="right" header-align="center">
|
|
|
+ <el-table-column :label="$t('statisticsbyproject')" header-align="center">
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" min-width="75"></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" min-width="125"></el-table-column>
|
|
|
+ <el-table-column prop="groupName" :label="$t('groupname')" min-width="100"></el-table-column>
|
|
|
+ <el-table-column prop="workingTime" :label="$t('time.workingHours')+ '(h)'" min-width="50" align="right" header-align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<span style="margin-right:20px">{{scope.row.workingTime ? scope.row.workingTime.toFixed(1) : ''}}</span>
|
|
|
</template>
|
|
@@ -389,30 +389,30 @@
|
|
|
<div v-if="ins == 6 || ins == 8">
|
|
|
|
|
|
<el-table v-if="ins == 6" key="6" border :data="overTimeList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="projectCode" label="序号" width="80">
|
|
|
+ <el-table-column prop="projectCode" :label="$t('headerTop.serialNumber')" width="80">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
{{scope.$index + 1}}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="projectCode" label="项目编号" width="220"></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" width="220"></el-table-column>
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" width="220"></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" width="220"></el-table-column>
|
|
|
<el-table-column prop="degreeName" :label="user.timeType.customDegreeName" width="180" v-if="user.timeType.customDegreeActive == 1"></el-table-column>
|
|
|
- <el-table-column prop="username" label="姓名" width="120"></el-table-column>
|
|
|
- <el-table-column prop="departmentName" label="部门" width="140"></el-table-column>
|
|
|
- <el-table-column prop="createDate" label="工作日期" width="120"></el-table-column>
|
|
|
- <el-table-column prop="workingTime" label="工作时长(h)" width="100" align="right">
|
|
|
+ <el-table-column prop="username" :label="$t('lable.name')" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="departmentName" :label="$t('lable.department')" width="140"></el-table-column>
|
|
|
+ <el-table-column prop="createDate" :label="$t('screening.workingDate')" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="workingTime" :label="$t('screening.workTime')+ '(h)'" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span style="padding-right: 15px;">{{scope.row.workingTime.toFixed(1)}}h</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="overtimeHours" label="加班时长(h)" width="100" fixed="right" align="right">
|
|
|
+ <el-table-column prop="overtimeHours" :label="$t('jia-ban-shi-chang')+'(h)'" width="100" fixed="right" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span style="padding-right: 15px;">{{scope.row.overtimeHours.toFixed(1)}}h</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="cost" label="加班成本" width="100" v-if="permissions.reportCost" fixed="right" align="right">
|
|
|
+ <el-table-column prop="cost" :label="$t('overtimecost')" width="100" v-if="permissions.reportCost" fixed="right" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>¥{{scope.row.cost | numberToCurrency}}</span>
|
|
|
</template>
|
|
@@ -421,23 +421,23 @@
|
|
|
|
|
|
<!-- 人员工时分配表 -->
|
|
|
<el-table v-if="ins == 8" key="8" border :data="userWorkHoursList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="username" label="人员" width="150"></el-table-column>
|
|
|
- <el-table-column prop="unPublic" label="普通项目工时" min-width="160" align="right">
|
|
|
+ <el-table-column prop="username" :label="$t('ren-yuan')" width="150"></el-table-column>
|
|
|
+ <el-table-column prop="unPublic" :label="$t('ordinaryprojecthours')" min-width="160" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>{{scope.row.unPublic == null? 0 + 'h' : scope.row.unPublic.toFixed(1) + 'h'}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="isPublic" label="公共项目工时" min-width="160" align="right">
|
|
|
+ <el-table-column prop="isPublic" :label="$t('publicprojecthours')" min-width="160" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>{{scope.row.isPublic == null? 0 + 'h' : scope.row.isPublic.toFixed(1) + 'h'}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="workingTime" label="总工时" min-width="160" align="right">
|
|
|
+ <el-table-column prop="workingTime" :label="$t('other.totalworkinghours')" min-width="160" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>{{scope.row.workingTime == null? 0 + 'h' : scope.row.workingTime.toFixed(1) + 'h'}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="proportion" label="公共项目工时占比" min-width="130" align="right">
|
|
|
+ <el-table-column prop="proportion" :label="$t('publicprojecthourszan')" min-width="130" align="right">
|
|
|
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -446,41 +446,41 @@
|
|
|
<!-- 工时成本预警表 -->
|
|
|
<el-table v-if="ins == 7" key="7" border :data="baseCostList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
<!-- 当前总预算,已发生工时成本,xxx成本预算,xxx已发生成本,xxx已发生占比, yyy成本预算,yyy已发生成本,yyy已发生占比。 -->
|
|
|
- <el-table-column prop="projectCode" label="项目编号" width="120" fixed></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" min-width="200" fixed></el-table-column>
|
|
|
- <el-table-column prop="baseCurcost" label="当前总预算" min-width="160" align="right">
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" width="120" fixed></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" min-width="200" fixed></el-table-column>
|
|
|
+ <el-table-column prop="baseCurcost" :label="$t('currenttotalbudget')" min-width="160" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>¥{{scope.row.baseCurcost | numberToCurrency}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="currentRemainingBudget" label="当前剩余预算" min-width="200" align="right">
|
|
|
+ <el-table-column prop="currentRemainingBudget" :label="$t('currentsurplusbudget')" min-width="200" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>¥{{scope.row.currentRemainingBudget | numberToCurrency}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="remainingBudget" label="总剩余预算" min-width="200" align="right">
|
|
|
+ <el-table-column prop="remainingBudget" :label="$t('totalsurplusbudget')" min-width="200" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>¥{{scope.row.remainingBudget | numberToCurrency}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeMan" label="已填报工时成本" min-width="160" align="right">
|
|
|
+ <el-table-column prop="feeMan" :label="$t('workinghourshasbeenreported')" min-width="160" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span :class="scope.row.baseCurcost * 0.9 < scope.row.feeMan ? 'warntext' : ''">¥{{scope.row.feeMan | numberToCurrency}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<template v-for="item in baseCostColumns">
|
|
|
- <el-table-column :label="item.name + '成本预算'" min-width="200" align="right">
|
|
|
+ <el-table-column :label="item.name + $t('costbudget')" min-width="200" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>¥{{budgetFilter(scope.row.curcostList,item.id) | numberToCurrency}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column :label="item.name + '已填报成本'" min-width="200" align="right">
|
|
|
+ <el-table-column :label="item.name + $t('coshasbeenreported')" min-width="200" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span :class="percentageFilter(scope.row,item.id) > 90 ? 'warntext' : ''"
|
|
|
>¥{{AlreadyFilter(scope.row.realcostList,item.id) | numberToCurrency}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column :label="item.name + '已填报占比'" min-width="200" align="right">
|
|
|
+ <el-table-column :label="item.name + $t('proportionreported')" min-width="200" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span :class="percentageFilter(scope.row,item.id) > 90 ? 'warntext' : ''"
|
|
|
>{{percentageFilter(scope.row,item.id) == 'NaN' ? '-' : percentageFilter(scope.row,item.id) + '%'}}</span>
|
|
@@ -492,9 +492,9 @@
|
|
|
|
|
|
<!-- 员工填报及时率 -->
|
|
|
<el-table v-if="ins == 9" key="9" border :data="reportTimelyList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="userName" label="人员" min-width="200" align="center"></el-table-column>
|
|
|
- <el-table-column prop="departmentName" label="所属部门" min-width="200" align="center"></el-table-column>
|
|
|
- <el-table-column prop="timelinessRate" label="填报及时率" min-width="200" align="center">
|
|
|
+ <el-table-column prop="userName" :label="$t('ren-yuan')" min-width="200" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="departmentName" :label="$t('subordinatedepartments')" min-width="200" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="timelinessRate" :label="$t('timelyreportingrate')" min-width="200" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<el-link v-if="scope.row.dataList != null" style="color:#409eff;" @click="timelyDetail(scope.row.dataList)">{{scope.row.timelinessRate}}</el-link>
|
|
|
<span v-else>{{scope.row.timelinessRate}}</span>
|
|
@@ -509,42 +509,42 @@
|
|
|
|
|
|
<!-- 日报待审核统计 -->
|
|
|
<el-table v-if="ins == 10" key="10" border :data="auditRateList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="userName" label="审核人" min-width="200" align="center"></el-table-column>
|
|
|
- <el-table-column prop="departmentName" label="所属部门" min-width="200" align="center"></el-table-column>
|
|
|
- <el-table-column prop="num" label="待审核条数" min-width="200" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="userName" :label="$t('other.reviewer')" min-width="200" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="departmentName" :label="$t('subordinatedepartments')" min-width="200" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="num" :label="$t('numberitemstobereviewed')" min-width="200" align="center"></el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
<!-- 人员工时统计表 -->
|
|
|
<el-table v-if="ins == 11" key="11" border :data="personnelList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="name" label="姓名" min-width="200" align="center"></el-table-column>
|
|
|
- <el-table-column prop="departmentName" label="部门" min-width="200" align="center"></el-table-column>
|
|
|
- <el-table-column prop="planHours" label="计划工时" min-width="200" align="center">
|
|
|
+ <el-table-column prop="name" :label="$t('lable.name')" min-width="200" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="departmentName" :label="$t('lable.department')" min-width="200" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="planHours" :label="$t('plantime')" min-width="200" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.planHours">
|
|
|
{{scope.row.planHours == null ? 0 : scope.row.planHours.toFixed(1)}}h
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="workingTime" label="实际工时" min-width="200" align="center">
|
|
|
+ <el-table-column prop="workingTime" :label="$t('shi-ji-gong-shi')" min-width="200" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.workingTime">
|
|
|
{{scope.row.workingTime == null ? 0 : scope.row.workingTime.toFixed(1)}}h
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="proportion" label="实际用时占比" min-width="200" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="proportion" :label="$t('percentageofactualtimespent')" min-width="200" align="center"></el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
<!-- 项目成本基线表 -->
|
|
|
<el-table v-if="ins == 13" key="13" border :data="outputValueList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
|
|
|
- <el-table-column prop="projectCode" label="项目编号" min-width="150"></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" min-width="250"></el-table-column>
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" min-width="150"></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" min-width="250"></el-table-column>
|
|
|
<el-table-column v-for="item in outputValueTitle" :key="item" :label="item" min-width="150" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
<span>{{scope.row.projectBasecostList.filter(li => li.baseName == item).length > 0 ? scope.row.projectBasecostList.filter(li => li.baseName == item)[0].baseAmount.toFixed(2) : '-'}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="项目产值" min-width="150" align="right" v-if="user.timeType.outputValueStatus == 1">
|
|
|
+ <el-table-column :label="$t('projectoutput')" min-width="150" align="right" v-if="user.timeType.outputValueStatus == 1">
|
|
|
<template slot-scope="scope">
|
|
|
<span>{{scope.row.outputValue ? scope.row.outputValue.toFixed(2) : '-'}}</span>
|
|
|
</template>
|
|
@@ -587,78 +587,77 @@
|
|
|
<el-table border :data="childrenList"
|
|
|
highlight-current-row v-loading="listLoading" height="400"
|
|
|
style="width: 100%;">
|
|
|
- <el-table-column prop="projectNames" label="相关项目">
|
|
|
+ <el-table-column prop="projectNames" :label="$t('relatedprojects')">
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="contractAmount" label="合同金额" width="100" align="right">
|
|
|
+ <el-table-column prop="contractAmount" :label="$t('contractamount')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.contractAmount.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeMan" label="人工成本" width="100" align="right">
|
|
|
+ <el-table-column prop="feeMan" :label="$t('artificialcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeMan.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeNormal" label="一般费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeNormal" :label="$t('generalcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeNormal.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeTravel" label="差旅费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeTravel" :label="$t('travelexpenses')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeTravel.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="feeOutsourcing" label="外包费用" width="100" align="right">
|
|
|
+ <el-table-column prop="feeOutsourcing" :label="$t('outsourcingcost')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeOutsourcing.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="总费用" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('totalcostos')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="利润" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('profits')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{(scope.row.contractAmount==null?0:scope.row.contractAmount) - (scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="利润率" width="100" align="right">
|
|
|
+ <el-table-column :label="$t('profitmargin')" width="100" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{(scope.row.contractAmount==null||scope.row.contractAmount==0)?'-':((scope.row.contractAmount - (scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing))*100/scope.row.contractAmount).toFixed(1)+"%"}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
<div slot="footer" class="dialog-footer;">
|
|
|
- <el-button @click.native="addFormVisible = false">关闭</el-button>
|
|
|
+ <el-button @click.native="addFormVisible = false">{{ $t('Shutdown') }}</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
-
|
|
|
- <el-dialog :title="curProject.projectName+'-报销费用明细'" show-summary=true v-if="detailVisible" :summary-method="getSummaries" :visible.sync="detailVisible" :close-on-click-modal="false" customClass="customWidth" width="1000px">
|
|
|
+ <el-dialog :title="curProject.projectName+'-'+$t('detailsofreimbursementexpenses')" show-summary=true v-if="detailVisible" :summary-method="getSummaries" :visible.sync="detailVisible" :close-on-click-modal="false" customClass="customWidth" width="1000px">
|
|
|
<el-table :key="ins" border :data="detailList" highlight-current-row v-loading="detailListLoading" :height="500" style="width: 100%;">
|
|
|
- <el-table-column prop="username" label="员工姓名" ></el-table-column>
|
|
|
- <el-table-column prop="departmentName" label="所在部门" ></el-table-column>
|
|
|
- <el-table-column prop="happenDate" label="费用日期" ></el-table-column>
|
|
|
- <el-table-column prop="invoiceType" label="费用类型" >
|
|
|
+ <el-table-column prop="username" :label="$t('screening.employeename')" ></el-table-column>
|
|
|
+ <el-table-column prop="departmentName" :label="$t('departmentsuod')" ></el-table-column>
|
|
|
+ <el-table-column prop="happenDate" :label="$t('forthedate')" ></el-table-column>
|
|
|
+ <el-table-column prop="invoiceType" :label="$t('costtype')" >
|
|
|
<template slot-scope="scope">
|
|
|
{{feeType[scope.row.invoiceType]}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="expenseType" label="票据类型" >
|
|
|
+ <el-table-column prop="expenseType" :label="$t('ppertype')" >
|
|
|
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="amount" label="金额(含税)" align="right">
|
|
|
+ <el-table-column prop="amount" :label="$t('amountof')+'('+ $t('tax') +')'" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.amount.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="amount" label="税额" align="right">
|
|
|
+ <el-table-column prop="amount" :label="$t('taxs')" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.taxValue == null?'0.00':scope.row.taxValue.toFixed(2)}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="amount" label="金额(不含税)" align="right">
|
|
|
+ <el-table-column prop="amount" :label="$t('amountof')+'('+ $t('notax') +')'" align="right">
|
|
|
<template slot-scope="scope">
|
|
|
{{(scope.row.amount-scope.row.taxValue).toFixed(2)}}
|
|
|
</template>
|
|
@@ -680,25 +679,25 @@
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 加班详情 -->
|
|
|
- <el-dialog title="加班详情" :visible.sync="dialogVisibleDetails" width="800px" v-loading="listLoading" :before-close="handleClose">
|
|
|
+ <el-dialog :title="$t('workovertimedetails')" :visible.sync="dialogVisibleDetails" width="800px" v-loading="listLoading" :before-close="handleClose">
|
|
|
<div>
|
|
|
<el-table :data="detailsList" style="width: 100%" height="400px">
|
|
|
- <el-table-column prop="username" label="姓名" width="120"></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" width="200"></el-table-column>
|
|
|
- <el-table-column prop="projectCode" label="项目编号" width="200"></el-table-column>
|
|
|
- <el-table-column prop="createDate" label="加班日期" width="120"></el-table-column>
|
|
|
- <el-table-column prop="workingTime" label="当天工作时长(h)" width="160"></el-table-column>
|
|
|
- <el-table-column prop="overtimeHours" label="加班时长(h)" width="130"></el-table-column>
|
|
|
- <el-table-column prop="cost" label="加班成本" width="120" v-if="permissions.reportCost"></el-table-column>
|
|
|
+ <el-table-column prop="username" :label="$t('lable.name')" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="projectName" :label="$t('headerTop.projectName')" width="200"></el-table-column>
|
|
|
+ <el-table-column prop="projectCode" :label="$t('Itemno')" width="200"></el-table-column>
|
|
|
+ <el-table-column prop="createDate" :label="$t('workovertimedate')" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="workingTime" :label="$t('workinghoursoftheday')+ '(h)'" width="160"></el-table-column>
|
|
|
+ <el-table-column prop="overtimeHours" :label="$t('jia-ban-shi-chang')+ '(h)'" width="130"></el-table-column>
|
|
|
+ <el-table-column prop="cost" :label="$t('overtimecost')" width="120" v-if="permissions.reportCost"></el-table-column>
|
|
|
</el-table>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 员工填报及时率详情 -->
|
|
|
- <el-dialog title="详情" :visible.sync="timelyDetailDialog" width="600px">
|
|
|
+ <el-dialog :title="$t('details')" :visible.sync="timelyDetailDialog" width="600px">
|
|
|
<el-table :data="timelyDetailList">
|
|
|
- <el-table-column prop="date" label="日期"></el-table-column>
|
|
|
- <el-table-column prop="detail" label="填报情况"></el-table-column>
|
|
|
+ <el-table-column :prop="date" :label="$t('weekDay.date')"></el-table-column>
|
|
|
+ <el-table-column prop="detail" :label="$t('fillincase')"></el-table-column>
|
|
|
</el-table>
|
|
|
</el-dialog>
|
|
|
</section>
|
|
@@ -713,7 +712,7 @@ export default {
|
|
|
return {
|
|
|
permissions: JSON.parse(sessionStorage.getItem("permissions")),
|
|
|
curProject:{},
|
|
|
- feeType:['一般费用', '差旅费用', '外包费用'],
|
|
|
+ feeType:[this.$t('generalcost'), this.$t('travelexpenses'), this.$t('outsourcingcost')],
|
|
|
detailListLoading: false,
|
|
|
detailList:[],
|
|
|
detailVisible: false,
|
|
@@ -723,12 +722,12 @@ export default {
|
|
|
addFormVisible:false,
|
|
|
title:'',
|
|
|
childrenList:[],
|
|
|
- taskTypeTxt:["任务", "里程碑", "风险"],
|
|
|
- taskTypeObj: [{id: '0',value: '任务'},{id: '1',value: '里程碑'},{id: '2',value: '风险'}],
|
|
|
+ taskTypeTxt:[this.$t('other.task'), this.$t('other.milestone'), this.$t('risk')],
|
|
|
+ taskTypeObj: [{id: '0',value: this.$t('other.task')},{id: '1',value: this.$t('other.milestone')},{id: '2',value: this.$t('risk')}],
|
|
|
taskTypeId: null,
|
|
|
- taskStatusTxt:["进行中","已完成","已撤销"],
|
|
|
- statusTxt:["-","进行中","已完成","已撤销"],
|
|
|
- importanceList:[{id:1,label:'正常'},{id:2,label:'紧急'},{id:3,label:'重要'},{id:4,label:'重要且紧急'}],
|
|
|
+ taskStatusTxt:[this.$t('ongoing'),this.$t('state.completed'),this.$t('state.undone')],
|
|
|
+ statusTxt:["-",this.$t('ongoing'),this.$t('state.completed'),this.$t('state.undone')],
|
|
|
+ importanceList:[{id:1,label:this.$t('zheng-chang')},{id:2,label:this.$t('jin-ji')},{id:3,label:this.$t('zhong-yao')},{id:4,label:this.$t('zhong-yao-qie-jin-ji')}],
|
|
|
listLoading:false,
|
|
|
tableHeight:0,
|
|
|
list1:[],
|
|
@@ -754,10 +753,10 @@ export default {
|
|
|
z : null,
|
|
|
value: null,
|
|
|
dialog: false, // 单据查看展示
|
|
|
- shuz: ["项目报表","项目任务报表","项目成本报表",
|
|
|
- "项目收支平衡表(利润表)","客户项目利润报表","项目阶段工时表",
|
|
|
- "加班情况统计表","工时成本预警表","人员工时分配表",
|
|
|
- "员工填报及时率统计","日报待审核统计","人员工时统计表","任务分组工时表","项目成本基线表"],
|
|
|
+ shuz: [this.$t('projectreport'),this.$t('projectTaskReport'),this.$t('projectcoststatement'),
|
|
|
+ this.$t('pojectbalancesheetincomestatement'),this.$t('customerprojectprofitstatement'),this.$t('projectphasetimesheet'),
|
|
|
+ this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
|
|
|
+ this.$t('statisticsofstafffillingintimerate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable')],
|
|
|
ins: 10000,
|
|
|
user: JSON.parse(sessionStorage.user),
|
|
|
overTimeList: [], // 项目加班情况统计列表
|
|
@@ -964,7 +963,7 @@ export default {
|
|
|
const sums = [];
|
|
|
columns.forEach((column, index) => {
|
|
|
if (index === 0) {
|
|
|
- sums[index] = '合计';
|
|
|
+ sums[index] = this.$t('other.totals');
|
|
|
return;
|
|
|
}
|
|
|
if(index === 5) {
|
|
@@ -980,7 +979,7 @@ export default {
|
|
|
}, 0);
|
|
|
var zhi = +sums[index] + 0
|
|
|
var sl = zhi.toFixed(2)
|
|
|
- sl += ' 元';
|
|
|
+ sl += this.$t('yuan');
|
|
|
} else {
|
|
|
sums[index] = 'N/A';
|
|
|
}
|
|
@@ -1016,7 +1015,7 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
expandRow(row, index) {
|
|
|
- this.title = '客户:'+row.customerName;
|
|
|
+ this.title = this.$t('ke-hu')+':'+row.customerName;
|
|
|
this.childrenList = row.children;
|
|
|
this.addFormVisible = true;
|
|
|
},
|
|
@@ -1095,25 +1094,25 @@ export default {
|
|
|
var fName = "";
|
|
|
var sl = {}
|
|
|
if (this.ins == 0) {
|
|
|
- fName = "项目报表.xls";
|
|
|
+ fName = this.$t('projectreport') + '.xls';
|
|
|
url += "/exportProject";
|
|
|
} else if (this.ins == 1) {
|
|
|
- fName = "项目任务报表.xls";
|
|
|
+ fName = this.$t('projectTaskReport') + '.xls';
|
|
|
url += "/exportProjectTask";
|
|
|
if(this.taskTypeId != 'null' && this.taskTypeId != null && this.taskTypeId != '') {
|
|
|
sl.taskType = this.taskTypeId
|
|
|
}
|
|
|
} else if (this.ins == 2) {
|
|
|
- fName = "项目成本报表.xls";
|
|
|
+ fName = this.$t('projectcoststatement') + '.xls';
|
|
|
url += "/exportAllProjectCost";
|
|
|
} else if (this.ins == 3) {
|
|
|
- fName = "项目收支平衡表.xls";
|
|
|
+ fName = this.$t('projectbalancesheet') + '.xls';
|
|
|
url += "/exportProjectInAndOut";
|
|
|
} else if (this.ins == 4) {
|
|
|
- fName = "客户项目利润报表.xls";
|
|
|
+ fName = this.$t('customerprojectprofitstatement') + '.xls';
|
|
|
url += "/exportCustomerProjectInAndOut";
|
|
|
} else if (this.ins == 5) {
|
|
|
- fName = "项目阶段工时报表.xls";
|
|
|
+ fName = this.$t('projectphasetimereport') + '.xls';
|
|
|
url += "/exportProjectStagesCost";
|
|
|
if(this.stageNames.length){
|
|
|
let stagestr = ''
|
|
@@ -1124,26 +1123,26 @@ export default {
|
|
|
sl.stageNames = stagestr
|
|
|
}
|
|
|
} else if (this.ins == 6) {
|
|
|
- fName = "加班情况统计报表.xls";
|
|
|
+ fName = this.$t('statisticalreportofovertimework') + '.xls';
|
|
|
url += "/exportOvertimeList";
|
|
|
sl.startDate = this.rangeDatas[0]
|
|
|
sl.endDate = this.rangeDatas[1]
|
|
|
sl.projectId = this.proJuctId
|
|
|
} else if (this.ins == 7) {
|
|
|
- fName = "工时成本预警表.xls";
|
|
|
+ fName = this.$t('timecostearlywarningtable') + '.xls';
|
|
|
url += "/exportBaseCostAndRealCost";
|
|
|
} else if (this.ins == 8) {
|
|
|
- fName = "人员工时分配表.xls"
|
|
|
+ fName = this.$t('personneltimeallocationtable') + '.xls'
|
|
|
url += "/exportUserWorkingTimeList"
|
|
|
sl.startDate = this.rangeDatas[0]
|
|
|
sl.endDate = this.rangeDatas[1]
|
|
|
} else if (this.ins == 9) {
|
|
|
- fName = "人员填报及时率统计.xls"
|
|
|
+ fName = this.$t('personnelfillingtimelyratestatistics') + '.xls'
|
|
|
url += "/exportReportTimelinessRate"
|
|
|
sl.startDate = this.rangeDatas[0]
|
|
|
sl.endDate = this.rangeDatas[1]
|
|
|
} else if (this.ins == 10) {
|
|
|
- fName = "日报待审核统计.xls"
|
|
|
+ fName = this.$t('dailyreporttobereviewedstatistics') + '.xls'
|
|
|
url += "/exportWaitingReviewList"
|
|
|
sl.startDate = this.rangeDatas[0]
|
|
|
sl.endDate = this.rangeDatas[1]
|
|
@@ -1152,7 +1151,7 @@ export default {
|
|
|
sl.userId = this.userId
|
|
|
}
|
|
|
} else if(this.ins == 11){
|
|
|
- fName = "人员工时统计.xls"
|
|
|
+ fName = this.$t('personnelhourstatistics') + '.xls'
|
|
|
url += "/exportUserWorkingTimeStatic"
|
|
|
sl.startDate = this.rangeDatas[0]
|
|
|
sl.endDate = this.rangeDatas[1]
|
|
@@ -1163,12 +1162,12 @@ export default {
|
|
|
sl.departmentId = this.departmentIdArray[this.departmentIdArray.length - 1]
|
|
|
}
|
|
|
}else if(this.ins == 12){
|
|
|
- fName = "任务分组工时统计.xls"
|
|
|
+ fName = this.$t('timestatisticsofaskgroups') + '.xls'
|
|
|
url += "/exportGroupWithProjectTimeCost"
|
|
|
sl.startDate = this.rangeDatas[0]
|
|
|
sl.endDate = this.rangeDatas[1]
|
|
|
}else if(this.ins == 13){
|
|
|
- fName = "项目成本基线表.xls"
|
|
|
+ fName = this.$t('projectcostbaselinetable') + '.xls'
|
|
|
url += "/exportProjectBaseCost"
|
|
|
}
|
|
|
this.http.post(url, sl,
|