approval.vue 4.58 KB
<template>
  <view>
    <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
                           styleType="text" activeColor="#AD181F"></uni-segmented-control>
			
    <!-- 段位考试审核 -->
    <view class="appList">
      <view class="appItem" v-for="item in infoList" :key="item.recordId" >
        <view @click="goDetail(item)">
          <view class="status" >
            <text :class="{
              'text-primary':item.auditStatus=='0',
              'text-success':item.auditStatus=='1',
              'text-danger':item.auditStatus=='2',
              'text-warning':item.auditStatus=='3'
            }">{{ item.statusStr }}</text>
          </view>
		
          <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
          <view class="name mt0" >{{item.name}}</view>
          <view class="pp esp">申请单位:{{item.memberName}}</view>
          <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
          <view class="flexbox" >
            <view>
              申请日期
              <view>{{item.applyTime.substring(0, 10)}}</view>
            </view>
            <view class="w50">
              考段考生数
              <view>{{item.totalNum||'--'}}</view>
            </view>
          </view>
        </view>
        <view class="func" v-if="item.auditStatus=='0'">
          <button @click="audit(item,'2')">拒绝</button>
          <button @click="audit(item,'1')">同意</button>
        </view>
      </view>
    </view>
    <view class="nodata" v-if="infoList.length==0">
      <image mode="aspectFit" src="/static/nodata.png"></image>
      <text>暂无数据</text>
    </view>
  </view>
</template>

<script setup>
import * as examApi from '@/common/api_exam.js'
import _ from 'lodash'
import { ref } from 'vue'
import { onLoad,onShow } from '@dcloudio/uni-app'

const app = getApp();
const queryParams = ref({
  status: '0',
  rankStatus:'0'
})
const current = ref()
const navs = ref(['审核中', '审核通过', '审核拒绝'])
const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
const deptType = ref('')
const infoList = ref([])
const total = ref(0)

onLoad((options)=>{
  queryParams.value.type=options.type
})

onShow(() => {
  if (app.globalData.isLogin) {
    init()
  } else {
    app.firstLoadCallback = () => {
      init()
    };
  }
})

function init(){
  uni.showLoading({
    title: '加载中'
  })
  deptType.value = app.globalData.deptType
  getList()
}

function onClickItem(e) {
  uni.showLoading({
    title: '加载中'
  })
  queryParams.value.status = e.currentIndex
  getList()
}

function getList() {
  examApi.getVerityList(queryParams.value).then(res => {
    uni.hideLoading()
    const list = []
    _.each(res.rows, r => {
      const item = JSON.parse(r.content)
      item.recordId = r.recordId
      item.auditStatus = r.auditStatus
      item.submitStatus = r.submitStatus
      item.distributeTime = r.distributeTime
      item.statusStr = statusArr[r.auditStatus]
      item.sourceData = r
      item.scoreStatus = r.scoreStatus
      item.status = r.status
      item.isView = r.isView
      item.payStatus = r.payStatus
      item.rankStatus = r.rankStatus
      item.processCentBar = r.processCentBar
      list.push(item)
    })
	
    infoList.value = list
    total.value = res.total
  })
}

function audit(item, flag) {
  console.log(item.sourceData)
  var obj = {
    flag: flag,
    reason: null,
    id: item.recordId
  }
		
  if (flag == '2') {
    // 拒绝
    // 弹出框填写理由
    uni.showModal({
      title: '请输入拒绝理由',
      editable: true,
      success: function(res) {
        if (res.confirm) {
          if (!res.content) {
            uni.showToast({
              title: '请输入拒绝理由',
              icon: 'none'
            })
          } else {
            obj.reason = res.content
            doApproval(obj)
          }
        }
      }
    })
  } else if (flag == '1') {
    // 二次确认
    uni.showModal({
      title: '提示',
      content: `确定审批通过吗`,
      success: function(res) {
        if (res.confirm) {
          doApproval(obj)
        }
      }
    })
  }
}
	
function doApproval(obj) {
  examApi.doMergeFlows(obj).then((res) => {
    uni.showToast({
      title: '操作成功',
      icon: 'none'
    })
    getList()
  })
}

function goDetail(item) {
  let path = `/pages/rank/applyDetail?examId=${item.examId}`
  uni.navigateTo({
    url: path
  });
}

</script>

<style lang="scss" scoped>

</style>