| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- {include file="header" /}
- <link rel="stylesheet" href="/assets/xtu/job.css?v=20260506-2118">
- {php}
- $jobTitle = trim((string)($title ?? ''));
- $jobTitle = $jobTitle !== '' ? $jobTitle : trim((string)($category['catname'] ?? cms_t('job_detail','岗位详情')));
- $jobAddress = trim((string)($address ?? ''));
- $jobType = trim((string)($jobtype ?? ''));
- $jobPublish = !empty($publish_time) ? date('Y-m-d', (int)$publish_time) : '';
- $jobZhize = trim((string)($zhize ?? ''));
- $jobYaoqiu = trim((string)($yaoqiu ?? ''));
- $jobZhizeHtml = nl2br($jobZhize);
- $jobYaoqiuHtml = nl2br($jobYaoqiu);
- $jobApplyEmail = trim((string)config('site.job_email'));
- $jobApplyEmail = $jobApplyEmail !== '' ? $jobApplyEmail : 'hr@xtu.com';
- $jobMailSubject = rawurlencode(cms_t('job_apply_subject_prefix','应聘岗位:') . $jobTitle);
- {/php}
- <main class="job-page job-detail-page job-dji-detail-page">
- <section class="job-dji-detail-wrap">
- <div class="content-1300-wrap">
- <nav class="job-dji-breadcrumb" aria-label="breadcrumb">
- <a href="{:cms_lang_url(addon_url('cms/index/index'))}">{:cms_t('home','首页')}</a>
- <span>/</span>
- {if !empty($category['parentid'])}
- <a href="{:getCategory($category['parentid'],'url')}">{:getCategory($category['parentid'],'catname')}</a>
- <span>/</span>
- {/if}
- <em>{$category.catname|default=cms_t('job_detail','岗位详情')}</em>
- </nav>
- <article class="job-dji-detail-main">
- <h1 class="job-dji-title">{$jobTitle}</h1>
- <div class="job-dji-meta">
- {if $jobAddress !== ''}<span><i class="bi bi-geo-alt"></i>{$jobAddress}</span>{/if}
- {if $jobType !== ''}<span><i class="bi bi-briefcase"></i>{$jobType}</span>{/if}
- {if $jobPublish !== ''}<span><i class="bi bi-clock"></i>{$jobPublish}</span>{/if}
- </div>
- <section class="job-dji-block">
- <h2>{:cms_t('job_responsibilities','工作职责')}</h2>
- <div class="job-dji-richtext">
- {if $jobZhize !== ''}
- {$jobZhizeHtml|raw}
- {else /}
- <p>{:cms_t('job_no_responsibilities','暂无工作职责说明。')}</p>
- {/if}
- </div>
- </section>
- <section class="job-dji-block">
- <h2>{:cms_t('job_requirements','任职要求')}</h2>
- <div class="job-dji-richtext">
- {if $jobYaoqiu !== ''}
- {$jobYaoqiuHtml|raw}
- {else /}
- <p>{:cms_t('job_no_requirements','暂无任职要求说明。')}</p>
- {/if}
- </div>
- </section>
- <p class="job-dji-apply-note">{:cms_t('job_apply_email_intro','投递简历请发送至邮箱:')}<a href="mailto:{$jobApplyEmail}">{$jobApplyEmail}</a></p>
- <div class="job-dji-actions">
- <a class="job-dji-btn job-dji-btn-primary" href="mailto:{$jobApplyEmail}?subject={$jobMailSubject}"><i class="bi bi-send"></i>{:cms_t('job_apply_now','立即申请')}</a>
- <button class="job-dji-btn job-dji-btn-secondary job-dji-favorite" type="button"><i class="bi bi-star"></i>{:cms_t('job_favorite','收藏')}</button>
- <button class="job-dji-btn job-dji-btn-secondary job-dji-share" type="button"><i class="bi bi-share"></i>{:cms_t('job_share','分享')}</button>
- </div>
- </article>
- </div>
- </section>
- <section class="job-dji-more-section">
- <div class="content-1300-wrap">
- <div class="job-dji-more-wrap">
- <div class="job-dji-more-head">
- <h2>{:cms_t('job_more_jobs','更多岗位')}</h2>
- <a href="{:getCategory($catid,'url')}">{:cms_t('job_view_all','查看全部')}</a>
- </div>
- <div class="job-dji-more-list job-simple-list-wrap">
- {php}$relatedWhere = "`catid` = " . (int)$catid . " AND `id` <> " . (int)$id . " AND `status` = 1";{/php}
- {yzn module="cms" action="lists" catid="$catid" where="$relatedWhere" order="publish_time DESC,id DESC" num="3" return="relatedJobs" moreinfo="1"}
- {volist name="relatedJobs" id="related"}
- <a class="job-card job-simple-row" href="{$related.url}">
- <div class="job-simple-row-title">{$related.title}</div>
- <div class="job-simple-row-meta">
- {if !empty($related.address)}<span><i class="bi bi-geo-alt"></i>{$related.address}</span>{/if}
- {if !empty($related.jobtype)}<span><i class="bi bi-briefcase"></i>{$related.jobtype}</span>{/if}
- {if !empty($related.publish_time)}<span><i class="bi bi-clock"></i>{$related.publish_time|date='Y-m-d'}</span>{/if}
- </div>
- <span class="job-simple-row-link">{:cms_t('job_view_detail','查看详情')} <i class="bi bi-arrow-right"></i></span>
- </a>
- {/volist}
- {/yzn}
- </div>
- </div>
- </div>
- </section>
- {include file="footer-links" /}
- </main>
- <div class="job-share-popover" id="jobShareModal" hidden>
- <button class="job-share-close" type="button" data-share-close aria-label="{:cms_t('job_share_close','关闭')}"><i class="bi bi-x-lg"></i></button>
- <div class="job-share-qr"><img id="jobShareQr" src="" alt="{:cms_t('job_share_qr_alt','岗位分享二维码')}"></div>
- <button class="job-share-copy-mini" type="button" id="jobShareCopy"><i class="bi bi-link-45deg"></i>{:cms_t('job_copy_share_link','复制分享链接')}</button>
- <input id="jobShareLink" type="text" readonly value="" aria-label="{:cms_t('job_share_link','分享链接')}">
- </div>
- <script>
- (function(){
- var modal = document.getElementById('jobShareModal');
- var qr = document.getElementById('jobShareQr');
- var linkInput = document.getElementById('jobShareLink');
- var copyBtn = document.getElementById('jobShareCopy');
- var activeShareBtn = null;
- var textCopied = "{:cms_t('job_copied_paste','已复制,可粘贴')}";
- var textLongPress = "{:cms_t('job_long_press_copy','长按下方链接复制')}";
- var textCopyLink = "{:cms_t('job_copy_share_link','复制分享链接')}";
- var textFavorite = "{:cms_t('job_favorite','收藏')}";
- var textFavoriteTip = "{:cms_t('job_favorite_tip','请按 Ctrl + D 将当前岗位加入浏览器收藏夹')}";
- function currentUrl(){ return window.location.href.split('#')[0]; }
- function setCopyText(ok){
- if (!copyBtn) return;
- copyBtn.innerHTML = ok ? '<i class="bi bi-check2"></i>' + textCopied : '<i class="bi bi-link-45deg"></i>' + textLongPress;
- setTimeout(function(){ copyBtn.innerHTML = '<i class="bi bi-link-45deg"></i>' + textCopyLink; }, 1800);
- }
- function placeShare(){
- if (!modal || !activeShareBtn || modal.hidden) return;
- var rect = activeShareBtn.getBoundingClientRect();
- var width = modal.offsetWidth || 196;
- var gap = 10;
- var left = rect.left + window.pageXOffset + rect.width / 2 - width / 2;
- var minLeft = window.pageXOffset + 12;
- var maxLeft = window.pageXOffset + window.innerWidth - width - 12;
- left = Math.max(minLeft, Math.min(left, maxLeft));
- var top = rect.bottom + window.pageYOffset + gap;
- modal.style.left = left + 'px';
- modal.style.top = top + 'px';
- modal.style.setProperty('--share-arrow-left', (rect.left + window.pageXOffset + rect.width / 2 - left) + 'px');
- }
- function openShare(btn){
- activeShareBtn = btn;
- var url = currentUrl();
- if (linkInput) linkInput.value = url;
- if (qr) qr.src = 'https://api.qrserver.com/v1/create-qr-code/?size=150x150&margin=8&data=' + encodeURIComponent(url);
- if (modal) {
- modal.hidden = false;
- placeShare();
- }
- }
- function closeShare(){ if (modal) modal.hidden = true; activeShareBtn = null; }
- function fallbackCopy(url){
- var ta = document.createElement('textarea');
- ta.value = url;
- ta.setAttribute('readonly', 'readonly');
- ta.style.position = 'fixed';
- ta.style.left = '0';
- ta.style.top = '0';
- ta.style.width = '1px';
- ta.style.height = '1px';
- ta.style.opacity = '0.01';
- ta.style.zIndex = '-1';
- document.body.appendChild(ta);
- ta.focus();
- ta.select();
- ta.setSelectionRange(0, ta.value.length);
- var ok = false;
- try { ok = document.execCommand('copy'); } catch(e) { ok = false; }
- document.body.removeChild(ta);
- return ok;
- }
- function copyLink(){
- var url = currentUrl();
- if (linkInput) linkInput.value = url;
- var ok = fallbackCopy(url);
- if (ok) { setCopyText(true); return; }
- if (navigator.clipboard && window.isSecureContext) {
- navigator.clipboard.writeText(url).then(function(){ setCopyText(true); }).catch(function(){
- if (linkInput) { linkInput.focus(); linkInput.select(); linkInput.setSelectionRange(0, linkInput.value.length); }
- setCopyText(false);
- });
- } else {
- if (linkInput) { linkInput.focus(); linkInput.select(); linkInput.setSelectionRange(0, linkInput.value.length); }
- setCopyText(false);
- }
- }
- document.addEventListener('click', function (event) {
- var shareBtn = event.target.closest('.job-dji-share');
- var favBtn = event.target.closest('.job-dji-favorite');
- var closeBtn = event.target.closest('[data-share-close]');
- if (shareBtn) { event.stopPropagation(); openShare(shareBtn); return; }
- if (favBtn) favoritePage(favBtn);
- if (closeBtn) { closeShare(); return; }
- if (modal && !modal.hidden && !event.target.closest('#jobShareModal')) closeShare();
- });
- if (copyBtn) copyBtn.addEventListener('click', function(event){ event.stopPropagation(); copyLink(); });
- window.addEventListener('resize', placeShare);
- window.addEventListener('scroll', placeShare, true);
- function favoritePage(btn){
- var url = currentUrl();
- var title = document.title;
- try {
- if (window.external && ('addFavorite' in window.external)) {
- window.external.addFavorite(url, title);
- return;
- }
- if (window.sidebar && window.sidebar.addPanel) {
- window.sidebar.addPanel(title, url, '');
- return;
- }
- } catch(e) {}
- alert(textFavoriteTip);
- if (btn) btn.innerHTML = '<i class="bi bi-star-fill"></i>' + textFavorite;
- }
- document.addEventListener('keydown', function(event){ if (event.key === 'Escape') closeShare(); });
- })();
- </script>
- {include file="footer" /}
|