Quellcode durchsuchen

5.26功能修改,开发

user5 vor 3 Jahren
Ursprung
Commit
cff8eb00c1

+ 8 - 0
src/api/reimbursementSys/reimbursementSysService.js

@@ -41,6 +41,14 @@ export default class reimbursementSys {
     })
   }
 
+  modifyInvoice (inputForm) {
+    return request({
+      url: `/reimbursement/modifyInvoice`,
+      method: 'post',
+      data: inputForm
+    })
+  }
+
   deleteBusiness (ids) {
     return request({
       url: '/reimbursement/deleteBusiness',

+ 7 - 0
src/api/reimbursementSys/user/reimbursementUserService.js

@@ -33,6 +33,13 @@ export default class reimbursementSys {
     })
   }
 
+  getReimbursementQuotaDay () {
+    return request({
+      url: `/reimbursementUser/getReimbursementQuotaDay`,
+      method: 'get'
+    })
+  }
+
   findListByUserId (id) {
     return request({
       url: `/reimbursementUser/findListByUserId`,

+ 1 - 1
src/views/modules/notify/NotifyForm.vue

@@ -220,4 +220,4 @@
       }
     }
   }
-</script>
+</script>

+ 58 - 6
src/views/modules/reimbursementSys/reimbursementBusinessForm.vue

@@ -39,21 +39,32 @@
           </el-form-item>
         </el-col>
 
-        <el-col :span="12">
+        <el-col :span="12"  v-if="method !== 'read'">
+          <el-form-item label="报销类型" prop="reimbursementType"
+                        :rules="[
+                  {required: true, message:'报销类型不能为空', trigger:'blur'}
+                 ]">
+            <el-radio-group v-model="inputForm.reimbursementType">
+              <el-radio v-for="item in $dictUtils.getDictList('reimbursement_type')" @change="selectReimbursementType(inputForm.reimbursementType)" :label="item.value" :key="item.id">{{item.label}}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12" v-if="this.show">
           <el-form-item label="报销天数" prop="reimbursementDay" :rules="[{required: true, max: 10, message:'报销天数不能为空且只可为整数', trigger:'blur'}]">
             <el-input v-model="inputForm.reimbursementDay" class="bg-grey" size="small" placeholder="报销天数" style="width: 100%;" @keyup.native="inputForm.reimbursementDay = checkInputs(inputForm.reimbursementDay)"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="报销金额" prop="reimbursementAmount":rules="[{max: 10,trigger:'blur'}]">
-            <el-input v-model="inputForm.reimbursementAmount" class="bg-grey" size="small" placeholder="报销金额" style="width: 100%;" :disabled="true">
+          <el-form-item label="报销金额" prop="reimbursementAmount":rules="[{required: true, max: 10, message:'报销金额不可为空', max: 10,trigger:'blur'}]">
+            <el-input id="reimbursementAmount" v-model="inputForm.reimbursementAmount" class="bg-grey" size="small" placeholder="报销金额" style="width: 100%;" v-bind:disabled="this.show" @keyup.native="inputForm.reimbursementAmount = checkReimbursementAmount(inputForm.reimbursementAmount)">
                 </el-input>
           </el-form-item>
         </el-col>
 
-        <el-col :span="12">
+        <el-col :span="12" v-if="this.show">
           <el-form-item label="日报销额度" prop="reimbursementQuotaDay":rules="[{max: 10,trigger:'blur'}]">
-            <el-input v-model="inputForm.reimbursementQuotaDay" class="bg-grey" size="small" placeholder="日报销额度" style="width: 100%;" :disabled="true">
+            <el-input  v-model="inputForm.reimbursementQuotaDay" class="bg-grey" size="small" placeholder="日报销额度" style="width: 100%;" :disabled="true">
                 </el-input>
           </el-form-item>
         </el-col>
