Selaa lähdekoodia

企业弹窗广告链接更换

Xiao_123 2 kuukautta sitten
vanhempi
commit
96315bc18c

+ 1 - 1
src/plugins/dialogExtend/components/jobFairAd.vue

@@ -8,7 +8,7 @@
       @update:modelValue="handleChange"
     >
       <div style="cursor: pointer; margin: 0 auto; position: relative;">
-        <v-img src="https://minio.menduner.com/dev/fed8685fb4fec65347c2e3756db230ddd9c8f3538998c5678efe5acb51fb74e1.jpg" :width="adImgWidth" style="height: auto;border-radius: 4px;" @click="adClick"></v-img>
+        <v-img src="https://minio.menduner.com/dev/1a10e21687a6a222b99970907bde2fb2147d9879cb76b614b32dd2512fff2927.jpg" :width="adImgWidth" style="height: auto;border-radius: 4px;" @click="adClick"></v-img>
         <span style="color: #fff; font-size: 32px; position: absolute; right: 0px; top: 0px;" class="mdi mdi-close-circle-outline cursor-pointer px-3" @click="dialog = false"></span>
       </div>
     </v-dialog>

+ 16 - 29
src/router/modules/components/recruit/personCenter.js

@@ -163,30 +163,6 @@ const personCenter = [
                   enName: 'Edit Password'
                 }
               },
-              // {
-              //   path: '/recruit/personal/personalCenter/accountSettings/accountBinding',
-              //   component: () => import('@/views/recruit/personal/PersonalCenter/accountSettings/accountBinding'),
-              //   meta: {
-              //     title: '账号绑定',
-              //     enName: 'Account binding'
-              //   }
-              // },
-              // {
-              //   path: '/recruit/personal/personalCenter/accountSettings/realAuthentication',
-              //   component: () => import('@/views/recruit/personal/PersonalCenter/accountSettings/realAuthentication'),
-              //   meta: {
-              //     title: '实名认证',
-              //     enName: 'Real name authentication'
-              //   }
-              // }
-              // {
-              //   path: '/recruit/personal/personalCenter/accountSettings/privacySettings',
-              //   component: () => import('@/views/recruit/personal/PersonalCenter/accountSettings/privacySettings'),
-              //   meta: {
-              //     title: '隐私设置',
-              //     enName: 'Privacy settings'
-              //   }
-              // }
             ]
           },
           // 收货地址
@@ -200,16 +176,27 @@ const personCenter = [
               icon: 'mdi-map-marker-outline'
             }
           },
+          // 学生专区
           {
-            path: '/recruit/personal/personalCenter/studentInformation',
-            name: 'Student Information',
+            path: '/recruit/personal/personalCenter/student',
+            redirect: '/recruit/personal/personalCenter/student/information',
+            name: 'Student',
             permissionName: 'studentInformation',
-            component: () => import('@/views/recruit/personal/PersonalCenter/studentInformation'),
             meta: {
-              title: '学生信息',
+              title: '学生专区',
               enName: 'Student Information',
               icon: 'mdi-account-school-outline'
-            }
+            },
+            children: [
+              {
+                path: '/recruit/personal/personalCenter/student/information',
+                component: () => import('@/views/recruit/personal/PersonalCenter/student/information/index.vue'),
+                meta: {
+                  title: '学生信息',
+                  enName: 'Student Information'
+                }
+              }
+            ]
           }
         ]
       }

+ 182 - 0
src/views/recruit/personal/PersonalCenter/student/information/index.vue

