-
zhangwei
2025-03-05 16213c0f85aa3ac8317797bf4a05fd12940e16d3
src/pages/reimbursement/approve.vue
@@ -2,78 +2,105 @@
   <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="planStartTime" :borderBottom='false' ref="item1">
                  <up-input v-model="state.publicJob.planStartTime" border="none" placeholder="请点击选择部门"
                     readonly></up-input>
               </up-form-item>
               <up-form-item label="部门" prop="departmentId" :borderBottom='false' ref="item1">
                  <up-input v-model="state.publicJob.depart.name" border="none" placeholder="请点击选择部门"
                     readonly></up-input>
               </up-form-item>
               <up-form-item label="姓名" prop="name" :borderBottom='false' ref="item1">
                  <up-input v-model="state.publicJob.planPeople" border="none" placeholder="请填写姓名"
                     readonly></up-input>
               </up-form-item>
               <up-form-item label="请示类别" prop="name" :borderBottom='false' ref="item1">
                  <up-input v-model="leibie" border="none" placeholder="请填写姓名" readonly></up-input>
               </up-form-item>
               <up-form-item label="金额" prop="planMoney" :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" :borderBottom='false' ref="item1">
                  <up-input v-model="state.publicJob.rewardContent" border="none" placeholder="请点击选择科目"
                     readonly></up-input>
               </up-form-item>
               <up-form-item label="摘要" prop="planContent" :borderBottom='false' ref="item1">
                  <!-- <view class="c-p-b-20"> -->
                  <up-textarea v-model="state.publicJob.planContent" border="none" readonly autoHeight
                     placeholder="请填写摘要"></up-textarea>
                  <!-- </view> -->
               </up-form-item>
               <up-form-item label="发票" prop="idCardFace" v-if='state.publicJob.houbufapiaoStatus!=="Wu"'>
                  <view class="fui-upload__wrap" v-if="state.invoice&&state.invoice.length>0">
                     <view class="fui-upload__item" v-for="(item,index) in state.invoice" :key="item.keyid">
                        <u-tag :text="item.match(/\/([^\/]*)$/)[1]" size="mini"
                           @click="$util.previewWechat(item)" v-if="$util.checkFileExtensions(item)"></u-tag>
                        <image class="fui-upload__img" :style="{width:200+'rpx',height:200+'rpx'}" v-else
                           :src="item" mode="aspectFill" @tap.stop="previewImage(index,'invoice')"></image>
            <view class="c-p-b-134">
               <view class="content c-p-l-24 c-p-b-24">
                  <up-form-item label="申请日期" prop="planStartTime" :borderBottom='false' ref="item1">
                     <up-input v-model="state.publicJob.planStartTime" border="none" placeholder="请点击选择日期"
                        readonly></up-input>
                  </up-form-item>
                  <up-form-item label="部门" prop="departmentId" :borderBottom='false' ref="item1">
                     <up-input v-model="state.publicJob.depart.name" border="none" placeholder="请点击选择部门"
                        readonly></up-input>
                  </up-form-item>
                  <up-form-item label="姓名" prop="name" :borderBottom='false' ref="item1">
                     <up-input v-model="state.publicJob.planPeople" border="none" placeholder="请填写姓名"
                        readonly></up-input>
                  </up-form-item>
                  <up-form-item label="请示类别" prop="name" :borderBottom='false' ref="item1">
                     <up-input v-model="leibie" border="none" placeholder="请填写姓名" readonly></up-input>
                  </up-form-item>
                  <up-form-item label="金额" prop="planMoney" :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" :borderBottom='false' ref="item1">
                     <!-- <view class="c-p-b-20"> -->
                     <up-textarea v-model="state.publicJob.planContent" border="none" autoHeight
                        placeholder="请填写摘要"></up-textarea>
                     <!-- </view> -->
                  </up-form-item>
                  <up-form-item label="审批意见" prop="approvalContent" :borderBottom='false' ref="item1"
                     v-if="state.publicJob.approvalStatus == 'unApproval'">
                     <!-- <view class="c-p-b-20"> -->
                     <up-textarea v-model="state.publicJob.approvalContent" border="none" autoHeight
                        placeholder="请填写审批意见"></up-textarea>
                     <!-- </view> -->
                  </up-form-item>
                  <up-form-item label="发票" prop="idCardFace" v-if='state.publicJob.houbufapiaoStatus!=="Wu"'>
                     <view class="fui-upload__wrap" v-if="state.invoice&&state.invoice.length>0">
                        <view class="fui-upload__item" v-for="(item,index) in state.invoice" :key="item.keyid">
                           <u-tag :text="item.match(/\/([^\/]*)$/)[1]" size="mini"
                              @click="$util.previewWechat(item)"
                              v-if="$util.checkFileExtensions(item)"></u-tag>
                           <image class="fui-upload__img" :style="{width:200+'rpx',height:200+'rpx'}" v-else
                              :src="item" mode="aspectFill" @tap.stop="previewImage(index,'invoice')"></image>
                        </view>
                     </view>
                  </view>
                  <view class="" v-else>
                     未上传发票
                  </view>
               </up-form-item>
               <up-form-item label="附件" prop="idCardFace">
                  <view class="fui-upload__wrap" v-if="state.file&&state.file.length>0">
                     <view class="fui-upload__item" v-for="(item,index) in state.file" :key="item.keyid">
                        <u-tag :text="item.match(/\/([^\/]*)$/)[1]" size="mini"
                           @click="$util.previewWechat(item)" v-if="$util.checkFileExtensions(item)"></u-tag>
                        <image class="fui-upload__img" v-else :style="{width:200+'rpx',height:200+'rpx'}"
                           :src="item" mode="aspectFill" @tap.stop="previewImage(index)"></image>
                     <view class="" v-else>
                        {{state.publicJob.houbufapiaoStatus=="Wu"?'无发票':null}}
                     </view>
                  </view>
                  <view class="" v-else>
                     未上传附件
                  </view>
               </up-form-item>
               <template v-if="state.publicJob.approvalStatus !== 'unApproval'">
                  <u--text :type="state.publicJob.approvalStatus=='Yes'?'success':'warning'"
                     :text="state.publicJob.approvalStatus=='Yes'?'批准':'不批准'"></u--text>
               </template>
                  </up-form-item>
                  <up-form-item label="附件" prop="idCardFace">
                     <view class="fui-upload__wrap" v-if="state.file&&state.file.length>0">
                        <view class="fui-upload__item" v-for="(item,index) in state.file" :key="item.keyid">
                           <u-tag :text="item.match(/\/([^\/]*)$/)[1]" size="mini"
                              @click="$util.previewWechat(item)"
                              v-if="$util.checkFileExtensions(item)"></u-tag>
                           <image class="fui-upload__img" v-else :style="{width:200+'rpx',height:200+'rpx'}"
                              :src="item" mode="aspectFill" @tap.stop="previewImage(index)"></image>
                        </view>
                     </view>
                     <view class="" v-else>
                        未上传附件
                     </view>
                  </up-form-item>
                  <template v-if="state.publicJob.approvalStatus !== 'unApproval'">
                     <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">
                           <u-text :text='item.approvalStaff.name'></u-text>
                           <u--text :type="item.approvalStatus=='Yes'?'success':'warning'"
                              :text="item.approvalStatus=='Yes'?'批准':'不批准'"></u--text>
                        </view>
                        <view class="chuany-width64">
                           <u-text :text='item.approvalContent'></u-text>
                        </view>
                     </view>
                     <!-- <view class="c-p-t-20">
                     <u--text :type="state.publicJob.approvalStatus=='Yes'?'success':'warning'"
                        :text="state.publicJob.approvalStatus=='Yes'?'批准':'不批准'"></u--text>
                  </view> -->
                  </template>
               </view>
            </view>
         </up-form>
      </view>
      <view class="tabbtns" v-if="state.publicJob.approvalStatus == 'unApproval'">
         <view class="chuany-flex">
            <up-button type='success' class="text-69" :text="'批准'" :loading='isLoading' :loadingText="'批准中'"
            <up-button type='success' :text="'批准'" :loading='isLoading' :loadingText="'批准中'"
               @click="saveOrder('Yes')"></up-button>
            <up-button color='#fece01' class="text-69" :text="'不批准'" :loading='isLoading' :loadingText="'提交中'"
            <up-button color='#fece01' :text="'不批准'" :loading='isLoading' :loadingText="'提交中'"
               @click="saveOrder('No')"></up-button>
         </view>
      </view>
      <u-picker :show="kemuPicker" :columns="kemuList" keyName="subjectName" @cancel='openKemuPicker'
         :defaultIndex='defaultIndex' @confirm='confirmKemuPicker'></u-picker>
   </view>