@@ -101,6 +112,7 @@
   export default {
     data () {
       return {
+        show: false,
         visible: false,
         loading: false,
         title: '',
@@ -110,6 +122,7 @@
           id: '',
           userId: '', // 人员id
           year: '', // 年份
+          reimbursementType: '', // 报销类型
           reimbursementQuota: '', // 年报销额度
           reimbursementAmount: '', // 报销金额
           reimbursementQuotaDay: '', // 日报销额度
@@ -136,7 +149,6 @@
     },
     methods: {
       checkInputs: function (num) {
-        console.log(num)
         let str = num.toString()
         var len1 = str.substr(0, 1)
         var len2 = str.substr(1, 1)
@@ -157,6 +169,35 @@
         }
         return str
       },
+      checkReimbursementAmount: function (num) {
+        console.log(num)
+        let str = num.toString()
+        var len1 = str.substr(0, 1)
+        var len2 = str.substr(1, 1)
+        // eslint-disable-next-line eqeqeq
+        if (str.length > 1 && len1 == 0 && len2 != '.') {
+          str = str.substr(1, 1)
+        }
+        // eslint-disable-next-line eqeqeq
+        if (len1 == '.') {
+          str = ''
+        }
+        // eslint-disable-next-line eqeqeq
+        if (str.indexOf('.') != -1) {
+          var str_ = str.substr(str.indexOf('.') + 1)
+          // eslint-disable-next-line eqeqeq
+          if (str_.indexOf('.') != -1) {
+            str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
+          }
+          if (str_.length > 2) {
+            this.$message.warning(`金额小数点后只能输入两位,请正确输入!`)
+            return (str = '')
+          }
+        }
+        // eslint-disable-next-line no-useless-escape
+        str = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
+        return str
+      },
       say (userId) {
         // 根据用户id查询年份信息
         this.reimbursementBusiness.yearList({userId: userId, current: 1, size: -1}).then(({data}) => {
@@ -181,6 +222,15 @@
           }
         })
       },
+      selectReimbursementType (reimbursementType) {
+        console.log(11111)
+        if (reimbursementType === '1') {
+          // reimbursementAmount.isdisabled = true
+          this.show = true
+        } else {
+          this.show = false
+        }
+      },
       selectYear (year) {
         for (var yearKey in this.yearList) {
           if (this.yearList[yearKey].year === year) {
@@ -217,6 +267,7 @@
             this.loading = true
             this.reimbursementBusiness.queryById(this.inputForm.id).then(({data}) => {
               this.inputForm = this.recover(this.inputForm, data)
+              this.selectReimbursementType(this.inputForm.reimbursementType)
               this.loading = false
             })
           }
@@ -225,6 +276,7 @@
             this.loading = true
             this.reimbursementBusiness.getBusinessById(this.inputForm.businessCodeId).then(({data}) => {
               this.inputForm = this.recover(this.inputForm, data)
+              this.selectReimbursementType(this.inputForm.reimbursementType)
               this.loading = false
             })
           }

+ 5 - 0
src/views/modules/reimbursementSys/reimbursementBusinessList.vue

@@ -31,6 +31,11 @@
             >
             </el-table-column>
             <el-table-column
+              prop="reimbursementType"
+              label="报销类型"
+            >
+            </el-table-column>
+            <el-table-column
               prop="reimbursementDay"
               label="报销天数"
             >

+ 185 - 0
src/views/modules/reimbursementSys/reimbursementInvoiceModify.vue

@@ -0,0 +1,185 @@
+<template>
+  <el-dialog
+    :title="title"
+    :close-on-click-modal="false"
+     v-dialogDrag
+    :visible.sync="visible">
+    <el-form size="small" :model="inputForm" ref="inputForm" @keyup.enter.native="doSubmit()"
+             label-width="80px" v-loading="loading" :class="method==='viewInvoice'?'readonly':''" :disabled="method==='viewInvoice'" @submit.native.prevent>
+      <el-row :gutter="15">
+        <el-col :span="12">
+          <el-form-item label="业务编号" prop="businessCode" :rules="[{max: 50, message: '最大长度不能超过50个字符', trigger: 'blur'}]">
+            <el-input v-model="inputForm.businessCode" placeholder="业务编号" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="业务类型" prop="businessType" :rules="[{max: 50, message: '最大长度不能超过50个字符', trigger: 'blur'}]">
+            <el-input v-model="inputForm.businessType" placeholder="业务类型" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="发票代码" prop="invoiceCode" :rules=" [{required: true, message: '发票代码不能为空', trigger: 'blur'}]">
+            <el-input v-model="inputForm.invoiceCode" placeholder="发票代码" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="发票号码" prop="invoiceNumber" :rules=" [{required: true, message: '发票号码不能为空', trigger: 'blur'}]">
+            <el-input v-model="inputForm.invoiceNumber" placeholder="发票号码" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="购方企业名称" prop="firmName" :rules="[{max: 50, message: '最大长度不能超过50个字符', trigger: 'blur'}]">
+            <el-input v-model="inputForm.firmName" placeholder="购方企业名称" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="开票日期" prop="makeTime"
+                        :rules="[
+                  {trigger:'blur'}
+                 ]">
+            <el-date-picker
+              style="width: 100%;"
+              v-model="inputForm.makeTime"
+              type="datetime"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              :disabled="true"
+              placeholder="选择日期时间">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="商品名称" prop="name" :rules="[{max: 50, message: '最大长度不能超过50个字符', trigger: 'blur'}]">
+            <el-input v-model="inputForm.name" placeholder="商品名称" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="金额" prop="money" :rules="[{max: 50, message: '最大长度不能超过50个字符', trigger: 'blur'}]">
+            <el-input v-model="inputForm.money" placeholder="金额" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="税额" prop="tax" :rules="[{max: 50, message: '最大长度不能超过50个字符', trigger: 'blur'}]">
+            <el-input v-model="inputForm.tax" placeholder="税额" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="收入" prop="income" :rules="[{max: 50, message: '最大长度不能超过50个字符', trigger: 'blur'}]">
+            <el-input v-model="inputForm.income" placeholder="收入" :disabled="true"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="项目经理" prop="proposer" :rules="[{max: 50, required: true, message:'项目经理不能为空', trigger: 'blur'}]">
+            <el-input v-model="inputForm.proposer" placeholder="项目经理" ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="部门" prop="partner" :rules="[{max: 50, required: true, message:'部门不能为空', trigger: 'blur'}]">
+            <el-input v-model="inputForm.partner" placeholder="部门" ></el-input>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="收款日期" prop="gatheringTime"
+                        :rules="[
+                  {trigger:'blur'}
+                 ]">
+            <el-date-picker
+              style="width: 100%;"
+              v-model="inputForm.gatheringTime"
+              type="datetime"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              :disabled="true"
+              placeholder="选择日期时间">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+      </el-row>
+
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button size="small" @click="visible = false" icon="el-icon-circle-close">关闭</el-button>
+      <el-button size="small" v-if="method != 'viewInvoice'" type="primary" @click="doSubmit()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  import ReimbursementSys from '@/api/reimbursementSys/reimbursementSysService'
+  export default {
+    data () {
+      return {
+        title: '',
+        method: '',
+        visible: false,
+        loading: false,
+        inputForm: {
+          id: '',
+          parent: {
+            id: ''
+          },
+          businessCode: '', // 业务编号
+          invoiceCode: '', // 发票代码
+          invoiceNumber: '', // 发票号码
+          firmName: '', // 购方企业名称
+          makeTime: '', // 开票日期
+          name: '', // 商品名称
+          money: '', // 金额
+          tax: '', // 税额
+          income: '', // 收入
+          proposer: '', // 申请人
+          partner: '', // 合伙人
+          businessType: '', // 业务类型
+          gatheringTime: '' // 收款日期
+        }
+      }
+    },
+    reimbursementSys: null,
+    created () {
+      this.reimbursementSys = new ReimbursementSys()
+    },
+    methods: {
+      init (method, obj) {
+        this.method = method
+        if (method === 'modifyInvoice') {
+          this.title = '修改发票信息'
+        } else if (method === 'viewInvoice') {
+          this.title = '查看发票信息'
+        }
+        this.visible = true
+        this.$nextTick(() => {
+          this.$refs['inputForm'].resetFields()
+          this.inputForm.id = obj.id
+          this.inputForm.parent.id = obj.parent.id
+          this.inputForm.parent.name = obj.parent.name
+          if (method === 'modifyInvoice' || method === 'viewInvoice') { // 修改或者查看
+            this.loading = true
+            this.reimbursementSys.queryInvoiceById(this.inputForm.id).then(({data}) => {
+              this.inputForm = this.recover(this.inputForm, data)
+              this.loading = false
+            })
+          }
+        })
+      },
+      // 表单提交
+      doSubmit () {
+        this.$refs['inputForm'].validate((valid) => {
+          if (valid) {
+            this.loading = true
+            this.reimbursementSys.modifyInvoice(this.inputForm).then(({data}) => {
+              this.loading = false
+              this.$message({
+                message: '操作成功',
+                type: 'success',
+                duration: 1500
+              })
+              this.visible = false
+              this.$emit('refreshDataList')
+            }).catch(() => {
+              this.loading = false
+            })
+          }
+        })
+      }
+    }
+  }
+</script>

