|
@@ -2,7 +2,7 @@
|
|
<section>
|
|
<section>
|
|
<div class="sidebars" ref="sidebars" style="width: 200px;display: block;background: #fff;">
|
|
<div class="sidebars" ref="sidebars" style="width: 200px;display: block;background: #fff;">
|
|
<div ref="abbisd" style="width: 100%;overflow: hidden;">
|
|
<div ref="abbisd" style="width: 100%;overflow: hidden;">
|
|
- <h3><i class="iconfont firerock-iconbaoxiao" style="padding-right: 10px"></i>费用报销模块</h3>
|
|
|
|
|
|
+ <h3><i class="iconfont firerock-iconbaoxiao" style="padding-right: 10px"></i>{{ $t('expensereimbursementmodule') }}</h3>
|
|
<el-divider ></el-divider>
|
|
<el-divider ></el-divider>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-menu
|
|
<el-menu
|
|
@@ -16,19 +16,19 @@
|
|
<el-submenu index="1">
|
|
<el-submenu index="1">
|
|
<template slot="title">
|
|
<template slot="title">
|
|
<i class="iconfont firerock-icontianbao"></i>
|
|
<i class="iconfont firerock-icontianbao"></i>
|
|
- <span>员工费用填报</span>
|
|
|
|
|
|
+ <span>{{ $t('fillinthestaffexpenses') }}</span>
|
|
</template>
|
|
</template>
|
|
- <el-menu-item index="1-1"><p @click="ssl(0)"> 一般费用填报</p></el-menu-item>
|
|
|
|
- <el-menu-item index="1-2"><p @click="ssl(1)">差旅费用填报</p></el-menu-item>
|
|
|
|
- <el-menu-item index="1-3"><p @click="ssl(2)">外包费用填报</p></el-menu-item>
|
|
|
|
|
|
+ <el-menu-item index="1-1"><p @click="ssl(0)"> {{ $t('generalexpenses') }}</p></el-menu-item>
|
|
|
|
+ <el-menu-item index="1-2"><p @click="ssl(1)">{{ $t('travelexpensess') }}</p></el-menu-item>
|
|
|
|
+ <el-menu-item index="1-3"><p @click="ssl(2)">{{ $t('outsourcingcostshouldbereported') }}</p></el-menu-item>
|
|
</el-submenu>
|
|
</el-submenu>
|
|
<el-submenu index="2">
|
|
<el-submenu index="2">
|
|
<template slot="title">
|
|
<template slot="title">
|
|
<i class="iconfont firerock-iconbaoxiaodan"></i>
|
|
<i class="iconfont firerock-iconbaoxiaodan"></i>
|
|
- <span>{{permissions.costAll?"报销凭证列表":"我的报销凭证"}}</span>
|
|
|
|
|
|
+ <span>{{permissions.costAll?$t('listofreimbursementvouchers'):$t('myexpensevoucher')}}</span>
|
|
</template>
|
|
</template>
|
|
- <el-menu-item index="2-1" ><p @click="bills(false)" >单据列表</p></el-menu-item>
|
|
|
|
- <el-menu-item index="2-2" v-if="permissions.costAudit"><p @click="bills(true)">单据审核</p></el-menu-item>
|
|
|
|
|
|
+ <el-menu-item index="2-1" ><p @click="bills(false)" >{{ $t('documentlist') }}</p></el-menu-item>
|
|
|
|
+ <el-menu-item index="2-2" v-if="permissions.costAudit"><p @click="bills(true)">{{ $t('documentreview') }}</p></el-menu-item>
|
|
</el-submenu>
|
|
</el-submenu>
|
|
<!-- <el-menu-item index="3" @select="bills" @click="bills(false)" v-if="user.role == 0">
|
|
<!-- <el-menu-item index="3" @select="bills" @click="bills(false)" v-if="user.role == 0">
|
|
<i class="iconfont firerock-iconbaoxiaodan"></i>
|
|
<i class="iconfont firerock-iconbaoxiaodan"></i>
|
|
@@ -49,9 +49,9 @@
|
|
<div class="contents">
|
|
<div class="contents">
|
|
<div v-if="!displayTable" class="headine" ref="headine">
|
|
<div v-if="!displayTable" class="headine" ref="headine">
|
|
<h3 ref="headHe" style="padding-left: 220px">{{shuz[ins]}}</h3>
|
|
<h3 ref="headHe" style="padding-left: 220px">{{shuz[ins]}}</h3>
|
|
- <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="submits" size="mini">提交</el-button></p>
|
|
|
|
- <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="submitUpload" size="mini">批量上传</el-button></p>
|
|
|
|
- <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="customTypeOp" size="mini" v-if="permissions.costAll">费用类型管理</el-button></p>
|
|
|
|
|
|
+ <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="submits" size="mini">{{ $t('btn.submit') }}</el-button></p>
|
|
|
|
+ <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="submitUpload" size="mini">{{ $t('batchupload') }}</el-button></p>
|
|
|
|
+ <p style="float: right;margin-right: 25px;"><el-button type="primary" @click="customTypeOp" size="mini" v-if="permissions.costAll">{{ $t('expensetypemanagement') }}</el-button></p>
|
|
</div>
|
|
</div>
|
|
<!-- 上面部分 -->
|
|
<!-- 上面部分 -->
|
|
<div ref="staff" style="margin: 20px 20px 0 220px; width: 81.5%" >
|
|
<div ref="staff" style="margin: 20px 20px 0 220px; width: 81.5%" >
|
|
@@ -61,35 +61,35 @@
|
|
<el-form :model="addForm" ref="mainAddForm" label-width="80px" :rules="addFormRules">
|
|
<el-form :model="addForm" ref="mainAddForm" label-width="80px" :rules="addFormRules">
|
|
<!-- <el-form :model="form" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> -->
|
|
<!-- <el-form :model="form" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> -->
|
|
<!-- 报销人 -->
|
|
<!-- 报销人 -->
|
|
- <el-form-item label="报销人" prop="ownerId">
|
|
|
|
|
|
+ <el-form-item :label="$t('peopleconcerned')" prop="ownerId">
|
|
<!--普通员工只能自己填报自己的 -->
|
|
<!--普通员工只能自己填报自己的 -->
|
|
- <el-select v-model="addForm.ownerId" placeholder="请选择报销人" style="width: 150px" :disabled="!permissions.costAudit" filterable="true">
|
|
|
|
|
|
+ <el-select v-model="addForm.ownerId" :placeholder="$t('pleaseselecttheapplicant')" style="width: 150px" :disabled="!permissions.costAudit" filterable="true">
|
|
<span v-for="(item, index) in users" :key="index">
|
|
<span v-for="(item, index) in users" :key="index">
|
|
<el-option :label="item.name" :value="item.id"></el-option>
|
|
<el-option :label="item.name" :value="item.id"></el-option>
|
|
</span>
|
|
</span>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 填报日期 -->
|
|
<!-- 填报日期 -->
|
|
- <el-form-item label="填报日期" style="position: relative;top: 38px;" prop="createDate">
|
|
|
|
|
|
+ <el-form-item :label="$t('fillinthedate')" style="position: relative;top: 38px;" prop="createDate">
|
|
<el-col :span="11">
|
|
<el-col :span="11">
|
|
- <el-date-picker type="date" placeholder="选择日期" v-model="addForm.createDate" value-format="yyyy-MM-dd" style="width: 200px;"></el-date-picker>
|
|
|
|
|
|
+ <el-date-picker type="date" :placeholder="$t('optiondate')" v-model="addForm.createDate" value-format="yyyy-MM-dd" style="width: 200px;"></el-date-picker>
|
|
</el-col>
|
|
</el-col>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 发票张数 -->
|
|
<!-- 发票张数 -->
|
|
- <el-form-item label="发票张数">
|
|
|
|
|
|
+ <el-form-item :label="$t('invoicenumber')">
|
|
<el-input v-model="addForm.ticketNum" style="width: 150px"></el-input>
|
|
<el-input v-model="addForm.ticketNum" style="width: 150px"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 费用类型 -->
|
|
<!-- 费用类型 -->
|
|
- <el-form-item label="费用类型">
|
|
|
|
|
|
+ <el-form-item :label="$t('costtype')">
|
|
<el-select v-model="addForm.type" disabled style="width: 150px" >
|
|
<el-select v-model="addForm.type" disabled style="width: 150px" >
|
|
- <el-option label="一般" :value="0"></el-option>
|
|
|
|
- <el-option label="差旅" :value="1"></el-option>
|
|
|
|
- <el-option label="外包" :value="2"></el-option>
|
|
|
|
|
|
+ <el-option :label="$t('yi-ban')" :value="0"></el-option>
|
|
|
|
+ <el-option :label="$t('cha-lv')" :value="1"></el-option>
|
|
|
|
+ <el-option :label="$t('wai-bao')" :value="2"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<!-- 备注 -->
|
|
<!-- 备注 -->
|
|
- <el-form-item label="备注" style="display: block; width: 70%; float: left;">
|
|
|
|
|
|
+ <el-form-item :label="$t('bei-zhu')" style="display: block; width: 70%; float: left;">
|
|
<el-input type="textarea" v-model="addForm.remark" :autosize="{minRows: 2, maxRows: 2}"></el-input>
|
|
<el-input type="textarea" v-model="addForm.remark" :autosize="{minRows: 2, maxRows: 2}"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 总费用 -->
|
|
<!-- 总费用 -->
|
|
@@ -99,9 +99,9 @@
|
|
<!-- 按钮 -->
|
|
<!-- 按钮 -->
|
|
|
|
|
|
<div class="pu_button">
|
|
<div class="pu_button">
|
|
- <span v-if="totalCost <= 0" style="color:#606266;">总费用 {{totalCost}} 元</span>
|
|
|
|
- <span v-else style="color:#606266;">总费用 ¥{{totalCost | numberToCurrency}} 元</span>
|
|
|
|
- <span class="pu_bu_x" style="margin-left:10px;" @click="addxz"> <i class="el-icon-circle-plus-outline"></i> 新增发票</span>
|
|
|
|
|
|
+ <span v-if="totalCost <= 0" style="color:#606266;">{{ $t('totalcostos') }} {{totalCost}} {{ $t('yuan') }}</span>
|
|
|
|
+ <span v-else style="color:#606266;">{{ $t('totalcostos') }} ¥{{totalCost | numberToCurrency}} {{ $t('yuan') }}</span>
|
|
|
|
+ <span class="pu_bu_x" style="margin-left:10px;" @click="addxz"> <i class="el-icon-circle-plus-outline"></i> {{ $t('newinvoice') }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- 表格 -->
|
|
<!-- 表格 -->
|
|
@@ -112,9 +112,9 @@
|
|
style="width: 100%;height:100%"
|
|
style="width: 100%;height:100%"
|
|
height="386px"
|
|
height="386px"
|
|
@row-dblclick="dbclick">
|
|
@row-dblclick="dbclick">
|
|
- <el-table-column prop="projectName" label="所属项目" width="180">
|
|
|
|
|
|
+ <el-table-column prop="projectName" :label="$t('subordinatetotheproject')" width="180">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-select size="small" v-model="scope.row.projectId" placeholder="项目" style="width: 150px" filterable popper-class="projectSelectPopperClass">
|
|
|
|
|
|
+ <el-select size="small" v-model="scope.row.projectId" :placeholder="$t('other.project')" style="width: 150px" filterable popper-class="projectSelectPopperClass">
|
|
<el-option v-for="(item, index) in projectList" :key="index" :label="item.projectName + item.projectCode" :value="item.id" @click="ok(item)">
|
|
<el-option v-for="(item, index) in projectList" :key="index" :label="item.projectName + item.projectCode" :value="item.id" @click="ok(item)">
|
|
<span style="float: left;color: #8492a6; font-size: 13px">{{ item.projectCode }}</span>
|
|
<span style="float: left;color: #8492a6; font-size: 13px">{{ item.projectCode }}</span>
|
|
<span style="float: right;">{{ item.projectName }}</span>
|
|
<span style="float: right;">{{ item.projectName }}</span>
|
|
@@ -122,65 +122,65 @@
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="happenDate" label="费用日期" width="170px">
|
|
|
|
|
|
+ <el-table-column prop="happenDate" :label="$t('forthedate')" width="170px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-date-picker size="small" v-model="scope.row.happenDate" type="date" style=" width: 145px" value-format="yyyy-MM-dd" placeholder="选择日期">
|
|
|
|
|
|
+ <el-date-picker size="small" v-model="scope.row.happenDate" type="date" style=" width: 145px" value-format="yyyy-MM-dd" :placeholder="$t('optiondate')">
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="发票种类" width="175px">
|
|
|
|
|
|
+ <el-table-column :label="$t('invoices')" width="175px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-select size="small" v-model="scope.row.invoiceType" placeholder="请选择费用类型" style="width: 150px;">
|
|
|
|
- <el-option label="增值税专用发票" value="0"></el-option>
|
|
|
|
- <el-option label="增值税普通发票" value="1"></el-option>
|
|
|
|
|
|
+ <el-select size="small" v-model="scope.row.invoiceType" :placeholder="$t('pleaseselectthetypeoffee')" style="width: 150px;">
|
|
|
|
+ <el-option :label="$t('vATspecialinvoice')" value="0"></el-option>
|
|
|
|
+ <el-option :label="$t('vATgeneralinvoice')" value="1"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="费用类型" width="175px">
|
|
|
|
|
|
+ <el-table-column :label="$t('costtype')" width="175px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-select size="small" v-model="scope.row.expenseType" placeholder="费用类型" style="width: 150px" >
|
|
|
|
|
|
+ <el-select size="small" v-model="scope.row.expenseType" :placeholder="$t('costtype')" style="width: 150px" >
|
|
<el-option v-for="(item, index) in expenseTypeList" :key="index" :label="item.typeName" :value="item.typeName" ></el-option>
|
|
<el-option v-for="(item, index) in expenseTypeList" :key="index" :label="item.typeName" :value="item.typeName" ></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="费用金额(含税)" width="135px">
|
|
|
|
|
|
+ <el-table-column :label="$t('amountoffees')" width="135px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" :id="'upam'+scope.$index" v-model="scope.row.amount" @input="zhi(scope.$index)" @change="shiqu(scope.row.amount)" @keyup.native="restrictNumber('upam'+scope.$index)"></el-input>
|
|
<el-input size="small" :id="'upam'+scope.$index" v-model="scope.row.amount" @input="zhi(scope.$index)" @change="shiqu(scope.row.amount)" @keyup.native="restrictNumber('upam'+scope.$index)"></el-input>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="invoiceNo" label="发票号" width="135px">
|
|
|
|
|
|
+ <el-table-column prop="invoiceNo" :label="$t('invoiceno')" width="135px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" v-model.number="scope.row.invoiceNo"></el-input>
|
|
<el-input size="small" v-model.number="scope.row.invoiceNo"></el-input>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="税率%" width="135px">
|
|
|
|
|
|
+ <el-table-column :label="$t('shui-shuai')" width="135px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" type= "number" v-model="scope.row.taxPercent" @input="zhi(scope.$index)"></el-input>
|
|
<el-input size="small" type= "number" v-model="scope.row.taxPercent" @input="zhi(scope.$index)"></el-input>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="税额" width="135px">
|
|
|
|
|
|
+ <el-table-column :label="$t('taxs')" width="135px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" v-model="scope.row.taxValue" @input="zhis(scope.$index)"></el-input>
|
|
<el-input size="small" v-model="scope.row.taxValue" @input="zhis(scope.$index)"></el-input>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="备注" width="135px">
|
|
|
|
|
|
+ <el-table-column :label="$t('bei-zhu')" width="135px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" v-model="scope.row.remark"></el-input>
|
|
<el-input size="small" v-model="scope.row.remark"></el-input>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="报销凭证" width="135px">
|
|
|
|
|
|
+ <el-table-column :label="$t('expensereimbursementvoucher')" width="135px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div @click="abl(scope.$index)">
|
|
<div @click="abl(scope.$index)">
|
|
<el-upload :class="!scope.row.pic ? 'upload-demo' : 'upload-demo icl'" :before-remove="beforeRemove" :http-request="fileonLoad" limit="1" name="multipartFile">
|
|
<el-upload :class="!scope.row.pic ? 'upload-demo' : 'upload-demo icl'" :before-remove="beforeRemove" :http-request="fileonLoad" limit="1" name="multipartFile">
|
|
- <el-button size="small" type="primary" v-if="!scope.row.pic">点击上传</el-button>
|
|
|
|
|
|
+ <el-button size="small" type="primary" v-if="!scope.row.pic">{{ $t('clickupload') }}</el-button>
|
|
</el-upload>
|
|
</el-upload>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column fixed="right"
|
|
<el-table-column fixed="right"
|
|
- label="操作">
|
|
|
|
|
|
+ :label="$t('operation')">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-button type="default" size="mini" style="display: inline-block;margin-left:0;margin-top: 3px" @click="chanc(scope.$index)">删除</el-button>
|
|
|
|
|
|
+ <el-button type="default" size="mini" style="display: inline-block;margin-left:0;margin-top: 3px" @click="chanc(scope.$index)">{{ $t('btn.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -197,78 +197,78 @@
|
|
<div>
|
|
<div>
|
|
<el-form label-width="70px" inline >
|
|
<el-form label-width="70px" inline >
|
|
<!-- 报销人 -->
|
|
<!-- 报销人 -->
|
|
- <el-form-item label="报销人">
|
|
|
|
- <el-select v-model="ownerId" size="small" clearable placeholder="选择报销人" style="width: 120px" :disabled="!permissions.costAudit" filterable="true">
|
|
|
|
|
|
+ <el-form-item :label="$t('peopleconcerned')">
|
|
|
|
+ <el-select v-model="ownerId" size="small" clearable :placeholder="$t('selecttheapplicant')" style="width: 120px" :disabled="!permissions.costAudit" filterable="true">
|
|
<span v-for="(item, index) in users" :key="index">
|
|
<span v-for="(item, index) in users" :key="index">
|
|
<el-option :label="item.name" :value="item.id"></el-option>
|
|
<el-option :label="item.name" :value="item.id"></el-option>
|
|
</span>
|
|
</span>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 单据编号 -->
|
|
<!-- 单据编号 -->
|
|
- <el-form-item label="单据编号" >
|
|
|
|
- <el-input v-model="code" size="small" placeholder="单据编号" clearable="true" style="width: 120px"></el-input>
|
|
|
|
|
|
+ <el-form-item :label="$t('receiptnumber')" >
|
|
|
|
+ <el-input v-model="code" size="small" :placeholder="$t('receiptnumber')" clearable="true" style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 费用类型 -->
|
|
<!-- 费用类型 -->
|
|
- <el-form-item label="费用类型">
|
|
|
|
- <el-select v-model="type" size="small" placeholder="请选择费用类型" clearable="true" style="width: 150px">
|
|
|
|
- <el-option label="一般费用" value="0"></el-option>
|
|
|
|
- <el-option label="差旅费用" value="1"></el-option>
|
|
|
|
- <el-option label="外包费用" value="2"></el-option>
|
|
|
|
|
|
+ <el-form-item :label="$t('costtype')">
|
|
|
|
+ <el-select v-model="type" size="small" :placeholder="$t('pleaseselectthetypeoffee')" clearable="true" style="width: 150px">
|
|
|
|
+ <el-option :label="$t('generalcost')" value="0"></el-option>
|
|
|
|
+ <el-option :label="$t('travelexpenses')" value="1"></el-option>
|
|
|
|
+ <el-option :label="$t('outsourcingcost')" value="2"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- 填报日期 -->
|
|
<!-- 填报日期 -->
|
|
- <el-form-item label="填报日期" >
|
|
|
|
|
|
+ <el-form-item label="$t('fillinthedate')" >
|
|
<el-date-picker
|
|
<el-date-picker
|
|
v-model="date"
|
|
v-model="date"
|
|
type="daterange"
|
|
type="daterange"
|
|
value-format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd"
|
|
size="small"
|
|
size="small"
|
|
- range-separator="至"
|
|
|
|
- start-placeholder="开始日期"
|
|
|
|
- end-placeholder="结束日期"
|
|
|
|
|
|
+ :range-separator="$t('other.to')"
|
|
|
|
+ :start-placeholder="$t('time.startDate')"
|
|
|
|
+ :end-placeholder="$t('time.endDate')"
|
|
style="width: 280px">
|
|
style="width: 280px">
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
- <el-button @click="getList" size="small">查找</el-button>
|
|
|
|
|
|
+ <el-button @click="getList" size="small">{{ $t('find') }}</el-button>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
<el-divider ></el-divider>
|
|
<el-divider ></el-divider>
|
|
<!--列表-->
|
|
<!--列表-->
|
|
<el-table ref="tab" :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;" :summary-method="getSummaries" show-summary>
|
|
<el-table ref="tab" :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;" :summary-method="getSummaries" show-summary>
|
|
- <el-table-column prop="code" label="票据编号"></el-table-column>
|
|
|
|
- <el-table-column prop="totalAmount" label="金额(元)" align="center">
|
|
|
|
|
|
+ <el-table-column prop="code" :label="$t('ticketnumber')"></el-table-column>
|
|
|
|
+ <el-table-column prop="totalAmount" :label="$t('amountof')+ '('+$t('yuan')+')'" align="center">
|
|
<template slot-scope="scope" >
|
|
<template slot-scope="scope" >
|
|
<span style="float:right;margin-right:20px">{{scope.row.totalAmount ? scope.row.totalAmount.toFixed(2) : '0'}}</span>
|
|
<span style="float:right;margin-right:20px">{{scope.row.totalAmount ? scope.row.totalAmount.toFixed(2) : '0'}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="ownerName" label="报销人" ></el-table-column>
|
|
|
|
- <el-table-column prop="createDate" label="填报日期" ></el-table-column>
|
|
|
|
- <el-table-column prop="ticketNum" label="发票张数" ></el-table-column>
|
|
|
|
- <el-table-column prop="type" label="票据类型" >
|
|
|
|
|
|
+ <el-table-column prop="ownerName" :label="$t('peopleconcerned')" ></el-table-column>
|
|
|
|
+ <el-table-column prop="createDate" :label="$t('fillinthedate')" ></el-table-column>
|
|
|
|
+ <el-table-column prop="ticketNum" :label="$t('invoicenumber')" ></el-table-column>
|
|
|
|
+ <el-table-column prop="type" :label="$t('ppertype')" >
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
{{feeType[scope.row.type]}}
|
|
{{feeType[scope.row.type]}}
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="remark" label="备注" width="180">
|
|
|
|
|
|
+ <el-table-column prop="remark" :label="$t('bei-zhu')" width="180">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<span style="font-size:12px;">{{scope.row.remark}}</span>
|
|
<span style="font-size:12px;">{{scope.row.remark}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="status" label="状态" width="80">
|
|
|
|
|
|
+ <el-table-column prop="status" :label="$t('state.states')" width="80">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<span v-if="scope.row.status == 1" class="waiting">{{statusTxt[scope.row.status]}}</span>
|
|
<span v-if="scope.row.status == 1" class="waiting">{{statusTxt[scope.row.status]}}</span>
|
|
<span v-if="scope.row.status == 2" class="rejected">{{statusTxt[scope.row.status]}}</span>
|
|
<span v-if="scope.row.status == 2" class="rejected">{{statusTxt[scope.row.status]}}</span>
|
|
<span v-if="scope.row.status == 0 || scope.row.status == 3" >{{statusTxt[scope.row.status]}}</span>
|
|
<span v-if="scope.row.status == 0 || scope.row.status == 3" >{{statusTxt[scope.row.status]}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="denyReason" label="驳回原因" width="180">
|
|
|
|
|
|
+ <el-table-column prop="denyReason" :label="$t('dismissreason')" width="180">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<span style="font-size:12px;">{{scope.row.denyReason}}</span>
|
|
<span style="font-size:12px;">{{scope.row.denyReason}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column fixed="right" label="操作" :width="isAuditList?220:160">
|
|
|
|
|
|
+ <el-table-column fixed="right" :label="$t('operation')" :width="isAuditList?220:160">
|
|
<template slot-scope="scope" >
|
|
<template slot-scope="scope" >
|
|
<div v-if="!isAuditList">
|
|
<div v-if="!isAuditList">
|
|
<el-button icon="el-icon-view" circle size="mini" @click.stop.native="downloadByA(scope.row)" ></el-button>
|
|
<el-button icon="el-icon-view" circle size="mini" @click.stop.native="downloadByA(scope.row)" ></el-button>
|
|
@@ -276,9 +276,9 @@
|
|
<el-button icon="el-icon-delete" circle size="mini" style="margin-left:10px;" @click.stop.native="deleteItem(scope.row)" v-show="permissions.costAudit || scope.row.status == 1 || scope.row.status == 2 "></el-button>
|
|
<el-button icon="el-icon-delete" circle size="mini" style="margin-left:10px;" @click.stop.native="deleteItem(scope.row)" v-show="permissions.costAudit || scope.row.status == 1 || scope.row.status == 2 "></el-button>
|
|
</div>
|
|
</div>
|
|
<div v-if="isAuditList">
|
|
<div v-if="isAuditList">
|
|
- <el-button size="mini" @click.stop.native="downloadByA(scope.row)" >查看</el-button>
|
|
|
|
- <el-button size="mini" style="margin-left:5px;" @click.stop.native="approve(scope.row)" >通过</el-button>
|
|
|
|
- <el-button size="mini" style="margin-left:5px;" @click.stop.native="denyReason(scope.row)" >驳回</el-button>
|
|
|
|
|
|
+ <el-button size="mini" @click.stop.native="downloadByA(scope.row)" >{{ $t('cha-kan') }}</el-button>
|
|
|
|
+ <el-button size="mini" style="margin-left:5px;" @click.stop.native="approve(scope.row)" >{{ $t('btn.through') }}</el-button>
|
|
|
|
+ <el-button size="mini" style="margin-left:5px;" @click.stop.native="denyReason(scope.row)" >{{ $t('btn.rejected') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -300,37 +300,37 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 我的单据报销展示 -->
|
|
<!-- 我的单据报销展示 -->
|
|
- <el-dialog title="报销凭证详情" :visible.sync="dialog" width="1000px">
|
|
|
|
|
|
+ <el-dialog :title="$t('detailsofReimbursementvoucher')" :visible.sync="dialog" width="1000px">
|
|
<!-- 内容主体 -->
|
|
<!-- 内容主体 -->
|
|
<div class="informant"><!-- 报销人 -->
|
|
<div class="informant"><!-- 报销人 -->
|
|
<el-form :model="ParticularsList" label-width="80px">
|
|
<el-form :model="ParticularsList" label-width="80px">
|
|
- <el-form-item label="报销人" style="width: 270px" :rules="{ required: true, message: '请选择报销人', trigger: 'blur' }">
|
|
|
|
|
|
+ <el-form-item :label="$t('peopleconcerned')" style="width: 270px" :rules="{ required: true, message: $t('pleaseselecttheapplicant'), trigger: 'blur' }">
|
|
<!-- <el-input v-show="flg" v-model="ParticularsList.ownerName" disabled ></el-input> -->
|
|
<!-- <el-input v-show="flg" v-model="ParticularsList.ownerName" disabled ></el-input> -->
|
|
- <el-select v-model="ParticularsList.ownerId" placeholder="请选择报销人" style="width: 150px" :disabled="flg || ParticularsList.ownerId == ParticularsList.operatorId">
|
|
|
|
|
|
+ <el-select v-model="ParticularsList.ownerId" :placeholder="$t('pleaseselecttheapplicant')" style="width: 150px" :disabled="flg || ParticularsList.ownerId == ParticularsList.operatorId">
|
|
<span v-for="(item, index) in users" :key="index">
|
|
<span v-for="(item, index) in users" :key="index">
|
|
<el-option :label="item.name" :value="item.id"></el-option>
|
|
<el-option :label="item.name" :value="item.id"></el-option>
|
|
</span>
|
|
</span>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="填报日期">
|
|
|
|
|
|
+ <el-form-item :label="$t('fillinthedate')">
|
|
<!-- <el-input v-model="ParticularsList.createDate" :disabled="flg"></el-input> -->
|
|
<!-- <el-input v-model="ParticularsList.createDate" :disabled="flg"></el-input> -->
|
|
- <el-date-picker type="date" :disabled="flg" placeholder="选择日期" v-model="ParticularsList.createDate" value-format="yyyy-MM-dd" style="width: 200px;"></el-date-picker>
|
|
|
|
|
|
+ <el-date-picker type="date" :disabled="flg" :placeholder="$t('optiondate')" v-model="ParticularsList.createDate" value-format="yyyy-MM-dd" style="width: 200px;"></el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="发票张数">
|
|
|
|
|
|
+ <el-form-item :label="$t('invoicenumber')">
|
|
<el-input v-enter-number v-model="ParticularsList.ticketNum" :disabled="flg"></el-input>
|
|
<el-input v-enter-number v-model="ParticularsList.ticketNum" :disabled="flg"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="费用类型" style="width: 270px">
|
|
|
|
- <el-select v-model="ParticularsList.type" placeholder="请选择" :disabled="flg">
|
|
|
|
- <el-option label="一般" :value="0"></el-option>
|
|
|
|
- <el-option label="差旅" :value="1"></el-option>
|
|
|
|
- <el-option label="外包" :value="2"></el-option>
|
|
|
|
|
|
+ <el-form-item :label="$t('costtype')" style="width: 270px">
|
|
|
|
+ <el-select v-model="ParticularsList.type" :placeholder="$t('defaultText.pleaseChoose')" :disabled="flg">
|
|
|
|
+ <el-option :label="$t('yi-ban')" :value="0"></el-option>
|
|
|
|
+ <el-option :label="$t('cha-lv')" :value="1"></el-option>
|
|
|
|
+ <el-option :label="$t('wai-bao')" :value="2"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="备注" style="width: 280px">
|
|
|
|
|
|
+ <el-form-item :label="$t('bei-zhu')" style="width: 280px">
|
|
<el-input v-model="ParticularsList.remark" :disabled="flg"></el-input>
|
|
<el-input v-model="ParticularsList.remark" :disabled="flg"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="总费用">
|
|
|
|
- ¥{{ParticularsList.totalAmount | numberToCurrency}} 元
|
|
|
|
|
|
+ <el-form-item :label="$t('totalcostos')">
|
|
|
|
+ ¥{{ParticularsList.totalAmount | numberToCurrency}} {{$t('yuan')}}
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<!-- <template slot-scope="scope">
|
|
<!-- <template slot-scope="scope">
|
|
@@ -339,9 +339,9 @@
|
|
</template> -->
|
|
</template> -->
|
|
</el-form>
|
|
</el-form>
|
|
<el-table :data="ParticularsList.invoiceList" border style="width: 100%">
|
|
<el-table :data="ParticularsList.invoiceList" border style="width: 100%">
|
|
- <el-table-column prop="projectId" label="项目" width="155">
|
|
|
|
|
|
+ <el-table-column prop="projectId" :label="$t('other.project')" width="155">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-select size="small" v-if="!flg" v-model="scope.row.projectId" placeholder="项目" style="width: 130px">
|
|
|
|
|
|
+ <el-select size="small" v-if="!flg" v-model="scope.row.projectId" :placeholder="$t('other.project')" style="width: 130px">
|
|
<el-option v-for="(item, index) in projectList" :key="index" :label="item.projectName + item.projectCode" :value="item.id" @click="ok(item)">
|
|
<el-option v-for="(item, index) in projectList" :key="index" :label="item.projectName + item.projectCode" :value="item.id" @click="ok(item)">
|
|
<span style="float: left;color: #8492a6; font-size: 13px">{{ item.projectCode }}</span>
|
|
<span style="float: left;color: #8492a6; font-size: 13px">{{ item.projectCode }}</span>
|
|
<span style="float: right;margin-left: 20px">{{ item.projectName }}</span>
|
|
<span style="float: right;margin-left: 20px">{{ item.projectName }}</span>
|
|
@@ -355,66 +355,66 @@
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="happenDate" label="费用日期" width="172">
|
|
|
|
|
|
+ <el-table-column prop="happenDate" :label="$t('forthedate')" width="172">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-date-picker size="small" v-if="!flg" v-model="scope.row.happenDate" type="date" style=" width: 145px" value-format="yyyy-MM-dd" placeholder="选择日期">
|
|
|
|
|
|
+ <el-date-picker size="small" v-if="!flg" v-model="scope.row.happenDate" type="date" style=" width: 145px" value-format="yyyy-MM-dd" :placeholder="$t('optiondate')">
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
<span v-else>{{scope.row.happenDate}}</span>
|
|
<span v-else>{{scope.row.happenDate}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="invoiceType" label="发票种类" width="172">
|
|
|
|
|
|
+ <el-table-column prop="invoiceType" :label="$t('invoices')" width="172">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-select size="small" v-if="!flg" v-model="scope.row.invoiceType" placeholder="请选择费用类型" style="width: 150px;">
|
|
|
|
- <el-option label="增值税专用发票" :value="0"></el-option>
|
|
|
|
- <el-option label="增值税普通发票" :value="1"></el-option>
|
|
|
|
|
|
+ <el-select size="small" v-if="!flg" v-model="scope.row.invoiceType" :placeholder="$t('pleaseselectthetypeoffee')" style="width: 150px;">
|
|
|
|
+ <el-option :label="$t('vATspecialinvoice')" :value="0"></el-option>
|
|
|
|
+ <el-option :label="$t('vATgeneralinvoice')" :value="1"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
<span v-else>{{typeInvoic[scope.row.invoiceType]}}</span>
|
|
<span v-else>{{typeInvoic[scope.row.invoiceType]}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="invoiceType" label="费用类型" width="172">
|
|
|
|
|
|
+ <el-table-column prop="invoiceType" :label="$t('costtype')" width="172">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-select v-if="!flg" size="small" v-model="scope.row.expenseType" placeholder="请选择费用类型" style="width: 150px" >
|
|
|
|
|
|
+ <el-select v-if="!flg" size="small" v-model="scope.row.expenseType" :placeholder="$t('pleaseselectthetypeoffee')" style="width: 150px" >
|
|
<el-option v-for="(item, index) in expenseTypeList" :key="index" :label="item.typeName" :value="item.typeName" ></el-option>
|
|
<el-option v-for="(item, index) in expenseTypeList" :key="index" :label="item.typeName" :value="item.typeName" ></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
<span v-else>{{scope.row.expenseType}}</span>
|
|
<span v-else>{{scope.row.expenseType}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="amount" label="费用金额(含税:元)" width="172">
|
|
|
|
|
|
+ <el-table-column prop="amount" :label="$t('amountoffees')" width="172">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" v-if="!flg" :id="'am'+scope.$index" v-model="scope.row.amount" @input="zhiNum(scope.$index, scope)" @change="kan" @keyup.native="restrictNumber('am'+scope.$index)"></el-input>
|
|
<el-input size="small" v-if="!flg" :id="'am'+scope.$index" v-model="scope.row.amount" @input="zhiNum(scope.$index, scope)" @change="kan" @keyup.native="restrictNumber('am'+scope.$index)"></el-input>
|
|
<span v-else>¥{{scope.row.amount}}</span>
|
|
<span v-else>¥{{scope.row.amount}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="invoiceNo" label="发票号" width="172">
|
|
|
|
|
|
+ <el-table-column prop="invoiceNo" :label="$t('invoiceno')" width="172">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" v-if="!flg" v-model.number="scope.row.invoiceNo"></el-input>
|
|
<el-input size="small" v-if="!flg" v-model.number="scope.row.invoiceNo"></el-input>
|
|
<span v-else>{{scope.row.invoiceNo}}</span>
|
|
<span v-else>{{scope.row.invoiceNo}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="taxPercent" label="税率%" width="172">
|
|
|
|
|
|
+ <el-table-column prop="taxPercent" :label="$t('shui-shuai')" width="172">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" v-if="!flg" v-model="scope.row.taxPercent" @input="zhiNum(scope.$index, scope)"></el-input>
|
|
<el-input size="small" v-if="!flg" v-model="scope.row.taxPercent" @input="zhiNum(scope.$index, scope)"></el-input>
|
|
<span v-else>{{scope.row.taxPercent}}</span>
|
|
<span v-else>{{scope.row.taxPercent}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="taxValue" label="税额(元)" width="172">
|
|
|
|
|
|
+ <el-table-column prop="taxValue" :label="$t('taxs')+'('+$t('yuan')+')'" width="172">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" v-if="!flg" v-model="scope.row.taxValue"></el-input>
|
|
<el-input size="small" v-if="!flg" v-model="scope.row.taxValue"></el-input>
|
|
<span v-else>¥{{scope.row.taxValue}}</span>
|
|
<span v-else>¥{{scope.row.taxValue}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="remark" label="备注" width="300">
|
|
|
|
|
|
+ <el-table-column prop="remark" :label="$t('bei-zhu')" width="300">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input size="small" v-if="!flg" v-model="scope.row.remark"></el-input>
|
|
<el-input size="small" v-if="!flg" v-model="scope.row.remark"></el-input>
|
|
<span v-else>{{scope.row.remark}}</span>
|
|
<span v-else>{{scope.row.remark}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="pic" label="报销凭证" width="300">
|
|
|
|
|
|
+ <el-table-column prop="pic" :label="$t('expensereimbursementvoucher')" width="300">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div v-if="!flg">
|
|
<div v-if="!flg">
|
|
<div @click="abl(scope.$index)" style="height: 35px;overflow: hidden;">
|
|
<div @click="abl(scope.$index)" style="height: 35px;overflow: hidden;">
|
|
<el-upload :class="!scope.row.pic ? 'upload-demo' : 'upload-demo icl'" :file-list="scope.row.pic" :before-remove="beforeRemoves" :http-request="fileonLoads" limit="1" name="multipartFile">
|
|
<el-upload :class="!scope.row.pic ? 'upload-demo' : 'upload-demo icl'" :file-list="scope.row.pic" :before-remove="beforeRemoves" :http-request="fileonLoads" limit="1" name="multipartFile">
|
|
- <el-button size="small" type="primary" v-if="!scope.row.pic">点击上传</el-button>
|
|
|
|
|
|
+ <el-button size="small" type="primary" v-if="!scope.row.pic">{{ $t('clickupload') }}</el-button>
|
|
</el-upload>
|
|
</el-upload>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -426,15 +426,15 @@
|
|
</viewer>
|
|
</viewer>
|
|
</div>
|
|
</div>
|
|
</span>
|
|
</span>
|
|
- <span v-else>暂无单据</span>
|
|
|
|
|
|
+ <span v-else>{{ $t('nodocuments') }}</span>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<!-- 删除 -->
|
|
<!-- 删除 -->
|
|
<el-table-column fixed="right"
|
|
<el-table-column fixed="right"
|
|
- label="操作" v-if="!flg">
|
|
|
|
|
|
+ :label="$t('operation')" v-if="!flg">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-button type="default" size="mini" style="display: inline-block;margin-left:0;margin-top: 3px" @click="delec(scope.$index)">删除</el-button>
|
|
|
|
|
|
+ <el-button type="default" size="mini" style="display: inline-block;margin-left:0;margin-top: 3px" @click="delec(scope.$index)">{{ $t('btn.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -444,79 +444,80 @@
|
|
</viewer> -->
|
|
</viewer> -->
|
|
<!-- 取消和确定 -->
|
|
<!-- 取消和确定 -->
|
|
<span slot="footer" class="dialog-footer">
|
|
<span slot="footer" class="dialog-footer">
|
|
- <el-button @click="dialog = false">取 消</el-button>
|
|
|
|
- <el-button v-if="!flg" type="primary" @click="present()">确 定</el-button>
|
|
|
|
- <el-button v-else type="primary" @click="dialog = false">确 定</el-button>
|
|
|
|
|
|
+ <el-button @click="dialog = false">{{ $t('btn.cancel') }}</el-button>
|
|
|
|
+ <el-button v-if="!flg" type="primary" @click="present()">{{ $t('btn.determine') }}</el-button>
|
|
|
|
+ <el-button v-else type="primary" @click="dialog = false">{{ $t('btn.determine') }}</el-button>
|
|
</span>
|
|
</span>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 批量上传 -->
|
|
<!-- 批量上传 -->
|
|
- <el-dialog title="批量上传" v-if="importDialog" :visible.sync="importDialog" 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('batchupload')" v-if="importDialog" :visible.sync="importDialog" customClass="customWidth" width="500px">
|
|
|
|
+ <p>1. {{ $t('other.download') }}
|
|
|
|
+ <span>{{ $t('expensereimbursementimporttemplate') }}</span>
|
|
|
|
+ <el-link type="primary" style="margin-left:5px;" :underline="false" :href="'./upload/'+$t('expensereimbursementimporttemplate')+'.xlsx'" :download="$t('expensereimbursementimporttemplate')+'.xlsx'">{{$t('expensereimbursementimporttemplate')}}.xlsx</el-link>
|
|
</p>
|
|
</p>
|
|
- <p>2. 填写excel模板,并上传。</p>
|
|
|
|
|
|
+ <p>2. {{ $t('exceltemplateanduploadit') }}。</p>
|
|
<div style="padding-bottom:1em;">
|
|
<div style="padding-bottom:1em;">
|
|
<div style="width:300px;margin:0 auto">
|
|
<div style="width:300px;margin:0 auto">
|
|
<el-upload ref="upload" action="#" :auto-upload="false" multiple :on-change="fileListAdd" :on-remove="fileListDel">
|
|
<el-upload ref="upload" action="#" :auto-upload="false" multiple :on-change="fileListAdd" :on-remove="fileListDel">
|
|
- <el-button slot="trigger" size="small" type="primary" style="">选取文件</el-button>
|
|
|
|
- <el-button type="primary" size="small" style="margin-left:30px" :underline="false" :loading="importingData" @click="submitUploadSure" :disabled="fileList.length == 0">开始上传</el-button>
|
|
|
|
- <el-button size="small" style="margin-left:30px" @click="fileListClear">清空</el-button>
|
|
|
|
|
|
+ <el-button slot="trigger" size="small" type="primary" style="">{{ $t('selecthefile') }}</el-button>
|
|
|
|
+ <el-button type="primary" size="small" style="margin-left:30px" :underline="false" :loading="importingData" @click="submitUploadSure" :disabled="fileList.length == 0">{{ $t('toupload') }}</el-button>
|
|
|
|
+ <el-button size="small" style="margin-left:30px" @click="fileListClear">{{ $t('clears') }}</el-button>
|
|
</el-upload>
|
|
</el-upload>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 费用类型自定义 -->
|
|
<!-- 费用类型自定义 -->
|
|
- <el-dialog title="费用类型管理" v-if="customTypeDialog" :visible.sync="customTypeDialog" customClass="customWidth" width="600px">
|
|
|
|
|
|
+ <el-dialog :title="$t('expensetypemanagement')" v-if="customTypeDialog" :visible.sync="customTypeDialog" customClass="customWidth" width="600px">
|
|
<el-table :data="customTypeList" style="width:100%" height="400" :loading="customTypeListLoading">
|
|
<el-table :data="customTypeList" style="width:100%" height="400" :loading="customTypeListLoading">
|
|
- <el-table-column prop="typeName" label="费用名称" min-width="150"></el-table-column>
|
|
|
|
- <el-table-column label="费用类型" min-width="150">
|
|
|
|
|
|
+ <el-table-column prop="typeName" :label="$t('costofname')" min-width="150"></el-table-column>
|
|
|
|
+ <el-table-column :label="$t('costtype')" min-width="150">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <span>{{scope.row.mainType == 0 ? '一般费用' : (scope.row.mainType == 1 ? '差旅费用' : '外包费用')}}</span>
|
|
|
|
|
|
+ <span>{{scope.row.mainType == 0 ? $t('generalcost') : (scope.row.mainType == 1 ? $t('travelexpenses') : $t('outsourcingcost'))}}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="操作" width="150">
|
|
|
|
|
|
+ <el-table-column :label="$t('operation')" width="150">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-button @click="customTypeEditOp(scope.row)" size="small" type="primary">编辑</el-button>
|
|
|
|
- <el-button @click="customTypeEditDelete(scope.row)" size="small" type="danger">删除</el-button>
|
|
|
|
|
|
+ <el-button @click="customTypeEditOp(scope.row)" size="small" type="primary">{{ $t('bian-ji') }}</el-button>
|
|
|
|
+ <el-button @click="customTypeEditDelete(scope.row)" size="small" type="danger">{{ $t('btn.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
<span slot="footer" class="dialog-footer">
|
|
<span slot="footer" class="dialog-footer">
|
|
- <el-button @click="customTypeDialog = false" size="medium">取消</el-button>
|
|
|
|
- <el-button type="primary" @click="customTypeEditOp()" size="medium">新增类型</el-button>
|
|
|
|
|
|
+ <el-button @click="customTypeDialog = false" size="medium">{{ $t('btn.cancel') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="customTypeEditOp()" size="medium">{{ $t('newtype') }}</el-button>
|
|
</span>
|
|
</span>
|
|
|
|
|
|
<!-- 新增/编辑费用类型 -->
|
|
<!-- 新增/编辑费用类型 -->
|
|
- <el-dialog title="新增/编辑费用类型" v-if="customTypeEditDialog" :visible.sync="customTypeEditDialog" customClass="customWidth" width="400px" append-to-body>
|
|
|
|
|
|
+ <el-dialog :title="$t('addeditfeetypes')" v-if="customTypeEditDialog" :visible.sync="customTypeEditDialog" customClass="customWidth" width="400px" append-to-body>
|
|
<el-form label-width="80px" :rules="editTypeDataRules" ref="editTypeDataForm" :model="editTypeData">
|
|
<el-form label-width="80px" :rules="editTypeDataRules" ref="editTypeDataForm" :model="editTypeData">
|
|
- <el-form-item label="所属类型" style="margin:30px 0">
|
|
|
|
|
|
+ <el-form-item :label="$t('belongstype')" style="margin:30px 0">
|
|
<el-select v-model="editTypeData.mainType" size="medium" style="width:90%">
|
|
<el-select v-model="editTypeData.mainType" size="medium" style="width:90%">
|
|
- <el-option label="一般费用" :value="0"></el-option>
|
|
|
|
- <el-option label="差旅费用" :value="1"></el-option>
|
|
|
|
- <el-option label="外包费用" :value="2"></el-option>
|
|
|
|
|
|
+ <el-option :label="$t('generalcost')" :value="0"></el-option>
|
|
|
|
+ <el-option :label="$t('travelexpenses')" :value="1"></el-option>
|
|
|
|
+ <el-option :label="$t('outsourcingcost')" :value="2"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="类型名称" style="margin:30px 0" prop="typeName">
|
|
|
|
- <el-input id="editTypeDataInput" size="medium" v-model="editTypeData.typeName" placeholder="自定义费用类型名称" style="width:90%" @keyup.native="editTypeDataInput('editTypeDataInput')"></el-input>
|
|
|
|
|
|
+ <el-form-item :label="$t('typename ')" style="margin:30px 0" prop="typeName">
|
|
|
|
+ <el-input id="editTypeDataInput" size="medium" v-model="editTypeData.typeName" :placeholder="$t('customizethfeetypename')" style="width:90%" @keyup.native="editTypeDataInput('editTypeDataInput')"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
|
<span slot="footer" class="dialog-footer">
|
|
- <el-button @click="customTypeEditDialog = false" size="medium">取消</el-button>
|
|
|
|
- <el-button type="primary" @click="customTypeEditSure" size="medium">确认</el-button>
|
|
|
|
|
|
+ <el-button @click="customTypeEditDialog = false" size="medium">{{ $t('btn.cancel') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="customTypeEditSure" size="medium">{{ $t('btn.determine') }}</el-button>
|
|
</span>
|
|
</span>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 驳回弹出框 -->
|
|
<!-- 驳回弹出框 -->
|
|
- <el-dialog title="请输入原因" v-if="denyReasonDialog" :visible.sync="denyReasonDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
|
|
|
|
|
|
+ <el-dialog :title="$t('defaultText.pleaseEnterTheReason')" v-if="denyReasonDialog" :visible.sync="denyReasonDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
|
|
<div>
|
|
<div>
|
|
- <el-input type="textarea" v-model="denyForm.reason" rows="2" :placeholder="'请输入您决定驳回的原因'" />
|
|
|
|
|
|
+ <el-input type="textarea" v-model="denyForm.reason" rows="2" :placeholder="$t('reasonforyourdecisiontoreject')" />
|
|
</div>
|
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
- <el-button @click="denyReasonDialog = false" >取消</el-button>
|
|
|
|
- <el-button type="primary" @click="deny()" >确定</el-button>
|
|
|
|
|
|
+ <el-button @click="denyReasonDialog = false" >{{ $t('btn.cancel') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="deny()" >{{ $t('btn.determine') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</section>
|
|
</section>
|
|
@@ -541,18 +542,18 @@ export default {
|
|
xiamianWidth: document.documentElement.clientWidth || document.body.clientWidth,
|
|
xiamianWidth: document.documentElement.clientWidth || document.body.clientWidth,
|
|
imgs: [],
|
|
imgs: [],
|
|
addFormRules: {
|
|
addFormRules: {
|
|
- ownerId: [{ required: true, message: "请选择报销人", trigger: "blur" }],
|
|
|
|
- createDate: [{ required: true, message: "请选择日期", trigger: "blur" }],
|
|
|
|
|
|
+ ownerId: [{ required: true, message: this.$t('pleaseselecttheapplicant'), trigger: "blur" }],
|
|
|
|
+ createDate: [{ required: true, message: this.$t('pleaseselectadate'), trigger: "blur" }],
|
|
},
|
|
},
|
|
isAuditList: false,
|
|
isAuditList: false,
|
|
- statusTxt:["审核通过","待审核", "已驳回", "已撤销"],
|
|
|
|
|
|
+ statusTxt:[this.$t('state.approved'),this.$t('state.WaitingAudit'), this.$t('state.rejected'), this.$t('state.undone')],
|
|
user: JSON.parse(sessionStorage.getItem("user")),
|
|
user: JSON.parse(sessionStorage.getItem("user")),
|
|
permissions: JSON.parse(sessionStorage.getItem("permissions")),
|
|
permissions: JSON.parse(sessionStorage.getItem("permissions")),
|
|
allExpList:[],
|
|
allExpList:[],
|
|
expenseTypeList:[],
|
|
expenseTypeList:[],
|
|
tian:{a: null,b: null,c: null,d: null,e: null,f: null,g: null,h: null,},
|
|
tian:{a: null,b: null,c: null,d: null,e: null,f: null,g: null,h: null,},
|
|
- feeType:["一般费用","差旅费用","外包费用"],
|
|
|
|
- typeInvoic: ['增值税专用发票', '增值税普通发票'],
|
|
|
|
|
|
+ feeType:[this.$t('generalcost'),this.$t('travelexpenses'),this.$t('outsourcingcost')],
|
|
|
|
+ typeInvoic: [this.$t('vATspecialinvoice'), this.$t('vATgeneralinvoice')],
|
|
listLoading:false,
|
|
listLoading:false,
|
|
tableHeight:0,
|
|
tableHeight:0,
|
|
list:[],
|
|
list:[],
|
|
@@ -583,7 +584,7 @@ export default {
|
|
ParticularsList: [],
|
|
ParticularsList: [],
|
|
projectIdName: [], // 点击查看的项目名
|
|
projectIdName: [], // 点击查看的项目名
|
|
flg: false, // 是否禁用
|
|
flg: false, // 是否禁用
|
|
- shuz: ['一般费用填报', '差旅费用填报', '外包费用填报'],
|
|
|
|
|
|
+ shuz: [this.$t('generalexpenses'), this.$t('travelexpensess'), this.$t('outsourcingcostshouldbereported')],
|
|
ins: 0,
|
|
ins: 0,
|
|
apl: '',
|
|
apl: '',
|
|
diz: 'http://worktime.ttkuaiban.com',
|
|
diz: 'http://worktime.ttkuaiban.com',
|
|
@@ -597,7 +598,7 @@ export default {
|
|
customTypeEditDialog: false,
|
|
customTypeEditDialog: false,
|
|
editTypeData: {},
|
|
editTypeData: {},
|
|
editTypeDataRules:{
|
|
editTypeDataRules:{
|
|
- typeName: [{ required: true, message: "请输入自定义费用类型名称", trigger: "blur" }],
|
|
|
|
|
|
+ typeName: [{ required: true, message: this.$t('pleaseentercustomfeetypename'), trigger: "blur" }],
|
|
},
|
|
},
|
|
};
|
|
};
|
|
},
|
|
},
|
|
@@ -687,9 +688,9 @@ export default {
|
|
}})
|
|
}})
|
|
},
|
|
},
|
|
customTypeEditDelete(row){
|
|
customTypeEditDelete(row){
|
|
- this.$confirm('该操作可能造成已有数据丢失,确定要删除吗?','提示',{
|
|
|
|
- confirmButtonText: '确定',
|
|
|
|
- cancelButtonText: '取消',
|
|
|
|
|
|
+ this.$confirm(this.$t('operationmaycausedatalossAreyousuredeletethedata'),this.$t('other.prompts'),{
|
|
|
|
+ confirmButtonText: this.$t('btn.determine'),
|
|
|
|
+ cancelButtonText: this.$t('btn.cancel'),
|
|
type: 'warning'
|
|
type: 'warning'
|
|
}).then(()=>{
|
|
}).then(()=>{
|
|
this.http.post('/expense-type/delete',{
|
|
this.http.post('/expense-type/delete',{
|
|
@@ -714,7 +715,7 @@ export default {
|
|
}).catch(()=>{
|
|
}).catch(()=>{
|
|
this.$message({
|
|
this.$message({
|
|
type: 'info',
|
|
type: 'info',
|
|
- message: '已取消删除'
|
|
|
|
|
|
+ message: this.$t('thedeletionhasbeencancelled')
|
|
})
|
|
})
|
|
})
|
|
})
|
|
},
|
|
},
|
|
@@ -733,7 +734,7 @@ export default {
|
|
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"
|
|
});
|
|
});
|
|
fileList.splice(fileList.length-1)
|
|
fileList.splice(fileList.length-1)
|
|
@@ -748,9 +749,9 @@ export default {
|
|
this.fileList = []
|
|
this.fileList = []
|
|
},
|
|
},
|
|
submitUploadSure(){
|
|
submitUploadSure(){
|
|
- this.$confirm('确认上传?','提示',{
|
|
|
|
- confirmButtonText: '确定',
|
|
|
|
- cancelButtonText: '取消',
|
|
|
|
|
|
+ this.$confirm(this.$t('confirmtoupload'),this.$t('other.prompts'),{
|
|
|
|
+ confirmButtonText: this.$t('btn.determine'),
|
|
|
|
+ cancelButtonText: this.$t('btn.cancel'),
|
|
type: 'success'
|
|
type: 'success'
|
|
}).then(()=>{
|
|
}).then(()=>{
|
|
let formData = new FormData();
|
|
let formData = new FormData();
|
|
@@ -767,7 +768,7 @@ export default {
|
|
this.$refs.upload.clearFiles();
|
|
this.$refs.upload.clearFiles();
|
|
this.fileList = []
|
|
this.fileList = []
|
|
this.$message({
|
|
this.$message({
|
|
- message: "上传成功",
|
|
|
|
|
|
+ message: this.$t('uploadedsuccessfully'),
|
|
type: "success"
|
|
type: "success"
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -937,7 +938,7 @@ export default {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
this.bills(this.isAuditList);
|
|
this.bills(this.isAuditList);
|
|
this.$message({
|
|
this.$message({
|
|
- message: '编辑成功',
|
|
|
|
|
|
+ message: this.$t('editsuccess'),
|
|
type: "success"
|
|
type: "success"
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -993,7 +994,7 @@ export default {
|
|
if (valid) {
|
|
if (valid) {
|
|
if (this.invoiceList.length == 0) {
|
|
if (this.invoiceList.length == 0) {
|
|
this.$message({
|
|
this.$message({
|
|
- message: '请添加发票',
|
|
|
|
|
|
+ message: this.$t('pleaseaddtheinvoice'),
|
|
type: "error"
|
|
type: "error"
|
|
});
|
|
});
|
|
return;
|
|
return;
|
|
@@ -1080,7 +1081,7 @@ export default {
|
|
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"
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -1106,7 +1107,7 @@ export default {
|
|
res => {
|
|
res => {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
this.$message({
|
|
this.$message({
|
|
- message: '填报成功',
|
|
|
|
|
|
+ message: this.$t('message.fillinsuccessfully'),
|
|
type: "success"
|
|
type: "success"
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -1160,7 +1161,7 @@ export default {
|
|
var j = {}
|
|
var j = {}
|
|
var img = this.diz + '/upload/' + res.data.invoiceList[i].pic
|
|
var img = this.diz + '/upload/' + res.data.invoiceList[i].pic
|
|
j.url = img
|
|
j.url = img
|
|
- j.title = '报销凭证',
|
|
|
|
|
|
+ j.title = this.$t('expensereimbursementvoucher'),
|
|
j.name = res.data.invoiceList[i].pic
|
|
j.name = res.data.invoiceList[i].pic
|
|
b.push(j)
|
|
b.push(j)
|
|
res.data.invoiceList[i].pic = b
|
|
res.data.invoiceList[i].pic = b
|
|
@@ -1201,7 +1202,7 @@ export default {
|
|
this.getList();
|
|
this.getList();
|
|
},
|
|
},
|
|
deleteItem(item) {
|
|
deleteItem(item) {
|
|
- this.$confirm("确认要删除吗?", "提示", {
|
|
|
|
|
|
+ this.$confirm(this.$t('yousureyouwanttodelete'), this.$t('other.prompts'), {
|
|
//type: 'warning'
|
|
//type: 'warning'
|
|
}).then(() => {
|
|
}).then(() => {
|
|
this.http.post('/expense-sheet/delete', {id:item.id},
|
|
this.http.post('/expense-sheet/delete', {id:item.id},
|
|
@@ -1310,7 +1311,7 @@ export default {
|
|
let format = str[str.length - 1];
|
|
let format = str[str.length - 1];
|
|
if (format != "jpg" && format != "png") {
|
|
if (format != "jpg" && format != "png") {
|
|
this.$message({
|
|
this.$message({
|
|
- message: "请选择图片",
|
|
|
|
|
|
+ message: this.$t('pleaseselectpictures'),
|
|
type: "error"
|
|
type: "error"
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -1322,7 +1323,7 @@ export default {
|
|
this.listLoading = false;
|
|
this.listLoading = false;
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
this.$message({
|
|
this.$message({
|
|
- message: "上传成功",
|
|
|
|
|
|
+ message: this.$t('uploadedsuccessfully'),
|
|
type: "success"
|
|
type: "success"
|
|
});
|
|
});
|
|
// this.getList();
|
|
// this.getList();
|
|
@@ -1359,7 +1360,7 @@ export default {
|
|
let format = str[str.length - 1];
|
|
let format = str[str.length - 1];
|
|
if (format != "jpg" && format != "png") {
|
|
if (format != "jpg" && format != "png") {
|
|
this.$message({
|
|
this.$message({
|
|
- message: "请选择图片",
|
|
|
|
|
|
+ message: this.$t('pleaseselectpictures'),
|
|
type: "error"
|
|
type: "error"
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -1371,7 +1372,7 @@ export default {
|
|
this.listLoading = false;
|
|
this.listLoading = false;
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
this.$message({
|
|
this.$message({
|
|
- message: "上传成功",
|
|
|
|
|
|
+ message: this.$t('uploadedsuccessfully'),
|
|
type: "success"
|
|
type: "success"
|
|
});
|
|
});
|
|
// this.getList();
|
|
// this.getList();
|
|
@@ -1420,7 +1421,7 @@ export default {
|
|
const sums = [];
|
|
const sums = [];
|
|
columns.forEach((column, index) => {
|
|
columns.forEach((column, index) => {
|
|
if (index === 0) {
|
|
if (index === 0) {
|
|
- sums[index] = '合计';
|
|
|
|
|
|
+ sums[index] = this.$t('other.totals');
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if(index === 1) {
|
|
if(index === 1) {
|
|
@@ -1436,7 +1437,7 @@ export default {
|
|
}, 0);
|
|
}, 0);
|
|
var zhi = +sums[index] + 0
|
|
var zhi = +sums[index] + 0
|
|
var sl = zhi.toFixed(2)
|
|
var sl = zhi.toFixed(2)
|
|
- sl += ' 元';
|
|
|
|
|
|
+ sl += this.$t('yuan');
|
|
} else {
|
|
} else {
|
|
sums[index] = '';
|
|
sums[index] = '';
|
|
}
|
|
}
|