</template>
@@ -120,11 +147,17 @@
      invoice: [],
      file: []
   })
   let defaultIndex = ref([0])
   let kemuList = ref()
   let kemuPicker = ref(false)
   onLoad((options) => {
      let data = $db.get('userInfo').userCompany
      role.value = options.role
      detailId.value = options.detailId
      getRolePlaneList()
      $api.getKeMuList().then(res => {
         kemuList = [res.data]
         getRolePlaneList()
      })
   })
   const formRef = ref(null);
@@ -161,6 +194,10 @@
      getList(detailId.value).then(res => {
         state.publicJob = res.data
         state.publicJob.planStartTime = $util.formatDate(state.publicJob.planStartTime)
         let index = kemuList[0].findIndex(item => {
            return item.keyid == state.publicJob.rewardResult
         })
         defaultIndex = [index]
         state.publicJob.workPlanAttachments.forEach(item => {
            if (item.attachmentType == 1) {
               state.invoice.push(item.planAttachment)
@@ -169,6 +206,15 @@
            }
         })
      })
   }
   const confirmKemuPicker = (arr) => {
      console.log('----', arr);
      state.publicJob.rewardResult = String(arr.value[0].keyid)
      state.publicJob.rewardContent = arr.value[0].subjectName
      openKemuPicker()
   }
   const openKemuPicker = () => {
      kemuPicker.value = !kemuPicker.value
   }
   const saveOrder = (approvalStatus) => {
      isLoading.value = true
@@ -180,7 +226,11 @@
      }
      let obj = {
         oA_WorkPlanId: state.publicJob.keyid,
         approvalStatus
         approvalStatus,
         rewardResult: state.publicJob.rewardResult,
         planContent: state.publicJob.planContent,
         planMoney: state.publicJob.planMoney,
         approvalContent: state.publicJob.approvalContent
      }
      functionOrder(obj).then(res => {
         if (res.code == 1) {
@@ -236,7 +286,7 @@
      align-items: center;
      justify-content: center;
      /* margin-right: 20rpx; */
      margin: 20rpx 20rpx 20rpx 0;
      margin: 10rpx 10rpx 10rpx 0;
      /* margin-bottom: 20rpx; */
      /* #ifdef H5 */
      cursor: pointer;