|
@@ -411,7 +411,7 @@
|
|
ref="settingTable" @selection-change="handleSelectionChange"
|
|
ref="settingTable" @selection-change="handleSelectionChange"
|
|
:height="400" style="width: 100%;">
|
|
:height="400" style="width: 100%;">
|
|
<el-table-column type="selection" width="55"></el-table-column>
|
|
<el-table-column type="selection" width="55"></el-table-column>
|
|
- <el-table-column prop="name" label="姓名" sortable width="90" fixed="left"></el-table-column>
|
|
|
|
|
|
+ <el-table-column prop="name" :label="$t('lable.name')" sortable width="90" fixed="left"></el-table-column>
|
|
|
|
|
|
<el-table-column :label="item.projectName" v-for="(item) in projectCols" width="180" size="small"
|
|
<el-table-column :label="item.projectName" v-for="(item) in projectCols" width="180" size="small"
|
|
:key="item.id" align="center">
|
|
:key="item.id" align="center">
|
|
@@ -419,88 +419,88 @@
|
|
<span>{{scope.row[item.projectId]}}</span>%
|
|
<span>{{scope.row[item.projectId]}}</span>%
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="设置比例" width="80" fixed="right">
|
|
|
|
|
|
+ <el-table-column :label="$t('Settheproportion')" width="80" fixed="right">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-button size="small" @click="setPercent(false,scope.row)">设置</el-button>
|
|
|
|
|
|
+ <el-button size="small" @click="setPercent(false,scope.row)">{{ $t('setup') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
</div>
|
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
- <el-button type="primary" @click="settingDialog = false" >关闭</el-button>
|
|
|
|
- <el-button type="primary" @click="saveMonthSetting()" >保存</el-button>
|
|
|
|
|
|
+ <el-button type="primary" @click="settingDialog = false" >{{ $t('Shutdown') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="saveMonthSetting()" >{{ $t('save') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog :title="date + '月待分摊项目选择'" show-header="false" v-if="projectsDialog" :visible.sync="projectsDialog"
|
|
|
|
|
|
+ <el-dialog :title="date + $t('projectstobe assessed')" show-header="false" v-if="projectsDialog" :visible.sync="projectsDialog"
|
|
:close-on-click-modal="false" customClass="customWidth" width="1000px">
|
|
:close-on-click-modal="false" customClass="customWidth" width="1000px">
|
|
<el-select v-model="chosenProjects" multiple filterable clearable style="width:100%">
|
|
<el-select v-model="chosenProjects" multiple filterable clearable style="width:100%">
|
|
<el-option v-for="item in allProjectList" :label="item.projectName" :key="item.id" :value="item.id"></el-option>
|
|
<el-option v-for="item in allProjectList" :label="item.projectName" :key="item.id" :value="item.id"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
- <el-checkbox v-model="chosenProjectsChecked" @change="chosenProjectsCheckedClick" style="margin: 20px 0;">{{chosenProjectsChecked ? '取消选择全部项目' : '选中全部项目'}}</el-checkbox>
|
|
|
|
|
|
+ <el-checkbox v-model="chosenProjectsChecked" @change="chosenProjectsCheckedClick" style="margin: 20px 0;">{{chosenProjectsChecked ? $t('Deselectallitems') : $t('Selectallitems')}}</el-checkbox>
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
- <el-button type="default" @click="projectsDialog = false" >关闭</el-button>
|
|
|
|
- <el-button type="primary" @click="saveProjectSetting()" >确定</el-button>
|
|
|
|
|
|
+ <el-button type="default" @click="projectsDialog = false" >{{ $t('Shutdown') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="saveProjectSetting()" >{{ $t('btn.determine') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
- <el-dialog title="导入分摊比例数据" v-if="intoAmortizationDialog" :visible.sync="intoAmortizationDialog" customClass="customWidth" width="500px">
|
|
|
|
- <p>1. 下载
|
|
|
|
- <el-link type="primary" style="margin-left:5px;" :underline="false" href="./upload/员工项目分摊比例导入模板.xlsx" download="员工项目分摊比例导入模板.xlsx">员工项目分摊比例导入模板.xlsx</el-link>
|
|
|
|
|
|
+ <el-dialog title="$t('allocationdata')" v-if="intoAmortizationDialog" :visible.sync="intoAmortizationDialog" customClass="customWidth" width="500px">
|
|
|
|
+ <p>{{'1.' + $t('other.download')}}
|
|
|
|
+ <el-link type="primary" style="margin-left:5px;" :underline="false" :href="'./upload/'+$t('allocationImporttemplates')+'.xlsx'" :download="$t('allocationImporttemplates') + '.xlsx'">{{$t('allocationImporttemplates')+'.xlsx'}}</el-link>
|
|
</p>
|
|
</p>
|
|
- <p>2. 填写excel模板,请确保模板中的项目和人员已添加到系统中。</p>
|
|
|
|
|
|
+ <p>{{'2.' + $t('other.projectsAndPeopleInThetemplate') }}</p>
|
|
<p style="display: flex;justify-content: center;padding:1em 0">
|
|
<p style="display: flex;justify-content: center;padding:1em 0">
|
|
<el-upload ref="upload" action="#" :limit="1" :http-request="batchImportData" :show-file-list="false">
|
|
<el-upload ref="upload" action="#" :limit="1" :http-request="batchImportData" :show-file-list="false">
|
|
- <el-button type="primary" :underline="false" :loading="importingData">开始导入</el-button>
|
|
|
|
|
|
+ <el-button type="primary" :underline="false" :loading="importingData">{{ $t('other.startImporting') }}</el-button>
|
|
</el-upload>
|
|
</el-upload>
|
|
</p>
|
|
</p>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
- <el-dialog title="设置员工成本各项目占比" show-header="false" v-if="setPercentDialog" :visible.sync="setPercentDialog"
|
|
|
|
|
|
+ <el-dialog :title="$t('eachitemofemployeecost')" show-header="false" v-if="setPercentDialog" :visible.sync="setPercentDialog"
|
|
:close-on-click-modal="false" customClass="customWidth" width="600px" >
|
|
:close-on-click-modal="false" customClass="customWidth" width="600px" >
|
|
<div style="margin:0px 10px 10px 10px;">
|
|
<div style="margin:0px 10px 10px 10px;">
|
|
- <span>选择员工</span>
|
|
|
|
|
|
+ <span>{{ $t('Selecttheemployee') }}</span>
|
|
<el-select v-model="chosenNoReportUserIds" multiple filterable clearable style="width:330px;" collapse-tags>
|
|
<el-select v-model="chosenNoReportUserIds" multiple filterable clearable style="width:330px;" collapse-tags>
|
|
<el-option v-for="item in noReportUserList" :label="item.name" :key="item.id" :value="item.userId"></el-option>
|
|
<el-option v-for="item in noReportUserList" :label="item.name" :key="item.id" :value="item.userId"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
- <el-button @click="averageCost" >自动分摊</el-button>
|
|
|
|
|
|
+ <el-button @click="averageCost" >{{ $t('Automaticallocation') }}</el-button>
|
|
</div>
|
|
</div>
|
|
<el-divider ></el-divider>
|
|
<el-divider ></el-divider>
|
|
<!--项目列表 -->
|
|
<!--项目列表 -->
|
|
<el-form v-model="curPercentVal" label-width="365px" style="margin-top:10px;">
|
|
<el-form v-model="curPercentVal" label-width="365px" style="margin-top:10px;">
|
|
<div class="nameList">
|
|
<div class="nameList">
|
|
<el-form-item v-for="item in projectCols" :label="item.projectName" :key="item.projectId" >
|
|
<el-form-item v-for="item in projectCols" :label="item.projectName" :key="item.projectId" >
|
|
- 占比: <el-input v-model="curPercentVal[item.projectId]" style="width:100px;" @input="updatePercentValue"></el-input> %
|
|
|
|
|
|
+ {{ $t('Accountedfor') + ':' }}<el-input v-model="curPercentVal[item.projectId]" style="width:100px;" @input="updatePercentValue"></el-input> %
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</div>
|
|
</div>
|
|
<el-form-item >
|
|
<el-form-item >
|
|
- 总比例: {{totalPercent}} %
|
|
|
|
|
|
+ {{ $t('totalpercentage') + ':' }}{{totalPercent}} %
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
- <el-button type="default" @click="setPercentDialog = false" >关闭</el-button>
|
|
|
|
- <el-button type="primary" @click="setPercentSetting()" >确定</el-button>
|
|
|
|
|
|
+ <el-button type="default" @click="setPercentDialog = false" >{{ $t('Shutdown') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="setPercentSetting()" >{{ $t('btn.determine') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
<!-- 导入结果说明 -->
|
|
<!-- 导入结果说明 -->
|
|
- <el-dialog title="分摊比例导入结果" v-if="showImportResult" :visible.sync="showImportResult" customClass="customWidth" width="500px">
|
|
|
|
|
|
+ <el-dialog :title="$t('importingtheallocationratio')" v-if="showImportResult" :visible.sync="showImportResult" customClass="customWidth" width="500px">
|
|
<div>
|
|
<div>
|
|
<span>{{importResultMsg}}</span>
|
|
<span>{{importResultMsg}}</span>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<span slot="footer" class="dialog-footer">
|
|
<span slot="footer" class="dialog-footer">
|
|
- <el-button type="primary" @click="showImportResult=false">确定</el-button>
|
|
|
|
|
|
+ <el-button type="primary" @click="showImportResult=false">{{ $t('btn.determine') }}</el-button>
|
|
</span>
|
|
</span>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog title="分摊数据导出" v-if="exportFinanceDialog" :visible.sync="exportFinanceDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
|
|
|
|
|
|
+ <el-dialog :title="$t('AmortizedDataExport')" v-if="exportFinanceDialog" :visible.sync="exportFinanceDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
|
|
<div style="margin:30px;">
|
|
<div style="margin:30px;">
|
|
<el-radio-group v-model="groupByCategory" >
|
|
<el-radio-group v-model="groupByCategory" >
|
|
- <el-radio :label="0">按项目导出</el-radio>
|
|
|
|
- <el-radio :label="1">按项目分类导出</el-radio>
|
|
|
|
|
|
+ <el-radio :label="0">{{ $t('Exportbyproject') }}</el-radio>
|
|
|
|
+ <el-radio :label="1">{{ $t('Exportbprojectcategory') }}</el-radio>
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</div>
|
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
- <el-button @click="exportData" :loading="exportDataProcessing" type="primary">导出</el-button>
|
|
|
|
|
|
+ <el-button @click="exportData" :loading="exportDataProcessing" type="primary">{{ $t('export.export') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</section>
|
|
</section>
|
|
@@ -547,7 +547,7 @@ import { error } from 'dingtalk-jsapi';
|
|
multipleSelection:[],
|
|
multipleSelection:[],
|
|
userCostSettingList: [],
|
|
userCostSettingList: [],
|
|
settingDialog: false,
|
|
settingDialog: false,
|
|
- radio:"全部人员",
|
|
|
|
|
|
+ radio:this.$t('lable.allStaff'),
|
|
noReportUserList:[],
|
|
noReportUserList:[],
|
|
allFinanceList:[],
|
|
allFinanceList:[],
|
|
assignNoProUser: false,
|
|
assignNoProUser: false,
|
|
@@ -615,9 +615,9 @@ import { error } from 'dingtalk-jsapi';
|
|
// console.log(sel);
|
|
// console.log(sel);
|
|
},
|
|
},
|
|
deleteUsers(){
|
|
deleteUsers(){
|
|
- this.$confirm('是否确认删除?','提示',{
|
|
|
|
- confirmButtonText: '确认',
|
|
|
|
- cancelButtonText: '取消',
|
|
|
|
|
|
+ this.$confirm(this.$t(this.$t('doyouwanttodeleteit')),this.$t('other.prompts'),{
|
|
|
|
+ confirmButtonText: this.$t('btn.determine'),
|
|
|
|
+ cancelButtonText: this.$t('btn.cancel'),
|
|
type: 'warning'
|
|
type: 'warning'
|
|
}).then(()=>{
|
|
}).then(()=>{
|
|
let ids = ''
|
|
let ids = ''
|
|
@@ -631,7 +631,7 @@ import { error } from 'dingtalk-jsapi';
|
|
if(res.code == 'ok'){
|
|
if(res.code == 'ok'){
|
|
this.getList()
|
|
this.getList()
|
|
this.$message({
|
|
this.$message({
|
|
- message: '删除成功',
|
|
|
|
|
|
+ message: this.$t('message.successfullyDeleted'),
|
|
type: 'success'
|
|
type: 'success'
|
|
})
|
|
})
|
|
|
|
|
|
@@ -650,7 +650,7 @@ import { error } from 'dingtalk-jsapi';
|
|
}).catch(()=>{
|
|
}).catch(()=>{
|
|
this.$message({
|
|
this.$message({
|
|
type: 'info',
|
|
type: 'info',
|
|
- message: '已取消删除'
|
|
|
|
|
|
+ message: this.$t('thedeletionhasbeencancelled')
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
|
|
@@ -662,7 +662,7 @@ import { error } from 'dingtalk-jsapi';
|
|
},res =>{
|
|
},res =>{
|
|
this.isUploading = false;
|
|
this.isUploading = false;
|
|
if(res.code == 'ok') {
|
|
if(res.code == 'ok') {
|
|
- this.downloadByA({name:this.exportMonth+'财务数据.xls', url: res.data});
|
|
|
|
|
|
+ this.downloadByA({name:this.exportMonth+this.$t('financialdata') + '.xls', url: res.data});
|
|
}
|
|
}
|
|
},error => {
|
|
},error => {
|
|
this.$message({
|
|
this.$message({
|
|
@@ -718,13 +718,13 @@ import { error } from 'dingtalk-jsapi';
|
|
res =>{
|
|
res =>{
|
|
if(res.code == 'ok') {
|
|
if(res.code == 'ok') {
|
|
this.$message({
|
|
this.$message({
|
|
- message: '操作成功',
|
|
|
|
|
|
+ message: this.$t('operationissuccessful'),
|
|
type: "success"
|
|
type: "success"
|
|
});
|
|
});
|
|
this.addreviewer()
|
|
this.addreviewer()
|
|
} else {
|
|
} else {
|
|
this.$message({
|
|
this.$message({
|
|
- message: '操作失败',
|
|
|
|
|
|
+ message: this.$t('operationfailure'),
|
|
type: "error"
|
|
type: "error"
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -747,7 +747,7 @@ import { error } from 'dingtalk-jsapi';
|
|
},
|
|
},
|
|
// 审核
|
|
// 审核
|
|
audits() {
|
|
audits() {
|
|
- this.shenhe = '导入审核'
|
|
|
|
|
|
+ this.shenhe = this.$t('importtheaudits')
|
|
this.importVisible = true
|
|
this.importVisible = true
|
|
},
|
|
},
|
|
switchCostList() {
|
|
switchCostList() {
|
|
@@ -845,17 +845,17 @@ import { error } from 'dingtalk-jsapi';
|
|
});
|
|
});
|
|
if (errorList.length > 0) {
|
|
if (errorList.length > 0) {
|
|
var nameList = errorList.map(e=>e.name);
|
|
var nameList = errorList.map(e=>e.name);
|
|
- this.$message({type:'error', message:'存在人员分配比例非100%: '+nameList});
|
|
|
|
|
|
+ this.$message({type:'error', message:this.$t('proportionofassignedpersonnelisnot ')+'100%:'+nameList});
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
this.http.post('/project-percentage/saveMonthSetting', {projectCols: JSON.stringify(this.projectCols),
|
|
this.http.post('/project-percentage/saveMonthSetting', {projectCols: JSON.stringify(this.projectCols),
|
|
ymonth: this.date, userSettings: JSON.stringify(this.userCostSettingList)},
|
|
ymonth: this.date, userSettings: JSON.stringify(this.userCostSettingList)},
|
|
res => {
|
|
res => {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
- this.$message({type:'success', message:'保存成功'});
|
|
|
|
|
|
+ this.$message({type:'success', message:this.$t('savesuccess')});
|
|
this.settingDialog = false;
|
|
this.settingDialog = false;
|
|
} else {
|
|
} else {
|
|
- this.$message({type:'error', message:'发生错误:'+res.msg});
|
|
|
|
|
|
+ this.$message({type:'error', message:this.$t('erroroccurred')+':'+res.msg});
|
|
}});
|
|
}});
|
|
},
|
|
},
|
|
updatePercentValue() {
|
|
updatePercentValue() {
|
|
@@ -929,7 +929,7 @@ import { error } from 'dingtalk-jsapi';
|
|
//检测是否填写的情况下,是否达到100%
|
|
//检测是否填写的情况下,是否达到100%
|
|
if (this.totalPercent != 100) {
|
|
if (this.totalPercent != 100) {
|
|
this.$message({
|
|
this.$message({
|
|
- message: '分配比例之和必须是100%',
|
|
|
|
|
|
+ message: this.$t('sumoftheallocationsmustbe'),
|
|
type: "error"
|
|
type: "error"
|
|
});
|
|
});
|
|
return;
|
|
return;
|
|
@@ -955,7 +955,7 @@ import { error } from 'dingtalk-jsapi';
|
|
this.multipleSelection = val;
|
|
this.multipleSelection = val;
|
|
},
|
|
},
|
|
switchList() {
|
|
switchList() {
|
|
- if (this.radio == '全部人员') {
|
|
|
|
|
|
+ if (this.radio == this.$t('lable.allStaff')) {
|
|
this.list = this.allFinanceList;
|
|
this.list = this.allFinanceList;
|
|
} else {
|
|
} else {
|
|
this.list = this.noReportUserList;
|
|
this.list = this.noReportUserList;
|
|
@@ -974,9 +974,9 @@ import { error } from 'dingtalk-jsapi';
|
|
res => {
|
|
res => {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
if (res.data.indexOf('xlsx') > 0) {
|
|
if (res.data.indexOf('xlsx') > 0) {
|
|
- this.downloadByA({name:'财务成本报表.xlsx', url:res.data});
|
|
|
|
|
|
+ this.downloadByA({name:this.$t('financialcoststatement')+ '.xlsx', url:res.data});
|
|
} else {
|
|
} else {
|
|
- this.downloadByA({name:'财务成本报表.xls', url:res.data});
|
|
|
|
|
|
+ this.downloadByA({name:this.$t('financialcoststatement')+ '.xls', url:res.data});
|
|
}
|
|
}
|
|
}});
|
|
}});
|
|
|
|
|
|
@@ -998,7 +998,7 @@ import { error } from 'dingtalk-jsapi';
|
|
if(this.customCols.field1 != null && this.customCols.field1 != ''){
|
|
if(this.customCols.field1 != null && this.customCols.field1 != ''){
|
|
if(this.customCols.field1Calculate == null){
|
|
if(this.customCols.field1Calculate == null){
|
|
this.$message({
|
|
this.$message({
|
|
- message: '请选择是否计入总成本',
|
|
|
|
|
|
+ message: this.$t('choosewhethertoincludethetotalcost'),
|
|
type: 'warning'
|
|
type: 'warning'
|
|
})
|
|
})
|
|
return
|
|
return
|
|
@@ -1007,7 +1007,7 @@ import { error } from 'dingtalk-jsapi';
|
|
if(this.customCols.field2 != null && this.customCols.field2 != ''){
|
|
if(this.customCols.field2 != null && this.customCols.field2 != ''){
|
|
if(this.customCols.field1Calculate == null){
|
|
if(this.customCols.field1Calculate == null){
|
|
this.$message({
|
|
this.$message({
|
|
- message: '请选择是否计入总成本',
|
|
|
|
|
|
+ message: this.$t('choosewhethertoincludethetotalcost'),
|
|
type: 'warning'
|
|
type: 'warning'
|
|
})
|
|
})
|
|
return
|
|
return
|
|
@@ -1016,7 +1016,7 @@ import { error } from 'dingtalk-jsapi';
|
|
if(this.customCols.field3 != null && this.customCols.field3 != ''){
|
|
if(this.customCols.field3 != null && this.customCols.field3 != ''){
|
|
if(this.customCols.field1Calculate == null){
|
|
if(this.customCols.field1Calculate == null){
|
|
this.$message({
|
|
this.$message({
|
|
- message: '请选择是否计入总成本',
|
|
|
|
|
|
+ message: this.$t('choosewhethertoincludethetotalcost'),
|
|
type: 'warning'
|
|
type: 'warning'
|
|
})
|
|
})
|
|
return
|
|
return
|
|
@@ -1149,9 +1149,9 @@ import { error } from 'dingtalk-jsapi';
|
|
_this.myChart = myChart;
|
|
_this.myChart = myChart;
|
|
var option = {
|
|
var option = {
|
|
title: {
|
|
title: {
|
|
- text: this.assignNoProUser?'成本总计 ' + totalMoneyCost + '元'
|
|
|
|
- +(this.hasNoProjectUsers?",含无项目人员成本 " + nopCost+"元 ":"")
|
|
|
|
- :'成本总计 ' + totalMoneyCost + '元',
|
|
|
|
|
|
+ text: this.assignNoProUser?this.$t('costintotal') + totalMoneyCost + this.$t('yuan')
|
|
|
|
+ +(this.hasNoProjectUsers?","+$t('projectpersonnelcostincluded') + nopCost+this.$t('yuan'):"")
|
|
|
|
+ :this.$t('costintotal') + totalMoneyCost + this.$t('yuan'),
|
|
left:'left',
|
|
left:'left',
|
|
},
|
|
},
|
|
grid : {
|
|
grid : {
|
|
@@ -1180,8 +1180,8 @@ import { error } from 'dingtalk-jsapi';
|
|
tooltip:{
|
|
tooltip:{
|
|
trigger:'axis',
|
|
trigger:'axis',
|
|
formatter: function (params,ticket,callback) {
|
|
formatter: function (params,ticket,callback) {
|
|
- var res = params[0].name + "<br/>工作成本"+" : " + params[0].data.value
|
|
|
|
- + "元 <br/>工作时长"+" : " + params[0].data.time + "小时";
|
|
|
|
|
|
+ var res = params[0].name + "<br/>"+this.$t('workcost')+" : " + params[0].data.value
|
|
|
|
+ + this.$t('yuan')+"<br/>"+this.$t('screening.workTime')+" : " + params[0].data.time + this.$t('time.hour');
|
|
_this.params = params;
|
|
_this.params = params;
|
|
return res;
|
|
return res;
|
|
}
|
|
}
|
|
@@ -1195,11 +1195,11 @@ import { error } from 'dingtalk-jsapi';
|
|
yAxis: [{
|
|
yAxis: [{
|
|
type : 'value',
|
|
type : 'value',
|
|
axisLabel: {
|
|
axisLabel: {
|
|
- formatter:'{value} (元)'
|
|
|
|
|
|
+ formatter:'{value} ('+this.$t('yuan')+')'
|
|
}
|
|
}
|
|
}],
|
|
}],
|
|
series: [{
|
|
series: [{
|
|
- name: '工作时长(h)',
|
|
|
|
|
|
+ name: this.$t('screening.workTime')+'(h)',
|
|
type: 'bar',
|
|
type: 'bar',
|
|
barMaxWidth: 30,
|
|
barMaxWidth: 30,
|
|
data: yList,
|
|
data: yList,
|
|
@@ -1240,7 +1240,7 @@ import { error } from 'dingtalk-jsapi';
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
this.exportFinanceDialog = false;
|
|
this.exportFinanceDialog = false;
|
|
var aTag = document.createElement('a');
|
|
var aTag = document.createElement('a');
|
|
- aTag.download = "财务成本统计.xls";
|
|
|
|
|
|
+ aTag.download = this.$t('financialcoststatisticss')+".xls";
|
|
aTag.href = res.data;
|
|
aTag.href = res.data;
|
|
aTag.click();
|
|
aTag.click();
|
|
} else {
|
|
} else {
|
|
@@ -1263,7 +1263,7 @@ import { error } from 'dingtalk-jsapi';
|
|
const sums = [];
|
|
const sums = [];
|
|
columns.forEach((column, index) => {
|
|
columns.forEach((column, index) => {
|
|
if (index === 0) {
|
|
if (index === 0) {
|
|
- sums[index] = '总价';
|
|
|
|
|
|
+ sums[index] = this.$t('zongjia');
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (index === 1 || index === 2){
|
|
if (index === 1 || index === 2){
|
|
@@ -1280,7 +1280,7 @@ import { error } from 'dingtalk-jsapi';
|
|
return prev;
|
|
return prev;
|
|
}
|
|
}
|
|
}, 0);
|
|
}, 0);
|
|
- sums[index] += ' 元';
|
|
|
|
|
|
+ sums[index] += this.$t('yuan');
|
|
} else {
|
|
} else {
|
|
sums[index] = 'N/A';
|
|
sums[index] = 'N/A';
|
|
}
|
|
}
|
|
@@ -1301,7 +1301,7 @@ import { error } from 'dingtalk-jsapi';
|
|
let format = str[str.length - 1];
|
|
let format = str[str.length - 1];
|
|
if (format != "xls" && format != "xlsx") {
|
|
if (format != "xls" && format != "xlsx") {
|
|
this.$message({
|
|
this.$message({
|
|
- message: "请选择.xls或.xlsx文件",
|
|
|
|
|
|
+ message: this.$t('other.PleaseselecttheXLSorXLSXfile'),
|
|
type: "error"
|
|
type: "error"
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -1329,13 +1329,13 @@ import { error } from 'dingtalk-jsapi';
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
if (this.user.timeType.financeAudit == 1 ) {
|
|
if (this.user.timeType.financeAudit == 1 ) {
|
|
this.$message({
|
|
this.$message({
|
|
- message: '导入成功,请等待审核',
|
|
|
|
|
|
+ message: this.$t('waiforverification'),
|
|
type: "warning"
|
|
type: "warning"
|
|
});
|
|
});
|
|
this.getMonths();
|
|
this.getMonths();
|
|
} else {
|
|
} else {
|
|
this.$message({
|
|
this.$message({
|
|
- message: '导入成功',
|
|
|
|
|
|
+ message: this.$t('other.importSuccess'),
|
|
type: "success"
|
|
type: "success"
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -1398,7 +1398,7 @@ import { error } from 'dingtalk-jsapi';
|
|
this.allFinanceList = list;
|
|
this.allFinanceList = list;
|
|
|
|
|
|
this.noReportUserList = list.filter(r=>r.hasReport == 0);
|
|
this.noReportUserList = list.filter(r=>r.hasReport == 0);
|
|
- if(this.radio == '全部人员'){
|
|
|
|
|
|
+ if(this.radio == this.$t('lable.allStaff')){
|
|
this.list = this.allFinanceList;
|
|
this.list = this.allFinanceList;
|
|
}else{
|
|
}else{
|
|
this.list = this.noReportUserList
|
|
this.list = this.noReportUserList
|
|
@@ -1432,16 +1432,16 @@ import { error } from 'dingtalk-jsapi';
|
|
// console.log(res.data, '审核状态')
|
|
// console.log(res.data, '审核状态')
|
|
if(res.data) {
|
|
if(res.data) {
|
|
if(res.data.state == '0') {
|
|
if(res.data.state == '0') {
|
|
- this.revaelse = '待审核'
|
|
|
|
|
|
+ this.revaelse = this.$t('state.WaitingAudit')
|
|
this.tabPosition = '0'
|
|
this.tabPosition = '0'
|
|
} else if(res.data.state == '1') {
|
|
} else if(res.data.state == '1') {
|
|
- this.revaelse = '审核记录'
|
|
|
|
|
|
+ this.revaelse = this.$t('Auditrecords')
|
|
this.tabPosition = '1'
|
|
this.tabPosition = '1'
|
|
}else if (res.data.state == '2') {
|
|
}else if (res.data.state == '2') {
|
|
- this.revaelse = '已驳回'
|
|
|
|
|
|
+ this.revaelse = this.$t('state.rejected')
|
|
this.tabPosition = '2'
|
|
this.tabPosition = '2'
|
|
} else if (res.data.state == '3') {
|
|
} else if (res.data.state == '3') {
|
|
- this.revaelse = '已撤销'
|
|
|
|
|
|
+ this.revaelse = this.$t('state.undone')
|
|
this.tabPosition = '-1'
|
|
this.tabPosition = '-1'
|
|
}
|
|
}
|
|
this.getReviewList()
|
|
this.getReviewList()
|
|
@@ -1527,7 +1527,7 @@ import { error } from 'dingtalk-jsapi';
|
|
res => {
|
|
res => {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
this.$message({
|
|
this.$message({
|
|
- message: '操作成功',
|
|
|
|
|
|
+ message: this.$t('operationissuccessful'),
|
|
type: "success"
|
|
type: "success"
|
|
});
|
|
});
|
|
this.getReviewList()
|
|
this.getReviewList()
|
|
@@ -1580,7 +1580,7 @@ import { error } from 'dingtalk-jsapi';
|
|
let format = str[str.length - 1];
|
|
let format = str[str.length - 1];
|
|
if (format != "xls" && format != "xlsx") {
|
|
if (format != "xls" && format != "xlsx") {
|
|
this.$message({
|
|
this.$message({
|
|
- message: "请选择.xls或.xlsx文件",
|
|
|
|
|
|
+ message: this.$t('other.PleaseselecttheXLSorXLSXfile'),
|
|
type: "error"
|
|
type: "error"
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -1596,10 +1596,10 @@ import { error } from 'dingtalk-jsapi';
|
|
this.showImportResult = true;
|
|
this.showImportResult = true;
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
//换成弹出框,以免有人等了半天回来啥也没看到
|
|
//换成弹出框,以免有人等了半天回来啥也没看到
|
|
- this.importResultMsg = "成功导入"+res.data+"条分摊比例数据。"+(res.msg?res.msg:"");
|
|
|
|
|
|
+ this.importResultMsg = this.$t('other.importSuccess')+res.data+this.$t('apportionmentratiodata')+'。'+(res.msg?res.msg:"");
|
|
this.showSettingDialog();
|
|
this.showSettingDialog();
|
|
} else {
|
|
} else {
|
|
- this.importResultMsg = "导入失败:"+res.msg;
|
|
|
|
|
|
+ this.importResultMsg = this.$t('export.Importfailure')+":"+res.msg;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
error => {
|
|
error => {
|