-
zhangwei
2025-03-04 aaa8b1b2fca572d6a989179d568991ce4bd48cfb
src/pages/reimbursement/index.vue
@@ -2,13 +2,15 @@
   <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">
            <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-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="请填写金额"
@@ -37,26 +39,52 @@
               </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 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="`${apiBaseUrl}/api/UpFile/UpdateFile`" ref="uploadB"
                     fileType="all" @success="success('File',$event)" @error="errorInvoice"
                     <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>
@@ -112,6 +140,7 @@
         workPlanAttachments: [], //附件&发票
         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 => {
@@ -212,7 +242,8 @@
               planContent: res.data.planContent, //摘要
               houbufapiaoStatus: res.data.houbufapiaoStatus, //有无发票
               workPlanAttachments: res.data.workPlanAttachments ,//附件&发票
               approvalStatus:res.data.approvalStatus
               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) {
@@ -314,6 +347,7 @@
               // }
               
            } 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;
   }