Procházet zdrojové kódy

update: 完善身份认证

weijin před 5 roky
rodič
revize
0f21bf03ed
2 změnil soubory, kde provedl 178 přidání a 57 odebrání
  1. 11 3
      pages/admin/checkApplications.vue
  2. 167 54
      pages/person/identification.vue

+ 11 - 3
pages/admin/checkApplications.vue

@@ -17,7 +17,14 @@
         prop="realName"
         label="姓名"
         fixed
+        width="100">
+      </el-table-column>
+      <el-table-column
+        label="申请类型"
         width="120">
+        <template slot-scope="scope" v-if="applications.length > 0">
+          {{roleDic[scope.row.role]}}
+        </template>
       </el-table-column>
       <el-table-column
         prop="organization"
@@ -30,12 +37,12 @@
         width="120">
       </el-table-column>
       <el-table-column
-        prop="phone"
+        prop="userDetail.phone"
         label="手机"
         width="120">
       </el-table-column>
       <el-table-column
-        prop="email"
+        prop="userDetail.email"
         label="邮箱"
         width="200">
       </el-table-column>
@@ -59,7 +66,8 @@ export default {
   data () {
     return {
       applications: [],
-      pageLoading: true
+      pageLoading: true,
+      roleDic: { TEACHER: '教师', STAFF: '职员', HR: 'HR' }
     }
   },
   mounted () {

+ 167 - 54
pages/person/identification.vue

@@ -7,42 +7,90 @@
       <!--<el-button type="primary" class="main-card__selection" plain>主要按钮</el-button>-->
     <!--</div>-->
     <el-tabs v-model="activeTab" type="card" class="main-card__tab">
-      <el-tab-pane label="教师认证" name="teacher">
+      <el-tab-pane label="教师认证" name="TEACHER" :disabled="role!=='STUDENT'&&role!=='TEACHER'">
+        <div class="main-card__tab__item">
+          认证角色: 教师
+        </div>
         <div class="main-card__tab__item">
           当前状态:
-          <el-tag v-if="state === 'unidentified'" type="info">未认证</el-tag>
-          <el-tag v-if="state === 'rejected'" type="danger">未通过</el-tag>
-          <el-tag v-if="state === 'identifying'">审核中</el-tag>
-          <el-tag v-if="state === 'identified'" type="success">已认证</el-tag>
+          <el-tag v-if="state === 'UNIDENTIFIED'" type="info">未认证</el-tag>
+          <el-tag v-if="state === 'REJECTED'" type="danger">未通过</el-tag>
+          <el-tag v-if="state === 'IDENTIFYING'">审核中</el-tag>
+          <el-tag v-if="state === 'IDENTIFIED'" type="success">已认证</el-tag>
         </div>
         <div class="main-card__tab__item">
           真实姓名:
-          <el-input v-model="realName" class="main-card__tab__input" maxlength="20" :disabled="disabled" compositionend="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')"></el-input>
+          <el-input v-model="teacher.realName" class="main-card__tab__input" maxlength="20" :disabled="disabled" compositionend="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')"></el-input>
         </div>
         <div class="main-card__tab__item">
           所属单位:
-          <el-select v-model="organization" placeholder="请选择单位" class="main-card__tab__input">
-            <el-option
-              v-for="item in organizations"
-              :key="item"
-              :label="item"
-              :value="item"
-              :disabled="disabled"
-            >
-            </el-option>
-          </el-select>
+          <el-input v-model="teacher.organization" class="main-card__tab__input" placeholder="请输入单位名称" maxlength="20" :disabled="disabled"></el-input>
         </div>
         <div class="main-card__tab__item" >
           教师工号:
-          <el-input v-model="jobNumber" class="main-card__tab__input" maxlength="20" :disabled="disabled" oninput="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')"></el-input>
+          <el-input v-model="teacher.jobNumber" class="main-card__tab__input" maxlength="20" :disabled="disabled" oninput="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')"></el-input>
         </div>
         <div class="main-card__tab__item">
-          <el-button type="primary" class="main-card__tab__button" :loading="loading" @click="apply" v-if="state === 'unidentified'">提交审核</el-button>
-          <el-button type="primary" class="main-card__tab__button" :loading="loading" @click="reapply" v-if="state === 'rejected'">再次提交</el-button>
+          <el-button type="primary" class="main-card__tab__button" :loading="loading" @click="apply('TEACHER')" v-if="state === 'UNIDENTIFIED'">提交审核</el-button>
+          <el-button type="primary" class="main-card__tab__button" :loading="loading" @click="reapply('TEACHER')" v-if="state === 'REJECTED'">再次提交</el-button>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane label="职员认证" name="STAFF" :disabled="role!=='STUDENT'&&role!=='STAFF'">
+        <div class="main-card__tab__item">
+          认证角色: 职员
+        </div>
+        <div class="main-card__tab__item">
+          当前状态:
+          <el-tag v-if="state === 'UNIDENTIFIED'" type="info">未认证</el-tag>
+          <el-tag v-if="state === 'REJECTED'" type="danger">未通过</el-tag>
+          <el-tag v-if="state === 'IDENTIFYING'">审核中</el-tag>
+          <el-tag v-if="state === 'IDENTIFIED'" type="success">已认证</el-tag>
+        </div>
+        <div class="main-card__tab__item">
+          真实姓名:
+          <el-input v-model="staff.realName" class="main-card__tab__input" maxlength="20" :disabled="disabled" compositionend="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')"></el-input>
+        </div>
+        <div class="main-card__tab__item">
+          所属单位:
+          <el-input v-model="staff.organization" class="main-card__tab__input" placeholder="请输入单位名称" maxlength="20" :disabled="disabled"></el-input>
+        </div>
+        <div class="main-card__tab__item" >
+          职员工号:
+          <el-input v-model="staff.jobNumber" class="main-card__tab__input" maxlength="20" :disabled="disabled" oninput="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')"></el-input>
+        </div>
+        <div class="main-card__tab__item">
+          <el-button type="primary" class="main-card__tab__button" :loading="loading" @click="apply('STAFF')" v-if="state === 'UNIDENTIFIED'">提交审核</el-button>
+          <el-button type="primary" class="main-card__tab__button" :loading="loading" @click="reapply('STAFF')" v-if="state === 'REJECTED'">再次提交</el-button>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane label="HR认证" name="HR" :disabled="role!=='STUDENT'&&role!=='HR'">
+        <div class="main-card__tab__item">
+          认证角色: HR
+        </div>
+        <div class="main-card__tab__item">
+          当前状态:
+          <el-tag v-if="state === 'UNIDENTIFIED'" type="info">未认证</el-tag>
+          <el-tag v-if="state === 'REJECTED'" type="danger">未通过</el-tag>
+          <el-tag v-if="state === 'IDENTIFYING'">审核中</el-tag>
+          <el-tag v-if="state === 'IDENTIFIED'" type="success">已认证</el-tag>
+        </div>
+        <div class="main-card__tab__item">
+          真实姓名:
+          <el-input v-model="hr.realName" class="main-card__tab__input" maxlength="20" :disabled="disabled" compositionend="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')"></el-input>
+        </div>
+        <div class="main-card__tab__item">
+          所属单位:
+          <el-input v-model="hr.organization" class="main-card__tab__input" placeholder="请输入单位名称" maxlength="20" :disabled="disabled"></el-input>
+        </div>
+        <div class="main-card__tab__item" >
+           工作证号:
+          <el-input v-model="hr.jobNumber" class="main-card__tab__input" maxlength="20" :disabled="disabled" oninput="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')"></el-input>
+        </div>
+        <div class="main-card__tab__item">
+          <el-button type="primary" class="main-card__tab__button" :loading="loading" @click="apply('HR')" v-if="state === 'UNIDENTIFIED'">提交审核</el-button>
+          <el-button type="primary" class="main-card__tab__button" :loading="loading" @click="reapply('HR')" v-if="state === 'REJECTED'">再次提交</el-button>
         </div>
       </el-tab-pane>
-      <el-tab-pane label="学生认证" name="student" disabled></el-tab-pane>
-      <el-tab-pane label="职员认证" name="faculty" disabled></el-tab-pane>
     </el-tabs>
   </div>
 </template>
@@ -55,18 +103,27 @@ export default {
   layout: 'person',
   data () {
     return {
-      activeTab: 'teacher',
-      realName: '',
-      state: 'unidentified',
-      organizations: [
-        '南京大学',
-        '其他机构'
-      ],
-      organization: '',
+      activeTab: 'TEACHER',
+      role: 'STUDENT',
+      state: 'UNIDENTIFIED',
+      disabled: false,
+      teacher: {
+        realName: '',
+        organization: '',
+        jobNumber: '',
+      },
+      staff: {
+        realName: '',
+        organization: '',
+        jobNumber: '',
+      },
+      hr: {
+        realName: '',
+        organization: '',
+        jobNumber: '',
+      },
       pageLoading: true,
-      jobNumber: '',
-      loading: false,
-      disabled: state === 'identifying' || state === 'identified'
+      loading: false
     }
   },
   mounted () {
@@ -75,13 +132,30 @@ export default {
       jobNumber: this.jobNumber,
       organization: this.organization
     }).then((res) => {
-      if (res.data.code === 0) {
-        const data = res.data.data
-        this.realName = data.realName
-        this.jobNumber = data.jobNumber
-        this.organization = data.organization
+      console.log(res.data)
+      if (res.code === 0) {
+        const data = res.data
+        switch (data.role) {
+          case 'TEACHER':
+            this.teacher.realName = data.realName
+            this.teacher.jobNumber = data.jobNumber
+            this.teacher.organization = data.organization
+            break
+          case 'STAFF' :
+            this.staff.realName = data.realName
+            this.staff.jobNumber = data.jobNumber
+            this.staff.organization = data.organization
+            break
+          case 'HR':
+            this.hr.realName = data.realName
+            this.hr.jobNumber = data.jobNumber
+            this.hr.organization = data.organization
+            break
+        }
         this.state = data.state
-        this.disabled = (this.state === 'identifying' || this.state === 'identified')
+        this.disabled = (this.state === 'IDENTIFYING' || this.state === 'IDENTIFIED')
+        this.activeTab = data.role
+        this.role = data.role
       }
     }
     ).catch((e) => {
@@ -90,9 +164,27 @@ export default {
     this.pageLoading = false
   },
   methods: {
-    apply () {
+    apply (role) {
+      let realName, organization, jobNumber
       this.loading = true
-      if (this.realName.length === 0) {
+      switch (role) {
+        case 'TEACHER' :
+          realName = this.teacher.realName
+          organization = this.teacher.organization
+          jobNumber = this.teacher.jobNumber
+          break
+        case 'STAFF' :
+          realName = this.staff.realName
+          organization = this.staff.organization
+          jobNumber = this.staff.jobNumber
+          break
+        case 'HR' :
+          realName = this.hr.realName
+          organization = this.hr.organization
+          jobNumber = this.hr.jobNumber
+          break
+      }
+      if (realName.length === 0) {
         this.$message({
           showClose: true,
           message: '真实姓名不得为空',
@@ -101,7 +193,7 @@ export default {
         this.loading = false
         return
       }
-      if (this.organization.length === 0) {
+      if (organization.length === 0) {
         this.$message({
           showClose: true,
           message: '请选择所属单位',
@@ -110,7 +202,7 @@ export default {
         this.loading = false
         return
       }
-      if (this.jobNumber.length === 0) {
+      if (jobNumber.length === 0) {
         this.$message({
           showClose: true,
           message: '工号不得为空',
@@ -120,12 +212,14 @@ export default {
         return
       }
       this.$api.$post('/teacher/apply', {
-        realName: this.realName,
-        jobNumber: this.jobNumber,
-        organization: this.organization
+        realName: realName,
+        jobNumber: jobNumber,
+        organization: organization,
+        role: role
       }).then((res) => {
         if (res.code === 0) {
-          this.state = 'identifying'
+          this.state = 'IDENTIFYING'
+          this.disabled = true
           this.$message({
             showClose: true,
             message: '提交成功,请耐心等待审核结果',
@@ -144,9 +238,27 @@ export default {
       })
       this.loading = false
     },
-    reapply () {
+    reapply (role) {
+      let realName, organization, jobNumber
       this.loading = true
-      if (this.realName.length === 0) {
+      switch (role) {
+        case 'TEACHER' :
+          realName = this.teacher.realName
+          organization = this.teacher.organization
+          jobNumber = this.teacher.jobNumber
+          break
+        case 'STAFF' :
+          realName = this.staff.realName
+          organization = this.staff.organization
+          jobNumber = this.staff.jobNumber
+          break
+        case 'HR' :
+          realName = this.hr.realName
+          organization = this.hr.organization
+          jobNumber = this.hr.jobNumber
+          break
+      }
+      if (realName.length === 0) {
         this.$message({
           showClose: true,
           message: '真实姓名不得为空',
@@ -155,7 +267,7 @@ export default {
         this.loading = false
         return
       }
-      if (this.organization.length === 0) {
+      if (organization.length === 0) {
         this.$message({
           showClose: true,
           message: '请选择所属单位',
@@ -164,7 +276,7 @@ export default {
         this.loading = false
         return
       }
-      if (this.jobNumber.length === 0) {
+      if (jobNumber.length === 0) {
         this.$message({
           showClose: true,
           message: '工号不得为空',
@@ -174,12 +286,13 @@ export default {
         return
       }
       this.$api.$post('/teacher/reapply', {
-        realName: this.realName,
-        jobNumber: this.jobNumber,
-        organization: this.organization
+        realName: realName,
+        jobNumber: jobNumber,
+        organization: organization,
+        role: role
       }).then((res) => {
         if (res.code === 0) {
-          this.state = 'identifying'
+          this.state = 'IDENTIFYING'
           this.$message({
             showClose: true,
             message: '提交成功,请耐心等待审核结果',