+ 23 - 3
src/views/modules/reimbursementSys/reimbursementList.vue

@@ -8,6 +8,12 @@
       <el-form-item prop="invoiceNumber">
         <el-input size="small"  v-model="searchForm.invoiceNumber"   placeholder="发票号码"   clearable></el-input>
       </el-form-item>
+      <el-form-item prop="proposer">
+        <el-input size="small"  v-model="searchForm.proposer"   placeholder="项目经理"   clearable></el-input>
+      </el-form-item>
+      <el-form-item prop="partner">
+        <el-input size="small"  v-model="searchForm.partner"   placeholder="部门"   clearable></el-input>
+      </el-form-item>
       <el-form-item>
         <el-button  type="primary" @click="refreshList()" size="small" icon="el-icon-search">查询</el-button>
         <el-button @click="resetSearch()" size="small" icon="el-icon-refresh-right">重置</el-button>
@@ -64,7 +70,7 @@
               <span v-else></span>
             </template>
           </vxe-column>
-          <vxe-column  width="100px" title="发票代码" field="invoiceCode" align="center" ></vxe-column>
+          <vxe-column  width="100px" title="发票代码" field="invoiceCode" align="center" visible></vxe-column>
           <vxe-column  width="100px" title="发票号码" field="invoiceNumber" align="center">
             <template slot-scope="scope">
               <el-link  type="primary" :underline="false" v-if="hasPermission('reimbursement:view') && scope.row.parentId !== '0'" @click="viewInvoice(scope.row.id)">{{scope.row.invoiceNumber}}</el-link>
