Browse Source

求职端广告用接口获取

Xiao_123 5 tháng trước cách đây
mục cha
commit
e5e9c2969c

+ 6 - 0
src/api/common/index.js

@@ -399,4 +399,10 @@ export const getOrder = async (params) => {
   })
 }
 
+// 内容管理
+export const getWebContent = async () => {
+  return await request.get({
+    url: '/app-api/menduner/system/web-content/get?id=1'
+  })
+}
 

+ 15 - 17
src/views/login/index.vue

@@ -3,10 +3,10 @@
     <div class="content">
       <div class="login-content">
         <v-card height="392px" class="carousel mr-3" style="width: 792px; border-radius: 8px;">
-          <v-carousel show-arrows="hover" cycle>
+          <v-carousel show-arrows="hover" cycle :model-value="0">
             <v-carousel-item v-for="(item, i) in carouselList" :key="i" @click="handleClick(item)">
               <div style="height: 392px; overflow: hidden;" :class="{'cursor-pointer': item.link}">
-                <v-img :src="item.src" :lazy-src="item.src" cover style="height: 100%; overflow: hidden;">
+                <v-img :src="item.img" :lazy-src="item.src" cover style="height: 100%; overflow: hidden;">
                   <template v-slot:placeholder>
                     <v-row align="center" class="fill-height ma-0" justify="center">
                       <v-progress-circular color="grey-lighten-5" indeterminate></v-progress-circular>
@@ -94,6 +94,7 @@ import { useRouter } from 'vue-router'
 import { useI18n } from '@/hooks/web/useI18n'
 import {
   getEnterpriseRegisterApply,
+  getWebContent
   // socialAuthRedirect,
 } from '@/api/common'
 import Snackbar from '@/plugins/snackbar'
@@ -109,6 +110,18 @@ onMounted(() => {
   isMobile.value = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i.test(userAgent)
 })
 
+// 获取轮播图
+const carouselList = ref([])
+const getSystemWebContent = async () => {
+  const data = await getWebContent()
+  carouselList.value = data.pcLoginCarousel || []
+}
+getSystemWebContent()
+
+const handleClick = (item) => {
+  if (item.link) window.open(item.link)
+}
+
 const { t } = useI18n()
 const router = useRouter()
 const tab = ref(2) // 密码登录
@@ -219,21 +232,6 @@ const tabChange = (val) => {
   }
 }
 
