lifanagju_citu 11 месяцев назад
Родитель
Сommit
dac9cd66c6

+ 16 - 0
src/api/personal/user.js

@@ -6,4 +6,20 @@ export const getUserInfo = async (params) => {
     url: '/app-api/menduner/system/mde-user/get',
     params
   })
+}
+
+// 获取当前用户绑定的企业列表
+export const getUserBindEnterpriseList = async (params) => {
+  return await request.get({
+    url: '/app-api/menduner/system/enterprise-user-bind/get/user',
+    params
+  })
+}
+
+// 企业注册申请
+export const enterpriseRegisterApply = async (data) => {
+  return await request.post({
+    url: '/app-api/menduner/system/enterprise-register/apply',
+    data
+  })
 }

+ 6 - 8
src/layout/personal/navBar.vue

@@ -102,6 +102,7 @@ import { reactive, ref } from 'vue'
 import { getToken } from '@/utils/auth'
 import { useUserStore } from '@/store/user'
 import { useLocaleStore } from '@/store/locale'
+import { getUserBindEnterpriseList } from '@/api/personal/user'
 defineOptions({ name: 'personal-navbar' })
 
 defineProps({
@@ -124,13 +125,10 @@ import { useRouter } from 'vue-router'
 const router = useRouter()
 const handleLogoClick = () => { router.push({ path: '/home'}) }
 
-const loginType = ref(1) // 0企业用户、1个人用户
-const changeRole = () => {
-  if (loginType.value) {
-    router.push({ path: '/enterprise/register' })
-  } else {
-    router.push({ path: '/enterprise/talentPool' })
-  }
+const changeLoginType = async () => {
+  const { data } = await getUserBindEnterpriseList()
+  if (data?.length) router.push({ path: '/enterprise' })
+  else router.push({ path: '/enterprise/register' })
 }
 
 const handleToPersonalCenter = () => {
@@ -150,7 +148,7 @@ const handleLogout = async () => {
 const items = ref([
   { title: '在线简历', icon: 'mdi-list-box-outline', change: () => router.push({ path: '/resume' }) },
   { title: '账号设置', icon: 'mdi-cog-outline', change: () => router.push({ path: '/personalAccount/accountBinding' }) },
-  { title: '切换为招聘者', icon: 'mdi-swap-horizontal', change: changeRole },
+  { title: '切换为招聘者', icon: 'mdi-swap-horizontal', change: changeLoginType },
   { title: '退出登录', icon: 'mdi-logout', change: handleLogout }
 ])
 const baseInfo = reactive(JSON.parse(localStorage.getItem('baseInfo'))) // 人才信息

+ 2 - 0
src/locales/en.js

@@ -9,6 +9,8 @@ export default {
     change: 'Change',
     complete: 'Complete',
     saveMsg: 'Save successful',
+    toHome: 'Go back to the homepage',
+    submittedSuccessfully: 'Submitted successful',
     addMsg: 'New successfully added',
     delMsg: 'Delete successful',
     uploadSucMsg: 'Upload successful',

+ 2 - 0
src/locales/zh-CN.js

@@ -9,6 +9,8 @@ export default {
     change: '更改',
     complete: '完成',
     saveMsg: '保存成功',
+    toHome: '回到首页',
+    submittedSuccessfully: '提交成功',
     addMsg: '新增成功',
     delMsg: '删除成功',
     uploadSucMsg: '上传成功',

+ 8 - 2
src/views/enterprise/components/JoiningEnterprise.vue

@@ -14,7 +14,7 @@
         <v-btn
           :loading="loginLoading"
           color="primary" class="white--text mt-8" min-width="350"
-          to="/enterprise/talentPool"
+          @click="handleCommit"
         >
         {{ $t('common.complete') }}
         </v-btn>
@@ -31,11 +31,14 @@
 import CtForm from '@/components/CtForm'
 import { enterpriseSearchByName } from '@/api/resume'
 import { useRouter } from 'vue-router'
+import Snackbar from '@/plugins/snackbar'
+import { useI18n } from '@/hooks/web/useI18n'
 import { ref } from 'vue'
 
 defineOptions({name: 'enterprise-enterpriseRegister-joiningEnterprise'})
 const router = useRouter()
 const loginLoading = ref(false)
+const { t } = useI18n()
 
 // 企业名称下拉列表
 const getSchoolListData = async (name) => {
@@ -84,8 +87,11 @@ const handleCommit = () => {
   // await saveResumeBasicInfo({ ...baseInfo.value, avatar: data })
   // await userStore.getUserBaseInfos(baseInfo.value.userId)
   // getBasicInfo()
+  Snackbar.success(t('common.submittedSuccessfully'))
+  setTimeout(() => {
+    router.push({ path: '/enterprise' })
+  }, 3000);
 }
-handleCommit()
 </script>
 <style lang="scss" scoped>
 .CtFormClass {

+ 123 - 63
src/views/enterprise/components/register.vue

@@ -5,53 +5,71 @@
       <div class="resume-header">
         <div class="resume-title">{{ $t('enterprise.registeringNewEnterprise') }}</div>
       </div>
-      <!-- 表单 -->
-      <div class="CtFormClass" style="width: 600px;">
-        <CtForm ref="CtFormRef" :items="formItems" style="width: 100%;"></CtForm>
-        <!-- 上传照片 -->
-        <div style="color: #999;">
-          <span class="mr-1" style="color: red;">*</span>
-          <span>上传营业执照</span>
-          <span class="mx-3 defaultLink">查看示例</span>
-          <span>支持jpg、jpeg、png格式,照片大小不得超过10M</span>
+      <div v-if="submittedSuccess" class="" style="width: 600px;margin: 80px auto;">
+        <div>您的加入企业申请正在审核中,审核时间在1~3个工作日内,申请结果会以短信方式通知到您的手机上,请注意查收</div>
+        <div class="mt-5">
+          <span>提交时间:</span>
+          <span>{{ commitTime }}</span>
         </div>
-        <div class="file-input-box mt-3" @click="openFileInput">
-          <div class="icon text-center">
-            <span class="mdi mdi-plus" style="font-size: 20px;"></span>
-            <div style="font-size: 12px; ">上传照片</div>
-          </div>
-          <input
-            type="file"
-            ref="fileInput"
-            accept="image/png, image/jpg, image/jpeg"
-            style="display: none;"
-            @change="handleUploadFile"
-          />
+        <div class="text-center">
+          <v-btn class="mt-10" color="warning" @click="router.push({ path: '/' })">{{ $t('common.toHome') }}</v-btn>
         </div>
-        <!-- 注意事项 -->
-        <div class="note mt-5">
-          <h4>注意事项</h4>
-          <div>1.企业名称为对外展示的企业名称,建议填写公司营业执照上的名称,请区分总公司和分公司</div>
-          <div>
-            <span>2.若公司已注册,请上传公司委托证明下载模版</span>
-            <span class="mx-3 defaultLink">下载模版</span>
+      </div>
+      <template v-else>
+        <!-- 表单 -->
+        <div class="CtFormClass" style="width: 600px;">
+          <CtForm ref="CtFormRef" :items="formItems" style="width: 100%;"></CtForm>
+          <!-- 上传照片 -->
+          <div style="color: #999;">
+            <span class="mr-1" style="color: #fe574a;">*</span>
+            <span>上传营业执照</span>
+            <!-- <span class="mx-3 defaultLink">查看示例</span> -->
+            <span>支持jpg、jpeg、png格式,照片大小不得超过10M</span>
+          </div>
+          <div class="file-box">
+            <div class="file-item" v-if="licenseUrl">
+              <v-img width="100%" height="100%" :src="licenseUrl"></v-img>
+              <!-- <v-img width="100%" height="100%" src="http://menduner.citupro.com:6868/admin-api/infra/file/24/get/cd7f5e26a239fb0ab335585e04c709b065f52832fc31539b3a5423224fc6d16c.png"></v-img> -->
+            </div>
+            <div class="file-item file-input-box" :class="{'verifyAct': fileVerify}" @click="openFileInput">
+              <div class="icon text-center">
+                <span class="mdi mdi-plus" style="font-size: 20px;"></span>
+                <div style="font-size: 12px; ">上传照片</div>
+              </div>
+              <input
+                type="file"
+                ref="fileInput"
+                accept="image/png, image/jpg, image/jpeg"
+                style="display: none;"
+                @change="handleUploadFile"
+              />
+            </div>
+          </div>
+          <!-- 注意事项 -->
+          <div class="note mt-5">
+            <h4>注意事项:</h4>
+            <span>企业名称为对外展示的企业名称,建议填写公司营业执照上的名称,请区分总公司和分公司</span>
+            <!-- <div>
+              <span>2.若公司已注册,请上传公司委托证明下载模版</span>
+              <span class="mx-3 defaultLink">下载模版</span>
+            </div> -->
           </div>
         </div>
-      </div>
-      <div class="text-center">
-        <!-- 提交 -->
-        <v-btn
-          :loading="loginLoading"
-          color="primary" class="white--text mt-8" min-width="350"
-          to="/enterprise/talentPool"
-        >
-        {{ $t('common.complete') }}
-        </v-btn>
-      </div>
-      <!-- 底部 -->
-      <div class="text-center mt-5">
-        <v-btn color="primary" variant="text" to="/enterprise/joiningEnterprise">{{ $t('enterprise.joiningEnterprise') }}</v-btn>
-      </div>
+        <div class="text-center">
+          <!-- 提交 -->
+          <v-btn
+            :loading="loginLoading"
+            color="primary" class="white--text my-8" min-width="350"
+            @click="handleCommit"
+          >
+          {{ $t('common.complete') }}
+          </v-btn>
+        </div>
+        <!-- 底部 个人不能绑定企业 要去后端管理员加 -->
+        <!-- <div class="text-center">
+          <v-btn color="primary" variant="text" @click="router.push({ path: '/enterprise/joiningEnterprise' })">{{ $t('enterprise.joiningEnterprise') }}</v-btn>
+        </div> -->
+      </template>
     </v-card>
   </div>
 </template>
@@ -61,9 +79,16 @@ import CtForm from '@/components/CtForm'
 import Snackbar from '@/plugins/snackbar'
 import { uploadFile } from '@/api/common'
 import { useI18n } from '@/hooks/web/useI18n'
+import { useRouter } from 'vue-router'
+import { enterpriseRegisterApply } from '@/api/personal/user'
 import { ref } from 'vue';
 defineOptions({name: 'enterprise-enterpriseRegister-register'})
 const { t } = useI18n()
+const CtFormRef = ref()
+const router = useRouter()
+const commitTime = ref(null)
+const submittedSuccess = ref(false)
+const fileVerify = ref(false)
 const loginLoading = ref(false)
 
 const formItems = ref({
@@ -109,23 +134,41 @@ const openFileInput = () => {
   fileInput.value.click()
   clicked.value = false
 }
-// 上传头像
+// 上传
+let licenseUrl = ref('')
 const handleUploadFile = async (e) => {
   const file = e.target.files[0]
   const formData = new FormData()
   formData.append('file', file)
   const { data } = await uploadFile(formData)
   if (!data) return
+  licenseUrl.value = data
+  fileVerify.value = false
   console.log('uploadFile->data', data)
   Snackbar.success(t('common.uploadSucMsg'))
 }
-// 提交
-const handleCommit = () => {
-  // await saveResumeBasicInfo({ ...baseInfo.value, avatar: data })
-  // await userStore.getUserBaseInfos(baseInfo.value.userId)
-  // getBasicInfo()
+// 提交 企业注册
+const handleCommit = async () => {
+  // 广州辞图科技有限公司
+  const { valid } = await CtFormRef.value.formRef.validate()
+  if (!valid) return
+  const businessLicenseUrl = licenseUrl.value
+  if (!businessLicenseUrl) {
+    fileVerify.value = true
+    return
+  }
+  const baseInfo = {}
+  formItems.value.options.forEach(e => { baseInfo[e.key] = e.value })
+  commitTime.value = new Date()
+  await enterpriseRegisterApply({ ...baseInfo, businessLicenseUrl })
+  Snackbar.success(t('common.submittedSuccessfully'))
+  submittedSuccess.value = true
+  // 测试跳转
+  setTimeout(() => {
+    router.push({ path: '/enterprise' })
+  }, 5000);
 }
-handleCommit()
+
 </script>
 <style lang="scss" scoped>
 .CtFormClass {
@@ -136,19 +179,36 @@ handleCommit()
   font-size: 14px;
   line-height: 32px;
 }
-.file-input-box {
-  position: relative;
-  height: 80px;
-  width: 100px;
-  border: 1px solid rgb(188, 188, 188);
-  border-radius: 5px;
-  cursor: pointer;
-  .icon {
-    position: absolute;
-    top: 45%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    color: #999;
+.file-box {
+  display: flex;
+  flex-wrap: wrap; /* 允许换行 */
+  width: 100%; /* 设置容器宽度 */
+  .file-item {
+    height: 80px;
+    width: 100px;
+    border-radius: 5px;
+    margin-right: 8px;
+    margin-top: 12px;
+    // border: 1px solid rgb(188, 188, 188);
+    border: 1px solid rgba(188, 188, 188, 0.5);
+  }
+  .file-input-box {
+    position: relative;
+    border: 1px solid rgb(188, 188, 188);
+    cursor: pointer;
+    .icon {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      color: #999;
+    }
+  }
+  // 验证是否为空
+  .verifyAct {
+    color: #fe574a;
+    border: 1px solid #fe574a;
+    .icon { color: #fe574a; }
   }
 }
 </style>