onLine.vue 11.5 KB
<template>
  <div v-if="show">
    <el-dialog
      v-model="show" title="会员缴费" :close-on-click-modal="true" width="80%"
      align-center @close="close"
    >
      <h4 style="margin:0;text-align: center;padding: 5px 0;"> <el-icon style="vertical-align:top;color:#c00;"><WarningFilled /></el-icon>温馨提示:<span style="color:#c00">列表只显示不在缴费中的个人会员</span></h4>
      <div class="box">
        <div class="">
          <!-- 搜索区域 -->
          <el-form
            ref="queryRef" label-position="top" size="small" :model="queryParams" :inline="true"
            label-width="auto"
          >
            <el-row style="width: 100%;">
              <el-col :span="4">
                <el-form-item label="会员名称" prop="name">
                  <el-input
                    v-model="queryParams.name"
                    placeholder="会员名称"
                    clearable
                    style="width: 240px"
                    @keyup.enter="searchFN"
                  />
                </el-form-item>
              </el-col>
              <!-- <el-col :span="4">
                <el-form-item label="注册团体会员名称" prop="groupMemberName">
                  <el-input
                    v-model="queryParams.groupMemberName"
                    placeholder="注册团体会员名称"
                    clearable
                    style="width: 240px"
                    @keyup.enter="searchFN"
                  />
                </el-form-item>
              </el-col> -->
              <el-col :span="4">
                <el-form-item label="状态" prop="certStage">
                  <el-select v-model="queryParams.certStage" placeholder="" @change="searchFN">
                    <el-option label="全部" value="" />
                    <el-option label="新会员" value="0" />
                    <el-option label="正常" value="3" />
                    <el-option label="过期" value="4" />
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item label="到期时间" prop="regDateRange">
                  <el-date-picker
                    v-model="regDateRange"
                    type="datetimerange"
                    value-format="YYYY-MM-DD HH:mm:ss"
                    range-separator="至"
                    start-placeholder="开始时间"
                    end-placeholder="结束时间"
                    @change="searchFN"
                  />
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
          <el-row justify="space-between">
            <div />
            <div>
              <el-button size="small" type="primary" icon="Search" @click="searchFN()">查询</el-button>
              <el-button size="small" icon="Refresh" @click="reset">重置</el-button>
              <el-button size="small" :disabled="falg" type="primary" @click="handleImport">批量添加 </el-button>
            </div>
          </el-row>
          <br>

          <!-- 表格数据 -->
          <el-table
            v-loading="loadding" border :data="list" style="width: 100%"
            :row-class-name="tableRowClassName"
            @sort-change="sortChange"
            @selection-change="handleSelectionChange"
          >
            <el-table-column type="selection" align="center" width="50" :selectable="selectable" />
            <el-table-column :selectable="selectEnable" type="index" label="序号" width="55" align="center" />
            <el-table-column
              label="会员名称"
              align="center"
              prop="name"
              min-width="110"
              :show-overflow-tooltip="true"
            />
            <el-table-column
              label="性别"
              align="center"
              prop="sex"
              min-width="60"
            >
              <template #default="props">
                <div v-if="props.row.sex == 1"></div>
                <div v-else></div>
              </template>
            </el-table-column>

            <!--          <el-table-column-->
            <!--            label="会员类型"-->
            <!--            align="center"-->
            <!--            prop="perType"-->
            <!--            min-width="80"-->
            <!--          >-->
            <!--            <template #default="props">-->
            <!--              <div v-if="props.row.perType==1"> 个人</div>-->
            <!--              <div v-if="props.row.perType==2"> 教练</div>-->
            <!--              <div v-if="props.row.perType==3"> 考官</div>-->
            <!--              <div v-if="props.row.perType==4"> 裁判</div>-->
            <!--              <div v-if="props.row.perType==5">临时</div>-->
            <!--            </template>-->
            <!--          </el-table-column>-->
            <el-table-column label="出生日期" align="center" prop="birth" width="100">
              <template #default="scope">
                <span>{{ parseTime(scope.row.birth, '{y}-{m}-{d}') }}</span>
              </template>
            </el-table-column>
            <el-table-column
              label="证件类型"
              align="center"
              prop="matchTimeStr"
              min-width="80"
            >
              <template #default="props">
                <div>{{ cardType[props.row.idcType]?.label }}</div>
              </template>
            </el-table-column>
            <el-table-column
              label="证件号码"
              align="center"
              prop="idcCode"
              min-width="120"
              :show-overflow-tooltip="true"
            />
            <el-table-column
              label="一级单位"
              align="center"
              prop=""
              min-width="120"
              :show-overflow-tooltip="true"
            >
              <template #default="props">
                <div v-if="props?.row?.ancestorNameList">
                  <div v-if="props?.row?.ancestorNameList[0]">{{ props?.row?.ancestorNameList[0] }}</div>
                  <div v-else>/</div>
                </div>
              </template>
            </el-table-column>

            <el-table-column
              label="二级单位"
              align="center"
              prop="costCounts"
              min-width="120"
              :show-overflow-tooltip="true"
            >
              <template #default="props">
                <div v-if="props?.row?.ancestorNameList">
                  <div v-if="props?.row?.ancestorNameList[1]">{{ props?.row?.ancestorNameList[1] }}</div>
                  <div v-else>/</div>
                </div>
              </template>
            </el-table-column>
            <el-table-column
              label="注册时间"
              align="center"
              prop="createTime"
              min-width="100"
              :show-overflow-tooltip="true"
            >
              <template #default="scope">
                <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
              </template>
            </el-table-column>
            <el-table-column
              label="到期时间"
              align="center"
              prop="statusStr"
              min-width="100"
              :show-overflow-tooltip="true"
            >
              <template #default="scope">
                <span>{{ scope.row.idcType==3?'--': parseTime(scope.row.validityDate, '{y}-{m}-{d}') }}</span>
              </template>
            </el-table-column>

            <el-table-column
              label="状态"
              align="center"
              prop="statusStr"
              min-width="100"
            >
              <template #default="props">
                <div v-if="props.row.certStage==0">
                  新会员
                </div>
                <div v-if="props.row.certStage==1">
                  待提交
                </div>
                <div v-if="props.row.certStage==2">
                  缴费中
                </div>
                <div v-if="props.row.certStage==3">
                  正常
                </div>
                <div v-if="props.row.certStage==4">
                  过期
                </div>

              </template>
            </el-table-column>

          </el-table>
          <pagination
            v-show="total > 0"
            v-model:page="queryParams.pageNum"
            v-model:limit="queryParams.pageSize"
            :total="total"
            @pagination="initData"
          />
        </div>
      </div>
    </el-dialog>

  </div>