@@ -82,17 +88,22 @@
           <vxe-column  width="100px" title="部门" field="partner" align="center"></vxe-column>
           <vxe-column  width="100px" title="业务类型" field="businessType" align="center"></vxe-column>
           <vxe-column  width="100px" title="收款日期" field="gatheringTime" align="center"></vxe-column>
-
+          <vxe-column  width="100px"  title="状态" field="reimbursementStatus">
+            <template slot-scope="scope">
+              <el-tag type="success" v-if="scope.row.reimbursementStatus === '1'"> 已完成</el-tag>
+            </template>
+          </vxe-column>
 
 
           <vxe-column title="操作" width="300px" fixed="right" align="center">
             <template slot-scope="scope">
               <el-button v-if="hasPermission('reimbursement:edit') && scope.row.businessCode==='' && scope.row.parentId === '0'" type="text" icon="el-icon-edit" size="small" @click="editBusiness(scope.row.id)">新增业务编码</el-button>
               <el-button v-if="hasPermission('reimbursement:edit') && scope.row.businessCode !== '' && !scope.row.reimbursementRatio && scope.row.parentId === '0'" type="text" icon="el-icon-edit" size="small" @click="editBusinessRatio(scope.row.id)">报销比例</el-button>
-              <el-button v-if="hasPermission('reimbursementBusiness:add') && scope.row.businessCode !== '' && scope.row.reimbursementRatio && scope.row.parentId === '0'" type="text" icon="el-icon-plus" size="small" @click="addBusinessInfo(scope.row.id, scope.row.businessCode)">业务报销</el-button>
+              <el-button v-if="hasPermission('reimbursementBusiness:add') && scope.row.businessCode !== '' && scope.row.reimbursementRatio && scope.row.parentId === '0' && scope.row.reimbursementStatus === '0'" type="text" icon="el-icon-plus" size="small" @click="addBusinessInfo(scope.row.id, scope.row.businessCode)">业务报销</el-button>
               <el-button v-if="hasPermission('reimbursementBusiness:view') && scope.row.businessCode !== '' && scope.row.reimbursementRatio && scope.row.parentId === '0'" type="text" icon="el-icon-view" size="small" @click="viewBusinessInfo(scope.row.id)">业务报销详情</el-button>
 
               <el-button v-if="hasPermission('reimbursement:edit') && scope.row.parentId !== '0' && !scope.row.gatheringTime" type="text" icon="el-icon-edit" size="small" @click="editInvoice(scope.row.id)">收款</el-button>
+              <el-button v-if="hasPermission('reimbursement:edit') && scope.row.parentId !== '0'" type="text" icon="el-icon-edit" size="small" @click="modifyInvoice(scope.row.id)">修改</el-button>
               <el-button v-if="hasPermission('reimbursement:del') && scope.row.parentId === '0'" type="text" icon="el-icon-delete" size="small" @click="delBusiness(scope.row.id)">删除</el-button>
               <el-button v-if="hasPermission('reimbursement:del') && scope.row.parentId !== '0'" type="text" icon="el-icon-delete" size="small" @click="delInvoice(scope.row.id)">删除</el-button>
             </template>
