viewsMerge.vue 12 KB
<template>
  <div v-if="show">
    <el-dialog
      v-if="show"
      v-model="show" class="dialog" title="查看详情" :close-on-click-modal="true" width="80%"
      draggable
      @close="closeList"
    >
      <h1 class="center">{{ form.content.certName }}</h1>
      <div class="flex">
        <div v-if="form.content.commitTime">提交日期:<span>{{ form.content.commitTime }}</span> </div>
        <div>提交单位:<span>{{ form.content.memberName }}</span> </div>
      </div>
      <br>
      <div class="vipData">
        <div>
          团队会员合计:
          <span>{{ form.content.allCount }}</span>
        </div>
        <div>
          新会员合计:
          <span>{{ form.content.newCount }}</span>
        </div>
        <div>
          年限合计:
          <span>{{ form.content.renewYear }}</span>
        </div>
        <div>
          费用合计:
          <span>{{ (form.content.allFee*1).toFixed(2) }}</span>
        </div>
      </div>
      <br>
      <div>
        <el-form size="small" :inline="true" label-width="100px" label-position="top">
          <el-row style="width: 100%;">
            <el-col :span="4">
              <el-form-item label="团体会员名称">
                <el-input v-model="queryParams.certName" placeholder="" @keyup.enter="getBackList" />
              </el-form-item>
            </el-col>
            <el-col :span="4">
              <el-form-item label="团体类型">
                <el-select v-model="queryParams.dType" placeholder="" @change="getBackList()">
                  <!-- <el-option label="全部" value="" /> -->
                  <el-option label="一级协会" value="2" />
                  <el-option label="二级协会" value="4" />
                  <el-option label="三级协会" value="5" />
                  <el-option label="职业性团体会员" value="6" />
                </el-select>
              </el-form-item>
            </el-col>
           
            <el-col :span="4">
              <el-form-item label="缴费编号">
                <el-input v-model="queryParams.code" placeholder="" @keyup.enter="getBackList" />
              </el-form-item>
            </el-col>
            <div class="po-r-btns">
              <el-button size="small" type="primary" @click="getBackList">查询</el-button>
              <el-button size="small" @click="rest">重置</el-button>
            </div>
          </el-row>
        </el-form>
        <el-row v-if="form.auditStatus==0&&deptType!=2" justify="space-between">
          <div>
            <el-button size="small" type="primary" @click="showAudit=true">审核</el-button>
          </div>
        </el-row>
        <br>
      </div>
      <div>
        <el-table :data="list" max-height="300" border>
          <el-table-column type="index" width="55" align="center" label="序号" />
          <el-table-column label="团体会员名称" align="center" prop="memberName" :show-overflow-tooltip="true" min-width="160px" />
          <el-table-column label="单位类型" align="center" prop="" min-width="160px">
            <template #default="scope">
              <span v-if="scope.row.deptType==2">一级协会</span>
              <span v-if="scope.row.deptType==3">直属协会</span>
              <span v-if="scope.row.deptType==4">二级协会</span>
              <span v-if="scope.row.deptType==5">三级协会</span>
              <span v-if="scope.row.deptType==6">职业性团体会员</span>
            </template>
          </el-table-column>
          <el-table-column label="单价" align="center" prop="unitPrice" min-width="90" />
          <el-table-column label="年限" align="center" prop="renewYear" min-width="90" />
          <el-table-column label="总价" align="center" prop="allFee" min-width="90" />
          <el-table-column label="提交日期" align="center" prop="commitTime" min-width="100">
            <template #default="scope">
              <span>{{ parseTime(scope.row.commitTime, '{y}-{m}-{d}') }}</span>
            </template>
          </el-table-column>
          <el-table-column label="原有效期" align="center" prop="validityTime" min-width="100">
            <template #default="scope">
              <span v-if="scope.row.validityTime">{{ parseTime(scope.row.validityTime, '{y}-{m}-{d}') }}</span>
              <span v-else>/</span>
            </template>
          </el-table-column>
          <el-table-column v-if="deptType==1" label="会员证" align="center" min-width="100">
            <template #default="">
              <div v-if="form.content.sendJiaoFeiFlag==1" class="text-success">已下发</div>
              <div v-else class="text-warning">未下发</div>
            </template>
          </el-table-column>
          <el-table-column label="缴费编号" align="center" prop="provinceName" min-width="180">
            <template #default="props">
              {{ props.row.wfCode }}
            </template>
          </el-table-column>
          <!--          <el-table-column label="考点申请" align="center" prop="" min-width="120">-->
          <!--            <template #default="props">-->
          <!--              <el-button v-if="props.row?.examPointFlag==1" type="text" @click="examPointView(props.row)"></el-button>-->
          <!--              <div v-else></div>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <el-table-column fixed="right" label="操作" min-width="100" align="center" prop="personIdcType">
            <template #default="scope">
              <!-- <el-button v-if="form.isView==1&&form.auditStatus==1" :disabled="scope.row.status == 4" link type="primary" @click="handleBack(scope.row)">撤回</el-button> -->
              <el-button type="primary" @click="handleData(scope.row)">机构资料</el-button>
            </template>
          </el-table-column>
        </el-table>
        <pagination
          v-show="total > 0" 
          v-model:page="queryParams.pageNum"
          v-model:limit="queryParams.pageSize"
          :total="total" 
          @pagination="getBackList"
        />
        <br>
        <h3>审核记录</h3>
        <el-table :data="auditList" max-height="300" border>
          <el-table-column type="index" width="55" align="center" label="序号" />
          <el-table-column label="审核协会" align="center" prop="handlerDeptName" />
          <el-table-column label="审核状态" align="center" prop="">
            <template #default="props">
              <div v-if="props.row.auditStatus==0">审核中</div>
              <div v-if="props.row.auditStatus==1" class="text-success">审核通过</div>
              <div v-if="props.row.auditStatus==2" class="text-danger">审核拒绝</div>
              <div v-if="props.row.auditStatus==3" class="text-warning">已撤回</div>
              <div v-if="props.row.auditStatus==100">审核中</div>
            </template>
          </el-table-column>
          <el-table-column label="审核时间" align="center" prop="">
            <template #default="props">
              {{ parseTime(props.row.handleDate, '{y}-{m}-{d} {h}:{i}') }}
            </template>
          </el-table-column>
          <el-table-column label="备注" align="center" prop="reason" />
        </el-table>
      </div>
    </el-dialog>
    <orderDetail ref="orderDetailRef" />
    <!-- 审核 -->
    <el-dialog
      v-if="showAudit" v-model="showAudit" title="团体会员认证审核" :close-on-click-modal="true"
      draggable
      width="600"
      @close="showAudit=false"
    >
      <el-form :model="forms" label-width="100">
        <el-form-item label="审批结果" prop="flag">
          <el-radio-group v-model="forms.flag">
            <el-radio label="1">审批通过</el-radio>
            <el-radio label="0">审批拒绝</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item :label="'备注'" prop="reason">
          <el-input v-model="forms.reason" type="textarea" rows="5" />
        </el-form-item>
      </el-form>

      <template #footer>
        <div style="text-align: center;">
          <el-button type="primary" @click="doApproval"> 提交</el-button>
          <el-button @click="showAudit = false"> </el-button>
        </div>
      </template>
    </el-dialog>
    <institution ref="institutionRef" />
    <examView ref="examViewRef" />
  </div>