</template>

<script setup>
import { useRoute } from 'vue-router'
import { reactive } from '@vue/runtime-core'
import { ref, toRefs, onMounted, getCurrentInstance } from 'vue'
import { selectPageList } from '@/api/person/info'
import { addPersonPaymentGroup } from '@/api/member/memberPay'
const { proxy } = getCurrentInstance()
const total = ref(0)
const list = ref([])
const route = useRoute()
const show = ref(false)
const falg = ref(true)
const groupList = ref([])
const regDateRange = ref([])
const rangeId = ref()
const loadding = ref(true)
const data = reactive({
  queryParams: {}
})

const cardType = ref([
  { label: '身份证', value: '0' },
  { label: '港澳台通行证 ', value: '1' },
  { label: '中国护照', value: '2' },
  { label: '外国护照', value: '3' },
  { label: '户口本', value: '4' }
])
const { queryParams } = toRefs(data)
const emit = defineEmits(['backFN'])
onMounted(() => {
  route
})

// 背景颜色
function tableRowClassName({ row }) {
  if (row.canPayFlag == 0) {
    return 'disabled-row'
  }
}

function open(row) {
  queryParams.value = {
    pageNum: 1,
    pageSize: 10,
    showMyPersonFlag: 1,
    checkPaymentCommit: 1,
    fromChoose: 1
  }
  show.value = true
  rangeId.value = row


  initData()
}

function close() {
  show.value = false
  // queryParams.value = {
  //   pageNum: 1,
  //   pageSize: 100
  // }
  emit('backFN', rangeId.value)
}

function backFN() {
  emit('backFN', rangeId.value)
}
// 多选
function handleSelectionChange(e) {
  falg.value = !e.length
  groupList.value = JSON.parse(JSON.stringify(e))
}

// 禁选
function selectable(row, index) {
  if (row.canPayFlag != 0) {
    return true
  }
}

function searchFN() {
  queryParams.value.pageNum = 1
  initData()
}


// 获取赛会列表
async function initData() {
  loadding.value = true
  if (regDateRange.value) {
    queryParams.value.validityDateRange = regDateRange.value.toString()
  } else {
    queryParams.value.validityDateRange = null
  }
  queryParams.value.paymentRangeId = rangeId.value
  const res = await selectPageList(queryParams.value)
  list.value = res.rows
  total.value = res.total
  loadding.value = false
}

// 批量导入
async function handleImport() {
  const arr = []
  groupList.value.forEach(item => {
    arr.push(item.perId)
  })
  if (arr.length <= 0) return false
  const res = await addPersonPaymentGroup({ rangeId: rangeId.value, personIdArray: arr.join(',') })
  if (res.code == 200) {
    if (res.data.rangeId) rangeId.value = res.data.rangeId
    // backFN()
    close()

    proxy.$modal.msgSuccess('操作成功!')
    show.value = false
  } else {
    proxy.$modal.msgError('操作失败!')
  }
}

// 重置
function reset() {
  proxy.$refs['queryRef'].resetFields()
  regDateRange.value = []
  initData()
}

defineExpose({
  open, close, backFN
})


</script>

<style lang="scss" scoped>
.router {
  margin-right: 20px;
}
:deep(.el-button--info){
  background-color: #920f20;
  border:1px solid #920f20
}

</style>