CINXE.COM

matchexpo

<!DOCTYPE html> <html> <head> <title>matchexpo</title> <meta charset="utf-8"/> <meta http-equiv="Cache-Control" content="max-age=31536000"/> <meta http-equiv="Pragma" content="max-age=31536000"/> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> <!-- Meta Pixel Code --> <script> !function (f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function () { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1041230296873208'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1041230296873208&ev=PageView&noscript=1" /> </noscript> <!-- End Meta Pixel Code --> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2834372922206562" crossorigin="anonymous"></script> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-B0EZSHLW6R"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'G-B0EZSHLW6R'); </script> <meta name="keywords" content="Matchexpo"/> <meta name="description" content="Matchexpo"/> <meta property="og:image" content="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0830/630d815374a53.ico"/> <link rel="shortcut icon" href="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0830/630d815374a53.ico" type="image/x-icon"/> <script> var ai_chat_url = 'https://ai.starify.cn'; let screen_width = screen.availWidth let white_list = ['/live-stream', '/mobile', '/invite-', '/community', '/supply-demand', '/job', '/city-plan-form'] //过滤白名单-是否进入 /mobile let is_pass = true //是否通过白名单筛选 white_list.forEach(item => { if (location.pathname.indexOf(item) !== -1) { is_pass = false } }) resizeInitWindow() window.addEventListener('resize', () => { resizeInitWindow() }) function resizeInitWindow() { if (window.screen.availWidth < 992) { document.querySelector('html').style.fontSize = ((screen_width / 375) * 62.5) + '%' if (is_pass) { if ((location.pathname.indexOf('/expo') > -1 || location.pathname.indexOf('/news') > -1 || location.pathname.indexOf('/live') > -1 || location.pathname.indexOf('/homepage') > -1)) { //跳转到对应的移动端页面 location.href = '/mobile' + location.pathname } else { //没有相关页面关键词跳转到移动端首页 location.href = '/mobile/index' } } } else { document.querySelector('html').style.fontSize = ((screen_width / 1920) * 62.5) + '%' } } </script> <script src="/common/js-config?v=8.8"></script> <!-- 导入 Vue 3 --> <script src="/assets/lib/jquery-1.11.1.min.js"></script> <script src="/assets/lib/vue@next.js"></script> <script src="/assets/lib/vue-i18n.global.min.js"></script> <script src="/lang/i18n.js?v=8.8"></script> <script src="/lang/module/en-us.js?v=8.8"></script> <script src="/lang/module/en-us-all.min.js?v=8.8"></script> <script src="/assets/lib/axios.min.js"></script> <!-- 导入组件库 --> <script src="/assets/lib/element-plus.js"></script> <!-- 导入压缩js库 --> <script src="/assets/utils/utils-all.min.js?v=8.8"></script> <script src="/assets/chatgpt-icon/iconfont.js?v=8.8"></script> <link href="/assets/iconfont/iconfont.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/element/index-rem.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/community/recommendUser.css" rel="stylesheet" type="text/css"/> <link href="/assets/css/index.css" rel="stylesheet" type="text/css"/> <link href="/assets/css/index/all.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/chatgpt-icon/iconfont.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/layout/common.css?v=8.8" rel="stylesheet" type="text/css"/> <script src="/assets/lib/viewer.js"></script> <script src="/assets/lib/swiper-bundle.min.js?v=8.8"></script> <script src="/assets/lib/tinymce/tinymce.min.js"></script> <link href="/assets/css/supplyDemand/index.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/lib/viewer.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/supplyDemand/listModule.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/lib/swiper-bundle.min.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/advertisement/right_ad.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/layout/common.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/mobile/layout.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/mobile/layout/bottom.css?v=8.8" rel="stylesheet" type="text/css" /> <link href="/assets/css/layout/login/loginPopup.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/utils/intl-tel-input/build/css/intlTelInput.css" rel="stylesheet" type="text/css" /> <link href="/assets/css/community/layout/index.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/community/layout/navbarLeft.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/community/layout/empty.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/community/layout/navbarRight.css?v=8.8" rel="stylesheet" type="text/css"/> <link href="/assets/css/layout/owl/owl.carousel.min.css" rel="stylesheet" type="text/css" /> <link href="/assets/css/layout/owl/owl.theme.default.css" rel="stylesheet" type="text/css" /> </head> <body data-lang="en-us" > <div id="loadingBox" class="loading_container"> <div class="boxes"> <div class="box"> <div></div> <div></div> <div></div> <div></div> </div> <div class="box"> <div></div> <div></div> <div></div> <div></div> </div> <div class="box"> <div></div> <div></div> <div></div> <div></div> </div> <div class="box"> <div></div> <div></div> <div></div> <div></div> </div> </div> </div> <div class="container_body community_app"> <div class="head_container"> <div class="pc_module"> <div class="community_head" id="community_head"> <div class="head_logo" > <div> <svg class="icon_en svg-icon" aria-hidden="true"> <use xlink:href="#ic_Community1"></use> </svg> </div> <a href="/"><i>|</i>Home</a> </div> <div class="head_search_box"> <div class="head_search"> <i class="iconfont ic_search"></i> <input placeholder="Search" id="globalSearch" /> </div> </div> <div class="head_notice"> <a href="/notification"> <i class="iconfont ic_notice"></i> <span class="notice_point"></span> </a> </div> <div> <el-popover placement="bottom" :width="250" trigger="hover"> <template #reference> <span class="el-dropdown-link language-dropdown" v-cloak> <span class="iconfont ic_language icon_language"></span> <span>{{ locale.label }}</span> </span> </template> <div class="website-lang"> <div v-for="(website, i) in languages" :key="'web-' + i"> <div class="title">{{ website.name }}</div> <div class="site-languages"> <div class="language" :class="(language.site == currSite && language.value == currLanguage) ? 'selected' : ''" v-for="(language, j) in website.list" :key="'opt-' + j" @click="handleLang(language)" v-cloak> {{ language.label }} </div> </div> </div> </div> </el-popover> </div> </div> </div> <div class="mobile_module"> <div id="headBox"> <div class="m_head_container" v-cloak> <a href="/mobile/index" target="_self" class="logo_image"> <svg v-if="$community.judgePageType('community')" class="icon_en svg-icon" aria-hidden="true"> <use xlink:href="#ic_Matchpages"></use> </svg> <svg v-else-if="$community.judgePageType('supply')" class="icon_en svg-icon" aria-hidden="true"> <use xlink:href="#ic_Matchpages"></use> </svg> <svg v-else class="icon_en svg-icon" aria-hidden="true"> <use xlink:href="#ic_Matchpages"></use> </svg> </a> <div class="head_option"> <div @click="showMenu = true"><i class="iconfont ic_list"></i></div> </div> <el-drawer v-model="showMenu" :with-header="false" size="60%"> <div class="user_info" v-if="$config.apiToken"> <img :src="$config.ossDomain + baseUserInfo.curr_enterprise_logo" onerror="this.src = '/assets/image/defaultLogo.png'"> <span>{{ baseUserInfo.curr_enterprise_name }}</span> </div> <el-menu :default-active="activeIndex"> <el-menu-item index="index" @click="pageTo('/mobile/index')"> <i class="iconfont ic_home"></i> Home </el-menu-item> <el-menu-item index="news" @click="pageTo('/mobile/news')"> <i class="iconfont ic_news"></i> News </el-menu-item> <el-menu-item index="expo" @click="pageTo('/mobile/expo')"> <i class="iconfont ic_events"></i> Events &amp; Fairs </el-menu-item> <el-menu-item index="live" @click="pageTo('/mobile/live')"> <i class="iconfont ic_lives"></i> Live </el-menu-item> <el-menu-item index="dynamic" @click="pageTo('/community/dynamic')"> <i class="iconfont ic_Community"></i> Community </el-menu-item> <el-menu-item class="community_menu" index="dynamic" @click="pageTo('/community/dynamic')"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_dynamic"></use> </svg> </div> Updates </el-menu-item> <el-menu-item class="community_menu" index="topics" @click="pageTo('/community/topics')"> <div class="menu_icon" style="background-color: #FFE6E5"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_thematic"></use> </svg> </div> Topics </el-menu-item> <el-menu-item class="community_menu" index="group" @click="pageTo('/community/group')"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_group"></use> </svg> </div> Group </el-menu-item> <el-menu-item class="community_menu" index="discover" @click="pageTo('/community/discover')"> <div class="menu_icon" style="background-color: #FFF8E5"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_find"></use> </svg> </div> Discovery </el-menu-item> <el-menu-item class="community_menu" index="supply-demand" @click="pageTo('/supply-demand')"> <div class="menu_icon" style="background-color: #FFE6E5"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_gx"></use> </svg> </div> Supply &amp; Demand </el-menu-item> <el-menu-item class="community_menu" index="job" @click="pageTo('/job')"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_zp"></use> </svg> </div> Jobs </el-menu-item> <el-sub-menu index="lang"> <template #title> <i class="iconfont ic_global"></i> Language switching </template> <el-menu-item v-for="(item,index) in languages[1].list" :key="index" :index="item.value" @click="handleLang(item)"> {{ item.label }} </el-menu-item> <el-menu-item v-for="(item,index) in languages[0].list" :key="index" :index="item.value" @click="handleLang(item)"> {{ item.label }} </el-menu-item> </el-sub-menu> </el-menu> <div class="navbar_text" v-if="!($community.judgePageType('community'))"> Please use PC to publish activities, live broadcasts and information </div> <div class="navbar_btn" v-else> <a @click="routeTo('/mobile/index')">Return to home</a> </div> <div class="navbar_btn" v-show="!$config.apiToken"> <a @click="routeTo('/mobile/login')">Sign in</a> <span>|</span> <a @click="routeTo('/mobile/register')">Register</a> </div> <div class="navbar_btn" v-show="$config.apiToken"> <a @click="outLogin">Sign out</a> </div> </el-drawer> </div> <div class="search_box" style="display: none"> <el-input v-model="searchValue" placeholder="Search" id="searchValue"> <template #prefix> <i class="iconfont ic_search"></i> </template> <template #suffix> <el-button type="primary" @click="searchData()" id="searchBtn">Search</el-button> </template> </el-input> </div> </div> <script> let headBox = initVue({ name:'headBox', data() { return { activeIndex: 'index', baseUserInfo:{}, showMenu: false, currSite:'', currLanguage:'', searchValue: '', languages: this.$config.languages } }, methods: { returnActiveIndex() { let name = location.pathname if (name.indexOf('/mobile/index') > -1) { this.activeIndex = 'index' } else if(name.indexOf('/mobile/news') > -1) { this.activeIndex = 'news' } else if(name.indexOf('/mobile/expo') > -1) { this.activeIndex = 'expo' } else if(name.indexOf('/mobile/live') > -1) { this.activeIndex = 'live' } else if(name.indexOf('dynamic') > -1) { this.activeIndex = 'dynamic' } else if(name.indexOf('topics') > -1) { this.activeIndex = 'topics' } else if(name.indexOf('group') > -1) { this.activeIndex = 'group' } else if(name.indexOf('discover') > -1) { this.activeIndex = 'discover' } else if(name.indexOf('supply-demand') > -1) { this.activeIndex = 'supply-demand' } else if(name.indexOf('job') > -1) { this.activeIndex = 'job' } }, searchData() { if (this.$community.judgePageType('community')) { location.href = '/community/search?keyword=' + this.searchValue } else { } }, handleLang(lang) { this.currSite = lang.site this.currLanguage = lang.value let url = '' if (lang.site != this.$config.siteName) { url = this.$config.siteDomain[lang.site] + '/mobile/index' + '?lang=' + lang.value } else { this.$i18n.setLocale(lang.value) url = this.$config.siteDomain[lang.site] + '/mobile/index' } location.href = url }, routeTo(url) { location.href = url + '?redirect=' + location.pathname }, outLogin() { removeAccessToken() // window.open('/dist/login','_self') this.routeTo('/mobile/login') }, getUserInfo() { mtpRequest({ url: '/api/user/base-account', method: 'post', }).then(res=>{ this.baseUserInfo = res.data $('#headBox').trigger('getUserInfo',this.baseUserInfo) //异步通信 this.$loading.completeLoading() }) }, pageTo(url,type) { if (type) { window.open(url,type) } else { window.open(url,'_self') } }, }, created() { }, mounted() { this.returnActiveIndex() if (this.$config.apiToken) { this.getUserInfo() } else { this.$loading.completeLoading() } if (getUrlParam('keyword')) { this.searchValue = getUrlParam('keyword') } }, }, "#headBox"); </script> </div> </div> <div class="body_container"> <div> <div class="navbar_left" id="navbar_left"> <div class="user_info"> <div class="user_avatar" @click="toHomepage"> <img :src="$config.ossDomain + baseUserInfo.curr_enterprise_logo" onerror="this.src = '/assets/image/defaultLogo.png'"> </div> <mtp-user-dropdown v-if="$config.apiToken" @update-user-info="updateUserInfo"> <div class="user_nick"> {{ baseUserInfo.curr_enterprise_name }} <i class="iconfont ic_down_line"></i> </div> </mtp-user-dropdown> <div class="user_nick" v-else> <div> <div>You are not logged in</div> <div> <a :href="loginHrefReturn()">Sign in now</a> </div> </div> </div> <div v-if="$config.apiToken"> <div v-if="baseUserInfo.enterprise_certified_id && baseUserInfo.enterprise_certified_id > 0"> <div class="authentication_tag enterprise"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_businessV"></use> </svg> <span>Enterprise</span> </div> </div> <div v-else-if="baseUserInfo.personal_certified_id && baseUserInfo.personal_certified_id > 0"> <div class="authentication_tag person_tag"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_personalV"></use> </svg> <span>Personal certification</span> </div> </div> <div v-else> <div class="authentication_tag none_auth"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_unverifiedV"></use> </svg> <span>Not certified</span> </div> </div> </div> </div> <div class="navbar_menu_list"> <a class="navbar_menu" :class="activeMenu === 'dynamic' ? 'active' : ''" href="/community/dynamic"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_dynamic"></use> </svg> </div> <div class="menu_title"> Updates </div> </a> <a class="navbar_menu" :class="activeMenu === 'special' ? 'active' : ''" href="/community/topics"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_thematic"></use> </svg> </div> <div class="menu_title"> Topics </div> </a> <a class="navbar_menu" :class="activeMenu === 'group' ? 'active' : ''" href="/community/group"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_group"></use> </svg> </div> <div class="menu_title"> Group </div> </a> <a class="navbar_menu" :class="activeMenu === 'discover' ? 'active' : ''" href="/community/discover"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_find"></use> </svg> </div> <div class="menu_title"> Discovery </div> </a> <a class="navbar_menu" :class="activeMenu === 'supply-demand' ? 'active' : ''" href="/supply-demand"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_gx"></use> </svg> </div> <div class="menu_title"> Supply &amp; Demand </div> </a> <a class="navbar_menu" :class="activeMenu === 'job' ? 'active' : ''" href="/job"> <div class="menu_icon"> <svg class="icon" aria-hidden="true"> <use xlink:href="#ic_ic_zp"></use> </svg> </div> <div class="menu_title"> Jobs </div> </a> </div> <div class="navbar_module" v-if="groupList && groupList.length > 0"> <div class="module_title">The group I created</div> <div class="navbar_module_list"> <div class="navbar_module_item" v-for="(item,index) in myCreateGroupList" :key="index" v-show="index<5 || (isShowGroups && index >= 5)" @click="toMyInfo(item.group_id)"> <div class="grid_avatar" v-if="item.user_logos"> <img v-for="logo in item.user_logos" :src="logo" /> </div> <span class="module_item_title">{{ item.name }}</span> </div> <div class="navbar_module_option" v-show="!isShowGroups && groupList.length > 5" @click="isShowGroups = true"> Expand all<i class="iconfont ic_down"></i> </div> <div class="navbar_module_option" v-show="isShowGroups && groupList.length > 5" @click="isShowGroups = false"> fold<i class="iconfont ic_down fold"></i> </div> </div> </div> <div class="navbar_module" v-if="groupList && groupList.length > 0"> <div class="module_title">The group I joined</div> <div class="navbar_module_list"> <a class="navbar_module_item" v-for="(item,index) in groupList" :key="index" v-show="index<5 || (isShowGroups && index >= 5) " :href="item.route"> <div class="grid_avatar" v-if="item.user_logos"> <img v-for="logo in item.user_logos" :src="logo" /> </div> <span class="module_item_title">{{ item.name }}</span> </a> <div class="navbar_module_option" v-show="!isShowGroups && groupList.length > 5" @click="isShowGroups = true"> Expand all<i class="iconfont ic_down"></i> </div> <div class="navbar_module_option" v-show="isShowGroups && groupList.length > 5" @click="isShowGroups = false"> fold<i class="iconfont ic_down fold"></i> </div> </div> </div> <div class="navbar_module navbar_page" v-if="accountList && accountList.length > 0"> <div class="module_title">Homepage I follow</div> <div class="navbar_module_list"> <a class="navbar_module_item" v-for="(item,index) in accountList" :key="item.id" :href="item.route" v-show="index<5 || (isShowFollow && index >= 5)"> <img :src="$config.ossDomain + item.logo" onerror="this.src = '/assets/image/defaultLogo.png'"> <span class="module_item_title">{{ item.name }}</span> </a> </div> <div class="navbar_module_option" v-show="!isShowFollow && accountList.length > 5" @click="isShowFollow = true"> Expand all<i class="iconfont ic_down"></i> </div> <div class="navbar_module_option" v-show="isShowFollow && accountList.length > 5" @click="isShowFollow = false"> fold<i class="iconfont ic_down fold"></i> </div> </div> <div class="login_dialog"> <el-dialog :append-to-body="true" v-model="loginDialogVisible" width="52%" > <div> <login-right></login-right> </div> </el-dialog> </div> </div> <script src="/assets/js/UserDropdown/UserDropdown.js"></script> <script> //定义注册的组件名称(方法名称要同步) let navbar_left = initVue({ name:'navbar_left', data(){ return { loginDialogVisible: false, baseUserInfo: {}, groupList: [], myCreateGroupList: [], accountList:[], isShowGroups:false, isShowFollow:false, activeMenu:'dynamic' } }, mounted() { this.changeNavbar() if (this.$config.apiToken) { this.getGroupList() this.upDateFollowGroup() this.getFollowAccount() this.getMyCreateGroupList() } this.initLoginDialog() }, methods:{ toHomepage() { if (this.$config.apiToken) { location.href = '/page/' + this.baseUserInfo.curr_enterprise_id } else { location.href = this.loginHrefReturn() } }, loginHrefReturn() { return '/login?redirect=' + location.pathname }, initLoginDialog() { //通过自定义事件 完成异步通信 let showLoginDialog = document.createEvent('Event'); showLoginDialog.initEvent('showLoginDialog', true, false); $(document).on('showLoginDialog','#navbar_left',()=>{ this.loginDialogVisible = true }) }, getFollowAccount() { mtpRequest({ url: '/api/user/get-my-concern-enterprise', method: 'get', params:{ page:1, page_size:999 } }).then(res=>{ if (res.ret === 0) { this.accountList = res.data.data } }) }, upDateFollowGroup() { this.$nextTick(()=>{ let upDateFollowGroup = document.createEvent('Event'); upDateFollowGroup.initEvent('upDateFollowGroup', true, false); $(document).on('upDateFollowGroup','.navbar_left',()=>{ this.getGroupList() }) }) }, async getGroupList() { //获取小组列表 await mtpRequest({ url: '/api/community/group-list', method: 'get', params:{ 'is_my_follow':1 } }).then((res) => { if (res.ret === 0) { this.groupList = res.data.data } }) }, getMyCreateGroupList() { //获取小组列表 mtpRequest({ url: '/api/community/my-group-list', method: 'get', params: { } }).then((res) => { if (res.ret === 0) { this.myCreateGroupList = res.data.data } }) }, changeNavbar() { if (location.pathname.indexOf('dynamic') > -1) { this.activeMenu = 'dynamic' } else if (location.pathname.indexOf('topics') > -1) { this.activeMenu = 'special' } else if (location.pathname.indexOf('group') > -1) { this.activeMenu = 'group' } else if (location.pathname.indexOf('discover') > -1) { this.activeMenu = 'discover' } else if (location.pathname.indexOf('supply-demand') > -1) { this.activeMenu = 'supply-demand' } else if (location.pathname.indexOf('job') > -1) { this.activeMenu = 'job' } else if (location.pathname.indexOf('publish') > -1) { this.activeMenu = 'publish' } }, updateUserInfo(data) { this.baseUserInfo = data }, toMyPublish() { if (this.$config.apiToken) { window.open('/community/publish', '_self') } else { this.$globalDialog.showLoginDialog() } }, toMyInfo(groupId) { window.location.href = "/community/group/myinfo?id=" + groupId } } },"#navbar_left",['loginRight','mtpUserDropdown']) </script> </div> <div class="app_container"> <div class="app_body"> <div class="app_content"> <div style="display: none;"> 1 1 </div> <div id="job_container" class="dynamic_container dynamic_list_container"> <div class="dynamic_tab_list"> <div class="dynamic_tab active">Jobs</div> </div> <div class="type_container"> <div class="type_list swiper"> <div class="swiper-wrapper"> <div class="swiper-slide"> <div class="type_item" :class="typeTab == 0 ? 'active' : ''" @click="changeType('0')">All</div> </div> <div class="swiper-slide"> <div class="type_item" title="Job" :class="typeTab_job === '6' ? 'active' : ''" @click="changeType('6')">Job</div> </div> </div> </div> <div class="swiper-button-prev"></div> <div class="swiper-button-next"></div> </div> <div class="mobile_type_container"> <el-select v-model="selectTag" @change="changeType" placeholder="Please enter the home page name"> <el-option label="All" :value="0"> All </el-option> <el-option label="Job" :value="6"> Job </el-option> </el-select> </div> <div id="demandModule" v-loading="firstLoading"> <div class="empty_box"> <div class="empty_image"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2023/0419/643faf3721af9.png"> </div> <div>No user published content yet</div> </div> </div> <div class="show_load_more" v-loading="loading" v-if="loading" element-loading-text="Loading"> </div> </div> </div> <div class="app_right_navbar"> <div class="supply_demand_right" id="supply_demand_right"> <div class="publish_box"> <a class="publish_btn" @click="toPublishRoute('job/job-edit?type=3')"> <div class="publish_icon"> <i class="iconfont ic_ic_exbo_create"></i> </div> <div class="publish_btn_text"> Publish Recruitment </div> </a> </div> <div class="top_group_box"> <div class="group_title"> <i class="iconfont ic_fire"></i> <span>Popular recruitment</span></div> <div id="hot_tag_box"> <div class="module_list" data-last-page="1" data-current-page="1"> </div> </div> </div> <div class="user_recommend_box" id="user_recommend"> <div class="group_title user_title"> <div> <i class="iconfont ic_other"></i> <span>People who may be interested</span> </div> <div class="hot_search_option" @click="$friend.getRecommendUserList()"><span class="iconfont ic_sync"></span>Change it</div> </div> <div id="hot_tag_box"> <div class="module_list" data-last-page="1675" style="display: flex;flex-direction: column"> <div class="module_item" data-id="1021406" data-current-page="1"> <div class="module_avatar"> <span>用</span> </div> <div class="group_title user_title"> <div> <div class="user_name">用*4</div> </div> <div class="user_company"> </div> </div> <div> <div class="user_friend_btn" data-user-id="1021406" data-friend-applying="0" data-action="0"> <div class="add_friend" > + Friends </div> <div class="cancel_friend" style="display: none;" > <i class="ic_check iconfont"></i> Requested </div> </div> </div> </div> <div class="module_item" data-id="1021401" data-current-page="1"> <div class="module_avatar"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2024/0912/66e2b36e87a09.jpeg"/> </div> <div class="group_title user_title"> <div> <div class="user_name">株*社</div> </div> <div class="user_company">株式会社 海事プレス社 </div> </div> <div> <div class="user_friend_btn" data-user-id="1021401" data-friend-applying="0" data-action="0"> <div class="add_friend" > + Friends </div> <div class="cancel_friend" style="display: none;" > <i class="ic_check iconfont"></i> Requested </div> </div> </div> </div> <div class="module_item" data-id="1021400" data-current-page="1"> <div class="module_avatar"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2024/0912/66e2b36aeaf22.jpeg"/> </div> <div class="group_title user_title"> <div> <div class="user_name">株*社</div> </div> <div class="user_company">株式会社 日本海事新聞社 </div> </div> <div> <div class="user_friend_btn" data-user-id="1021400" data-friend-applying="0" data-action="0"> <div class="add_friend" > + Friends </div> <div class="cancel_friend" style="display: none;" > <i class="ic_check iconfont"></i> Requested </div> </div> </div> </div> <div class="module_item" data-id="1021399" data-current-page="1"> <div class="module_avatar"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2024/0912/66e2b36797c7b.jpeg"/> </div> <div class="group_title user_title"> <div> <div class="user_name">有*業</div> </div> <div class="user_company">有限会社 有田牧畜産業 </div> </div> <div> <div class="user_friend_btn" data-user-id="1021399" data-friend-applying="0" data-action="0"> <div class="add_friend" > + Friends </div> <div class="cancel_friend" style="display: none;" > <i class="ic_check iconfont"></i> Requested </div> </div> </div> </div> <div class="module_item" data-id="1021398" data-current-page="1"> <div class="module_avatar"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2024/0912/66e2b3626d25e.jpeg"/> </div> <div class="group_title user_title"> <div> <div class="user_name">J*e</div> </div> <div class="user_company">Ji Pu Tea House </div> </div> <div> <div class="user_friend_btn" data-user-id="1021398" data-friend-applying="0" data-action="0"> <div class="add_friend" > + Friends </div> <div class="cancel_friend" style="display: none;" > <i class="ic_check iconfont"></i> Requested </div> </div> </div> </div> </div> </div> </div></div> <script> //定义注册的组件名称(方法名称要同步) let supply_demand_right = initVue({ name:'supply_demand_right', data(){ return { } }, methods:{ toPublishRoute(url) { var homeUrl = encodeURIComponent(url) if (this.$config.apiToken) { let centerUrl = this.$config.publishDomain + '/#/auth-login/' + this.$config.apiToken + '?redirect=' + homeUrl window.open(centerUrl, '_blank') } else { this.$globalDialog.showLoginDialog() } } } },"#supply_demand_right",['loginRight']) </script> </div> </div> </div> </div> <div class="pc_module"> <div class="copyright"> 2019-2022。 Matchexpo | Wuhan Matchexpo Technology Co., Ltd. All rights reserved. <a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0830/630d8153bd984.png" /> <span style="margin-right: 4px">鄂ICP备2022017323号 </span> </a> <a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=42018502006493" target="_blank"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0830/630d812ede0c6.gif" class="icon_public_security" /> <span>鄂公网安备 42018502006493</span> </a> <div> Room 03, Floor 3, Building 4, Gezhouba Sun City, No. 40, Gaoxin 4th Road, Donghu New Technology Development Zone, Wuhan </div> </div> <script src="https://oss.starify.cn/prod/starigy/w_chat/install/js/5fd0a346-23e4-8052-fd6c-999f94c6f1b4.js" async></script> </div> <div class="mobile_module"> <div id="bottom_container"> <div class="bottom_head"></div> <div class="bottom" > <div class="bottom_main"> <div class="bottom_left"> <a class="bottom_logo" href="/"> <svg class="icon_en svg-icon" aria-hidden="true"> <use xlink:href="#ic_Matchpages"></use> </svg> </a> <div class="bottom_desc"> Matchexpo is an exhibition community platform for event & fair community in China, serving the essential functions of exhibitions, events, fairs, assisting ticket sales, visitor registration and booth reservation, allowing organizers to create, share, find and participate in activities, creating community space for organizers and exhibitors, finding their partners and helping them expand<br> </div> </div> <div class="bottom_list"> <a class="bottom_item" href="/mobile/contact-us">Contact Us</a> <a class="bottom_item" href="/mobile/copyright-notice">Copyright notice</a> <a class="bottom_item" href="/mobile/user-agreement">User Agreement</a> <a class="bottom_item" href="/mobile/privacy-policy">Privacy Policy</a> <a class="bottom_item" href="/mobile/about-us">About Us</a> <a class="bottom_item" href="/mobile/our-mission">Our Mission</a> <a class="bottom_item" href="/mobile/certification-specification">Certification specification</a> <a class="bottom_item" href="/mobile/integrity-report">Integrity Report</a> <a class="bottom_item" href="/mobile/help-center">Help Center</a> <a class="bottom_item" href="/mobile/cooperative-partner">Cooperative partners</a> <a class="bottom_item" href="/mobile/advertisement">Advertising cooperation</a> <a class="bottom_item" href="/mobile/link">Links</a> <a class="bottom_item" href="/mobile/channel">Channel Cooperation</a> <a class="bottom_item" href="/mobile/invitation">Invite friends</a> </div> <div class="bottom_right"> <div class="bottom_qrcode_list"> <div class="bottom_qrcode"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0830/630d8161532ac.png"> <span>Follow official account</span> </div> <div class="bottom_qrcode"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0830/630d815ddd9af.png"> <span>Online support</span> </div> </div> <div class="platform_list"> <div class="platform_item" style="background:#1877F2"> <i class="iconfont ic_facebook1" ></i> </div> <div class="platform_item" style="background:#1DA1F2"> <i class="iconfont ic_twitter1"></i> </div> <div class="platform_item" style="background: #2867B2"> <i class="iconfont ic_linkedin1"></i> </div> <div class="platform_item" style="background: #FF0000"> <i class="iconfont ic_youtube" ></i> </div> <div class="platform_item" style="background: #F00073"> <i class="iconfont ic_instagram"></i> </div> <div class="platform_item" style="background: #E60023"> <i class="iconfont ic_pinterest1" ></i> </div> </div> </div> </div> </div> <div class="bottom_text"> <div @click="toHomepage('/')"> <span>Matchexpo: Event Marketing Platform</span> International - Traditional Chinese - Simplified Chinese </div> | <a href="https://www.matchpages.cn/" target="_blank"> <span>Matchpages Web Builder</span> </a> | <a href="https://www.starify.cn/" target="_blank"> <span>Starify omni-Channel Chatbot</span> </a> </div> <div class="copyright"> 2019-2022。 Matchexpo | Wuhan Matchexpo Technology Co., Ltd. All rights reserved. <a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0830/630d8153bd984.png" /> <span style="margin-right: 4px">鄂ICP备2022017323号 </span> </a> <a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=42018502006493" target="_blank"> <img src="https://matchexpo.obs.cn-north-1.myhuaweicloud.com/common/2022/0830/630d812ede0c6.gif" class="icon_public_security" /> <span>鄂公网安备 42018502006493</span> </a> <div> Room 03, Floor 3, Building 4, Gezhouba Sun City, No. 40, Gaoxin 4th Road, Donghu New Technology Development Zone, Wuhan </div> </div> <script src="https://oss.starify.cn/prod/starigy/w_chat/install/js/5fd0a346-23e4-8052-fd6c-999f94c6f1b4.js" async></script> </div> <script> let bottom_container = initVue({ name:'bottomContainer', data() { return { url:'', } }, methods: { toBottomPage(url) { window.open('/bottom#' + url,'_self') }, toHomepage(url) { var homeUrl = encodeURIComponent(url) if (this.$config.apiToken) { let centerUrl = this.$config.publishDomain + '/#/auth-login/' + this.$config.apiToken + '?redirect=' + homeUrl window.open(centerUrl, '_blank') } else { let centerUrl = this.$config.publishDomain + '?redirect=' + homeUrl $('#headBox').trigger('loginDialog',centerUrl) } } }, mounted() { this.$nextTick(()=>{ //更新token的val getUserEvent((res)=>{ if (res) { this.$config.apiToken = res this.$login.setToken(res) } }) }) }, }, "#bottom_container"); </script> </div> </div> <script> //移除loading效果 let loading_box = document.getElementById("loadingBox") function completeLoading() { if (loading_box) { loading_box.style.opacity = '0'; setTimeout(() => { if (document.querySelector('.container_body')) { document.querySelector('.container_body').style.opacity = '1'; } document.getElementById("loadingBox").style.display = "none"; }, 400) } } //初始化loading效果 function initLoading() { document.getElementById("loadingBox").style.display = ""; document.getElementById("loadingBox").style.opacity = '1'; } $(() => { setTimeout(() => { lazyload() }, 100) document.addEventListener('scroll', () => { lazyload() }, {passive: true}) setInterval(() => { lazyload() }, 1000) function lazyload() { var viewHeight = document.body.clientHeight //可视区域的高度 //获取所有要进行懒加载的图片 const lazyloadImg = document.querySelectorAll('img[data-original][lazyload]') lazyloadImg.forEach(item => { let rect = item.getBoundingClientRect()//获取每一个img元素的宽高以及距离视口顶部的距离 if (rect.top <= viewHeight && rect.top > -rect.height) { item.src = item.dataset.original item.removeAttribute('data-original') item.removeAttribute('lazyload') if (!item.onerror) { item.onerror = () => { item.src = '/assets/image/img_default.svg' } } item.style.opacity = 1 } }) } }) function getActiveTag() { let tag = document.querySelector('.active_tag') let tag_index = 0 document.querySelectorAll('.left_nav_list .nav_item').forEach((item, index) => { if (JSON.stringify(item.classList).indexOf('active') > -1) { tag_index = index } }) if (document.querySelector('.left_nav_list .active')) { let top = document.querySelector('.left_nav_list .active').offsetTop tag.style.top = parseInt(top) + 'px' tag.style.opacity = 1 } } /*判断是否禁用cookie*/ if (!(navigator.cookieEnabled && typeof window.localStorage !== 'undefined')) { ElementPlus.ElMessage({ message: 'Please allow all cookies in your browser settings and try again', type: 'warning', }) } /*获取站点*/ function returnSiteName() { window.siteName = 'overseas'; return 'overseas' } returnSiteName() /*数字转中文*/ function NumberToChinese(num) { var chnNumChar = ['Zero', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine']; var chnUnitSection = ['', '0k', 'Billion', 'Trillion', 'Billion'] var chnUnitChar = ['', 'Ten', 'Hundred', 'Thousand'] function SectionToChinese(section) { // 节内转换算法 var strIns = '', chnStr = ''; var unitPos = 0; var zero = true; while (section > 0) { var v = section % 10; if (v === 0) { if (!zero) { zero = true; chnStr = chnNumChar[v] + chnStr; } } else { zero = false; strIns = chnNumChar[v]; strIns += chnUnitChar[unitPos]; chnStr = strIns + chnStr; } unitPos++; section = Math.floor(section / 10); } return chnStr; } // 转换算法主函数 var unitPos = 0; var strIns = '', chnStr = ''; var needZero = false; if (num === 0) { return chnNumChar[0]; } while (num > 0) { var section = num % 10000; if (needZero) { chnStr = chnNumChar[0] + chnStr; } strIns = SectionToChinese(section); strIns += (section !== 0) ? chnUnitSection[unitPos] : chnUnitSection[0]; chnStr = strIns + chnStr; needZero = (section < 1000) && (section > 0); num = Math.floor(num / 10000); unitPos++; } return chnStr; } /*日期转化*/ function getWeekDay(time) { time = new Date(time) var dayarray = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") var montharray = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") var year = time.getYear() if (year < 1000) year += 1900 var day = time.getDay() var month = time.getMonth() var daym = time.getDate() if (daym < 10) daym = "0" + daym var hours = time.getHours() var minutes = time.getMinutes() var seconds = time.getSeconds() var dn = "AM" if (hours >= 12) dn = "PM" if (hours > 12) { hours = hours - 12 } if (hours == 0) hours = 12 if (minutes <= 9) minutes = "0" + minutes if (seconds <= 9) seconds = "0" + seconds return dayarray[day] + ", " + montharray[month] + "" + daym + ", " + year + " " + hours + ":" + minutes + ":" + seconds + " " + dn } /*判断单位缩写*/ function formatNumber(number) { let lang = 'en-us'; let length = (number + '').length; //数字长度 let str = number + ''; if (lang === 'en-us') { if (length > 9) { //亿单位 str = (number / 1000000000).toFixed(1) + 'Billion' } else if (length > 6) { //万单位 str = (number / 1000000).toFixed(1) + 'Million' } else if (length > 3) { //千单位 str = (number / 1000).toFixed(1) + 'Thousand' } else { return number; } return str; } else { if (length > 8) { //亿单位 str = (number / 100000000).toFixed(1) + 'Hundred million' } else if (length > 4) { //万单位 str = (number / 10000).toFixed(1) + '0k' } else if (length > 3) { //千单位 str = (number / 1000).toFixed(1) + 'Thousand' } else { return number; } return str; } } /*时间转化*/ function timeTran(theTime) { let nowTime = new Date().getTime(); let dur = (nowTime - new Date(theTime).getTime()) / 1000; if (dur <= 60) { return 'Just'; } else if (dur <= 3600) { let number = parseInt(dur / 60) let s = (number > 1 ? 's' : '') return number + ' Minutes ago'.replace('{s}', s) } else if (dur <= 86400) { let number = parseInt(dur / 3600) let s = (number > 1 ? 's' : '') return number + ' Hours ago'.replace('{s}', s) } else if (dur <= 86400 * 30) { let number = parseInt(dur / 86400) let s = (number > 1 ? 's' : '') return number + ' Days ago'.replace('{s}', s) } else if (dur <= 86400 * 30 * 12) { let number = parseInt(dur / (86400 * 30)) let s = (number > 1 ? 's' : '') return number + ' Months ago'.replace('{s}', s) } else { let number = parseInt(dur / (86400 * 30 * 12)) let s = (number > 1 ? 's' : '') return number + ' Last year'.replace('{s}', s) } } // 记录访问referrer var referrer = document.referrer var user_referrer = window.localStorage.getItem('user_referrer') if (!user_referrer) { user_referrer = [] } else { user_referrer = JSON.parse(user_referrer) } if (typeof referrer === 'string' && user_referrer.length < 20) { var recorded = 0 user_referrer.forEach(item => { if (item == referrer) { recorded = 1 } }) if (recorded === 0) { user_referrer.push(referrer) window.localStorage.setItem('user_referrer', JSON.stringify(user_referrer)) } } </script> <script> let top_ad = initVue({ name: 'topAd', data() { const valiEmail = (rule, value, callback) => { // 邮箱验证 if (!isEmail(value)) { callback(new Error('The email format is incorrect. Please enter the correct email')) } else { callback() } } return { topAdShow: false, dialogVisible: false, saveLoading: false, adNumber: 'Job000', adForm: { ad_id: 0, content: '', user_name: '', company_name: '', position: '', phone: '', company_email: '', company_website: '', wechat: '' }, adFormRules :{ user_name: [ { required: true, message: 'Please enter your name', trigger: 'blur', }, ], company_name: [ { required: true, message: 'Please enter your company name', trigger: 'blur', }, ], content: [ { required: true, message: 'Please enter your requirements', trigger: 'blur', }, ], company_email: [ { required: true, message: 'Please enter your email address', trigger: 'blur', }, { validator: valiEmail, trigger: ['blur', 'change'], }, ], phone: [ { required: true, message: "Please enter your mobile phone number", trigger: 'blur', } ], position: [ { required: true, message: "Please enter your position", trigger: 'blur', } ], company_website: [ { required: true, message: "Please enter your web address", trigger: 'blur', } ] }, } }, created() { // 距离24点剩余多少天 var dayEndTime = new Date().format("yyyy-MM-dd 23:59:59"); var leftd = new Date(dayEndTime) - new Date(); var d = leftd / 1000; var date = Math.floor(d / 60 / 60 / 24 * 100) / 100; // 30秒后弹出顶部广告 setTimeout(() => { this.topAdShow = true let cookieName = 'topAd_' + this.adNumber let pushNum = 1 if (readCookie(cookieName)) { pushNum = readCookie(cookieName) pushNum = parseInt(pushNum) pushNum = pushNum + 1 } setCookie(cookieName, pushNum, date, '/') }, 30000) }, methods:{ closeAd(className) { if (className && document.querySelector('.' + className)) { document.querySelector('.' + className).parentElement.remove() } }, submitAdForm() { this.$refs.adForm.validate(valid => { if (valid) { let params = this.adForm this.saveLoading = true mtpRequest({ url:'/api/ad/form', method: 'post', data: params }).then(res=>{ if (res.ret === 0) { this.saveLoading = false this.$message.success('Submitted successfully') this.dialogVisible = false } }).finally(() => { this.saveLoading = false }) } else { return false } }) }, showAdForm(adId) { this.adForm.ad_id = adId this.dialogVisible = true }, } }, "#top_ad") </script> <script> let rightAd = initVue({ name: 'rightAd', data() { return { rightAdShow: false } }, created() { // 30秒后弹出顶部广告 setTimeout(() => { this.rightAdShow = true }, 30000) }, }, '#right_ad') </script> <script> if ($('.owl-carousel.group_list') && window.screen.availWidth < 992) { $('.owl-carousel.group_list').owlCarousel({ items: 1, animateOut: 'fadeOut', nav: false, loop: true, dots: false, autoplay:true }) } /*设置搜索框回车事件*/ $(document).ready(()=>{ $("#globalSearch").keydown((e)=>{ if (e.keyCode == 13 && window.location.pathname != '/supply-demand' && window.location.pathname != '/job') { let value = $("#globalSearch").val() location.href = '/community/search?keyword=' + value } }) }) /*设置消息通知红点事件*/ if (getToken()) { mtpRequest({ url: '/api/user/get-all-notification-data', method: 'get', }).then((res) => { if (res.ret === 0) { let point = document.querySelector('.notice_point') if (!point) { return false } if (res.data.all_count > 0) { point.style.display = 'flex' if (parseInt(res.data.all_count) > 99) { point.innerHTML = '99' } else { point.innerHTML = res.data.all_count + '' } } else { point.style.display = 'none' } } }) } /*设置关注小组按钮绑定点击事件*/ let group_item_list = document.querySelectorAll('.head_hot_group .group_item') group_item_list.forEach(item=>{ initFollowBtnEvent(item) }) function initFollowBtnEvent(item) { let token = getToken() if (item.attributes && item.attributes['data-id']) { let btn = item.querySelector('.group_btn') let id = item.attributes['data-id'].value let name = item.getElementsByClassName('group_title')[0].innerHTML if (btn) { btn.addEventListener('click',()=>{ if (token) { mtpFollowGroup(parseInt(id),name) } else { this.$globalDialog.showLoginDialog() //弹出登录窗 } }) } } } function mtpFollowGroup(id,name) { mtpRequest({ url: '/api/community/follow-group', method: 'post', data:{ group_id:id } }).then((res) => { if (res.ret === 0) { $('.navbar_left').trigger('upDateFollowGroup') let group_item_list = document.querySelectorAll('.group_item') group_item_list.forEach(item=>{ let btn = item.querySelector('#mtp_follow_group') let btn2 = item.querySelector('#mtp_follow_group2') if (item && item.attributes['data-id'] && parseInt(item.attributes['data-id'].value) === id ) { if (parseInt(btn.attributes['data-follow'].value) === 1) { btn.querySelectorAll('div')[0].style.display = 'block' if (btn.querySelectorAll('div')[1]) { btn.querySelectorAll('div')[1].style.display = 'none' } $('#btn_box_more_' + id).hide() btn.setAttribute('data-follow','0') } else { btn.querySelectorAll('div')[0].style.display = 'none' if (btn.querySelectorAll('div')[1]) { btn.querySelectorAll('div')[1].style.display = 'block' } $('#btn_box_more_' + id).show() btn.setAttribute('data-follow','1') } if (btn2) { if (parseInt(btn2.attributes['data-follow'].value) === 1) { btn2.querySelector('.join_group_box').style.display = 'block' btn2.querySelector('.in_group_box').style.display = 'none' btn2.setAttribute('data-follow','0') } else { btn2.querySelector('.join_group_box').style.display = 'none' btn2.querySelector('.in_group_box').style.display = 'block' btn2.setAttribute('data-follow','1') } } } }) } }) } </script> <script> //定义注册的组件名称(方法名称要同步) let community = initVue({ name:'job_container', data(){ return { loading: false, firstLoading: false, thumbLoading:false, selectTag: 0, jobListParams:{ blade: 'supply-demand-list', view_file: 'supply-demand.components.listModule', page: 1, type: 3, listtype: 3, page_size: 10, category_id: 0, keyword: '' }, typeTab: 0 } }, mounted() { this.initThumbsUp() this.initImageView() this.initCollection() this.initScrollLoad() this.initEnterpriseOpt() /*设置搜索框回车事件*/ $(document).ready(()=>{ this.initColumn() $("#globalSearch").keydown((e)=>{ if (e.keyCode == 13) { let value = $("#globalSearch").val() this.jobListParams.page = 1 this.jobListParams.keyword = value this.loadMoreData(this.jobListParams, 'demandModule') } }) document.getElementById('searchBtn').addEventListener('click',()=>{ let value = $("#searchValue").val() this.jobListParams.page = 1 this.jobListParams.keyword = value this.loadMoreData(this.jobListParams, 'demandModule') }) }) }, methods:{ initColumn() { var swiper = new Swiper ('.swiper', { slidesPerView :'auto', navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, }) }, initImageView() { //初始化图片预览插件 let list = document.querySelectorAll('.media_image') list.forEach(item=>{ new Viewer(item, { url: 'data-original' }); }) }, initScrollLoad() { let that =this window.onscroll = async function(){ var scrollTop = document.documentElement.scrollTop||document.body.scrollTop; var windowHeight = document.documentElement.clientHeight || document.body.clientHeight; var scrollHeight = document.documentElement.scrollHeight||document.body.scrollHeight; scrollHeight = scrollHeight - 100; if(scrollTop+windowHeight>=scrollHeight){ //考虑到滚动的位置一般可能会大于一点可滚动的高度,所以这里不能用等于 let demandModule = document.querySelector('#demandModule .dynamic_module_list') let last_page = demandModule.getAttribute('data-last-page') if (last_page && that.jobListParams.page + 1 <= last_page) { that.jobListParams.page += 1 await that.loadMoreData(that.jobListParams,'demandModule') } } } }, async loadMoreData(params,id) { if (params.page == 1) { this.firstLoading = true } else { this.loading = true } await mtpRequest({ url:'/blade', method:'get', params:params }).then(res=>{ if (res.data) { setTimeout(()=>{ let dom = document.getElementById(id) if (params.page === 1) { dom.innerHTML = '' } dom.innerHTML = dom.innerHTML + res.data this.initImageView() this.initThumbsUp() this.initCollection() this.initEnterpriseOpt() this.loading = false this.firstLoading = false },1000) } }) }, initThumbsUp() { this.$nextTick(()=>{ let btn = document.querySelectorAll('.is_thumbs_up') if (!btn) { return false } btn.forEach(bnt_item=>{ let sd_id = bnt_item.getAttribute('data-id') let btn_list = bnt_item.querySelectorAll('.iconfont') let thumbs_count = bnt_item.querySelector('span') btn_list.forEach(item=>{ item.addEventListener('click',()=>{ if (this.$config.apiToken) { let is_thumbs_btn = bnt_item.getAttribute('data-thumbs_up') mtpRequest({ url:'/api/supplyDemand/thumbs-up', method:'post', params:{ sd_id:sd_id } }).then(res=>{ if (res.ret === 0) { if (parseInt(is_thumbs_btn) === 0) { bnt_item.setAttribute('data-thumbs_up','1') btn_list[0].style.display = 'none' btn_list[1].style.display = 'block' thumbs_count.innerHTML = parseInt(thumbs_count.innerHTML) + 1 + '' } else { bnt_item.setAttribute('data-thumbs_up','0') if (parseInt(thumbs_count.innerHTML) - 1 > 0) { thumbs_count.innerHTML = parseInt(thumbs_count.innerHTML) - 1 + '' } else { thumbs_count.innerHTML = '0' } btn_list[0].style.display = 'block' btn_list[1].style.display = 'none' } } }) } else { this.$globalDialog.showLoginDialog() } }) }) }) }) }, initCollection() { this.$nextTick(()=>{ let btn = document.querySelectorAll('.is_collection') if (!btn) { return false } btn.forEach(bnt_item=>{ let sd_id = bnt_item.getAttribute('data-id') let btn_list = bnt_item.querySelectorAll('.iconfont') let collection_count = bnt_item.querySelector('span') btn_list.forEach(item=>{ item.addEventListener('click',()=>{ if (this.$config.apiToken) { let is_collection = bnt_item.getAttribute('data-collection') mtpRequest({ url:'/api/supplyDemand/collection', method:'post', params:{ sd_id:sd_id } }).then(res=>{ if (res.ret === 0) { if (parseInt(is_collection) === 0) { bnt_item.setAttribute('data-collection','1') btn_list[0].style.display = 'none' btn_list[1].style.display = 'block' collection_count.innerHTML = parseInt(collection_count.innerHTML) + 1 + '' } else { bnt_item.setAttribute('data-collection','0') if (parseInt(collection_count.innerHTML) - 1 > 0) { collection_count.innerHTML = parseInt(collection_count.innerHTML) - 1 + '' } else { collection_count.innerHTML = '0' } btn_list[0].style.display = 'block' btn_list[1].style.display = 'none' } } }) } else { this.$globalDialog.showLoginDialog() } }) }) }) }) }, initEnterpriseOpt() { this.$nextTick(()=>{ let btn = document.querySelectorAll('.is_account_concern') if (!btn) { return false } btn.forEach(bnt_item=>{ let enterpriseId = parseInt(bnt_item.getAttribute('data-id')) let btn_list = bnt_item.querySelectorAll('div') btn_list.forEach(item=>{ item.addEventListener('click', ()=>{ if (!this.$config.apiToken) { this.$globalDialog.showLoginDialog() } else { let is_account_concern = parseInt(bnt_item.getAttribute('data-follow')) let cancel = 0 if (is_account_concern === 1) { cancel = 1 } let params = { enterprise_id: enterpriseId, cancel: cancel, } mtpRequest({ url: '/api/network/enterprise-collection-opt', method: 'get', params, }).then((res) => { if (res.ret === 0) { let item_list = document.querySelectorAll('.module_list_item') item_list.forEach(item => { let btn = item.querySelector('#mtp_follow_enterprise') if (item && item.attributes['data-enterprise_id'] && parseInt(item.attributes['data-enterprise_id'].value) === enterpriseId) { if (parseInt(btn.attributes['data-follow'].value) === 1) { btn.querySelectorAll('div')[0].style.display = 'block' btn.querySelectorAll('div')[1].style.display = 'none' btn.setAttribute('data-follow', '0') } else { btn.querySelectorAll('div')[0].style.display = 'none' btn.querySelectorAll('div')[1].style.display = 'block' btn.setAttribute('data-follow', '1') } } }) if (cancel === 0) { this.$message.success('Focus on success') } else { this.$message.success('Attention cancelled') } } }) } }) }) }) }) }, changeType(id) { this.typeTab = id this.jobListParams.page = 1 this.jobListParams.category_id = id this.loadMoreData(this.jobListParams, 'demandModule') }, showType(status) { let item_list = document.querySelectorAll('.more_type') let type_option = document.querySelector('#type_option') if (status === 1) { item_list.forEach(item=>{ item.style.display = 'block' }) type_option.querySelectorAll('div')[0].style.display = 'none' type_option.querySelectorAll('div')[1].style.display = 'block' } else { item_list.forEach(item=>{ item.style.display = 'none' }) type_option.querySelectorAll('div')[0].style.display = 'block' type_option.querySelectorAll('div')[1].style.display = 'none' } } } },"#job_container") </script> <script> let community_head = initVue({ name:'community_head', data() { return { currSite: 'overseas', currLanguage: 'en-us', locale: { 'label': 'English', 'value': 'en-us' }, languages: this.$config.languages, locales: this.$config.locales } }, created() { this.locales.forEach(v => { if (v.value === this.$i18n.getLocale()) { this.locale = v return false } }) }, methods: { handleLang(lang) { this.currSite = lang.site this.currLanguage = lang.value let url = this.$config.siteDomain[lang.site] + location.pathname + '?lang=' + lang.value this.$i18n.setLocale(lang.value) location.href = url }, } }, "#community_head") </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10