addAlteration.vue 8.27 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="memCode"
            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="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"
            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 './onLine.vue'
import { infoList, infoMod, commit } from '@/api/groupMember/addAlteration'

import updateMemberInfo from './updateMemberInfo.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 backFN(rangeId) {
  form.value.idcCode = null
  form.value.idcType = null
  if (rangeId && rangeId != -1) {
    form.value.rangeId = rangeId
    queryParams.value.rangeId = rangeId
    getList()
  }
}

async function getList() {
  loading.value = true
  const res = await infoList(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.memCode + '信息不完整,请确认必填项!')
      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.go(-1)
  } else {
    proxy.$modal.msgError('提交失败!')
  }
}

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