-
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" placeholder="请填写摘要" count
                        maxlength='200'></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!=="Wu"'>
                  <tem-upload-file immediate :url="`${apiBaseUrl}/api/UpFile/UpdateFile`" ref="uploadF" fileType='image'
                     @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"
                     @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 color='#fece01' class="text-69" :text="'继续报销'" :loading='isLoading' :loadingText="'提交中'"
               @click="saveOrder('continue')"></up-button>
            <up-button color='#fece01' class="text-69" :text="planId?'修改报销':'提交报销'" :loading='isLoading'
               :loadingText="planId?'修改中':'提交中'" @click="saveOrder"></up-button>
            <up-button type="primary" :text="'保存报销'" :loading='isLoading' :loadingText="'保存中'"
               @click="saveOrder('Uncommitted')" v-if='state.publicJob.approvalStatus=="Uncommitted"'></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>
@@ -109,8 +137,10 @@
         planMoney: '', //金额
         planContent: '', //摘要
         houbufapiaoStatus: 'You', //有无发票
         workPlanAttachments: [] //附件&发票
         workPlanAttachments: [], //附件&发票
         approvalStatus: 'Uncommitted'
      },
      formData: {}
   })
   onLoad((options) => {
      let data = $db.get('userInfo').userCompany
@@ -127,8 +157,14 @@
      //    })
      //    defaultIndex = [index]
      // })
      $api.getKeMuList().then(res => {
         kemuList = [res.data]
         let obj = kemuList[0].find(item => {
            return item.subjectName == '差旅费'
         })
         state.publicJob.rewardResult = String(obj.keyid)
         state.publicJob.rewardContent = obj.subjectName
         dataPlan(planId.value)
      })
   })
@@ -205,7 +241,9 @@
               planMoney: String(res.data.planMoney), //金额
               planContent: res.data.planContent, //摘要
               houbufapiaoStatus: res.data.houbufapiaoStatus, //有无发票
               workPlanAttachments: res.data.workPlanAttachments //附件&发票
               workPlanAttachments: res.data.workPlanAttachments, //附件&发票
               approvalStatus: res.data.approvalStatus,
               oaWorkPlanShenpis: res.data.oaWorkPlanShenpis
            }
            state.publicJob.workPlanAttachments.forEach(item => {
               if (item.attachmentType == 1) {
@@ -253,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
@@ -269,41 +307,47 @@
      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) {
               if (editItem) {
                  uni.navigateBack()
               } else if (val == 'continue') {
                  state.publicJob = {
                     departmentId: $db.get('userInfo').oaPermissions.departId, //部门Id
                     departmentName: $db.get('userInfo').oaPermissions.departmentName,
                     name: $db.get('userInfo').oaPermissions.name, //姓名
                     rewardResult: '', //科目id
                     rewardContent: '', //科目名称
                     planMoney: '', //金额
                     planContent: '', //摘要
                     houbufapiaoStatus: 'You', //有无发票
                     workPlanAttachments: [], //附件&发票
                  }
                  uploadB.value.urls = []
                  uploadB.value.status = []
                  uploadF.value.urls = []
                  uploadF.value.status = []
               } else {
                  uni.redirectTo({
                     url: '/pages/reimbursement/myreim'
                  })
               }
               $util.showToast({
                  title: editItem ? '修改成功!' : "保存成功!",
                  title: state.publicJob.approvalStatus == 'Uncommitted' ? '保存成功!' :
                     "提交成功!",
                  icon: "success"
               })
               // if (editItem) {
               //    uni.navigateBack()
               // } else if (val == 'continue') {
               state.publicJob = {
                  departmentId: $db.get('userInfo').oaPermissions.departId, //部门Id
                  departmentName: $db.get('userInfo').oaPermissions.departmentName,
                  name: $db.get('userInfo').oaPermissions.name, //姓名
                  rewardResult: '', //科目id
                  rewardContent: '', //科目名称
                  planMoney: '', //金额
                  planContent: '', //摘要
                  houbufapiaoStatus: 'You', //有无发票
                  workPlanAttachments: [], //附件&发票
                  approvalStatus: 'Uncommitted',
               }
               uploadB.value.urls = []
               uploadB.value.status = []
               uploadF.value.urls = []
               uploadF.value.status = []
               // } else {
               //    uni.redirectTo({
               //       url: '/pages/reimbursement/myreim'
               //    })
               // }
            } else {
               state.publicJob.approvalStatus = oldStatus
               $util.showToast({
                  title: res.error
               })
@@ -340,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 //发票
@@ -351,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 //附件
@@ -360,8 +407,10 @@
            })
            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);
      } else {
         uni.$u.toast(res.error)
         if (text == 'Invoice') {
@@ -388,9 +437,10 @@
      background-color: #fff;
   }
   .u-textarea {
   .up-textarea {
      padding: 0 !important;
   }
   .u-form-item__body {
      padding: 5px 0 !important;
   }