addMergeInfo.vue 9.8 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="personInfo.name"
            min-width="130"
          >
            <template #default="scope">
              <div>
                {{ scope.row.personInfo.name }}
              </div>
              <div v-if="scope.row.oldPersonInfo" class="bg">
                <span>{{ scope.row.oldPersonInfo.name }}</span>
              </div>
            </template>
          </el-table-column>
          <el-table-column
            label="会员编号"
            align="center"
            prop="personInfo.perCode"
            min-width="130"
            :show-overflow-tooltip="true"
          >
            <template #default="scope">
              <div>
                {{ scope.row.personInfo.perCode }}
              </div>
              <div v-if="scope.row.oldPersonInfo" class="bg">
                <span>{{ scope.row.oldPersonInfo.perCode }}</span>
              </div>
            </template>
          </el-table-column>

          <el-table-column
            label="证件号"
            align="center"
            prop="personInfo.perCode"
            min-width="160"
            :show-overflow-tooltip="true"
          >
            <template #default="scope">
              <div>
                {{ scope.row.originIdcCode }}
              </div>
              <div v-if="scope.row.oldIdcCode" class="bg">
                <span>{{ scope.row.oldIdcCode }}</span>
              </div>
            </template>
          </el-table-column>
          <el-table-column
            label="有效期"
            align="center"
            prop=""
            min-width="200"
          >
            <template #default="props">
              <div v-if="props.row.personInfo.valiDateTime&&props.row.idcType!=3">
                {{ parseTime(props.row.personInfo.beginTime, '{y}-{m}-{d}') +'~'+ parseTime(props.row.personInfo.valiDateTime, '{y}-{m}-{d}') }}
              </div>
              <div v-else>--</div>
              <div
                v-if="props.row.oldPersonInfo "
              >
                <div
                  v-if="props.row.oldPersonInfo.beginTime "
                  style="color: #d51515"
                >
                  {{ parseTime(props.row.oldPersonInfo.beginTime, '{y}-{m}-{d}') +'~'+ parseTime(props.row.oldPersonInfo.valiDateTime, '{y}-{m}-{d}') }}
                </div>
                <div v-else>--</div>
              </div>
            </template>
          </el-table-column>
          <el-table-column
            label="级位详情"
            align="center"
            prop=""
            min-width="140"
          >
            <template #default="scope">
              <div>
                <el-button class="btn" size="small" type="text" @click="handView(scope.row,'level')">查看</el-button>
              </div>
              <div v-if="scope.row.oldPersonInfo">
                <el-button style="color: #d51515" class="btn" size="small" type="text" @click="handView(scope.row,'olLevel')">查看</el-button>
              </div>

            </template>
          </el-table-column>
          <el-table-column
            label="段位详情"
            align="center"
            prop=""
            min-width="230"
          >
            <template #default="scope">
              <div>
                <el-button class="btn" size="small" type="text" @click="handView(scope.row,'duan')">查看</el-button>
              </div>
              <div v-if="scope.row.oldPersonInfo">
                <el-button style="color: #d51515" class="btn" size="small" type="text" @click="handView(scope.row,'olDuan')">查看</el-button>
              </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"
            fixed="right"
            class-name="small-padding"
            width="200"
          >
            <template #default="scope">
              <el-button type="primary" @click="handleChange(scope.row,'idcCode')">合并</el-button>
              <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>
    </el-card>
    <updateMemberInfo ref="updateMemberInfoRef" @lastStep="getList" />
    <leveView ref="leveView" />
    <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/mergeInfo/onLine.vue'
import { editMod, infoMod } from '@/api/member/dataAlteration/memberInfo.js'
import { infoMergeList, commit, deleteApi } from '@/api/member/mergeInfo'
import updateMemberInfo from './updateMemberInfo.vue'
import leveView from './leveView.vue'


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 infoMergeList(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.personInfo.perCode + '信息不完整,请确认必填项!')
      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/mergeInfo')
  } else {
    proxy.$modal.msgError('提交失败!')
  }
}

/** 删除按钮操作 */
function handleDelete(row) {
  proxy.$modal.confirm('是否确认删除会员编号为"' + row.personInfo.perCode + '"的数据项?').then(function() {
    return deleteApi([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')
}

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

// 会员信息变更
function handleChange(row, val) {
  proxy.$refs['updateMemberInfoRef'].open(row, val)
}

function handView(row, val) {
  proxy.$refs['leveView'].openView(row, val)
  console.log(111)
}
</script>
<style scoped lang="scss">

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