-// 轮播广告 // 轮播图片
-const carouselList = ref([
-  { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/IHG-banner-new.gif' },
-  { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/SWISS-HOTEL-MANAGEMENT-SCHOOL-MBA.jpg'},
-  // { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/Hong-Kong-Polytechnic-University-banner.jpg' },
-  { src: 'https://minio.menduner.com/dev/menduner/Grand-Mercure.jpg' },
-  // { src: 'https://minio.menduner.com/dev/5cca497a87187f541359c6b327a217b963e397dc39042327be5cc1cbc9447818.jpg' },
-  { src: 'https://minio.menduner.com/dev/fbff08c5608d746380f859a97241109fe4726f776a25301d7d0fb43d9ba7df67.png', link: 'https://mp.weixin.qq.com/s/NrxuXTi7kB9AngNBYJ3v4A' },
-  { src: 'https://minio.menduner.com/dev/d42d74cd19e19f557ece4ec861a8d9ab6e0aa6d201449714f4a47b9230ec980d.jpg' }
-])
-
-const handleClick = (item) => {
-  if (item.link) window.open(item.link)
-}
-
 // 获取验证码
 const verify = ref()
 const getCode = async () => {

+ 13 - 12
src/views/recruit/personal/home/components/homeJobTypeCard/index.vue

@@ -54,10 +54,10 @@
       </div>
     </v-card>
     <v-card height="392px" class="card rightCardBox">
-      <v-carousel show-arrows="hover" cycle>
+      <v-carousel show-arrows="hover" cycle :model-value="0">
         <v-carousel-item v-for="(item, i) in carouselList" :key="i" @click="handleClick(item)">
           <div style="height: 392px; overflow: hidden;" :class="{'cursor-pointer': item.link}">
-            <v-img :src="item.src" :lazy-src="item.src" cover style="height: 100%; overflow: hidden;">
+            <v-img :src="item.img" :lazy-src="item.img" cover style="height: 100%; overflow: hidden;">
               <template v-slot:placeholder>
                 <v-row align="center" class="fill-height ma-0" justify="center">
                   <v-progress-circular color="grey-lighten-5" indeterminate></v-progress-circular>
@@ -76,8 +76,19 @@ import { getPositionTreeClick } from '@/api/common/index'
 import { getDict } from '@/hooks/web/useDictionaries'
 import { reactive, ref } from 'vue';
 import { useRouter } from 'vue-router'
+import { getWebContent } from '@/api/common'
 const router = useRouter()
 defineOptions({ name:'common-components-homepage-jobTypeCard'})
+
+// 轮播图片
+const carouselList = ref([])
+// 获取轮播图
+const getSystemWebContent = async () => {
+  const data = await getWebContent()
+  carouselList.value = data.pcHomeCarousel || []
+}
+getSystemWebContent()
+
 // const selectItems = ref([])
 // 职位点击
 const handleJobClick = async (val) => {
@@ -144,16 +155,6 @@ const handleMouseLeave = () => { // 鼠标移出
   leftIndex.value = null
   itemLeft.value = 0
 }
-// 轮播图片
-const carouselList = ref([
-  { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/IHG-banner-new.gif' },
-  { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/SWISS-HOTEL-MANAGEMENT-SCHOOL-MBA.jpg'},
-  // { src: 'https://minio.citupro.com/dev/menduner/preferredGroup/Hong-Kong-Polytechnic-University-banner.jpg' },
-  { src: 'https://minio.menduner.com/dev/menduner/Grand-Mercure.jpg' },
-  // { src: 'https://minio.menduner.com/dev/5cca497a87187f541359c6b327a217b963e397dc39042327be5cc1cbc9447818.jpg' },
-  { src: 'https://minio.menduner.com/dev/fbff08c5608d746380f859a97241109fe4726f776a25301d7d0fb43d9ba7df67.png', link: 'https://mp.weixin.qq.com/s/NrxuXTi7kB9AngNBYJ3v4A' },
-  { src: 'https://minio.menduner.com/dev/d42d74cd19e19f557ece4ec861a8d9ab6e0aa6d201449714f4a47b9230ec980d.jpg' }
-])
 
 const handleClick = (item) => {
   if (item.link) window.open(item.link)

+ 36 - 33
src/views/recruit/personal/home/index.vue

@@ -7,25 +7,15 @@
     </div>
     <hotJobs></hotJobs>
     <div class="advertiseBox">
-      <div class="advertise" :style="{'width': showFullAdvertise ? '180px' : '20px'}">
-        <div v-if="showFullAdvertise">
+      <div v-for="val in leftAdvertise" :key="val.mark" class="advertise" :style="{'width': val.show ? '180px' : '20px'}">
+        <div v-if="val.show">
           <div class="advertise-title d-inline-block">
             <span>广告</span>
-            <v-icon class="float-right cursor-pointer pb-1" color="primary" size="28" @click="showFullAdvertise = false">mdi-close</v-icon>
+            <v-icon class="float-right cursor-pointer pb-1" color="primary" size="28" @click="val.show = false">mdi-close</v-icon>
           </div>
-          <img class="advertise-img cursor-pointer" src="https://minio.menduner.com/dev/menduner/advertise-website-home.png" @click="handleOpenAdvertise">
+          <img class="advertise-img cursor-pointer" :src="val.img" @click="handleLeftClick(val)">
         </div>
-        <div v-else class="advertise-box cursor-pointer" @mouseenter="showFullAdvertise = true"></div>
-      </div>
-      <div class="advertise" :style="{'width': showFullAdvertise1 ? '180px' : '20px'}">
-        <div v-if="showFullAdvertise1">
-          <div class="advertise-title d-inline-block">
-            <span>广告</span>
-            <v-icon class="float-right cursor-pointer pb-1" color="primary" size="28" @click="showFullAdvertise1 = false">mdi-close</v-icon>
-          </div>
-          <img class="advertise-img cursor-pointer" src="https://minio.menduner.com/dev/ced2539479c70b62b61e039250fb3e36b72611f2b7db46f4540bb91081ddf223.jpg" @click="handleOpenAdvertise1">
-        </div>
-        <div v-else class="advertise-box cursor-pointer" @mouseenter="showFullAdvertise1 = true"></div>
+        <div v-else class="advertise-box cursor-pointer" @mouseenter="val.show = true"></div>
       </div>
     </div>
     <div class="default-width content-box mb-5">
@@ -44,7 +34,7 @@
     :persistent="false"
   >
     <div style="cursor: pointer; margin: 0 auto; position: relative;">
-      <v-img src="./img/adImg.jpg" :width="adImgWidth" style="height: auto;border-radius: 4px;" @click="adClick"></v-img>
+      <v-img :src="dialogAdvertise.img" :width="adImgWidth" style="height: auto;border-radius: 4px;" @click="adClick"></v-img>
       <span style="color: #ddddddcc; font-size: 32px; position: absolute; right: 0px; top: 0px;" class="mdi mdi-close-circle-outline cursor-pointer px-3" @click="adDialog = false"></span>
     </div>
   </v-dialog>
@@ -63,12 +53,40 @@ import { useRouter } from 'vue-router'
 import { onMounted, ref } from 'vue'
 // import { useUserStore } from '@/store/user'
 import { getToken } from '@/utils/auth'
+import { getWebContent } from '@/api/common'
 import { getRewardEventList } from '@/utils/eventList'
 
-const showFullAdvertise = ref(true)
-const showFullAdvertise1 = ref(true)
 if (!getToken()) getRewardEventList()
 
+// 获取广告图
+const leftAdvertise = ref([])
+const dialogAdvertise = ref({})
+const getSystemWebContent = async () => {
+  const data = await getWebContent()
+  // 左侧广告
+  if (data.pcLeft) leftAdvertise.value = data.pcLeft.map(e => {
+    e.show = true
+    return e
+  })
+  // 弹窗广告
+  dialogAdvertise.value = data.pcAdvertisement ? data.pcAdvertisement[0] : {}
+}
+getSystemWebContent()
+
+// 弹窗广告跳转
+const adClick = () => {
+  if (!getToken()) router.push(dialogAdvertise.value.link)
+}
+
+// 左侧广告跳转
+const handleLeftClick = (val) => {
+  if (val.link === '/recruit/enterprise/position/add') {
+    const url = getToken(1) ? val.link : '/login?entLogin=true'
+    if (!getToken(1)) localStorage.setItem('enterpriseRedirect', '/recruit/enterprise/position/add')
+    window.open(url)
+  } else window.open(val.link)
+}
+
 
 const router = useRouter()
 const handleSearch = (val) => {
@@ -93,18 +111,6 @@ const handleSearch = (val) => {
 //   await store.getUserBaseInfos(null)
 // }
 
-// 广告跳转
-const handleOpenAdvertise = () => {
-  window.open('https://mp.weixin.qq.com/s/Us_cWsRpGQBnLFBrZGynLA')
-}
-// 广告跳转1
-const handleOpenAdvertise1 = () => {
-  const add = '/recruit/enterprise/position/add'
-  const url = getToken(1) ? add : '/login?entLogin=true'
-  if (!getToken(1)) localStorage.setItem('enterpriseRedirect', add)
-  window.open(url)
-}
-
 const adImgWidth = ref(document?.documentElement?.clientWidth ?
   Math.floor(document.documentElement.clientWidth/2.2) > 500 ?
   Math.floor(document.documentElement.clientWidth/2.2) : 500
@@ -119,9 +125,6 @@ onMounted(() => {
     adDialog.value = true
   }
 })
-const adClick = () => {
-  if (!getToken()) router.push('/login')
-}
 </script>
 
 <style lang="scss" scoped>