{"id":272,"date":"2024-10-23T15:18:44","date_gmt":"2024-10-23T07:18:44","guid":{"rendered":"https:\/\/huaqing.org.cn\/?page_id=272"},"modified":"2025-09-25T15:00:57","modified_gmt":"2025-09-25T07:00:57","slug":"%e5%8a%a0%e5%85%a5%e6%88%91%e4%bb%ac","status":"publish","type":"page","link":"https:\/\/huaqing.org.cn\/index.php\/%e5%8a%a0%e5%85%a5%e6%88%91%e4%bb%ac\/","title":{"rendered":"\u52a0\u5165\u6211\u4eec"},"content":{"rendered":"\n<style>\n            .job-categories {\n                display: flex;\n                margin-bottom: 20px;\n            }\n            .job-category-button {\n                padding: 10px 20px;\n                margin-right: 10px;\n                cursor: pointer;\n                border: none;\n                background-color: #f0f0f0;\n                transition: background-color 0.3s, transform 0.3s;\n                border-radius: 5px;\n                box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n            }\n            .job-category-button.active {\n                background-color: #0073aa;\n                color: white;\n                transform: translateY(-2px);\n            }\n            .jobs-list {\n                list-style-type: none;\n                padding: 0;\n            }\n            .job-item {\n                position: relative; \/* Add position relative for hover effect *\/\n                padding: 20px;\n                border-bottom: 1px solid #ddd;\n                background-color: #fff;\n                border-radius: 5px;\n                margin-bottom: 10px;\n                box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n                transition: transform 0.3s, box-shadow 0.3s;\n            }\n            .job-item:hover {\n                transform: translateY(-2px);\n                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n            }\n            .job-title {\n                font-size: 1.2em;\n                margin-bottom: 10px;\n                color: #333;\n                display: flex;\n                align-items: center;\n            }\n            .job-title .job-tag {\n                background-color: #0073aa; \/* Match button background color *\/\n                color: white;\n                padding: 2px 6px;\n                border-radius: 15px;\n                margin-left: 10px;\n                font-size: 0.6em; \/* Smaller font size *\/\n                text-transform: uppercase;\n                border: 1px solid #ccc; \/* Add a subtle border *\/\n            }\n            .job-description h5 {\n               \/* margin-top: 0;*\/\n                color: #555;\n            }\n            .job-description ul {\n                padding-left: 20px;\n                color: #666;\n            }\n            .job-description li {\n                margin-bottom: 5px;\n            }\n            .contact-info {\n                display: none; \/* Hide by default *\/\n                position: absolute;\n                bottom: 10px;\n                left: 20px;\n                right: 20px;\n                background-color: rgba(255, 255, 255, 0.9);\n                padding: 10px;\n                border-radius: 5px;\n                box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n                z-index: 1;\n                color: #888; \/* Lighter color *\/\n                font-size: 0.9em; \/* Smaller font size *\/\n                text-align: center;\n            }\n            .job-item:hover .contact-info {\n                display: block; \/* Show on hover *\/\n            }\n            .contact-section {\n                background-color: #0073aa;\n                color: white;\n                padding: 20px;\n                text-align: center;\n                border-radius: 10px;\n                margin-top: 20px;\n                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n            }\n            .contact-section p {\n                margin: 10px 0;\n            }\n            .contact-section a {\n                color: #ffcc00;\n                text-decoration: none;\n                font-weight: bold;\n            }\n            .contact-section a:hover {\n                text-decoration: underline;\n            }\n        <\/style>\n\n        <div class=\"recruitment-type-categories job-categories\">\n            <button class=\"job-category-button active\" data-recruitment-type=\"all\">\u5168\u90e8<\/button>\n            <button class=\"job-category-button\" data-recruitment-type=\"social\">\u793e\u62db<\/button>\n            <button class=\"job-category-button\" data-recruitment-type=\"campus\">\u6821\u62db<\/button>\n        <\/div>\n\n        <div class=\"job-categories hidden\" id=\"specific-job-categories\">\n            <button class=\"job-category-button active\" data-category=\"all\">\u5168\u90e8<\/button>\n            <button class=\"job-category-button\" data-category=\"development\">\u7814\u53d1<\/button>\n            <button class=\"job-category-button\" data-category=\"marketing\">\u5e02\u573a<\/button>\n            <button class=\"job-category-button\" data-category=\"presales\">\u552e\u524d<\/button>\n            <button class=\"job-category-button\" data-category=\"function\">\u804c\u80fd<\/button>\n        <\/div>\n\n        <ul id=\"jobs-list\" class=\"jobs-list\"><\/ul>\n\n        <div class=\"contact-section\">\n            <p>\u611f\u8c22\u60a8\u5bf9\u6211\u4eec\u7684\u8ba4\u53ef\uff01\u5982\u60a8\u7b26\u5408\u5c97\u4f4d\u76f8\u5173\u8981\u6c42\u53ef\u5c06\u7b80\u5386\u53d1\u9001\u5230\u62db\u8058\u90ae\u7bb1<a href=\"mailto:HR@huaqing.ai\">HR@huaqing.ai<\/a>\u3002<\/p>\n            <p>\u6216\u60a8\u53ef\u4ee5\u641c\u7d22BOSS\u76f4\u8058\u7b49\u7f51\u7edc\u62db\u8058\u4e0a\u6211\u516c\u53f8\u7684\u62db\u8058\u4fe1\u606f\uff0c\u9488\u5bf9\u73b0\u6709\u7a7a\u7f3a\u804c\u4f4d\u8fdb\u884c\u6295\u9012\u3002<\/p>\n            <p>\u5f53\u6709\u53ef\u80fd\u9002\u5408\u60a8\u7684\u804c\u4f4d\u65f6\uff0c\u6211\u4eec\u7684\u62db\u8058\u4eba\u5458\u4f1a\u76f4\u63a5\u4e0e\u60a8\u53d6\u5f97\u8054\u7cfb\u3002<\/p>\n            <p>\u771f\u8bda\u671f\u5f85\u60a8\u7684\u52a0\u5165\uff01<\/p>\n        <\/div>\n\n        <script>\n            async function fetchJobsData(url) {\n                try {\n                    const response = await fetch(url);\n                    if (!response.ok) {\n                        throw new Error('Network response was not ok');\n                    }\n                    const data = await response.json();\n                    return data;\n                } catch (error) {\n                    console.error('There has been a problem with your fetch operation:', error);\n                }\n            }\n\n            function renderJobs(jobs) {\n                const jobsList = document.getElementById('jobs-list');\n                jobsList.innerHTML = '';\n                jobs.forEach(job => {\n                    const jobItem = document.createElement('li');\n                    jobItem.className = `job-item ${job.category}`;\n                    jobItem.innerHTML = `\n                        <div class=\"job-title\">\n                            <h4>${job.title} \n                                ${job.recruitmentType.includes('social') ? '<span class=\"job-tag\">\u793e\u62db<\/span>' : ''}\n                                ${job.recruitmentType.includes('campus') ? '<span class=\"job-tag\">\u6821\u62db<\/span>' : ''}\n                            <\/h4>\n                        <\/div>\n                        <div class=\"job-description\">\n                            <h5><b>\u5c97\u4f4d\u804c\u8d23\uff1a<\/b><\/h5>\n                            <ul>\n                                ${job.responsibilities.map(resp => `<li>${resp}<\/li>`).join('')}\n                            <\/ul>\n                            <h5><b>\u4efb\u804c\u8981\u6c42\uff1a<\/b><\/h5>\n                            <ul>\n                                ${job.requirements.map(req => `<li>${req}<\/li>`).join('')}\n                            <\/ul>\n                        <\/div>\n                    `;\n                    jobsList.appendChild(jobItem);\n                });\n            }\n\n            function filterRecruitmentType(recruitmentType) {\n                const specificJobCategories = document.getElementById('specific-job-categories');\n                specificJobCategories.classList.remove('hidden');\n\n                let filteredJobs;\n                if (recruitmentType === 'all') {\n                    filteredJobs = jobsData;\n                } else {\n                    filteredJobs = jobsData.filter(job => job.recruitmentType.includes(recruitmentType));\n                }\n\n                \/\/ Ensure \"\u5168\u90e8\" button in specific categories is active by default\n                const allCategoryButton = specificJobCategories.querySelector('[data-category=\"all\"]');\n                allCategoryButton.classList.add('active');\n                specificJobCategories.querySelectorAll('.job-category-button').forEach(btn => {\n                    if (btn !== allCategoryButton) {\n                        btn.classList.remove('active');\n                    }\n                });\n\n                \/\/ Trigger click event on \"\u5168\u90e8\" button to ensure jobs are rendered\n                allCategoryButton.click();\n\n                renderJobs(filteredJobs);\n            }\n\n            function filterJobs(category) {\n                const selectedRecruitmentType = document.querySelector('.recruitment-type-categories .active').getAttribute('data-recruitment-type');\n                let filteredJobs = jobsData;\n\n                if (selectedRecruitmentType !== 'all') {\n                    filteredJobs = filteredJobs.filter(job => job.recruitmentType.includes(selectedRecruitmentType));\n                }\n\n                if (category === 'all') {\n                    renderJobs(filteredJobs);\n                } else {\n                    const finalFilteredJobs = filteredJobs.filter(job => job.category === category);\n                    renderJobs(finalFilteredJobs);\n                }\n            }\n\n            document.querySelectorAll('.recruitment-type-categories .job-category-button').forEach(button => {\n                button.addEventListener('click', () => {\n                    const recruitmentType = button.getAttribute('data-recruitment-type');\n                    document.querySelectorAll('.recruitment-type-categories .job-category-button').forEach(btn => btn.classList.remove('active'));\n                    button.classList.add('active');\n                    filterRecruitmentType(recruitmentType);\n                });\n            });\n\n            document.querySelectorAll('#specific-job-categories .job-category-button').forEach(button => {\n                button.addEventListener('click', () => {\n                    const category = button.getAttribute('data-category');\n                    document.querySelectorAll('#specific-job-categories .job-category-button').forEach(btn => btn.classList.remove('active'));\n                    button.classList.add('active');\n                    filterJobs(category);\n                });\n            });\n\n            \/\/ Initial render - hide specific job categories initially\n            document.getElementById('specific-job-categories').classList.add('hidden');\n\n            \/\/ Fetch and parse the JSON file directly from the server\n            let jobsData = [];\n            fetchJobsData('https:\/\/huaqing.org.cn\/jobs.json')\n                .then(data => {\n                    if (data) {\n                        jobsData = data;\n                        filterRecruitmentType('all'); \/\/ Initial render\n                    } else {\n                        console.error('Failed to fetch jobs data.');\n                    }\n                })\n                .catch(error => console.error('Error fetching jobs data:', error));\n        <\/script>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5168\u90e8 \u793e\u62db \u6821\u62db \u5168\u90e8 \u7814\u53d1 \u5e02\u573a \u552e\u524d \u804c\u80fd \u611f\u8c22\u60a8\u5bf9\u6211\u4eec\u7684\u8ba4\u53ef\uff01\u5982\u60a8\u7b26\u5408\u5c97\u4f4d\u76f8\u5173\u8981\u6c42\u53ef\u5c06\u7b80\u5386\u53d1\u9001\u5230\u62db\u8058\u90ae\u7bb1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-272","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/huaqing.org.cn\/index.php\/wp-json\/wp\/v2\/pages\/272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huaqing.org.cn\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/huaqing.org.cn\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/huaqing.org.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huaqing.org.cn\/index.php\/wp-json\/wp\/v2\/comments?post=272"}],"version-history":[{"count":79,"href":"https:\/\/huaqing.org.cn\/index.php\/wp-json\/wp\/v2\/pages\/272\/revisions"}],"predecessor-version":[{"id":447,"href":"https:\/\/huaqing.org.cn\/index.php\/wp-json\/wp\/v2\/pages\/272\/revisions\/447"}],"wp:attachment":[{"href":"https:\/\/huaqing.org.cn\/index.php\/wp-json\/wp\/v2\/media?parent=272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}