@@ -0,0 +1,182 @@
+<template>
+  <div style="padding: 20px 30px">
+    <div class="resume-header mb-3">
+      <div class="resume-title">学生信息认证</div>
+    </div>
+    <div class="d-flex flex-column align-center pt-5">
+      <CtForm ref="CtFormRef" :items="items" style="width: 900px;"></CtForm>
+      <v-btn class="buttons mt-5" color="primary" @click.stop="handleSubmit">{{ $t('common.save') }}</v-btn>
+    </div>
+  </div>
+
+  <Loading :visible="overlay"></Loading>
+</template>
+
+<script setup>
+defineOptions({name: 'personal-personCenter-studentInformation-index'})
+import { ref } from 'vue'
+import { saveStudentSimpleInfo } from '@/api/recruit/personal/shareJob'
+import { schoolList, departmentList, getStudentInfo } from '@/api/recruit/personal/resume'
+import { useI18n } from '@/hooks/web/useI18n'
+import Snackbar from '@/plugins/snackbar'
+import { isValidIdCard18 } from '@/utils/validate'
+
+const { t } = useI18n()
+
+const overlay = ref(false)
+
+const CtFormRef = ref()
+const items = ref({
+  options: [
+    {
+      type: 'autocomplete',
+      key: 'schoolId',
+      value: null,
+      default: null,
+      label: '就读学校 *',
+      outlined: true,
+      itemText: 'schoolName',
+      itemValue: 'schoolId',
+      rules: [v => !!v || '请选择就读学校'],
+      items: [],
+      change: e => getDepartmentList(e),
+    },
+    {
+      type: 'autocomplete',
+      key: 'schoolDepartmentName',
+      value: null,
+      default: null,
+      label: '所在院系 *',
+      outlined: true,
+      itemText: 'departmentTitle',
+      itemValue: 'schoolDepartmentId',
+      rules: [v => !!v || '请选择所在院系'],
+      items: []
+    },
+    {
+      type: 'text',
+      key: 'majorName',
+      value: '',
+      default: null,
+      label: '所学专业 *',
+      outlined: true,
+      rules: [v => !!v || '请输入所学专业']
+    },
+    {
+      type: 'text',
+      key: 'schoolClassName',
+      value: '',
+      default: null,
+      label: '所在班级 *',
+      outlined: true,
+      rules: [v => !!v || '请填写所在班级']
+    },
+    {
+      type: 'text',
+      key: 'studentNo',
+      value: '',
+      default: null,
+      label: '学号 *',
+      outlined: true,
+      rules: [v => !!v || '请填写学号']
+    },
+    {
+      type: 'text',
+      key: 'idCardNo',
+      value: '',
+      label: '身份证号码 *',
+      rules: [
+        value => {
+          if (!value) {
+            return '请输入您的身份证号码'
+          }
+          return true
+        },
+        value => {
+          if (!isValidIdCard18(value)) {
+            return '请输入正确的身份证号码'
+          }
+          return true
+        }
+      ]
+    },
+    {
+      type: 'text',
+      key: 'emergencyContactName',
+      value: '',
+      default: null,
+      label: '紧急联系人姓名 *',
+      outlined: true,
+      rules: [v => !!v || '请填写紧急联系人姓名']
+    },
+    {
+      type: 'phoneNumber',
+      key: 'emergencyContactPhone',
+      value: '',
+      clearable: true,
+      label: '紧急联系人手机号 *',
+      rules: [v => !!v || '请填写紧急联系人手机号']
+    },
+  ]
+})
+
+// 左侧加mr
+items.value.options.forEach((e, index) => {
+  e.col = 6
+  if ((index + 2) % 2 === 0) e.flexStyle = 'mr-3'
+})
+
+// // 学校下拉列表
+const getSchoolListData = async () => {
+  const item = items.value.options.find(e => e.key === 'schoolId')
+  if (!item) return
+  const { records } = await schoolList({current: 1,size: 9999})
+  item.items = records || []
+}
+getSchoolListData()
+
+const getDepartmentList = async (e) => {
+  const item = items.value.options.find(e => e.key === 'schoolDepartmentName')
+  if (!item) return
+  const query = {
+    page: { size: 9999,	current: 1	},
+    entity: { schoolId: e }
+  }
+  const res = await departmentList(query)
+  const list = res?.records?.length ? res.records : []
+  item.items = list.map(e => e.entity)
+}
+
+// 获取学生基本信息
+const getStudentInfoFun = async () => {
+  const data = await getStudentInfo()
+  if (data.schoolId) getDepartmentList(data.schoolId)
+  // 回显
+  items.value.options.forEach(e => {
+    if (data[e.key]) e.value = data[e.key]
+  })
+}
+getStudentInfoFun()
+
+
+// 提交
+const handleSubmit = async () => {
+  const { valid } = await CtFormRef.value.formRef.validate()
+  if (!valid) return
+  overlay.value = true
+  const params = {}
+  items.value.options.forEach(item => {
+    params[item.key] = item.value
+  })
+  await saveStudentSimpleInfo(params)
+  // getStudentInfoFun()
+  setTimeout(async () => {
+    Snackbar.success(t('common.submittedSuccessfully'))
+    overlay.value = false
+  }, 1000)
+}
+
+</script>
+
+<style scoped lang="scss">
+</style>