ggooalice 2 年 前
コミット
69b80c7ecf

+ 77 - 77
fhKeeper/formulahousekeeper/timesheet/src/views/contract/index.vue

@@ -7,7 +7,7 @@
         <el-form-item>
           <div style="display: flex;align-items: center;height: 40px;">
             <el-input v-model="keyword" class="input-with-select" placeholder="请输入" clearable size="small">
-              <el-select slot="prepend" v-model="searchField" placeholder="请选择" style="width:120px">
+              <el-select slot="prepend" v-model="searchField" :placeholder="$t('defaultText.pleaseChoose')" style="width:120px">
                 <el-option label="合同名称" :value="0"></el-option>
                 <el-option label="合同编号" :value="1"></el-option>
               </el-select>
@@ -18,28 +18,28 @@
         <!-- 合同类型 -->
         <el-form-item>
           <span style="margin-left:5px;margin-right:5px;color:#606266;">合同类型</span>
-          <el-select v-model="typeName" style="width:120px;" placeholder="请选择" @change="searchFilter" size="small" clearable>
+          <el-select v-model="typeName" style="width:120px;" :placeholder="$t('defaultText.pleaseChoose')" @change="searchFilter" size="small" clearable>
             <el-option v-for="item in typeList" :key="item.id" :label="item.typeName" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <!-- 状态 -->
         <el-form-item>
-          <span style="margin-left:5px;margin-right:5px;color:#606266;">状态</span>
-          <el-select v-model="status" style="width:120px;" placeholder="请选择" @change="searchFilter" size="small" clearable>
+          <span style="margin-left:5px;margin-right:5px;color:#606266;">{{$t('state.states')}}</span>
+          <el-select v-model="status" style="width:120px;" :placeholder="$t('defaultText.pleaseChoose')" @change="searchFilter" size="small" clearable>
             <el-option v-for="item,index in statusList" :key="item.label" :label="item.label" :value="index"></el-option>
           </el-select>
         </el-form-item>
         <!-- 创建时间 -->
         <el-form-item>
-          <span style="margin-left:5px;margin-right:5px;color:#606266;">创建时间</span>
+          <span style="margin-left:5px;margin-right:5px;color:#606266;">{{$t('creationtime')}}</span>
           <el-date-picker
             style="width:240px;"
             v-model="dateArray"
             type="daterange"
             size="small"
             range-separator="-"
-            :start-placeholder="'区间'"
-            :end-placeholder="'区间'"
+            :start-placeholder="$t('interval')"
+            :end-placeholder="$t('interval')"
             value-format="yyyy-MM-dd"
             clearable
             @change="searchFilter"
@@ -48,11 +48,11 @@
 
         <el-form-item style="float:right;">
           <el-dropdown>
-            <el-link type="primary" :underline="false">查看更多<i class="el-icon-arrow-down el-icon--right"></i></el-link>
+            <el-link type="primary" :underline="false">{{$t('viewmore')}}<i class="el-icon-arrow-down el-icon--right"></i></el-link>
             <el-dropdown-menu slot="dropdown">
-              <el-dropdown-item v-if="permissions.contractType"><el-link type="primary" :underline="false" @click="typeEdit()">类型编辑</el-link></el-dropdown-item>
-              <el-dropdown-item v-if="permissions.contractImport"><el-link type="primary" :underline="false" @click="importDialog = true">导入</el-link></el-dropdown-item>
-              <el-dropdown-item v-if="permissions.contractExport"><el-link type="primary" :underline="false" @click="exportContract()">导出</el-link></el-dropdown-item>
+              <el-dropdown-item v-if="permissions.contractType"><el-link type="primary" :underline="false" @click="typeEdit()">{{$t('bian-ji') + $t('types')}}</el-link></el-dropdown-item>
+              <el-dropdown-item v-if="permissions.contractImport"><el-link type="primary" :underline="false" @click="importDialog = true">{{$t('dao-ru')}}</el-link></el-dropdown-item>
+              <el-dropdown-item v-if="permissions.contractExport"><el-link type="primary" :underline="false" @click="exportContract()">{{$t('export.export')}}</el-link></el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
         </el-form-item>
