addMember.vue 10.6 KB
<template>
  <div class="app-container">
    <el-card>
      <div>
        <br>
        <el-button type="primary" @click="onLineFn">在线选择</el-button>
      </div>
      <br>
      <div>
        <el-table v-loading="loading" border :data="list" style="width: 100%">
          <el-table-column label="序号" align="center" type="index" width="55" />
          <el-table-column
            label="会员编号"
            align="center"
            prop="personCode"
            min-width="130"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="姓名"
            align="center"
            prop=""
            min-width="130"
          >
            <template #default="scope">
              <div>{{ scope.row.oldName }}
                <el-button class="btn" size="small" type="text" @click="handleChange(scope.row,'newName')">变更</el-button>
              </div>
              <div v-if="scope.row.oldName!=scope.row.newName" class="bg">
                <span>{{ scope.row.newName }}</span>
              </div>
            </template>
          </el-table-column>
          <el-table-column
            label="性别"
            align="center"
            prop=""
            min-width="120"
          >
            <template #default="scope">
              <div>{{ scope.row.newSex==0?'男':'女' }}
                <el-button class="btn" size="small" type="text" @click="handleChange(scope.row,'newSex')">变更</el-button>
              </div>
              <div v-if="scope.row.oldSex!=scope.row.newSex" class="bg">
                <span>{{ scope.row.newSex==0?'男':'女' }}</span>
              </div>
            </template>
          </el-table-column>
          <el-table-column
            label="证件类型"
            align="center"
            prop=""
            min-width="140"
          >
            <template #default="scope">
              <div>{{ cardType[scope.row.oldIdcType].label }}
                <el-button class="btn" size="small" type="text" @click="handleChange(scope.row,'newIdcType')">变更</el-button>
              </div>
              <div v-if="scope.row.oldIdcType!=scope.row.newIdcType" class="bg">
                <span> {{ cardType[scope.row.newIdcType].label }} </span>
              </div>
            </template>
          </el-table-column>
          <el-table-column
            label="证件号"
            align="center"
            prop=""
            min-width="230"
          >
            <template #default="scope">
              <div>{{ scope.row.oldIdcCode }}
                <el-button class="btn" size="small" type="text" @click="handleChange(scope.row,'newIdcCode')">变更</el-button>
              </div>
              <div v-if="scope.row.oldIdcCode!=scope.row.newIdcCode" class="bg">
                <span> {{ scope.row.newIdcCode }} </span>
              </div>
            </template>
          </el-table-column>
          <el-table-column
            label="会员状态"
            align="center"
            prop=""
            min-width="100"
          >
            <template #default="props">
              <div v-if="props.row.personCertStage==0">
                新会员
              </div>
              <div v-if="props.row.personCertStage==1">
                待提交
              </div>
              <div v-if="props.row.personCertStage==2">
                缴费中
              </div>
              <div v-if="props.row.personCertStage==3">
                正常
              </div>
              <div v-if="props.row.personCertStage==4">
                过期
              </div>

            </template>
          </el-table-column>
          <el-table-column
            label="出生日期"
            align="center"
            prop=""
            min-width="220"
          >
            <template #default="scope">
              <div>{{ parseTime(scope.row.oldBirth, '{y}-{m}-{d}') }}
                <el-button class="btn" size="small" :disabled="scope.row.generateFlag==1&&scope.row.newIdcType==0" type="text" @click="handleChange(scope.row,'newBirth')">变更</el-button>
              </div>
              <div v-if="scope.row.oldBirth!=scope.row.newBirth" class="bg">
                <span> {{ parseTime(scope.row.newBirth, '{y}-{m}-{d}') }} </span>
              </div>
            </template>
          </el-table-column>
          <el-table-column
            label="附件"
            align="center"
            prop=""
            min-width="220"
          >
            <template #default="scope">

              <el-button v-if="scope.row.fileUrl" size="small" type="text" @click="handleDownload(scope.row,'fileUrl')">下载</el-button>
              <span v-else style="color: #d51515;font-size: 12px">需上传证件照等有效资料</span>
              <el-button class="btn" size="small" type="text" @click="handleChange(scope.row,'fileUrl')">编辑</el-button>
            </template>
          </el-table-column>

          <el-table-column
            label="所属道馆"
            align="center"
            prop="memName"
            min-width="100"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="操作"
            align="center"
            fixed="right"
            class-name="small-padding"
            width="100"
          >
            <template #default="scope">
              <el-button type="danger" @click="handleDelete(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="getList"
        />
      </div>
      <br>
      <br>
      <el-row justify="center">
        <el-button :disabled="list<=0" type="primary" @click="commitFN"> 保存并提交</el-button>
      </el-row>


      <updateMemberInfo ref="updateMemberInfoRef" @lastStep="getList" />
    </el-card>
    <onLine ref="onLineRef" @backFN="backFN" />
    <el-link v-show="false" ref="linkRef" :href="fillImgUrl(url)" :underline="false" target="_blank" />
  </div>
