-
zhangwei
2025-03-04 aaa8b1b2fca572d6a989179d568991ce4bd48cfb
src/pages/reimbursement/index.vue
@@ -2,61 +2,89 @@
   <view class="full-page ">
      <view class="list">
         <up-form labelPosition="left" :model="state.publicJob" ref="formRef" labelWidth='140rpx'>
            <view class="content c-p-l-24 c-p-b-120">
               <up-form-item label="部门" prop="departmentId" required :borderBottom='false' ref="item1">
                  <up-input v-model="state.publicJob.departmentName" border="none" placeholder="请点击选择部门"
                     readonly></up-input>
               </up-form-item>
               <up-form-item label="姓名" prop="name" required :borderBottom='false' ref="item1">
                  <up-input v-model="state.publicJob.name" border="none" placeholder="请填写姓名" readonly></up-input>
               </up-form-item>
               <up-form-item label="金额" prop="planMoney" required :borderBottom='false' ref="item1">
                  <up-input v-model="state.publicJob.planMoney" border="none" placeholder="请填写金额"
                     type="digit"></up-input>
               </up-form-item>
               <up-form-item label="科目" prop="rewardContent" required :borderBottom='false' ref="item1"
                  @click='openKemuPicker'>
                  <up-input v-model="state.publicJob.rewardContent" border="none" placeholder="请点击选择科目"
                     readonly></up-input>
               </up-form-item>
               <up-form-item label="摘要" prop="planContent" required :borderBottom='false' ref="item1">
                  <!-- <view class="c-p-b-20"> -->
                  <up-textarea v-model="state.publicJob.planContent" border="none" height='35'
                     placeholder="请填写摘要"></up-textarea>
                  <!-- </view> -->
               </up-form-item>
               <up-form-item label="发票" prop="houbufapiaoStatus" required :borderBottom='false' ref="item1">
                  <u-radio-group v-model="state.publicJob.houbufapiaoStatus" placement="row"
                     @change="checkboxChange">
                     <u-radio :customStyle="{marginBottom: '8px',marginRight:'8px'}" label="有发票" name="You"
                        usedAlone />
                     <u-radio :customStyle="{marginBottom: '8px',marginRight:'8px'}" label="后补发票"
                        name="HouBuFaPiao" usedAlone />
                     <u-radio :customStyle="{marginBottom: '8px'}" label="没发票" name="Wu" usedAlone />
                  </u-radio-group>
               </up-form-item>
               <up-form-item label="上传发票" prop="idCardFace" required
                  v-if='state.publicJob.houbufapiaoStatus=="You"'>
                  <tem-upload-file immediate :url="`${apiBaseUrl}/api/UpFile/UpdateFile`" ref="uploadF"
                     fileType='all' @success="success('Invoice',$event)" @error="errorInvoice"
                     @complete="completeInvoice('Invoice',$event)">
                  </tem-upload-file>
               </up-form-item>
               <up-form-item label="上传附件" prop="idCardFace">
                  <tem-upload-file immediate :url="`${apiBaseUrl}/api/UpFile/UpdateFile`" ref="uploadB"
                     fileType="all" @success="success('File',$event)" @error="errorInvoice"
                     @complete="completeInvoice('',$event)">
                  </tem-upload-file>
               </up-form-item>
            <view class="c-p-b-134">
               <view class="content c-p-l-24 c-p-b-24">
                  <up-form-item label="部门" prop="departmentId" required :borderBottom='false' ref="item1">
                     <up-input v-model="state.publicJob.departmentName" border="none" placeholder="请点击选择部门"
                        readonly></up-input>
                  </up-form-item>
                  <up-form-item label="姓名" prop="name" required :borderBottom='false' ref="item1">
                     <up-input v-model="state.publicJob.name" border="none" placeholder="请填写姓名"
                        readonly></up-input>
                  </up-form-item>
                  <up-form-item label="金额" prop="planMoney" required :borderBottom='false' ref="item1">
                     <up-input v-model="state.publicJob.planMoney" border="none" placeholder="请填写金额"
                        type="digit"></up-input>
                  </up-form-item>
                  <up-form-item label="科目" prop="rewardContent" required :borderBottom='false' ref="item1"
                     @click='openKemuPicker'>
                     <up-input v-model="state.publicJob.rewardContent" border="none" placeholder="请点击选择科目"
                        readonly></up-input>
                  </up-form-item>
                  <up-form-item label="摘要" prop="planContent" required :borderBottom='false' ref="item1">
                     <!-- <view class="c-p-b-20"> -->
                     <up-textarea v-model="state.publicJob.planContent" border="none" height='35'
                        placeholder="请填写摘要"></up-textarea>
                     <!-- </view> -->
                  </up-form-item>
                  <up-form-item label="发票" prop="houbufapiaoStatus" required :borderBottom='false' ref="item1">
                     <u-radio-group v-model="state.publicJob.houbufapiaoStatus" placement="row"
                        @change="checkboxChange">
                        <u-radio :customStyle="{marginBottom: '8px',marginRight:'8px'}" label="有发票" name="You"
                           usedAlone />
                        <u-radio :customStyle="{marginBottom: '8px',marginRight:'8px'}" label="后补发票"
                           name="HouBuFaPiao" usedAlone />
                        <u-radio :customStyle="{marginBottom: '8px'}" label="没发票" name="Wu" usedAlone />
                     </u-radio-group>
                  </up-form-item>
                  <up-form-item label="上传发票" prop="idCardFace" required
                     v-if='state.publicJob.houbufapiaoStatus=="You"'>
                     <tem-upload-file immediate :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`" ref="uploadF"
                        :formData="state.formData" fileType='all' @success="success('Invoice',$event)"
                        @error="errorInvoice" @complete="completeInvoice('Invoice',$event)">
                     </tem-upload-file>
                  </up-form-item>
                  <up-form-item label="上传附件" prop="idCardFace">
                     <tem-upload-file immediate :url="`https://appimchat.oss-cn-chengdu.aliyuncs.com`"
                        ref="uploadB" fileType="all" @success="success('File',$event)" @error="errorInvoice"
                        @complete="completeInvoice('',$event)">
                     </tem-upload-file>
                  </up-form-item>
                  <template v-if="state.publicJob.approvalStatus=='No'">
                     <view v-for="(item,index) in state.publicJob.oaWorkPlanShenpis" :key="item.index"
                        class="chuany-flex c-p-t-20">
                        <view class="chuany-flex chuany-width36">
                           <up-text :text='item.approvalStaff.name'></up-text>
                           <up-text :type="item.approvalStatus=='Yes'?'success':'warning'"
                              :text="item.approvalStatus=='Yes'?'批准':'不批准'"></up-text>
                        </view>
                        <view class="chuany-width64">
                           <up-text :text='item.approvalContent'></up-text>
                        </view>
                     </view>
                     <!-- <view class="c-p-t-20">
                        <up-text :type="state.publicJob.approvalStatus=='Yes'?'success':'warning'"
                           :text="state.publicJob.approvalStatus=='Yes'?'批准':'不批准'"></up-text>
                     </view> -->
                  </template>
               </view>
            </view>
         </up-form>
      </view>
      <view class="tabbtns">
         <view class="chuany-flex">
            <up-button type="primary" :text="'保存报销'" :loading='isLoading' :loadingText="'保存中'"
               @click="saveOrder('Uncommitted')" v-if='state.publicJob.approvalStatus=="Uncommitted"'></up-button>
            <up-button color='#fece01' :text="state.publicJob.approvalStatus!=='Uncommitted'?'修改报销':'提交报销'" :loading='isLoading'
               :loadingText="state.publicJob.approvalStatus!=='Uncommitted'?'修改中':'提交中'" @click="saveOrder('unApproval')"></up-button>
            <up-button color='#fece01' v-if="state.publicJob.approvalStatus=='No'" text="重新申请" :loading='isLoading'
               :loadingText="'申请中'" @click="saveOrder('unApproval',true)"></up-button>
            <up-button color='#fece01'
               v-if="state.publicJob.approvalStatus=='unApproval'||state.publicJob.approvalStatus=='Uncommitted'"
               :text="state.publicJob.approvalStatus!=='Uncommitted'?'修改报销':'提交报销'" :loading='isLoading'
               :loadingText="state.publicJob.approvalStatus!=='Uncommitted'?'修改中':'提交中'"
               @click="saveOrder('unApproval')"></up-button>
         </view>
      </view>