@@ -67,18 +67,18 @@
       <el-table-column prop="name" label="合同名称" min-width="150"></el-table-column>
       <el-table-column prop="amounts" label="合同金额" min-width="150"></el-table-column>
       <el-table-column prop="typeName" label="合同类型" min-width="150"></el-table-column>
-      <el-table-column prop="status" label="状态" min-width="150">
+      <el-table-column prop="status" :label="$t('state.states')" min-width="150">
         <template slot-scope="scope">
           <span :style="statusList[scope.row.status].color">{{statusList[scope.row.status].label}}</span>
         </template>
       </el-table-column>
-      <el-table-column prop="indate" label="创建时间" min-width="150"></el-table-column>
-      <el-table-column width="300" label="操作" align="left" fixed="right">
+      <el-table-column prop="indate" :label="$t('creationtime')" min-width="150"></el-table-column>
+      <el-table-column width="300" :label="$t('operation')" align="left" fixed="right">
         <template slot-scope="scope">
-          <el-button v-if="permissions.contractView || permissions.contractManagement" size="mini" @click="lookover(scope.row)">查看</el-button>
-          <el-button v-if="permissions.contractManagement" size="mini" @click="editContract(scope.row)" type="primary">编辑</el-button>
-          <el-button v-if="permissions.contractAudit && (scope.row.status == 1 || scope.row.status == 3)" size="mini" @click="process(scope.row,0)" type="success">通过</el-button>
-          <el-button v-if="permissions.contractAudit && (scope.row.status == 1 || scope.row.status == 3)" size="mini" @click="processR(scope.row,2)" type="danger">驳回</el-button>
+          <el-button v-if="permissions.contractView || permissions.contractManagement" size="mini" @click="lookover(scope.row)">{{$t('cha-kan')}}</el-button>
+          <el-button v-if="permissions.contractManagement" size="mini" @click="editContract(scope.row)" type="primary">{{$t('bian-ji')}}</el-button>
+          <el-button v-if="permissions.contractAudit && (scope.row.status == 1 || scope.row.status == 3)" size="mini" @click="process(scope.row,0)" type="success">{{$t('btn.through')}}</el-button>
+          <el-button v-if="permissions.contractAudit && (scope.row.status == 1 || scope.row.status == 3)" size="mini" @click="processR(scope.row,2)" type="danger">{{$t('btn.rejected')}}</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -112,24 +112,24 @@
               <el-option v-for="item in typeList" :key="item.id" :label="item.typeName" :value="item.id"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="计划开始时间">
+          <el-form-item :label="$t('schedulestarttime')">
             <el-date-picker
               v-model="contractForm.startDate"
               value-format="yyyy-MM-dd"
               type="date"
-              placeholder="选择日期">
+              :placeholder="$t('optiondate')">
             </el-date-picker>
-            <span style="float:right;">计划结束时间
+            <span style="float:right;">{{$t('scheduleendtime')}}
             <el-date-picker
               style="margin-left: 15px;"
               v-model="contractForm.endDate"
               value-format="yyyy-MM-dd"
               type="date"
-              placeholder="选择日期">
+              :placeholder="$t('optiondate')">
             </el-date-picker>
             </span>
           </el-form-item>
-          <el-form-item label="备注">
+          <el-form-item :label="$t('bei-zhu')">
             <el-input v-model="contractForm.remarks" placeholder="请输入" type="textarea" :rows="3" clearable></el-input>
           </el-form-item>
           <el-form-item label-width="0" class="contractFiles">
@@ -152,9 +152,9 @@
                   <div>{{scope.$index + 1}}</div>
                 </template>
               </el-table-column> -->
