Xiao_123 9 months ago
parent
commit
f7ecf75576

+ 6 - 3
src/components/Enterprise/components/introduction.vue

@@ -1,19 +1,21 @@
 <template>
   <div>
     <h4>公司简介</h4>
-    <div class="requirement" v-html="props.info.enterprise.introduce.replace(/\n/g, '</br>')"></div>
+    <div v-if="props.info.enterprise.introduce" class="requirement" v-html="props.info.enterprise.introduce.replace(/\n/g, '</br>')"></div>
+    <div v-else>暂无</div>
     <v-divider class="my-3"></v-divider>
     <div>
       <h4>公司地址</h4>
-      <div class="mt-1">
+      <div v-if="props.info.business.address" class="mt-1">
         <v-icon size="25" color="primary">mdi-map-marker</v-icon>
         <span style="color: var(--color-666);font-size: 15px;">{{ props.info.business.address }}</span>
       </div>
+      <div v-else class="mt-1">暂无</div>
     </div>
     <v-divider class="my-3"></v-divider>
     <div>
       <h4>公司相册</h4>
-      <v-slide-group :show-arrows="true" class="mt-3 img-box cursor-pointer">
+      <v-slide-group v-if="props.info.enterprise.albumList" :show-arrows="true" class="mt-3 img-box cursor-pointer">
         <v-slide-group-item v-for="(val, i) in props.info.enterprise.albumList" :key="val">
           <div>
             <v-img v-if="checkIsImage(val)" class="mr-3" width="200" height="115" :src="val" cover rounded @click="handleClick(i)"></v-img>
@@ -21,6 +23,7 @@
           </div>
         </v-slide-group-item>
       </v-slide-group>
+      <div v-else>暂无</div>
     </div>
     <PreviewImg v-if="showPreview" :current="current" :list="props.info.enterprise.albumList" @close="showPreview = !showPreview"></PreviewImg>
   </div>

+ 3 - 3
src/components/Enterprise/details.vue

@@ -45,7 +45,7 @@
             <recruitmentPositions v-else :info="info"/>
           </div>
           <div class="content-right">
-            <div class="welfare">
+            <div v-if="info.enterprise?.workTime && info?.enterprise?.welfareList.length" class="welfare mb-3">
               <h4>工作时间及福利</h4>
               <div v-if="info.enterprise?.workTime" class="my-3" style="color: var(--color-666);font-size: 14px;">
                 <v-icon size="17" color="#ccc" class="mr-2">mdi-clock</v-icon>{{ info.enterprise.workTime }}
@@ -54,11 +54,11 @@
                 <v-chip size="small" label v-for="(k, i) in info?.enterprise?.welfareList?.slice(0, 6)" :key="i" class="mb-2 welfare-tags-item ellipsis" color="primary">{{ k }}</v-chip>
               </div>
             </div>
-            <div class="welfare my-3">
+            <div class="welfare">
               <h4>工商信息</h4>
               <div :class="['mt-2', 'business-item']" v-for="val in businessList" :key="val.value">
                 <div>{{ val.label }}</div>
-                <div class="business-value ellipsis">{{ info.business[val.value] }}</div>
+                <div class="business-value ellipsis">{{ info.business[val.value] || '暂无' }}</div>
                 <div :class="['my-3']"></div>
               </div>
             </div>

+ 1 - 1
src/components/Enterprise/info.vue

@@ -12,7 +12,7 @@
     <div class="mt-3 border-bottom-dashed" style="font-size: 14px;">
       <div v-for="val in list" :key="val.icon" class="d-flex my-2">
         <v-icon size="20" color="var(--color-666)">{{ val.icon }}</v-icon>
-        <div class="info-address ml-4">{{ obj[val.label] }}</div>
+        <div class="info-address ml-4">{{ obj[val.label] || '暂无' }}</div>
       </div>
     </div>
     <div style="font-size: 12px;height: 50px; line-height: 50px">

+ 3 - 2
src/views/recruit/enterprise/enterpriseCenter/components/introduction.vue

@@ -2,7 +2,8 @@
 <template>
   <div>
     <h4 class="mb-1">公司简介</h4>
-    <div class="requirement" v-html="props.info.enterprise?.introduce?.replace(/\n/g, '</br>')"></div>
+    <div v-if="props.info.enterprise?.introduce" class="requirement" v-html="props.info.enterprise?.introduce?.replace(/\n/g, '</br>')"></div>
+    <div v-else>暂无</div>
     <v-divider class="my-3"></v-divider>
     <h4>作息时间</h4>
     <div>