</template>

<script setup>
import { reactive } from '@vue/runtime-core'
import { toRefs, getCurrentInstance, ref, computed } from 'vue'
import {
  getDetailList,
  audit,
  info
} from '@/api/groupMember/authentication.js'
import institution from '@/views/groupMember/components/institution'
import orderDetail from '@/views/groupMember/authentication/orederDeatil.vue'
import useUserStore from '@/store/modules/user'
import { getHistoryByRelateId } from '@/api/groupMember/authentication.js'
import examView from '@/views/groupMember/authentication/components/examView.vue'
const deptType = computed(() => useUserStore().deptType)

const showAudit = ref(false)
const { proxy } = getCurrentInstance()
const emit = defineEmits(['approval'])
const id = ref()
const auditList = ref([])
const total = ref(0)
const data = reactive({
  show: false,
  form: {},
  list: [],
  listArr: [],
  queryParams: {
    pageNum: 1,
    pageSize: 10
  },
  forms: {
    flag: '1'
  },
  userForm: {}
})
const { show, form, list, queryParams, forms, userForm } = toRefs(data)

function open(params) {
  show.value = true
  if (params) {
    form.value = params
    queryParams.value.recordId = form.value.recordId
  }
  getBackList()
}
// 查看
async function getBackList() {
  const res = await getDetailList(queryParams.value)
  if (res.code == 200) {
    list.value = res.rows
    list.value.forEach(item => {
      item.examPointInfo = JSON.parse(item.examPointInfo)
    })
    total.value = res.total
    list.value?.[0]?.rangeId == 0 ? id.value = list.value?.[0]?.certId : id.value = list?.value?.[0]?.rangeId
    if (id.value) auditFN()
  }
}

async function auditFN() {
  const res = await getHistoryByRelateId(id.value)
  auditList.value = res.data
}

// 重置
function rest() {
  queryParams.value = {
    recordId: form.value.recordId,
    pageNum: 1,
    pageSize: 10
  }
  getBackList()
}

// 批量审批
async function doApproval() {
  if (!forms.value.flag) {
    return proxy.$modal.msgError('请选择审核状态!')
  }
  if (forms.value.flag == 0 && !forms.value.reason) {
    return proxy.$modal.msgError('请输入拒绝理由')
  }
  const res = await audit({
    recordIds: [form.value.recordId],
    flag: forms.value.flag,
    reason: forms.value.reason
  })
  if (res.code == 200) {
    showAudit.value = false
    form.value.auditStatus = 10
    getBackList()
    closeList()
    form.value.auditStatus = 1
    proxy.$modal.msgSuccess('操作成功!')
  } else {
    proxy.$modal.msgError('操作失败!')
  }
}

async function handleData(row) {
  const res = await info(row.memId)
  if (res.code == 200) {
    userForm.value = res.data
    if (userForm.value.applicationForMembership) userForm.value.applicationForMembership = JSON.parse(userForm.value.applicationForMembership)
    if (userForm.value.materials) { userForm.value.materials = JSON.parse(userForm.value.materials) }
    proxy.$refs['institutionRef'].open(userForm.value, row.examPointFlag)
  }
  console.log(res)
}

function closeList() {
  show.value = false
  queryParams.value = {
    pageNum: 1,
    pageSize: 10
  }
  total.value = 0
  emit('approval')
}

defineExpose({
  open
})

</script>

<style lang="scss" scoped>
.center {
  text-align: center;
  margin-top: 0;
}

.flex {
  display: flex;
  justify-content: space-between;
  font-size: 16px;

}

.x-flex {
  display: flex;
  width: 100%;
  font-size: 16px;
  // justify-content: space-between;
  div {
    // margin-right: 40px;
    flex:1;
    display: flex;
    // padding: 10px;
    border:1px solid #fafafa;
    justify-content: center;
   div:first-child{
    background-color: #fafafa;
   }
    div{
      // width: 200px;
      flex:1;
      justify-content: center;
      // text-align: center;
      padding: 10px;
    }
  }
  .b-box{
    border: 1px solid #f8f8f8;
  }
}

</style>