-              <el-table-column label="操作" min-width="40">
+              <el-table-column :label="$t('operation')" min-width="40">
                 <template slot-scope="scope">
-                  <el-link @click="fileDelete(scope.row)" type="primary">删除</el-link>
+                  <el-link @click="fileDelete(scope.row)" type="primary">{{$t('btn.delete')}}</el-link>
                 </template>
               </el-table-column>
             </el-table>
@@ -162,9 +162,9 @@
         </el-form>
       </div>
       <div slot="footer" class="dialog-footer;">
-        <el-button @click.native="deleteContract()" style="float:left" v-if="dialogTitle == '编辑'">删除</el-button>
-        <el-button @click.native="addDialog = false">取消</el-button>
-        <el-button type="primary" @click="submitInsert()" :loading="submitLoading">提交</el-button>
+        <el-button @click.native="deleteContract()" style="float:left" v-if="dialogTitle == $t('bian-ji')">{{$t('btn.delete')}}</el-button>
+        <el-button @click.native="addDialog = false">{{$t('btn.cancel')}}</el-button>
+        <el-button type="primary" @click="submitInsert()" :loading="submitLoading">{{$t('btn.submit')}}</el-button>
       </div>
     </el-dialog>
 
@@ -183,46 +183,46 @@
           <el-form-item label="合同类型">
             {{contractForm.typeName}}
           </el-form-item>
-          <el-form-item label="状态">
+          <el-form-item :label="$t('state.states')">
             {{statusList[contractForm.status].label}}
           </el-form-item>
-          <el-form-item label="驳回原因" v-if="contractForm.status == 2">
+          <el-form-item :label="$t('dismissreason')" v-if="contractForm.status == 2">
             {{contractForm.msg ? contractForm.msg : ''}}
           </el-form-item>
-          <el-form-item label="创建人">
+          <el-form-item :label="$t('founder')">
             <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='contractForm.creatorName'></ww-open-data></span>
             <span v-else>{{contractForm.creatorName}}</span>
           </el-form-item>
-          <el-form-item label="创建时间">
+          <el-form-item :label="$t('creationtime')">
             {{contractForm.indate}}
           </el-form-item>
-          <el-form-item label="计划开始时间">
+          <el-form-item :label="$t('schedulestarttime')">
             {{contractForm.startDate}}
           </el-form-item>
-          <el-form-item label="计划结束时间">
+          <el-form-item :label="$t('scheduleendtime')">
             {{contractForm.endDate}}
           </el-form-item>
-          <el-form-item label="备注">
+          <el-form-item :label="$t('bei-zhu')">
             {{contractForm.remarks}}
           </el-form-item>
           <el-form-item label-width="0" class="contractFiles">
             <div class="contractFiles_title">附件</div>
             <el-table :data="fileList" :header-cell-style="{'font-weight':'normal'}" highlight-current-row
               max-height="240" style="width: 100%;margin-top:10px;margin-bottom:30px">
-              <el-table-column label="序号" min-width="40" align="center">
+              <el-table-column :label="$t('headerTop.serialNumber')" min-width="40" align="center">
                 <template slot-scope="scope">
                   <div>{{scope.$index + 1}}</div>
                 </template>
               </el-table-column>
-              <el-table-column label="文件名称" prop="name" min-width="140"></el-table-column>
+              <el-table-column :label="$t('filenames')" prop="name" min-width="140"></el-table-column>
               <!-- <el-table-column label="文件大小" min-width="60">
                 <template slot-scope="scope">
                   <div>{{scope.$index + 1}}</div>
                 </template>
               </el-table-column> -->
-              <el-table-column label="操作" min-width="40">
+              <el-table-column :label="$t('operation')" min-width="40">
                 <template slot-scope="scope">
-                  <el-link @click="fileDownload(scope.row)" type="primary">下载</el-link>
+                  <el-link @click="fileDownload(scope.row)" type="primary">{{$t('other.download')}}</el-link>
                 </template>
               </el-table-column>
             </el-table>
