addGroupMemberPay.vue 8.22 KB
<template>
  <div class="app-container">
    <el-card>
      <h1 style="text-align: center;">{{ formData.rangeName }}</h1>
      <div>
        <el-form ref="" :model="queryParams" size="small" :inline="true" label-width="auto">
          <el-row justify="space-between">
            <div>
              <el-button type="primary" @click="onLineFN"> 在线选择</el-button>
            </div>
          </el-row>
        </el-form>
      </div>
      <br>
      <div>
        <el-table border :data="list" style="width: 100%" @sort-change="sortChange">
          <el-table-column label="序号" align="center" type="index" width="55" />
          <el-table-column
            label="团体会员名称"
            align="center"
            prop="memberName"
            min-width="160"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="团体类型"
            align="center"
            prop=""
            min-width="100"
          >
            <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="validityTime"
            min-width="100"
            :show-overflow-tooltip="true"
          >
            <template #default="scope">
              <div>{{ parseTime(scope.row.validityTime, '{y}-{m}-{d}') }}</div>
            </template>
          </el-table-column>
          <el-table-column
            label="单价(元)"
            align="center"
            prop="unitPrice"
            min-width="100"
          />
          <el-table-column
            label="总价(元)"
            align="center"
            prop="allPrice"
            min-width="100"
          />
          <el-table-column
            label="续费年限"
            align="center"
            min-width="200"
          >
            <template #default="props">
              <el-select v-model="props.row.renewYear" placeholder="请选择" @change="getYear(props.row)">
                <el-option label="一年" :value="1" />
                <el-option label="两年" :value="2" />
                <el-option label="三年" :value="3" />
                <el-option label="四年" :value="4" />
                <el-option label="五年" :value="5" />
              </el-select>
            </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>

    </el-card>

    <onLine ref="onLineRef" @backFN="backFN" />
  </div>
</template>

<script setup>
import { ref, toRefs, reactive, onMounted, computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { getCurrentInstance } from '@vue/runtime-core'
import onLine from './components/onLine.vue'
import { certified, getMySonList, commit, editYear, certifiedList } from '@/api/groupMember/memberPay.js'
import useUserStore from '@/store/modules/user'
const deptType = computed(() => useUserStore())

const router = useRouter()
const route = useRoute()
const { proxy } = getCurrentInstance()
const treeList = ref([])

const data = reactive({
  rules: {
    year: { required: true, message: '请选择缴费年限', trigger: 'blur' },
    memId: { required: true, message: '请选择所属协会', trigger: 'blur' },
    idcCode: [
      { required: true, message: '请输入证件号', trigger: 'blur' },
      { validator: validateMin, trigger: 'blur' }
    ],
    cityId: { required: true, message: '请选择地区', trigger: 'change' }
  },
  form: {
    rangeId: 0
  },
  queryParams: {
    rangeId: 0,
    pageSize: 10,
    pageNum: 1
  },
  formData: {}
})
const total = ref(0)
const list = 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()
  }
})

getTree()
// 所属协会
async function getTree() {
  const res = await getMySonList()
  treeList.value = res.data
}
// 身份证校验
// 自定义表单验证
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.idType) callback(new Error('请选择证件类型!'))
  if (form.value.idType == 0) {
    if (!i.test(form.value.idcCode)) {
      callback(new Error('请输入正确的证件号!'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

function onLineFN() {
  proxy.$refs['onLineRef'].open(queryParams.value.rangeId)
}
// 窗口关闭
function backFN(rangeId) {
  if (rangeId != 0) {
    form.value.rangeId = rangeId
    queryParams.value.rangeId = rangeId
    console.log(rangeId)
    getList()
  }
}

async function getYear(row) {
  const res = await editYear({ certId: row.certId, renewYear: row.renewYear })
  if (res.code === 200) {
    proxy.$modal.msgSuccess('操作成功!')
    getList()
  } else {
    proxy.$modal.msgSuccess('操作失败!')
  }
}

async function getList() {
  const res = await certifiedList(queryParams.value)
  if (res.code == 200) {
    list.value = res.rows
    total.value = res.total
  }
}

// 提交审核
async function commitFN() {
  if (form.value.rangeId == -1) return
  const res = await commit(queryParams.value.rangeId || form.value.rangeId)
  if (res.code == 200) {
    proxy.$modal.msgSuccess('提交成功!')
    router.push('/group/groupMemberPay')
  } else {
    proxy.$modal.msgError('提交失败!')
  }
}

/** 删除按钮操作 */
function handleDelete(row) {
  proxy.$modal.confirm('是否确认删除团体会员名称为"' + row.memberName + '"的数据项?').then(function() {
    return certified([row.certId])
  }).then(() => {
    proxy.$modal.msgSuccess('删除成功')
    if (list.value.length == 1 && queryParams.value.pageNum == 1) {
      formData.value.rangeName = ''
      form.value.rangeId = 0
      queryParams.value.rangeId = 0
      list.value = list.value.filter(item => {
        return item.certId != row.certId
      })
      // router.push('/group/groupMemberPay')
    } else if (list.value.length == 1 && queryParams.value.pageNum > 1) {
      queryParams.value.pageNum--
      getList()
    } else {
      getList()
    }
  }).catch(() => {
  }).finally(() => {
  })
}
</script>
<style scoped lang="scss">
.box{
  padding: 50px;
  width: 100%;
}
.tdFlex {
  display: flex;
}

.w50 {
  width: 50%;
}

.ml20 {
  margin-left: 20px;
}

:deep(.el-button--info){
  background-color: #920f20;
  border: 1px solid #920f20;
}

.idCode{
  :deep(.el-upload--picture-card){
    width: 380px;
    height: 240px;
  }
  :deep(.fileItem ){
    width: 380px;
    height: 240px;
  }
  :deep(.el-upload__tip){
    display: none;
  }
  :deep(.el-upload-list--picture-card){
    // text-align: center;
    display: flex;
    justify-content: center;
  }
}

.text-center{
  display: flex;
  margin-top: 30px;
  margin-bottom: 40px;
}
.text-center>div{
  margin-left: 20px;
}
.btn{
  margin-left: 10px;
}
.a{
  color:#0000ff;
  border-bottom: 1px solid #0000ff;
}
.nav-box{
  padding: 10px;
  font-size: 16px;
  background-color: #fff;
  span{
  font-weight: 600;
  font-size: 18px;
  margin: 0 10px;
  }
}

</style>