</template>

<script setup>
import { ref, toRefs, reactive, onMounted } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { getCurrentInstance } from '@vue/runtime-core'
import onLine from '@/views/member/dataAlteration/memberInfo/onLine.vue'
import { addInfoModeList, editMod, infoMod, commit } from '@/api/member/dataAlteration/memberInfo.js'

import updateMemberInfo from './updateMemberInfo.vue'

const cardType = ref([
  { label: '身份证', value: '0' },
  { label: '港澳台通行证 ', value: '1' },
  { label: '中国护照', value: '2' },
  { label: '外国护照', value: '3' },
  { label: '其它', value: '4' },
  { label: '户口本', value: '5' }
])

const router = useRouter()
const route = useRoute()
const { proxy } = getCurrentInstance()
const data = reactive({
  form: {},
  queryParams: {
    rangeId: '',
    pageSize: 10,
    pageNum: 1
  },
  formData: {}
})
const total = ref(0)
const list = ref([])
const loading = ref(false)
const url = ref()
const { form, queryParams, formData } = toRefs(data)

onMounted(() => {
  if (route.query.rangeId && route.query.rangeId != 0) {
    form.value.rangeId = route.query.rangeId
    queryParams.value.rangeId = route.query.rangeId
    getList()
  } else {
    form.value.rangeId = ''
    queryParams.value.rangeId = ''
  }
})

// 身份证校验
// 自定义表单验证
function validateMin(rule, value, callback) {
  const i = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/
  if (!form.value.idcType) callback(new Error('请选择证件类型!'))
  if (form.value.idcType == 0) {
    if (!form.value.idcCode) {
      callback(new Error('请输证件号!'))
    }
    if (!i.test(form.value.idcCode)) {
      callback(new Error('请输入正确的证件号!'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 窗口关闭
function backFN(rangeId) {
  form.value.idcCode = null
  form.value.idcType = null
  if (rangeId && rangeId != -1) {
    form.value.rangeId = rangeId
    queryParams.value.rangeId = rangeId
    console.log(rangeId)
    getList()
  }
}

async function getList() {
  loading.value = true
  const res = await addInfoModeList(queryParams.value)
  if (res.code == 200) {
    list.value = res.rows
    list.value.forEach(item => {
      item.fileUrl = JSON.parse(item.fileUrl)
    })
    total.value = res.total
  }
  loading.value = false
}

// 提交审核
async function commitFN() {
  const flag = list.value.some(item => {
    if (!item.fileUrl) {
      proxy.$modal.msgError('会员编号为' + item.personCode + '信息不完整,请确认必填项!')
      return !item.fileUrl
    }
  })
  if (flag) return

  if (form.value.rangeId == '') return
  const res = await commit([queryParams.value.rangeId])
  if (res.code == 200) {
    proxy.$modal.msgSuccess('提交成功!')
    router.push('/member/dataAlteration')
  } else {
    proxy.$modal.msgError('提交失败!')
  }
}

/** 删除按钮操作 */
function handleDelete(row) {
  proxy.$modal.confirm('是否确认删除会员编号为"' + row.personCode + '"的数据项?').then(function() {
    return infoMod([row.id])
  }).then(() => {
    proxy.$modal.msgSuccess('删除成功')
    if (list.value.length == 1 && queryParams.value.pageNum === 1) {
      formData.value.rangeName = ''
      form.value.rangeId = ''
      queryParams.value.rangeId = ''
      list.value = list.value.filter(item => {
        return item.id != row.id
      })
    } else if (list.value.length == 1 && queryParams.value.pageNum > 1) {
      queryParams.value.pageNum--
      getList()
    } else {
      getList()
    }
  }).catch(() => {
  }).finally(() => {
  })
}

// 在线选着
function onLineFn() {
  console.log(queryParams.value.rangeId)
  proxy.$refs['onLineRef'].open(queryParams.value.rangeId || '-1')
}

async function changeFN(row) {
  const res = await editMod({
    id: row.id,
    newBeginTime: row.newBeginTime,
    newBirth: row.newBirth,
    newIdcCode: row.newIdcCode,
    newIdcType: row.newIdcType,
    newName: row.newName,
    newSex: row.newSex,
    newValiDate: row.newValiDate
    
  })
  if (res.code == 200) {
    proxy.$modal.msgSuccess('操作成功!')
  }
  await getList()
}

function handleDownload(row) {
  url.value = row.fileUrl?.[0]?.url
  proxy.$refs['linkRef'].$el.click()
}

// 会员信息变更
function handleChange(row, val) {
  proxy.$refs['updateMemberInfoRef'].open(row, val)
}
</script>
<style scoped lang="scss">

.bg{
  color: #d51515;
}
.btn{
  padding-right: 0;
}
</style>