@@ -233,19 +233,19 @@
 
     <el-dialog title="合同类型管理" :visible.sync="typeDialog" v-if="typeDialog" customClass="customWidth" width="500px">
       <el-table :data="typeList" highlight-current-row  height="400" style="width: 100%;">
-        <el-table-column type="index" width="60" label="序号">
+        <el-table-column type="index" width="60" :label="$t('headerTop.serialNumber')">
           <template slot-scope="scope">{{ scope.$index + 1 }}</template>
         </el-table-column>
         <el-table-column prop="typeName"></el-table-column>
-        <el-table-column label="操作" width="150">
+        <el-table-column :label="$t('operation')" width="150">
           <template slot-scope="scope">
-            <el-button size="small" type="primary" @click="typeItemEdit(scope.row)">编辑</el-button>
-            <el-button size="small" type="danger" @click="typeItemDelete(scope.row)">删除</el-button>
+            <el-button size="small" type="primary" @click="typeItemEdit(scope.row)">{{$t('bian-ji')}}</el-button>
+            <el-button size="small" type="danger" @click="typeItemDelete(scope.row)">{{$t('btn.delete')}}</el-button>
           </template>
         </el-table-column>
       </el-table>
       <div slot="footer" class="dialog-footer;">
-        <el-button type="primary" @click="typeDialog = false">关闭</el-button>
+        <el-button type="primary" @click="typeDialog = false">{{$t('Shutdown')}}</el-button>
         <el-button type="primary" @click="typeItemAdd()">新增合同类型</el-button>
       </div>
       <el-dialog :title="typeTitle + '合同类型'" :visible.sync="typeItemDialog" v-if="typeItemDialog" append-to-body width="400px">
@@ -253,8 +253,8 @@
           <el-input v-model="typeItemForm.typeName"></el-input>
         </div>
         <div slot="footer" class="dialog-footer;">
-          <el-button type="primary" @click="typeItemDialog = false">取消</el-button>
-          <el-button type="primary" @click="typeItemSubmit()">确定</el-button>
+          <el-button type="primary" @click="typeItemDialog = false">{{$t('btn.cancel')}}</el-button>
+          <el-button type="primary" @click="typeItemSubmit()">{{$t('btn.determine')}}</el-button>
         </div>
       </el-dialog>
     </el-dialog>
