123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- import { CellGroup, DatetimePicker, Field, Popup, Toast } from 'vant'
- import { defineComponent } from 'vue'
- import dayjs from 'dayjs'
- import { checkIDCard } from '@/helpers/validate'
- import ColField from '@/components/col-field'
- import { teacherState } from './teacherState'
- import styles from './cert-one.module.less'
- import ColFieldGroup from '@/components/col-field-group'
- import { state } from '@/state'
- import { formatterDate } from '@/helpers/utils'
- export default defineComponent({
- name: 'certOne',
- data() {
- return {
- maxDate: new Date(),
- popupShow: false,
- popupDate: new Date()
- }
- },
- computed: {
- userAuth() {
- // 判断是否实名过
- const users = state.user.data || {}
- return !!(users.idCardNo && users.realName)
- }
- },
- mounted() {
- if (this.userAuth) {
- const users = state.user.data || {}
- teacherState.teacherCert.realName = users.realName
- teacherState.teacherCert.idCardNo = users.idCardNo
- teacherState.teacherCert.gender = users.gender
- teacherState.teacherCert.birthdate = dayjs(users.birthdate).format(
- 'YYYY-MM-DD'
- )
- }
- },
- methods: {
- onIdCardValidate() {
- const idCardNo = teacherState.teacherCert.idCardNo
- // 判断是否有身份证号
- if (!idCardNo) {
- return
- }
- if (!checkIDCard(idCardNo || '')) {
- Toast('请填写正确的身份证号码')
- return false
- }
- console.log(this.getSex(idCardNo))
- teacherState.teacherCert.birthdate = this.getBirth(idCardNo)
- teacherState.teacherCert.gender = this.getSex(idCardNo)
- },
- getBirth(idCard: string | null) {
- let birthday = ''
- if (idCard != null && idCard != '') {
- if (idCard.length == 15) {
- birthday = '19' + idCard.slice(6, 12)
- } else if (idCard.length == 18) {
- birthday = idCard.slice(6, 14)
- }
- birthday = birthday.replace(/(.{4})(.{2})/, '$1-$2-')
- //通过正则表达式来指定输出格式为:1990-01-01
- }
- return birthday
- },
- getSex(idCard: string | null): number {
- let sex = 1
- if (idCard && parseInt(idCard.slice(-2, -1)) % 2 == 1) {
- sex = 1
- } else {
- sex = 0
- }
- return sex
- },
- onConfirm(_date: any) {
- teacherState.teacherCert.birthdate = dayjs(this.popupDate).format(
- 'YYYY-MM-DD'
- )
- this.popupShow = false
- },
- sexChange(num: number) {
- if (!this.userAuth) {
- teacherState.teacherCert.gender = num
- }
- }
- },
- render() {
- return (
- <ColFieldGroup class={styles.certOne}>
- <CellGroup border={false}>
- <ColField title="真实姓名" required>
- <Field
- v-model={teacherState.teacherCert.realName}
- name="真实姓名"
- disabled={this.userAuth}
- maxlength={10}
- placeholder="请输入您的真实姓名"
- />
- </ColField>
- <ColField title="身份证号" required>
- <Field
- v-model={teacherState.teacherCert.idCardNo}
- name="身份证号"
- disabled={this.userAuth}
- maxlength={18}
- onBlur={this.onIdCardValidate}
- placeholder="请输入您的身份证号码"
- />
- </ColField>
- <ColField title="性别" required border={false}>
- <div class={styles.radioGroup}>
- <div
- onClick={() => this.sexChange(1)}
- class={[
- styles.radio,
- teacherState.teacherCert.gender === 1 ? styles.active : null
- ]}
- >
- 男
- </div>
- <div
- onClick={() => this.sexChange(0)}
- class={[
- styles.radio,
- teacherState.teacherCert.gender === 0 ? styles.active : null
- ]}
- >
- 女
- </div>
- </div>
- </ColField>
- <ColField title="出生日期" required>
- <Field
- v-model={teacherState.teacherCert.birthdate}
- name="出生日期"
- disabled={this.userAuth}
- onClick-input={() => (this.popupShow = true)}
- readonly
- isLink={!this.userAuth}
- placeholder="请选择您的出生日期"
- />
- </ColField>
- </CellGroup>
- <Popup show={this.popupShow} position="bottom" round>
- <DatetimePicker
- v-model={this.popupDate}
- type="date"
- close-on-popstate={true}
- minDate={new Date('1950-01-01')}
- maxDate={this.maxDate}
- onCancel={() => (this.popupShow = false)}
- onConfirm={this.onConfirm}
- formatter={formatterDate}
- ></DatetimePicker>
- </Popup>
- </ColFieldGroup>
- )
- }
- })
|