@@ -18,7 +19,7 @@
     </div>
     <v-divider class="my-3"></v-divider>
     <h4 class="mb-1">关于我们</h4>
-    <div class="requirement" v-html="props.info.enterprise?.aboutUs?.replace(/\n/g, '</br>')"></div>
+    <div v-if="props.info.enterprise?.aboutUs" class="requirement" v-html="props.info.enterprise?.aboutUs?.replace(/\n/g, '</br>')"></div>
   </div>
 </template>
 

+ 4 - 2
src/views/recruit/enterprise/positionManagement/components/details.vue

@@ -32,9 +32,11 @@
           <div class="content-left">
             <div v-if="Object.keys(info).length">
               <div>{{ $t('position.jobResponsibilities') }}:</div>
-              <div class="requirement" v-html="info.content.replace(/\n/g, '</br>')"></div>
+              <div v-if="info.content" class="requirement" v-html="info.content.replace(/\n/g, '</br>')"></div>
+              <div v-else>暂无</div>
               <div class="mt-3">{{ $t('position.jobRequirements') }}:</div>
-              <div class="requirement" v-html="info.requirement.replace(/\n/g, '</br>')"></div>
+              <div v-if="info.requirement" class="requirement" v-html="info.requirement.replace(/\n/g, '</br>')"></div>
+              <div v-else>暂无</div>
             </div>
             <v-divider class="my-3"></v-divider>
             <div class="contact" v-if="Object.keys(info).length">

+ 19 - 13
src/views/recruit/personal/position/components/details.vue

@@ -63,9 +63,11 @@
           <div class="content-left">
             <div v-if="Object.keys(info).length">
               <div>{{ $t('position.jobResponsibilities') }}:</div>
-              <div class="requirement" v-html="info.content.replace(/\n/g, '</br>')"></div>
+              <div v-if="info.content" class="requirement" v-html="info.content.replace(/\n/g, '</br>')"></div>
+              <div v-else>暂无</div>
               <div class="mt-3">{{ $t('position.jobRequirements') }}:</div>
-              <div class="requirement" v-html="info.requirement.replace(/\n/g, '</br>')"></div>
+              <div v-if="info.requirement" class="requirement" v-html="info.requirement.replace(/\n/g, '</br>')"></div>
+              <div v-else>暂无</div>
             </div>
             <v-divider class="my-3"></v-divider>
             <div class="contact" v-if="Object.keys(info).length">
@@ -123,8 +125,12 @@
       <div>
         <div class="pa-4" style="background-color: #f0f0f0; border-radius: 8px;">{{ shareUrlTxt }}</div>
         <v-btn v-if="!getToken()" class="mt-1" color="warning" variant="text">您还未登录,登录后分享可享受分享有礼活动!</v-btn>
-        <v-btn class="mt-4 ml-3" color="success" @click="copyText">复制分享链接</v-btn>
-        <v-btn class="mt-4 ml-3" color="primary" variant="outlined" @click="openShareLink">打开分享链接</v-btn>
+        <!-- <v-btn class="mt-4 ml-3" color="success" @click="copyText">复制分享链接</v-btn>
+        <v-btn class="mt-4 ml-3" color="primary" variant="outlined" @click="openShareLink">打开分享链接</v-btn> -->
+        <div class="color-warning mt-5">
+          <v-icon size="25">mdi-information</v-icon>
+          请复制上述链接分享给好友
+        </div>
       </div>
       <template #footer>
         <v-divider></v-divider>
@@ -220,20 +226,20 @@ const handleShare = async () => {
   }).toString()
   shareDialog.value = true
 }
-const openShareLink = () => { window.open(shareUrl.value) }
+// const openShareLink = () => { window.open(shareUrl.value) }
 
 // 复制分享链接
 const shareUrlTxt = computed(() => {
   return 'http://menduner.citupro.com:7878' + shareUrl.value
 })
