|
@@ -75,7 +75,7 @@
|
|
|
<el-table-column type="expand">
|
|
|
<template slot-scope="props">
|
|
|
<div style="padding: 10px 30px">
|
|
|
- <el-table :data="props.row.dataList" style="width: 100%" border @selection-change="(e) => weeklyReportItemSelect(e, props.row)" :span-method="({rowIndex, columnIndex}) => mergeCellsRow({ rowIndex, columnIndex, dataLength: props.row.dataList.length, columnLength: props.row.dataList.length })">
|
|
|
+ <el-table :data="props.row.dataList" style="width: 100%" border @selection-change="(e) => weeklyReportItemSelect(e, props.row)" :span-method="({rowIndex, columnIndex}) => mergeCellsRow({ rowIndex, columnIndex, dataLength: props.row.dataList.length, columnLength: props.row.projectNameList.length })">
|
|
|
<el-table-column type="selection" width="55"></el-table-column>
|
|
|
<el-table-column label="日期" prop="userName">
|
|
|
<template slot-scope="scope">
|
|
@@ -85,7 +85,7 @@
|
|
|
<template v-for="(item, index) in props.row.projectNameList">
|
|
|
<el-table-column :label="item" prop="item" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-link type="primary">
|
|
|
+ <el-link type="primary" @click="viewDetails(scope.row.projectList[item])">
|
|
|
{{ scope.row.projectList[item] && scope.row.projectList[item].time + 'h' }}
|
|
|
</el-link>
|
|
|
</template>
|
|
@@ -304,6 +304,111 @@
|
|
|
<el-button type="primary" @click="approveinfun()" v-else>{{ $t('btn.determine') }}</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog title="查看详情" v-if="FilteredDataRowVisable" :visible.sync="FilteredDataRowVisable" :close-on-click-modal="false" customClass="customWidth" width="800px">
|
|
|
+ <div>
|
|
|
+ <el-card shadow="never">
|
|
|
+ <p>{{ $t('other.project') + ':' }}<b>{{FilteredDataRow.projectCode+'/'+FilteredDataRow.project}}<span v-if="FilteredDataRow.subProjectName != null"> / {{FilteredDataRow.subProjectName}}</span>
|
|
|
+ <span style="margin-left:15px;color:#DAA520;" >[
|
|
|
+ <span v-if="user.timeType.reportAuditType == 7">
|
|
|
+ {{$t('other.reviewer')}}:<TranslationOpenData :configurationItems="{ openType: 'userName', openId: FilteredDataRow.projectAuditorName, renderIndex: 0 }" /><span v-if="FilteredDataRow.projectAuditState==1">√</span>
|
|
|
+ <span v-if="FilteredDataRow.deptAuditorName">、</span>
|
|
|
+ <TranslationOpenData :configurationItems="{ openType: 'userName', openId: FilteredDataRow.deptAuditorName, renderIndex: 0 }" /><span v-if="FilteredDataRow.departmentAuditState==1">√</span>
|
|
|
+ </span>
|
|
|
+ <span v-else>
|
|
|
+ <span v-if="FilteredDataRow.isDeptAudit==0">
|
|
|
+ <span v-if="FilteredDataRow.projectAuditState==0">
|
|
|
+ {{ user.companyId == 469?"待部门主管":$t('other.waitForTheProjectReviewer') }}<span v-if="FilteredDataRow.projectAuditorName != null">(
|
|
|
+ <!-- {{FilteredDataRow.projectAuditorName}} -->
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.projectAuditorName'></TranslationOpenDataText></span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.projectAuditorName}}</span>
|
|
|
+ )</span>{{ $t('other.audit') }}
|
|
|
+ </span>
|
|
|
+ <span style="color:#32CD32;" v-else-if="FilteredDataRow.projectAuditState==1">
|
|
|
+ {{ user.companyId == 469?"待部门主管":$t('other.projectAuditor') }}<span v-if="FilteredDataRow.projectAuditorName != null">(
|
|
|
+ <!-- {{FilteredDataRow.projectAuditorName}} -->
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.projectAuditorName'></TranslationOpenDataText></span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.projectAuditorName}}</span>
|
|
|
+ )</span>{{ $t('state.approved') }}
|
|
|
+ </span>
|
|
|
+ </span>
|
|
|
+ <span v-else-if="FilteredDataRow.isDeptAudit==1">
|
|
|
+ <!-- {{($t('other.await') +FilteredDataRow.auditDeptName+('('+FilteredDataRow.deptAuditorName+')')+ $t('other.audit'))}} -->
|
|
|
+ ({{$t('other.await')}}
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='departmentName' :openid='FilteredDataRow.auditDeptName'></TranslationOpenDataText></span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.auditDeptName}}</span>
|
|
|
+ (<span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.deptAuditorName'></TranslationOpenDataText></span>
|
|
|
+ <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.deptAuditorName}}</span>)
|
|
|
+ {{$t('other.audit')}})
|
|
|
+ </span>
|
|
|
+ </span>]
|
|
|
+ </span>
|
|
|
+ </b>
|
|
|
+ </p>
|
|
|
+ <p v-if="user.timeType.reportAuditType == 6" >{{ $t('shenHeLiuCheng') }}<span v-if="FilteredDataRow.auditorList && FilteredDataRow.auditorList.length == 1">{{ $t('yiCengShenHe') }}(<span class="themeFontColor">{{ FilteredDataRow.auditorList[0].name }}</span>)</span>
|
|
|
+ <span v-if="FilteredDataRow.auditorList && FilteredDataRow.auditorList.length == 2">{{ $t('liangCengShenHe') }}(<span class="themeFontColor">{{ FilteredDataRow.auditorList[0].name }}->{{ FilteredDataRow.auditorList[1].name }}</span>)</span>
|
|
|
+ <el-button size="small" @click="viewOneReport(FilteredDataRow)" v-if="!FilteredDataRow.auditorList">{{ $t('cha-kan') }}</el-button>
|
|
|
+ </p>
|
|
|
+ <p v-if="user.timeType.customDegreeActive==1 && (FilteredDataRow.degree_id != null || FilteredDataRow.multiDegrId != '[]')">{{user.timeType.customDegreeName}}:{{FilteredDataRow.degreeName}}</p>
|
|
|
+ <p v-if="user.timeType.customDataActive==1">{{user.timeType.customDataName}}:{{FilteredDataRow.customData}}</p>
|
|
|
+ <p v-if="user.timeType.customTextActive==1">{{user.timeType.customTextName}}:{{FilteredDataRow.customText}}</p>
|
|
|
+ <p v-if="user.company.packageEngineering == 1">
|
|
|
+ {{ $t('other.professionalProgress') +':'}} <span style="margin-right:10px;" v-for="progressItem in FilteredDataRow.professionProgressList" :key="progressItem.id">
|
|
|
+ {{progressItem.professionName}}({{progressItem.progress}}%)
|
|
|
+ <el-tooltip v-if="progressItem.auditState == 0" :content="$t('state.WaitingAudit')" effect="light" placement="top">
|
|
|
+ <i class="iconfont firerock-icondaibandengdaishenhe"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip v-if="progressItem.auditState == 1" :content="$t('state.alreadyPassed')" effect="light" placement="top">
|
|
|
+ <i class="iconfont firerock-iconshenhetongguo"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip v-if="progressItem.auditState == 2" :content="$t('state.notThrough')" effect="light" placement="top">
|
|
|
+ <i class="iconfont firerock-iconshenhebohui"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </span>
|
|
|
+ </p>
|
|
|
+ <p v-if="user.companyId == yuzhongCompId">
|
|
|
+ <span>{{ $t('jiao-se') }}:{{FilteredDataRow.extraField1? roleList.filter(r=>r.value == FilteredDataRow.extraField1)[0].label:''}}</span>
|
|
|
+ <span style="margin-left:10px;">{{ $t('gongZuoZhiZe') }}:{{ FilteredDataRow.extraField2? FilteredDataRow.extraField2Name:''}}</span>
|
|
|
+ <span style="margin-left:10px;">{{ $t('gongZuoNeiRong') }}:{{ FilteredDataRow.extraField3? FilteredDataRow.extraField3Name:''}}</span></p>
|
|
|
+ <p v-if="FilteredDataRow.taskId != null">{{$t('other.task')}}:{{FilteredDataRow.taskName}}
|
|
|
+ <span style="margin-left:10px;" v-if="user.companyId==3092">-- {{ $t('fuWu') }}:{{ FilteredDataRow.sapServiceName }}</span></p>
|
|
|
+ <p v-if="FilteredDataRow.groupId">
|
|
|
+ <span>{{$t('other.taskGroup')}}:{{FilteredDataRow.groupName}}</span>
|
|
|
+ <!-- 阶段 -->
|
|
|
+ <span v-if="FilteredDataRow.stage != null && user.companyId != yuzhongCompId" style="margin-left:10px;"> {{$t('other.inputStage')}}:{{FilteredDataRow.stage}}</span>
|
|
|
+ </p>
|
|
|
+ <p v-if="user.company.companyName == '成都明夷电子科技有限公司'">
|
|
|
+ <span>{{ $t('lable.percentageOfTime') }} :{{ FilteredDataRow.progress }}%</span>
|
|
|
+ </p>
|
|
|
+ <p v-else>
|
|
|
+ <span v-if="FilteredDataRow.multiWorktime==1">{{ $t('other.project') }}</span>
|
|
|
+ <span>{{$t('time.duration')}}:</span>
|
|
|
+ <span v-if="FilteredDataRow.startTime">{{ FilteredDataRow.startTime + '-' + FilteredDataRow.endTime }}</span>
|
|
|
+ <span>{{FilteredDataRow.time.toFixed(1)}}h </span>
|
|
|
+ <span class="propsbtn" v-if="FilteredDataRow.isOvertime === 1">
|
|
|
+ <el-tag type="danger" size="mini" style="margin-left: 65px">{{ $t('other.WorkOvertime') }}<span v-if="FilteredDataRow.overtimeHours">{{FilteredDataRow.overtimeHours.toFixed(1)}}{{$t('time.hour')}}</span></el-tag></span>
|
|
|
+ </p>
|
|
|
+
|
|
|
+ <div v-if="FilteredDataRow.multiWorktime==0">
|
|
|
+ <p>{{ $t('other.matters') }}:<span v-html="FilteredDataRow.content"></span></p>
|
|
|
+ </div>
|
|
|
+ <div v-if="FilteredDataRow.multiWorktime==1" >
|
|
|
+ <div v-for="(timeItem, tIndex) in FilteredDataRow.worktimeList" :key="tIndex"
|
|
|
+ style="border: 0.5px #ddd solid;margin:5px 0px;padding:5px; ">
|
|
|
+ <p style="line-height:20px;margin:5px 0px;">{{$t('time.duration')}}:
|
|
|
+ <span v-if="FilteredDataRow.reportTimeType == 2" style="margin-right:10px;">{{timeItem.startTime+'-'+timeItem.endTime}}</span>
|
|
|
+ {{timeItem.time.toFixed(1)}}h
|
|
|
+ <span v-if="timeItem.detail" style="margin-left:10px;"> {{timeItem.detail}} </span>
|
|
|
+ </p>
|
|
|
+ <p style="line-height:20px;margin:5px 0px;">{{ $t('other.matters') }}:<span v-html="timeItem.content"></span></p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="FilteredDataRowVisable = false" >{{ $t('btn.cancel') }}</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -399,7 +504,9 @@
|
|
|
reason: ''
|
|
|
},
|
|
|
undoBathFormLoading: false,
|
|
|
- tableSelectRow: []
|
|
|
+ tableSelectRow: [],
|
|
|
+ FilteredDataRow: {},
|
|
|
+ FilteredDataRowVisable: false
|
|
|
};
|
|
|
},
|
|
|
filters: {
|
|
@@ -410,8 +517,11 @@
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ viewDetails(row) {
|
|
|
+ this.FilteredDataRow = row
|
|
|
+ this.FilteredDataRowVisable = true
|
|
|
+ },
|
|
|
showBatchRevocationVisable(row, index) {
|
|
|
- console.log(row, '<===== 点击当前撤销')
|
|
|
this.batchRevocationList = row.membdateList || []
|
|
|
this.batchRevocationListIndex = index
|
|
|
this.batchRevocationVisable = true
|
|
@@ -942,7 +1052,8 @@
|
|
|
let projectNameList = []
|
|
|
for(let i in daySummaryList) {
|
|
|
const projectList = (daySummaryList[i].projectList || [])
|
|
|
- projectNameList = projectNameList.concat(projectList.map(item => item.project))
|
|
|
+ const projectNames = projectList.map(item => item.project)
|
|
|
+ projectNameList = [...new Set([...projectNameList, ...projectNames])]
|
|
|
}
|
|
|
return {
|
|
|
...item,
|