onLine.vue 6.76 KB
<template>
  <div v-if="show">
    <el-dialog
      v-model="show" title="会员变更" :close-on-click-modal="true" width="80%"
      @close="close"
    >
      <div class="">
        <!-- 搜索区域 -->
        <el-form
          ref="queryRef" size="small" :model="queryParams" :inline="true" label-position="top"
          label-width="auto"
        >
          <el-row style="width: 100%;">
            <el-col :span="4">
              <el-form-item label="团体会员名称" prop="name">
                <el-input
                  v-model.trim="queryParams.name"
                  placeholder="团体会员名称"
                  clearable
                  style="width: 100%"
                  @keyup.enter="searchFN"
                />
              </el-form-item>
            </el-col>
            <el-col :span="4">
              <el-form-item label="团体类型" prop="deptType">
                <el-select v-model="queryParams.deptType" style="width: 100%" placeholder="请输入团体类型" @change="searchFN">
                  <el-option label="全部" value="" />
                  <el-option label="职业性团体会员" value="6" />
                  <el-option label="三级协会" value="5" />
                  <el-option label="二级协会" value="4" />
                  <el-option label="一级协会" value="2" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="到期时间" prop="name">
                <el-date-picker
                  v-model="regDateRange"
                  type="datetimerange"
                  value-format="YYYY-MM-DD "
                  range-separator="至"
                  start-placeholder="开始时间"
                  end-placeholder="结束时间"
                  style="width: 100%"
                  @change="searchFN"
                />
              </el-form-item>
            </el-col>
            <div class="po-r-btns">
              <el-button size="small" type="primary" icon="Search" @click="searchFN()">查询</el-button>
              <el-button size="small" icon="Refresh" @click="reset">重置</el-button>
            </div>
          </el-row>
        </el-form>
        <el-row justify="space-between">
          <div>
            <el-button size="small" :disabled="flag" type="primary" @click="handleImport">批量导入 </el-button>
          </div>

        </el-row>
        <br>
        <!-- 表格数据 -->
        <el-table
          v-loading="loading" border :data="list" style="width: 100%" :row-class-name="tableRowClassName"
          @sort-change="sortChange" @selection-change="handleSelectionChange"
        >
          <el-table-column type="selection" width="55" :selectable="selectable" />
          <el-table-column type="index" label="序号" width="55" align="center" />

          <el-table-column
            label="团体会员号"
            align="center"
            prop="memCode"
            min-width="120"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="团体会员名称"
            align="center"
            prop="name"
            min-width="110"
            :show-overflow-tooltip="true"
          />

          <el-table-column
            label="团体类型"
            align="center"
            prop="type"
            min-width="80"
          >
            <template #default="props">
              <div v-if="props.row.deptType == 2">一级协会</div>
              <div v-if="props.row.deptType == 3">直属协会</div>
              <div v-if="props.row.deptType == 4">二级协会</div>
              <div v-if="props.row.deptType == 5">三级协会</div>
              <div v-if="props.row.deptType == 6">职业性团体会员</div>
            </template>
          </el-table-column>

          <el-table-column
            label="到期时间"
            align="center"
            prop="statusStr"
            min-width="100"
            :show-overflow-tooltip="true"
          >
            <template #default="scope">
              <span>{{ parseTime(scope.row.validityDate, '{y}-{m}-{d}') }}</span>
            </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>
    </el-dialog>
  </div>

</template>

<script setup>
import { reactive } from '@vue/runtime-core'
import { ref, toRefs, getCurrentInstance } from 'vue'
import { addInfoModeToRange } from '@/api/groupMember/addAlteration'
// 在线选择
import { getMySonList } from '@/api/groupMember/memberPay.js'

const { proxy } = getCurrentInstance()
const total = ref(0)
const list = ref([])
const show = ref(false)
const flag = ref(true)
const regDateRange = ref([])
const loading = ref(false)
const perId = ref()
const rangeId = ref()
const batchList = ref([])
const data = reactive({
  queryParams: {}
})

const { queryParams } = toRefs(data)
const emit = defineEmits(['backFN'])

// // 背景颜色
// function tableRowClassName({ row }) {
//   if (!row.canCommit) {
//     return 'disabled-row'
//   }
// }

function open(row) {
  queryParams.value = {
    pageNum: 1,
    pageSize: 10,
    multiDeptFlag: 1,
    perType: 1
  }
  show.value = true
  rangeId.value = row
  perId.value = row.perId
  initData()
}

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

// // 禁选
// function selectable(row, index) {
//   if (row.canCommit) {
//     return true
//   } else {
//     return false
//   }
// }

function close() {
  show.value = false
  emit('backFN', rangeId.value)
}

// 多选
function handleSelectionChange(e) {
  flag.value = !e.length
  batchList.value = e.map(item => item.memId)
}

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

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

// 批量添加
async function handleImport() {
  const res = await addInfoModeToRange({
    memId: batchList.value,
    rangeIdStr: rangeId.value || '-1'
  })
  if (res.code == 200) {
    proxy.$modal.msgSuccess('操作成功!')
    rangeId.value = res.data
    close()
  }
}
defineExpose({
  open
})


</script>

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

</style>