@@ -110,8 +138,9 @@
         planContent: '', //摘要
         houbufapiaoStatus: 'You', //有无发票
         workPlanAttachments: [], //附件&发票
         approvalStatus:'Uncommitted'
         approvalStatus: 'Uncommitted'
      },
      formData: {}
   })
   onLoad((options) => {
      let data = $db.get('userInfo').userCompany
@@ -128,6 +157,7 @@
      //    })
      //    defaultIndex = [index]
      // })
      $api.getKeMuList().then(res => {
         kemuList = [res.data]
         let obj = kemuList[0].find(item => {
@@ -211,8 +241,9 @@
               planMoney: String(res.data.planMoney), //金额
               planContent: res.data.planContent, //摘要
               houbufapiaoStatus: res.data.houbufapiaoStatus, //有无发票
               workPlanAttachments: res.data.workPlanAttachments ,//附件&发票
               approvalStatus:res.data.approvalStatus
               workPlanAttachments: res.data.workPlanAttachments, //附件&发票
               approvalStatus: res.data.approvalStatus,
               oaWorkPlanShenpis: res.data.oaWorkPlanShenpis
            }
            state.publicJob.workPlanAttachments.forEach(item => {
               if (item.attachmentType == 1) {
@@ -260,7 +291,7 @@
   const checkboxChange = () => {
   }
   const saveOrder = (val) => {
   const saveOrder = (val, flag) => {
      if (state.publicJob.houbufapiaoStatus == "You") {
         let index = state.publicJob.workPlanAttachments.findIndex(item => {
            return item.attachmentType == 1
@@ -276,16 +307,18 @@
      formRef.value.validate().then(res => {
         isLoading.value = true
         let functionOrder = null
         if (planId.value) {
         if (planId.value && !flag) {
            functionOrder = $api.EditOder
         } else {
            functionOrder = $api.CreatOder
         }
         let oldStatus = state.publicJob.approvalStatus
         val ? state.publicJob.approvalStatus = val : ''
         functionOrder(state.publicJob).then(res => {
            if (res.code == 1) {
               $util.showToast({
                  title: state.publicJob.approvalStatus=='Uncommitted' ? '保存成功!' : "提交成功!",
                  title: state.publicJob.approvalStatus == 'Uncommitted' ? '保存成功!' :
                     "提交成功!",
                  icon: "success"
               })
               // if (editItem) {
@@ -301,7 +334,7 @@
                  planContent: '', //摘要
                  houbufapiaoStatus: 'You', //有无发票
                  workPlanAttachments: [], //附件&发票
                  approvalStatus:'Uncommitted',
                  approvalStatus: 'Uncommitted',
               }
               uploadB.value.urls = []
               uploadB.value.status = []
@@ -312,8 +345,9 @@
               //       url: '/pages/reimbursement/myreim'
               //    })
               // }
            } else {
               state.publicJob.approvalStatus = oldStatus
               $util.showToast({
                  title: res.error
               })
@@ -350,8 +384,10 @@
      let obj = {}
      //e.res 为服务器返回数据
      //上传成功回调,处理服务器返回数据【此处根据实际返回数据进行处理】
      let res = JSON.parse(e.res.data.replace(/\ufeff/g, "") || "{}")
      if (res.code == 1) {
      let res = e.res
      console.log(res);
      // let res = JSON.parse(e.res.data.replace(/\ufeff/g, "") || "{}")
      if (res.statusCode == 200) {
         if (res.data && text == 'Invoice') {
            obj.attachmentType = 1
            obj.planAttachment = res.data //发票
@@ -361,6 +397,7 @@
            })
            uploadF.value.status.push('success')
            uploadF.value.status.length = uploadF.value.urls.length
            console.log(uploadF.value.status);
         } else {
            obj.attachmentType = 2
            obj.planAttachment = res.data //附件
@@ -370,6 +407,7 @@
            })
            uploadB.value.status.push('success')
            uploadB.value.status.length = uploadB.value.urls.length
            console.log(uploadB.value.status);
         }
         state.publicJob.workPlanAttachments.push(obj)
         console.log(state.publicJob.workPlanAttachments);
@@ -399,7 +437,7 @@
      background-color: #fff;
   }
   .u-textarea {
   .up-textarea {
      padding: 0 !important;
   }