@@ -296,13 +296,13 @@ export default {
       contractList: [],
       listLoading: false,
       statusList: [
-        {label:'审核通过',color: 'color:#67c23a;'},
-        {label:'待审核',color: 'color:#e6a23c;'},
-        {label:'已驳回',color: 'color:#f56c6c;'},
-        {label:'导入待审核',color: 'color:#e6a23c;'},
+        {label:this.$t('state.approved'),color: 'color:#67c23a;'},
+        {label:this.$t('state.WaitingAudit'),color: 'color:#e6a23c;'},
+        {label:this.$t('state.rejected'),color: 'color:#f56c6c;'},
+        {label:this.$t('other.importWaitingForReview'),color: 'color:#e6a23c;'},
       ],
       typeDialog: false,
-      typeTitle: '新增',
+      typeTitle: this.$t('add'),
       typeItemDialog: false,
       typeItemForm: {typeName: ''},
 
@@ -310,7 +310,7 @@ export default {
       denyReason: '',
       denyrow: null,
 
-      dialogTitle: '新增',
+      dialogTitle: this.$t('add'),
       addDialog: false,
       lookoverDialog: false,
       submitLoading: false,
@@ -324,7 +324,7 @@ export default {
         endDate: ''
       },
       rules:{
-        name: [{ required: true, message: '请输入名称', trigger: "blur" }],
+        name: [{ required: true, message: this.$t('pleaseentername'), trigger: "blur" }],
       },
 
       fileList: [],
@@ -390,7 +390,7 @@ export default {
           if(res.code == 'ok'){
             this.importDialog = false
             this.$message({
-              message: '导入成功',
+              message: this.$t('other.importSuccess'),
               type: 'success'
             })
             this.getContractList()
@@ -455,19 +455,19 @@ export default {
       this.typeDialog = true
     },
     typeItemAdd(){
-      this.typeTitle = '新增'
+      this.typeTitle = this.$t('add')
       this.typeItemForm = {typeName: ''}
       this.typeItemDialog = true
     },
     typeItemEdit(row){
-      this.typeTitle = '编辑'
+      this.typeTitle = $t('bian-ji')
       this.typeItemForm = JSON.parse(JSON.stringify(row))
       this.typeItemDialog = true
     },
     typeItemDelete(row){
-      this.$confirm('确定要删除此条合同类型吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
+      this.$confirm('确定要删除此条合同类型吗?', this.$t('other.prompts'), {
+        confirmButtonText: this.$t('btn.determine'),
+        cancelButtonText: this.$t('btn.cancel'),
         type: 'warning'
       }).then(() => {
         this.http.post('/contractType/deleteContractType',{
@@ -477,7 +477,7 @@ export default {
             this.getContractType()
             this.$message({
               type: 'success',
-              message: '删除成功!'
+              message: this.$t('message.successfullyDeleted') + '!'
             });
           }else{
             this.$message({
@@ -495,7 +495,7 @@ export default {
       }).catch(() => {
         this.$message({
           type: 'info',
-          message: '已取消删除'
+          message: this.$t('thedeletionhasbeencancelled')
         });          
       });
     },
@@ -506,7 +506,7 @@ export default {
           this.typeItemDialog = false
           this.getContractType()
           this.$message({
-            message: this.typeTitle + '成功',
+            message: this.typeTitle == this.$t('add') ? this.$t('newsuccess') : this.$t('editsuccess'),
             type: 'success'
           })
         }else{
@@ -525,7 +525,7 @@ export default {
 
 
     newlyAdd(){
-      this.dialogTitle = '新增'
+      this.dialogTitle = this.$t('add')
       this.contractForm = {
         number: '',
         name: '',
@@ -539,7 +539,7 @@ export default {
       this.addDialog = true
     },
     editContract(row){
-      this.dialogTitle = '编辑'
+      this.dialogTitle = $t('bian-ji')
       this.contractForm = JSON.parse(JSON.stringify(row))
       this.fileList = this.contractForm.files ? this.contractForm.files : []
       for(let i in this.fileList){
@@ -548,9 +548,9 @@ export default {
       this.addDialog = true
     },
     deleteContract(){
-      this.$confirm('确定要删除该合同吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
+      this.$confirm('确定要删除该合同吗?', this.$t('other.prompts'), {
+        confirmButtonText: this.$t('btn.determine'),
+        cancelButtonText: this.$t('btn.cancel'),
         type: 'warning'
       }).then(() => {
         this.http.post('/contract/deleteContract',{
@@ -561,7 +561,7 @@ export default {
             this.getContractList()
             this.$message({
               type: 'success',
-              message: '删除成功!'
+              message: this.$t('message.successfullyDeleted') + '!'
             });
           }else{
             this.$message({
@@ -579,7 +579,7 @@ export default {
       }).catch(() => {
         this.$message({
           type: 'info',
-          message: '已取消删除'
+          message: this.$t('thedeletionhasbeencancelled')
         });          
       });
     },
@@ -606,7 +606,7 @@ export default {
         if(res.code == 'ok'){
           this.getContractList()
           this.$message({
-            message: status == 0 ? '已通过' : '已驳回',
+            message: status == 0 ? this.$t('state.alreadyPassed') : this.$t('state.rejected'),
             type: 'success'
           })
         }else{
@@ -636,7 +636,7 @@ export default {
         if (valid) {
           this.submitLoading = true
           delete this.contractForm.files
-          this.http.post(this.dialogTitle == '新增' ? '/contract/addContract' : '/contract/editContract',this.contractForm,
+          this.http.post(this.dialogTitle == this.$t('add') ? '/contract/addContract' : '/contract/editContract',this.contractForm,
           res => {
             this.submitLoading = false
             this.addDialog = false
@@ -645,7 +645,7 @@ export default {
                 message: res.msg,
                 type: 'success'
               })
-              if(this.dialogTitle == '新增'){
+              if(this.dialogTitle == this.$t('add')){
                 this.contractForm.id = res.data
               }
               this.submitFile()
@@ -675,9 +675,9 @@ export default {
     },
     fileDelete(row){
       console.log(row,this.fileList);
-      this.$confirm('确定要删除该文件吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
+      this.$confirm('确定要删除该文件吗?', this.$t('other.prompts'), {
+        confirmButtonText: this.$t('btn.determine'),
+        cancelButtonText: this.$t('btn.cancel'),
         type: 'warning'
       }).then(() => {
         if(row.uid){
@@ -696,7 +696,7 @@ export default {
               this.fileList.filter(item => !item.id || item.id != row.id)
               this.$message({
                 type: 'success',
-                message: '删除成功!'
+                message: this.$t('message.successfullyDeleted') + '!'
               });
             }else{
               this.$message({
@@ -714,7 +714,7 @@ export default {
       }).catch(() => {
         this.$message({
           type: 'info',
-          message: '已取消删除'
+          message: this.$t('thedeletionhasbeencancelled')
         });          
       });
     },

+ 41 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/expense/details.vue

@@ -53,7 +53,7 @@
             <!-- 发票张数 -->
             <van-field label="发票张数" :readonly="!canEdit">
                 <template #input>
-                    <van-stepper v-model="editForm.ticketNum" :disabled="true" />
+                    <van-stepper v-model="editForm.ticketNum" disable-input @plus="ticNumChange(1)" @minus="ticNumChange(0)" />
                 </template>
             </van-field>
             <!-- 费用类型 -->
@@ -179,6 +179,7 @@
                     </van-field>
                 </div>
             </div>
+            <div class="addinvoice"><van-button size="small" icon="plus" type="info" plain hairline @click="addInvoice">添加发票</van-button></div>
             <!-- 发票-popup -->
             <span>
                 <!-- 所属项目 -->
@@ -371,6 +372,40 @@ export default {
             this.typeShow = false
             this.inexTypeList = this.allexTypeList.filter(a=>a.mainType == this.editForm.type)
         },
+        ticNumChange(value){
+            if(value){
+                this.invoiceList.push({
+                    projectId: '',
+                    happenDate: '',
+                    invoiceType: '',
+                    expenseType: '',
+                    amount: '',
+                    invoiceNo: '',
+                    taxPercent: '',
+                    taxValue: '',
+                    remark: '',
+                    pic: '',
+                })
+            }else{
+                this.invoiceList.pop()
+            }
+        },
+        addInvoice(){
+            this.invoiceList.push({
+                projectId: '',
+                happenDate: '',
+                invoiceType: '',
+                expenseType: '',
+                amount: '',
+                invoiceNo: '',
+                taxPercent: '',
+                taxValue: '',
+                remark: '',
+                pic: '',
+            })
+            this.uploader.push([])
+            this.editForm.ticketNum = this.invoiceList.length
+        },
         deleteInvoice(index){
             this.invoiceList.splice(index,1)
             this.editForm.ticketNum = this.invoiceList.length
@@ -560,6 +595,11 @@ export default {
                 border-top: 0.5px solid rgb(135, 195, 255);
             }
         }
+        .addinvoice{
+                padding: 0 0.3rem 0.3rem;
+                margin-top: 0.2rem;
+                text-align: right;
+            }
     }
 }
 </style>