-const copyText = async () => {
-  try {
-    await navigator.clipboard.writeText(shareUrlTxt.value)
-    Snackbar.success('复制成功')
-  } catch (err) {
-    Snackbar.error('复制失败,请手动复制。')
-  }
-}
+// const copyText = async () => {
+//   try {
+//     await navigator.clipboard.writeText(shareUrlTxt.value)
+//     Snackbar.success('复制成功')
+//   } catch (err) {
+//     Snackbar.error('复制失败,请手动复制。')
+//   }
+// }
 
 // 收藏&取消收藏职位
 const handleCollection = async () => {

+ 31 - 46
src/views/recruit/personal/remuse/components/basicInfo.vue

@@ -101,7 +101,8 @@
   </div>
   
   <Loading :visible="overlay"></Loading>
-  <!-- <ImgCropper :visible="isShowCopper" :image="selectPic" :cropBoxResizable="true" @submit="handleHideCopper" :aspectRatio="1 / 1" @close="isShowCopper = false"></ImgCropper> -->
+  <!-- 图片裁剪 -->
+  <ImgCropper :visible="isShowCopper" :image="selectPic" :cropBoxResizable="true" @submit="handleHideCopper" :aspectRatio="1 / 1" @close="isShowCopper = false, selectPic = ''"></ImgCropper>
 </template>
 
 <script setup>
@@ -145,55 +146,39 @@ const openFileInput = () => {
 }
 
 // 上传头像
-// const selectPic = ref('')
-// const isShowCopper = ref(false)
-// const handleUploadFile = async (e) => {
-//   const file = e.target.files[0]
-//   const reader = new FileReader()
-//   reader.readAsDataURL(file)
-//   reader.onload = () => {
-//     selectPic.value = String(reader.result)
-//     isShowCopper.value = true
-//   }
-// }
-
+const selectPic = ref('')
+const isShowCopper = ref(false)
 const handleUploadFile = async (e) => {
   const file = e.target.files[0]
-  if (!file) return
-  overlay.value = true
-  const formData = new FormData()
-  formData.append('file', file)
-  const { data } = await uploadFile(formData)
-  if (!data) return overlay.value = false
-  await updatePersonAvatar(data)
-  setTimeout(async () => {
-    await userStore.getUserBaseInfos(baseInfo.value.userId)
-    getBasicInfo()
-    overlay.value = false
-    Snackbar.success(t('common.uploadSucMsg'))
-  }, 1000)
+  const reader = new FileReader()
+  reader.readAsDataURL(file)
+  reader.onload = () => {
+    selectPic.value = String(reader.result)
+    isShowCopper.value = true
+  }
 }
 
-// const handleHideCopper = (data) => {
-//   isShowCopper.value = false
-//   if (data) {
-//     const { file } = data
-//     if (!file) return
-//     const formData = new FormData()
-//     formData.append('file', file)
-//     overlay.value = true
-//     uploadFile(formData).then(async ({data}) => {
-//       if (!data) return
-//       await updatePersonAvatar(data)
-//       setTimeout(async () => {
-//         await userStore.getUserBaseInfos(baseInfo.value.userId)
-//         getBasicInfo()
-//         overlay.value = false
-//         Snackbar.success(t('common.uploadSucMsg'))
-//       }, 1000)
-//     })
-//   }
-// }
+// 图片裁剪
+const handleHideCopper = (data) => {
+  isShowCopper.value = false
+  if (data) {
+    const { file } = data
+    if (!file) return
+    const formData = new FormData()
+    formData.append('file', file)
+    overlay.value = true
+    uploadFile(formData).then(async ({data}) => {
+      if (!data) return
+      await updatePersonAvatar(data)
+      setTimeout(async () => {
+        await userStore.getUserBaseInfos(baseInfo.value.userId)
+        getBasicInfo()
+        overlay.value = false
+        Snackbar.success(t('common.uploadSucMsg'))
+      }, 1000)
+    })
+  }
+}
 
 const items = ref({
   options: [

+ 4 - 2
src/views/recruit/personal/shareJob/index.vue

@@ -39,9 +39,11 @@
         </div>
         <v-divider class="mt-3"></v-divider>
         <div class="mt-3 mb-1 f-w-600">{{ $t('position.jobResponsibilities') }}</div>
-        <div class="requirement" v-html="info.content?.replace(/\n/g, '</br>')"></div>
+        <div v-if="info.content" class="requirement" v-html="info.content?.replace(/\n/g, '</br>')"></div>
+        <div v-else>暂无</div>
         <div class="mt-3 mb-1 f-w-600">{{ $t('position.jobRequirements') }}</div>
-        <div class="requirement" v-html="info.requirement?.replace(/\n/g, '</br>')"></div>
+        <div v-if="info.requirement" class="requirement" v-html="info.requirement?.replace(/\n/g, '</br>')"></div>
+        <div v-else>暂无</div>
         <v-divider class="my-3"></v-divider>
         <div class="contact">
           <div class="float-left d-flex align-center">