@@ -117,6 +128,7 @@
     <reimbursementBusinessForm ref="reimbursementBusinessForm" @refreshDataList="refreshList"></reimbursementBusinessForm>
     <reimbursementBusinessList ref="reimbursementBusinessList" @refreshDataList="refreshList"></reimbursementBusinessList>
     <reimbursementInvoiceForm ref="reimbursementInvoiceForm" @refreshDataList="refreshList"></reimbursementInvoiceForm>
+    <reimbursementInvoiceModify ref="reimbursementInvoiceModify" @refreshDataList="refreshList"></reimbursementInvoiceModify>
   </div>
 
 
@@ -128,6 +140,7 @@ import reimbursementForm from './reimbursementForm'
 import reimbursementGatheringTimeForm from './reimbursementGatheringTimeForm'
 import reimbursementRatioForm from './reimbursementRatioForm'
 import reimbursementInvoiceForm from './reimbursementInvoiceForm'
+import reimbursementInvoiceModify from './reimbursementInvoiceModify'
 import reimbursementBusinessForm from './reimbursementBusinessForm'
 export default {
   data () {
@@ -136,6 +149,8 @@ export default {
       searchForm: {
         businessCode: '',
         invoiceNumber: '',
+        proposer: '',
+        partner: '',
         reimbursementRatio: ''
       },
       tablePage: {
@@ -152,6 +167,7 @@ export default {
     reimbursementGatheringTimeForm,
     reimbursementRatioForm,
     reimbursementInvoiceForm,
+    reimbursementInvoiceModify,
     reimbursementBusinessForm
   },
   ReimbursementSys: null,
@@ -248,6 +264,10 @@ export default {
     editInvoice (id) {
       this.$refs.reimbursementInvoiceForm.init('editInvoice', {id: id, parent: {id: '', name: ''}})
     },
+    // 修改发票信息
+    modifyInvoice (id) {
+      this.$refs.reimbursementInvoiceModify.init('modifyInvoice', {id: id, parent: {id: '', name: ''}})
+    },
     // 查看
     view (id) {
       this.$refs.reimbursementForm.init('view', {id: id, parent: {id: '', name: ''}})

+ 5 - 0
src/views/modules/reimbursementSys/user/reimbursementUserBusinessList.vue

@@ -37,6 +37,11 @@
             >
             </el-table-column>
             <el-table-column
+              prop="reimbursementType"
+              label="报销类型"
+            >
+            </el-table-column>
+            <el-table-column
               prop="reimbursementDay"
               label="报销天数"
             >

+ 8 - 12
src/views/modules/reimbursementSys/user/reimbursementUserForm.vue

@@ -52,7 +52,7 @@
                   {required: true, message:'可报销天数不能为空', trigger:'blur'},
                   {validator: validator.isNumber, trigger:'blur'}
                  ]">
-            <el-input-number v-model="inputForm.reimbursementAllDay" placeholder="可报销天数" @input="calculateReimbursementQuota(inputForm.reimbursementQuotaDay,inputForm.reimbursementAllDay)" :step="1"  :min="1" :max="this.yearDate()" style="width: 100%;"  ></el-input-number>
+            <el-input-number v-model="inputForm.reimbursementAllDay" placeholder="可报销天数" @input="calculateReimbursementQuota(inputForm.reimbursementQuotaDay,inputForm.reimbursementAllDay)" :step="1"  :min="1" :max="366" style="width: 100%;"  ></el-input-number>
           </el-form-item>
         </el-col>
 
@@ -90,7 +90,7 @@
           year: '', // 年份
           reimbursementQuota: '', // 年报销额度
           reimbursementQuotaDay: '', // 日报销额度
-          reimbursementAllDay: this.yearDate() // 报销总天数
+          reimbursementAllDay: '' // 报销总天数
 
         }
       }
@@ -166,6 +166,12 @@
               this.inputForm = this.recover(this.inputForm, data)
               this.loading = false
             })
+          } else if (method === 'add') {
+            // 获取字典表中每日报销额度
+            this.reimbursementUser.getReimbursementQuotaDay().then(({data}) => {
+              this.inputForm = this.recover(this.inputForm, data)
+              this.loading = false
+            })
           }
         })
       },
@@ -185,16 +191,6 @@
             })
           }
         })
-      },
-      yearDate: function () {
-        // eslint-disable-next-line no-unused-vars,one-var
-        var year = new Date().getFullYear(), s = 0, d // 获取当前年
-        for (var i = 1; i < 13; i++) {
-          d = new Date(year, i, 0) // 获取某一个月的天数
-          s += d.getDate()
-        }
-        s = s - 11 // 11代表一年有11天的国假
-        return s
       }
     }
   }