Jing преди 1 седмица
родител
ревизия
b549ee29d4

+ 1 - 1
.nuxt/manifest/latest.json

@@ -1 +1 @@
-{"id":"50e87899-39a6-4f00-87ca-779795dfba92","timestamp":1748507281652}
+{"id":"24460f1f-0efb-40d0-89e3-0f11b7f1b586","timestamp":1748931018731}

+ 1 - 0
.nuxt/manifest/meta/24460f1f-0efb-40d0-89e3-0f11b7f1b586.json

@@ -0,0 +1 @@
+{"id":"24460f1f-0efb-40d0-89e3-0f11b7f1b586","timestamp":1748931018731,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 0 - 1
.nuxt/manifest/meta/50e87899-39a6-4f00-87ca-779795dfba92.json

@@ -1 +0,0 @@
-{"id":"50e87899-39a6-4f00-87ca-779795dfba92","timestamp":1748507281652,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 1 - 1
.nuxt/nuxt.d.ts

@@ -1,6 +1,6 @@
 // Generated by nuxi
-/// <reference types="@nuxt/devtools" />
 /// <reference types="@nuxt/telemetry" />
+/// <reference types="@nuxt/devtools" />
 /// <reference path="types/builder-env.d.ts" />
 /// <reference types="nuxt" />
 /// <reference path="types/app-defaults.d.ts" />

+ 1 - 1
.nuxt/tsconfig.json

@@ -102,7 +102,7 @@
         "./imports"
       ],
       "#app-manifest": [
-        "./manifest/meta/50e87899-39a6-4f00-87ca-779795dfba92.json"
+        "./manifest/meta/24460f1f-0efb-40d0-89e3-0f11b7f1b586.json"
       ],
       "#components": [
         "./components"

+ 37 - 0
assets/css/zgzpClass.less

@@ -968,6 +968,43 @@ input[type="radio"]:checked.cruit_form_radio::before {
     }
 }
 
+.pagination {
+    display: flex;
+    justify-content: center;
+    width: 1200px;
+    height: 34px;
+    margin: 0;
+    margin-bottom: 50px;
+    margin-top: 10px;
+
+    // 鼠标移入后字体颜色
+    .el-pagination::v-deep :hover {
+        color: #489d97;
+    }
+
+    .el-pagination.is-background::v-deep .btn-next,
+    .el-pagination.is-background::v-deep .btn-prev {
+        width: 70px;
+        height: 34px;
+        margin: 0px 10px;
+        border-radius: 4px;
+    }
+
+    .el-pagination.is-background::v-deep .el-pager li {
+        margin: 0px 10px;
+        width: 38px;
+        height: 34px;
+        border-radius: 4px;
+    }
+
+    .el-pagination.is-background::v-deep .btn-next.is-active,
+    .el-pagination.is-background::v-deep .btn-prev.is-active,
+    .el-pagination.is-background::v-deep .el-pager li.is-active {
+        background-color: #489d97;
+        color: #fff;
+    }
+}
+
 .farming {
     width: 100%;
     height: 664px;

+ 15 - 13
middleware/setup.global.js

@@ -1,11 +1,11 @@
 export default async function (to, from) {
     //获得全局url
     const { $webUrl, $CwebUrl } = useNuxtApp();
-    if(getRouteWhiteList(to.path)){
+    if (getRouteWhiteList(to.path)) {
         //如果目标路由是/,或者/404 无需验证
-    }else{
+    } else {
         // to是目标路由对象,from是来源路由对象
-        console.log('进入路由中间件,目标路由:', to.path,"当前路由:",from.path);
+        console.log('进入路由中间件,目标路由:', to.path, "当前路由:", from.path);
         //拆分目标路由
         let parts = parseRoute(to.path)
         console.log(parts)
@@ -19,9 +19,9 @@ export default async function (to, from) {
             query: parts
         })
         console.log(responseRoute)
-        if(responseRoute.code == 200){
+        if (responseRoute.code == 200) {
             //如果路由存在,不做任何操作
-        }else{
+        } else {
             return navigateTo('/404')
         }
     }
@@ -31,17 +31,17 @@ export default async function (to, from) {
 function parseRoute(url) {
     const parts = url.split('/').filter(Boolean); // 分割并过滤空字符串
     const lastPart = parts[parts.length - 1];
-    
+
     // 提取 id(数字.html 的数字部分)
     const idMatch = lastPart.match(/^(\d+)\.html$/);
     const id = idMatch ? idMatch[1] : undefined;
-    
+
     // 如果最后是数字.html、index.html 或 list-数字.html,则去掉它
     const isSpecialRoute = idMatch || lastPart === "index.html" || lastPart.startsWith("list-");
     if (isSpecialRoute) {
         parts.pop();
     }
-    
+
     let all_route, last_route;
 
     // 如果路径以 xiangcunshangcheng 开头
@@ -83,12 +83,12 @@ function parseRoute(url) {
 }
 
 //获得路由白名单列表
-function getRouteWhiteList(path){
-    if(path=='/'){
+function getRouteWhiteList(path) {
+    if (path == '/') {
         console.log('白名单路由!允许访问!')
         //如果用户进入的是首页,直接返回true
         return true
-    }else{
+    } else {
         //如果用户进入的不是首页,则需要判断第一层路由是否在白名单
         const parts = path.split('/').filter(Boolean); // 分割并过滤空字符串
         console.log(parts[0])
@@ -102,12 +102,14 @@ function getRouteWhiteList(path){
 
             "zhaogongzhaopin",//招工招聘
             "zhaogongzhaopinnongmingong",//招工招聘
+            "nongmingongqiuzhi",//农民工求职
+            "nongmingongqiuzhi",//农民工求职
         ]
 
-        if(whiteList.includes(parts[0])){
+        if (whiteList.includes(parts[0])) {
             console.log('白名单路由!允许访问!')
             return true
-        }else{
+        } else {
             return false
         }
     }

+ 606 - 0
pages/nongmingongqiuzhi/[id].vue

@@ -0,0 +1,606 @@
+<template>
+    <div>
+        <HomePageHead></HomePageHead>
+        <HomePageNavigation></HomePageNavigation>
+        <HomeAdvertising :imgurl="adImg1" v-if="adImg1"></HomeAdvertising>
+        <!-- 面包屑导航 -->
+        <div class="breadcrumb">
+            <div class="inner">
+                <span class="location">当前位置:</span>
+                <el-breadcrumb :separator-icon="ArrowRight">
+                    <el-breadcrumb-item>
+                        <NuxtLink to="/">首页</NuxtLink>
+                    </el-breadcrumb-item>
+                    <el-breadcrumb-item>
+                        <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                    </el-breadcrumb-item>
+                    <el-breadcrumb-item>简历详情</el-breadcrumb-item>
+                </el-breadcrumb>
+            </div>
+        </div>
+        <!-- 简历 -->
+        <main class="gerenjianli" v-if="type == 2">
+            <!-- 个人简历 -->
+            <section class="index_1 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">个人简历</a>
+                    </div>
+                    <div class="seek_head_right_box clearfix">
+                        <span class="seek_head_right_text">更新时间:{{ jobInfo.created_at }}</span>
+                    </div>
+                </div>
+                <div class="index_1_left clearfix">
+                    <div class="seek_introduce_box clearfix">
+                        <div class="seek_introduce_left clearfix">
+                            <div class="seek_introduce_head clearfix">
+                                <h4 class="seek_introduce_h4">{{ jobInfo.name }}</h4>
+                                <div class="seek_introduce_tag clearfix" v-if="resume">此简历已被推荐</div>
+                                <div class="seek_introduce_text clearfix" v-if="resume">
+                                    (已有单位把本简历加入人才库)
+                                </div>
+                            </div>
+                            <div class="seek_introduce_title_box clearfix">
+                                <span class="seek_introduce_label">期望岗位:</span>
+                                <span class="seek_introduce_title">{{ jobInfo.jtzw_name }}</span>
+                                <span class="seek_introduce_label">薪资待遇:</span>
+                                <span class="seek_introduce_title">{{ jobInfo.salary_name }}</span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="seek_introduce_foot clearfix">
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.sexy">
+                            {{ jobInfo.sexy == 1 ? '男' : '女' }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.birth">
+                            {{ getTime(jobInfo.birth, 'year', 0) }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.origin">
+                            籍贯:{{ jobInfo.origin }}
+                        </span>
+                        <!-- <span class="seek_introduce_foot_text">汉族</span> -->
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.education_name">
+                            {{ jobInfo.education_name }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.experience_name">
+                            {{ jobInfo.experience_name }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.hunt_cityname">
+                            工作地点:{{ jobInfo.hunt_cityname }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.language_name">
+                            {{ jobInfo.language_name }}
+                        </span>
+                    </div>
+                </div>
+                <div class="index_1_right clearfix">
+                    <img class="index_1_right_img" src="@/public/image/touxiang.png" title="" alt=""
+                        v-if="!jobInfo.imgurl">
+                    <img class="index_1_right_img" :src="jobInfo.imgurl" title="" alt="" v-if="jobInfo.imgurl">
+
+                </div>
+            </section>
+            <!-- 个人简历 -->
+        </main>
+
+        <main class="jianli" v-if="type == 2">
+            <!-- 自我介绍 -->
+            <section class="index_2 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">自我介绍</a>
+                    </div>
+                </div>
+                <article class="seek_article">
+                    {{ jobInfo.self_evaluation }}
+                </article>
+            </section>
+            <!-- 自我介绍 -->
+            <!-- 工作经历 -->
+            <section class="index_3 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">工作经历</a>
+                    </div>
+                </div>
+                <div class="seek_in clearfix" v-for="(item, index) in experienceInfo" :key="index">
+                    <div class="seek_in_head clearfix">
+                        <span class="seek_in_head_text">{{ index + 1 }}.{{ item.company_name }}</span>
+                        <span class="seek_in_head_text">
+                            职位类别:
+                            {{ item.zw_name }}
+                        </span>
+                        <span class="seek_in_head_text">
+                            具体职位:
+                            {{ item.jtzw_name }}
+                        </span>
+                        <span class="seek_in_head_text" style="float: right;" v-if="item.job_timeList">
+                            {{ getTime(item.job_timeList[0], 'year', 0) }}
+                            -
+                            {{ getTime(item.job_timeList[1], 'year', 0) }}
+                        </span>
+                    </div>
+                    <div class="seek_in_ul clearfix">
+                        <div class="seek_in_li clearfix">
+                            <label class="seek_in_label">工作内容:</label>
+                            <div class="seek_in_li_text">{{ item.job_content }}</div>
+                        </div>
+                        <div class="seek_in_li clearfix">
+                            <label class="seek_in_label">工作业绩:</label>
+                            <div class="seek_in_li_text">{{ item.performance }}</div>
+                        </div>
+                    </div>
+                </div>
+            </section>
+            <!-- 工作经历 -->
+            <!-- 教育背景 -->
+            <section class="index_4 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">教育背景</a>
+                    </div>
+                </div>
+                <div class="seek_in clearfix" v-for="(item, index) in education" :key="index">
+                    <div class="seek_in_head clearfix">
+                        <span class="seek_in_head_text"
+                            v-if="item.school_name || item.education_name || item.school_major || item.school_timeList">
+                            {{ index + 1 }}. {{ item.school_name }} {{ education }}
+                        </span>
+                        <span class="seek_in_head_text">
+                            {{ item.education_name }}
+                        </span>
+                        <span class="seek_in_head_text">{{ item.school_major }}</span>
+                        <span class="seek_in_head_text" style="float: right;" v-if="item.school_timeList">
+                            {{ getTime(item.school_timeList[0], 'year', 0) }}
+                            -
+                            {{ getTime(item.school_timeList[1], 'year', 0) }}
+                        </span>
+                    </div>
+                    <div class="seek_in_ul clearfix" v-if="item.school_experience">
+                        <div class="seek_in_li clearfix">
+                            <label class="seek_in_label">在校经历:</label>
+                            <div class="seek_in_li_text">{{ item.school_experience }}</div>
+                        </div>
+                    </div>
+                </div>
+            </section>
+            <!-- 教育背景 -->
+            <!-- 专业技能 -->
+            <section class="index_5 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">专业技能</a>
+                    </div>
+                </div>
+                <div class="seek_in clearfix">
+                    <div class="seek_in_ul clearfix">
+                        <div class="seek_in_li clearfix" v-for="(item, index) in skillList">
+                            <label class="seek_in_label" v-if="item.skill">{{ index + 1 }}.</label>
+                            <div class="seek_in_li_text">{{ item.skill }}</div>
+                        </div>
+                    </div>
+                </div>
+            </section>
+            <!-- 专业技能 -->
+            <!-- 联系方式 -->
+            <section class="index_6 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">联系方式</a>
+                    </div>
+                </div>
+                <div class="seek_in clearfix" v-if="type_id == 10000 || type_id == 3">
+                    <article class="seek_article_2">
+                        {{ jobInfo.phone }}
+                    </article>
+                </div>
+                <div class="seek_in clearfix" v-else>
+                    <article class="seek_article_2">
+                        登录后可查看
+                    </article>
+                </div>
+            </section>
+            <!-- 联系方式 -->
+        </main>
+        <!-- 岗位 -->
+        <!-- <div class="gangwei" v-if="type == 1">
+            <main class="color_main">
+                <main class="index_main">
+                    <section class="index_1 clearfix">
+                        <div class="cruit_head_box clearfix">
+                            <div class="cruit_head_left">
+                                <a class="cruit_head_a cruit_head_only" title="">基本信息</a>
+                            </div>
+                        </div>
+                        <div class="index_1_box clearfix">
+                            <div class="demand_head_box clearfix">
+                                <div class="demand_head_name">{{ jobInfo.title }}</div>
+                                <div class="demand_head_btn hand" v-if="type_id == 1" @click="applyJob">申请该职位</div>
+                                <div class="demand_head_btn1" v-if="type_id != 1">申请该职位</div>
+                            </div>
+                            <div class="cruit_li_2_foot clearfix">
+                                <span class="cruit_li_2_foot_tag cruit_li_2_foot_exper">
+                                    {{ jobInfo.hy_name }}
+                                    &gt;
+                                    {{ jobInfo.zw_name }}
+                                </span>
+                                <span class="cruit_li_2_foot_tag cruit_li_2_foot_addres">{{ jobInfo.city_name }}</span>
+                            </div>
+                        </div>
+                    </section>
+                </main>
+            </main>
+
+            <main class="index_main">
+                <section class="index_2 clearfix">
+                    <div class="demand_1 clearfix">
+                        <div class="demand_left_1 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">基本要求</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_2">
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">工作性质:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.job_nature_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">工作经验:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.experience_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">学历文凭:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.education_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">语言选择:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.language_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">薪资待遇:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.salary_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">截止日期:</div>
+                                    <div class="demand_li_2_text clearfix">
+                                        {{ getTime(jobInfo.created_at, 'year', 1) }}
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="demand_left_2 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">岗位职责</a>
+                                </div>
+                            </div>
+                            <article class="demand_article_1">
+                                {{ jobInfo.description }}
+                            </article>
+                        </div>
+                        <div class="demand_left_3 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">具体要求</a>
+                                </div>
+                            </div>
+                            <article class="demand_article_1">
+                                {{ jobInfo.jt_description }}
+                            </article>
+                        </div>
+                        <div class="demand_left_4 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">联系方式</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_2">
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">地址:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.address_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">邮箱:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.email }}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="demand_left_5 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">公司介绍</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_2">
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">公司规模:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.company_size_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">公司性质:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.company_nature_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">公司行业:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.hy_name }}</div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="demand_2 clearfix">
+                        <div class="demand_right_1 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">招聘单位</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_1">
+                                <span class="demand_ul_1_span dot1">
+                                    {{ companyInfo.business_name }}
+                                </span>
+                            </div>
+                        </div>
+                        <div class="demand_right_2 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">其他职位</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_1">
+                                <NuxtLink class="demand_ul_1_a dot1" :href="`/${item.pinyin}/${item.id}.html`" title=""
+                                    v-for="(item, index) in other_job" :key="item.id">
+                                    {{ item.title }}
+                                </NuxtLink>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+            </main>
+        </div> -->
+        <HomeAdvertising :imgurl="adImg2" v-if="adImg2"></HomeAdvertising>
+        <HomeFoot1></HomeFoot1>
+    </div>
+
+</template>
+<script setup>
+import { ref } from 'vue'
+import { ElBreadcrumb, ElBreadcrumbItem } from 'element-plus'
+import { ArrowRight } from '@element-plus/icons-vue'
+const route = useRoute();
+const type = ref(2);
+
+//获取用户信息
+let type_id = ref('')
+let website_id = ref('')
+const gettypeid = await requestDataPromise('/user/getUserInfo', {
+    method: 'GET',
+    query: {},
+});
+console.log("gettypeid", gettypeid);
+if (gettypeid.code == 200) {
+    type_id.value = gettypeid.data.type_id
+    website_id.value = gettypeid.data.website_id
+}
+
+
+//1.1 获得跳转过来的id
+const articleId = parseInt(route.params.id);  //获得该页面的id
+let articleIdArr = Array.of(articleId);
+// console.log('111222111', articleId);
+
+//1.2 获得父级栏目的名称、id
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[1];
+const targetRoute = segments[2];
+console.log("targetSegment1", targetSegment);
+console.log("targetSegment2", targetRoute);
+
+// if (targetSegment == 'zhaogongzhaopinnongmingong') {
+//     type.value = 1;
+// } else if (targetSegment == 'nongmingongqiuzhi') {
+//     type.value = 2;
+// } else {
+//     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+// }
+
+// const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+// const routeId = numberPart;
+
+let routeId;
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+if (getRouteId.code == 200) {
+    routeId = getRouteId.data.category_id
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//1.3 面包屑导航
+const parent_name = ref("");
+const parent_id = ref("");
+const parent_pinyin = ref("");
+let getParentNav = async () => {
+    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': routeId
+        },
+    });
+
+    if (listData.code == 200) {
+        parent_name.value = listData.data.alias;
+        parent_id.value = listData.data.parent_id;
+        parent_pinyin.value = listData.data.aLIas_pinyin;
+
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取面包屑导航")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//获得父级栏目详情
+getParentNav();
+
+//1.4 展示广告
+let adImg1 = ref({})
+let adImg2 = ref({})
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_detail_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_detail_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+})
+
+// 2 获取详情
+let jobInfo = ref([]) //基本信息
+let companyInfo = ref([])// 公司介绍
+let category = ref([]) // 栏目
+let other_job = ref([]) // 岗位
+let experienceInfo = ref([]) // 工作经历
+let education = ref([]) // 教育背景
+let skillList = ref([]) // 专业技能
+let resume = ref(0)
+
+
+const getDetail = async () => {
+    const listData = await requestDataPromise('/web/getWebsiteJobInfo', {
+        method: 'GET',
+        query: {
+            'id': articleId,
+            'type': type.value,
+            'pageSize': 10,
+        },
+    });
+
+    if (listData.code == 200) {
+        console.log("详情1111", listData.data);
+        // console.log("详情1111222", listData.data.job[0].job_experience);
+        // console.log("详情111122233", JSON.parse(listData.data.job[0].job_experience));
+        // console.log("详情1111222233344", JSON.parse(listData.data.job[0].education_experience));
+        // jobInfo.value = listData.data.job[0];
+        // category.value = listData.data.category;
+        if (type.value == 1) {
+            jobInfo.value = listData.data.job[0];
+            category.value = listData.data.category;
+            companyInfo.value = listData.data.company[0];
+            other_job.value = listData.data.other_job;
+        }
+        if (type.value == 2) {
+            jobInfo.value = listData.data.job[0];
+            category.value = listData.data.category;
+            experienceInfo.value = listData.data.job_experience;
+            education.value = listData.data.education_experience;
+            skillList.value = JSON.parse(listData.data.job[0].skillList);
+            resume.value = listData.data.resume;
+        }
+    }
+
+}
+getDetail();
+
+//获取行业 职位 具体职位
+const industry_categoryList = ref([])  //行业类别列表
+const position_categoryList = ref([])  //职位类别列表
+const positionList = ref([])  //具体职位列表
+
+const getData = async () => {
+    const getData = await requestDataPromise('/web/getWebsiteJobSelect', {
+        method: 'GET',
+        query: {},
+    });
+    if (getData.code == 200) {
+        // console.log("获取到的分类数据:", getData.data);
+        industry_categoryList.value = getData.data.hy; //行业
+        position_categoryList.value = getData.data.zw; //职位
+        positionList.value = getData.data.jtzw; //具体职位
+    }
+}
+getData()
+
+// 3 申请该职位
+// const applyJob = async () => {
+//     const applyJob = await requestDataPromise('/web/getWebsiteJobApply', {
+//         method: 'POST',
+//         query: {
+//             'website_id': website_id.value,
+//             'recruit_id': articleIdArr,
+//         },
+//     });
+//     if (applyJob.code == 200) {
+//         ElMessage({
+//             message: '申请成功',
+//             type: 'success',
+//         });
+//     }
+// }
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+    method: 'GET',
+    query: {
+        'catid': routeId,
+    },
+});
+
+if (setData.code == 200) {
+    let seoTitle = setData.data.seo_title;
+    let seoDescription = setData.data.seo_description;
+    let seoKeywords = setData.data.seo_keywords;
+    let seoSuffix = setData.data.suffix;
+    let seoName = setData.data.website_name;
+
+    useSeoMeta({
+        title: seoTitle + "_" + seoName + "_" + seoSuffix,
+        meta: [
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+        ]
+    });
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:设置列表页面SEO数据")
+    console.log("后端错误反馈:", setData.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//4.设置seo信息 end---------------------------------------->
+</script>
+
+<style scoped lang="less">
+@import "@/assets/css/zgzpjianli.less";
+@import "@/assets/css/zgzpzhaopin.less";
+</style>

+ 617 - 0
pages/nongmingongqiuzhi/index.html.vue

@@ -0,0 +1,617 @@
+<template>
+    <div>
+        <HomePageHead></HomePageHead>
+        <HomePageNavigation></HomePageNavigation>
+        <HomeSecondaryHeading :titleData="pageDataList" :pinyinid="routeId"></HomeSecondaryHeading>
+
+        <main class="index_main">
+            <!-- 三农资讯网-招工招聘 snzx_recruit-->
+            <section class="index_2">
+                <!-- 职位搜索 -->
+                <div class="recruit_head_box clearfix">
+                    <div class="cruit_head_left">
+                        <a class="cruit_head_a cruit_head_only" href="" title="">职位搜索</a>
+                    </div>
+                    <div class="cruit_head_right clearfix">
+                        <span class="cruit_head_right_a" @click="createResume" v-if="type_id == 1">创建个人简历</span>
+                        <!-- <span class="cruit_head_right_a" @click="createJob" v-if="type_id == 3">发布招聘信息</span> -->
+                    </div>
+                </div>
+                <!-- <div class="cruit_ul_1 clearfix">
+                    <NuxtLink class="cruit_ul_1_a" :class="{ cruit_ul_1_a_only: cruit_ul_1_a_only_num == index }"
+                        :href="{ path: '/zhaogongzhaopinnongmingong/search', query: { provinceid: `${item.id}` } }"
+                        title="" v-for="(item, index) in provinceList" :key="item.id">
+                        {{ item.name }}
+                    </NuxtLink>
+                </div> -->
+                <form class="cruit_form clearfix" action=" " method=" ">
+                    <div class="cruit_form_tip clearfix">
+                        <div class="cruit_form_per">
+                            <label class="cruit_form_label">行业类别:</label>
+                            <div class="cruit_form_label_right clearfix">
+                                <el-select v-model="industry_category" placeholder="请选择" style="width: 140px" clearable
+                                    @change="hyChange">
+                                    <el-option v-for="item in industry_categoryList" :key="item.hyid"
+                                        :label="item.hyname" :value="item.hyid" />
+                                </el-select>
+                            </div>
+                        </div>
+                        <div class="cruit_form_per">
+                            <label class="cruit_form_label">职位类别:</label>
+                            <div class="cruit_form_label_right clearfix">
+                                <el-select v-model="position_category" placeholder="请选择" style="width: 140px" clearable
+                                    @change="zwChange">
+                                    <el-option v-for="item in position_categoryList" :key="item.zwid"
+                                        :label="item.zwname" :value="item.zwid" />
+                                </el-select>
+                            </div>
+                        </div>
+                        <div class="cruit_form_per">
+                            <label class="cruit_form_label">具体职位:</label>
+                            <div class="cruit_form_label_right clearfix">
+                                <el-select v-model="position" placeholder="请选择" style="width: 140px" clearable
+                                    no-data-text="请先选择职位类别" @change="jtzwChange">
+                                    <el-option v-for="item in positionList" :key="item.zwid" :label="item.zwname"
+                                        :value="item.zwid" />
+                                </el-select>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="cruit_form_tip clearfix">
+                        <div class="cruit_form_per">
+                            <label class="cruit_form_label">地区选择:</label>
+                            <div class="cruit_form_label_right clearfix">
+                                <el-select v-model="province" placeholder="请选择省" style="width: 140px" clearable
+                                    @change="provinceChange">
+                                    <el-option v-for="item in provinceList" :key="item.id" :label="item.name"
+                                        :value="item.id" />
+                                </el-select>
+                                <el-select v-model="city" placeholder="请选择市" style="width: 140px" no-data-text="请先选择省"
+                                    clearable @change="cityChange">
+                                    <el-option v-for="item in cityList" :key="item.id" :label="item.name"
+                                        :value="item.id" />
+                                </el-select>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="cruit_form_tip clearfix">
+                        <div class="cruit_form_per">
+                            <label class="cruit_form_label">关键词:</label>
+                            <div class="cruit_form_label_right clearfix">
+                                <el-input v-model="keywords" style="width: 300px" placeholder="请输入搜索关键词" clearable />
+                                <el-button type="success" @click="goSearch">搜索</el-button>
+                            </div>
+                        </div>
+                    </div>
+                </form>
+                <!-- 职位搜索 -->
+            </section>
+        </main>
+        <main class="color_main">
+            <main class="index_main">
+                <!-- 招聘职位 -->
+                <!-- <section class="index_3 clearfix">
+                    <div class="recruit_head_box clearfix">
+                        <div class="cruit_head_left">
+                            <a class="cruit_head_a cruit_head_only" href="" title="">招聘职位</a>
+                        </div>
+                    </div>
+                    <div class="cruit_ul_2 clearfix" v-if="job_vacancy">
+                        <div class="cruit_li_2 clearfix" v-for="(item, index) in job_vacancy" :key="item.id">
+                            <NuxtLink class="cruit_li_2_a" :href="`/${item.pinyin}/${item.id}.html`" title="">
+                                <div class="cruit_li_2_head_box clearfix">
+                                    <div class="cruit_li_2_head clearfix dot1">{{ item.title }}</div>
+                                    <div class="cruit_li_2_head_name clearfix dot1">{{ item.business_name }}</div>
+                                </div>
+                                <div class="cruit_li_2_foot_title_box clearfix">
+                                    <span class="cruit_li_2_foot_title">{{ item.jtzw_name }}</span>
+                                </div>
+                                <div class="cruit_li_2_foot clearfix">
+                                    <span class="cruit_li_2_foot_tag cruit_li_2_foot_addres">{{ item.city_name }}</span>
+                                    <span class="cruit_li_2_foot_tag cruit_li_2_foot_exper"
+                                        v-if="item.experience_name || item.education_name">
+                                        <span class="cruit_li_2_foot_tag_in">{{ item.experience_name }}</span>
+                                        <span class="cruit_li_2_foot_tag_in">{{ item.education_name }}</span>
+                                    </span>
+                                    <span class="cruit_li_2_foot_tag cruit_li_2_foot_time">
+                                        {{ getTime(item.due_data, 'year', 1) }}
+                                    </span>
+                                </div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                    <div class="empty" v-if="job_vacancy == false">
+                        <img src="@/public/topic/empty.png" alt="" class="empty_img">
+                        <span class="empty_text">当前暂无数据</span>
+                    </div>
+                </section> -->
+
+                <section class="index_4 clearfix">
+                    <div class="recruit_head_box clearfix">
+                        <div class="cruit_head_left">
+                            <a class="cruit_head_a cruit_head_only" href="" title="">人才服务</a>
+                        </div>
+                    </div>
+                    <div class="cruit_ul_3 clearfix" v-if="job_resume">
+                        <div class="cruit_li_3 clearfix" v-for="(item, index) in job_resume" :key="item.id">
+                            <NuxtLink class="cruit_li_3_a" :href="`/${item.pinyin}/${item.id}.html`" title="">
+                                <div class="cruit_li_3_head_box clearfix">
+                                    <div class="cruit_li_3_head clearfix dot1">{{ item.name }}</div>
+                                    <div class="cruit_li_3_head_name clearfix dot1">{{ item.jtzw_name }}</div>
+                                </div>
+                                <div class="cruit_li_3_text_box clearfix">
+                                    <div class="cruit_li_3_text">
+                                        {{ item.sexy == 1 ? '男' : '女' }}
+                                        <em class="point">·</em>
+                                    </div>
+                                    <div class="cruit_li_3_text" v-if="item.experience">
+                                        {{ item.experience }} 年
+                                        <em class="point">·</em>
+                                    </div>
+
+                                    <div class="cruit_li_3_text">
+                                        {{ item.origin }}
+                                        <em class="point">·</em>
+                                    </div>
+
+                                    <div class="cruit_li_3_text">{{ item.hy_name }}</div>
+                                </div>
+                                <div class="cruit_li_3_tag_box clearfix">
+                                    <span class="cruit_li_3_tag">{{ item.city_name }}</span>
+                                    <span class="cruit_li_3_tag">
+                                        {{ getTime(item.updated_at, 'year', 1) }}
+                                    </span>
+                                </div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                    <div class="empty" v-if="job_resume == false">
+                        <img src="@/public/topic/empty.png" alt="" class="empty_img">
+                        <span class="empty_text">当前暂无数据</span>
+                    </div>
+                    <div class="pagination" v-if="qztotal">
+                        <el-pagination size="small" background layout="prev, pager, next" :total="qztotal" class="mt-4"
+                            prev-text="上一页" next-text="下一页" @change="changePage" />
+                    </div>
+                </section>
+            </main>
+        </main>
+        <HomeAdvertising :imgurl="adImg1" v-if="adImg1"></HomeAdvertising>
+
+        <HomeFoot1></HomeFoot1>
+    </div>
+</template>
+
+<script setup>
+//0.加载页面依赖 start ---------------------------------------->
+import { ref, onMounted } from 'vue';
+import { ElMessage, ElSelect, ElOption, ElInput, ElButton, ElPagination } from 'element-plus';
+const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
+
+//获取用户信息
+let type_id = ref('')
+let website_id = ref('')
+const gettypeid = await requestDataPromise('/user/getUserInfo', {
+    method: 'GET',
+    query: {},
+});
+console.log("gettypeid", gettypeid);
+if (gettypeid.code == 200) {
+    type_id.value = gettypeid.data.type_id
+    website_id.value = gettypeid.data.website_id
+}
+//0.加载页面依赖 end ---------------------------------------->
+
+//1.获得路由id start ---------------------------------------->
+const route = useRoute();
+
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[1];
+//let routeId = 11 //排除路径错误可以打开这个
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+//let routeId = numberPart;
+let routeId;
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+if (getRouteId.code == 200) {
+    routeId = getRouteId.data.category_id
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//1.获得路由id end ---------------------------------------->
+
+//2.页面交互效果 start ---------------------------------------->
+//分页
+const page = ref(1) //页码
+const pageSize = ref(30) //每页显示条数
+const qztotal = ref(0) //总条数
+//分页事件
+let changePage = (value) => {
+    console.log("当前页码", value);
+    // navigateTo(`/${targetSegment}/${value}.html`)
+}
+// 2.1 下拉列表
+// 2.1.1 获取省份
+const province = ref('')  //省
+const provinceid = ref('')  //省
+const city = ref('')  //市
+const provinceList = ref([])  //省列表
+const cityList = ref([])  //市列表
+const getArea = await requestDataPromise('/web/selectWebsiteArea', {
+    method: 'GET',
+    query: {},
+});
+if (getArea.code == 200) {
+    provinceList.value = getArea.data;
+}
+// 2.1.2 获取市
+const provinceChange = async (val) => {
+    console.log('获取到的省份id', val);
+    provinceid.value = val;
+    city.value = '';
+    getCity(val)
+}
+const getCity = async (val) => {
+    const getCity = await requestDataPromise('/web/selectWebsiteArea', {
+        method: 'GET',
+        query: {
+            'pid': val,
+        },
+    });
+    if (getCity.code == 200) {
+        cityList.value = getCity.data;
+    }
+}
+
+// 2.2.1 行业和职位
+const industry_category = ref('')  //行业类别
+const position_category = ref('')  //职位类别
+const position = ref('')  //具体职位
+const keywords = ref('')  //关键词
+const industry_categoryList = ref([])  //行业类别列表
+const position_categoryList = ref([])  //职位类别列表
+const positionList = ref([])  //具体职位列表
+
+const getData = async () => {
+    const getData = await requestDataPromise('/web/getWebsiteJobSelect', {
+        method: 'GET',
+        query: {},
+    });
+    if (getData.code == 200) {
+        // console.log("获取到的分类数据:", getData.data);
+        industry_categoryList.value = getData.data.hy; //行业
+        position_categoryList.value = getData.data.zw; //职位
+        // positionList.value = getData.data.jtzw; //具体职位
+    }
+}
+getData()
+//2.2.2 获取岗位和简历
+const job_vacancy = ref('') // 招聘岗位
+const job_resume = ref('') // 简历
+const getJob = async () => {
+    const getJob = await requestDataPromise('/web/getWebsiteJobList', {
+        method: 'GET',
+        query: {
+            'page': page.value,
+            'pageSize': pageSize.value
+        },
+    });
+    if (getJob.code == 200) {
+        console.log("获取到的岗位和简历:", getJob.data);
+        job_vacancy.value = getJob.data.JobRecruiting; // 招聘岗位
+        job_resume.value = getJob.data.JobHunting; // 简历
+        qztotal.value = getJob.data.hunt_count;
+    }
+}
+getJob()
+
+// 2.3 change事件
+const hyid = ref('')  //行业
+const zwid = ref('')  //职位
+const jtzwid = ref('')  //具体职位
+const cityid = ref('')  //具体城市
+const hyChange = async (val) => {
+    hyid.value = val;
+}
+const zwChange = async (val) => {
+    console.log('111', val);
+
+    zwid.value = val;
+    position.value = '';
+    const getPosition = await requestDataPromise('/web/getPositionList', {
+        method: 'GET',
+        query: {
+            'zwpid': val,
+        },
+    })
+    console.log("11112222", getPosition);
+
+    if (getPosition.code == 200) {
+        positionList.value = getPosition.data; //具体职位 
+    } else {
+        positionList.value = []; //具体职位
+    }
+}
+const jtzwChange = async (val) => {
+    jtzwid.value = val;
+}
+const cityChange = async (val) => {
+    cityid.value = val;
+}
+
+//2.3 搜索
+const router = useRouter();
+const goSearch = async () => {
+    router.push({
+        path: '/nongmingongqiuzhi/search',
+        query: {
+            'hyid': hyid.value,
+            'zwid': zwid.value,
+            'jtzwid': jtzwid.value,
+            'provinceid': provinceid.value,
+            'cityid': cityid.value,
+            'keywords': keywords.value,
+        }
+    })
+}
+// 创建个人简历
+let createResume = () => {
+    window.open($BwebUrl + '/#/addJobHunting', '_blank');
+}
+// 发布招聘信息
+let createJob = () => {
+    window.open($BwebUrl + '/#/creatJob', '_blank');
+}
+
+
+//2.4 展示广告
+let adImg1 = ref({})
+let adImg2 = ref({})
+let adImg3 = ref({})
+let adImg4 = ref({})
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_category_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_category_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+
+    //广告3
+    let url3 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_category_0003`
+    const responseAd3 = await fetch(url3, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd3 = await responseAd3.json();
+    adImg3.value = resultAd3.data[0];
+
+    //广告4
+    let url4 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_category_0004`
+    const responseAd4 = await fetch(url4, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd4 = await responseAd4.json();
+    adImg4.value = resultAd4.data[0];
+
+})
+//2.页面交互效果 end ---------------------------------------->
+
+//3.渲染页面数据 start ---------------------------------------->
+//3.1 该页面上所有的导航池 转为动态数据
+//3.1 该页面上所有的导航池 转为动态数据
+const pageCategory = ref([]);
+//3.2 该页面上需要渲染的所有数据
+const pageData = ref([])
+const pageDataList = ref([])
+//3.3 获取所有导航
+try {
+    const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
+        method: 'GET',
+        query: {
+            'placeid': 1,
+            'pid': routeId,
+            'num': 8
+        },
+    });
+    if (navigateData.code == 200) {
+        // 遍历可用的导航池放到页面中
+        for (let index in navigateData.data) {
+            let data = {
+                title: navigateData.data[index].name,
+                cid: navigateData.data[index].category_id,
+                children_count: navigateData.data[index].children_count,
+                alias: navigateData.data[index].alias,
+                aLIas_pinyin: targetSegment + "/" + navigateData.data[index].aLIas_pinyin,
+                data: [],
+                data1: [],
+                data2: [],
+                data3: [],
+                data4: [],
+                category_id1: "",
+                category_id2: "",
+                category_id3: "",
+                category_id4: "",
+                title1: "",
+                title2: "",
+                title3: "",
+                title4: ""
+            };
+            console.log("导航池数据:", navigateData.data[index]);
+
+            if (navigateData.data[index].type == 1) {
+                //每个页面最多8个模块
+                pageData.value.push(data);
+            }
+
+            if (navigateData.data[index].is_url == 1) {
+                // 处理 URL 的逻辑
+            } else {
+                //每个页面最多8个模块
+                pageDataList.value.push(data);
+            }
+        }
+        console.log("导航池数据11:", pageDataList.value);
+
+        let getJson = [
+            { "parent": routeId + ",0,0", "child": pageDataList.value[0].cid + ",1,1" },//模块1理论前沿
+            { "parent": routeId + ",0,0", "child": pageDataList.value[1].cid + ",5,0" },//模块2典型经验
+            { "parent": routeId + ",0,0", "child": pageDataList.value[2].cid + ",1,6" },//模块3农业天地
+            { "parent": routeId + ",0,0", "child": pageDataList.value[3].cid + ",1,6" },//模块4美丽乡村
+            { "parent": routeId + ",0,0", "child": pageDataList.value[4].cid + ",1,6" },//模块5农民之家
+            { "parent": routeId + ",0,0", "child": pageDataList.value[5].cid + ",6,3" },//模块6农业天地
+        ]
+
+        let jsonString = JSON.stringify(getJson);
+        // getPageAllData(jsonString);
+
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:分类页导航池")
+        console.log("后端错误反馈:", navigateData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+} catch (error) {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:分类页导航渲染阶段")
+    console.log("错误:导航池渲染执行接口出错!请检查首页的14的模块的具体执行方法!")
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//获取资讯
+async function getPageAllData(jsonString) {
+    const mkdata = await requestDataPromise('/web/getWebsiteAllArticle', {
+        method: 'GET',
+        query: {
+            'id': jsonString
+        },
+    });
+    console.log('mkdata', mkdata);
+
+    if (mkdata.code == 200) {
+        console.log(778899)
+        console.log(mkdata.data)
+        //模块1理论前沿
+        if (mkdata.data[0].child.imgnum.length > 0) {
+            pageData.value[0].data.push(mkdata.data[0].child.imgnum[0]);
+        }
+        if (mkdata.data[0].child.imgnum.length > 1) {
+            pageData.value[0].data2.push(mkdata.data[0].child.imgnum[1]);
+        }
+        if (mkdata.data[0].child.imgnum.length > 2) {
+            pageData.value[0].data2.push(mkdata.data[0].child.imgnum[2]);
+        }
+        if (mkdata.data[0].child.imgnum.length > 3) {
+            pageData.value[0].data2.push(mkdata.data[0].child.imgnum[3]);
+        }
+        if (mkdata.data[0].child.imgnum.length > 4) {
+            pageData.value[0].data2.push(mkdata.data[0].child.imgnum[4]);
+        }
+        pageData.value[0].data3 = mkdata.data[0].child.textnum;
+        //模块2典型经验
+        pageData.value[1].data = mkdata.data[1].child.imgnum;
+        //模块3农业天地
+        pageData.value[2].data = mkdata.data[2].child.imgnum;
+        pageData.value[2].data2 = mkdata.data[2].child.textnum;
+        //模块4美丽乡村
+        pageData.value[3].data = mkdata.data[3].child.imgnum;
+        pageData.value[3].data2 = mkdata.data[3].child.textnum;
+        //模块5农民之家
+        pageData.value[4].data = mkdata.data[4].child.imgnum;
+        pageData.value[4].data2 = mkdata.data[4].child.textnum;
+        //模块6农业天地 注意,三农资讯网跟其他行星站不一样,你不需要复制我这个
+        //因为本来二级分类页有9个模块,但是实际应用中只有8个,所以我把本来是模块7
+        //的地方和现有的模块6合并成1个了
+        if (mkdata.data[5].child.imgnum.length > 0) {
+            pageData.value[5].data.push(mkdata.data[5].child.imgnum[0]);
+        }
+        pageData.value[5].data2 = mkdata.data[5].child.textnum;
+        //把模块6的内容放到模块7中一部分
+        for (let i = 1; i < mkdata.data[5].child.imgnum.length && i <= 5; i++) {
+            pageData.value[7].data.push(mkdata.data[5].child.imgnum[i]);
+        }
+        //模块7农村建设
+        pageData.value[6].data = mkdata.data[6].child.imgnum;
+        pageData.value[6].data2 = mkdata.data[6].child.textnum;
+        //模块8高端资讯
+        pageData.value[7].data2 = mkdata.data[7].child.imgnum;
+
+    } else {
+        ElMessage.error(mkdata.message)
+    }
+}
+
+
+//4.设置seo信息 start---------------------------------------->
+const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+    method: 'GET',
+    query: {
+        'catid': routeId
+    },
+});
+
+if (setData.code == 200) {
+    let seoTitle = setData.data.seo_title;
+    let seoDescription = setData.data.seo_description;
+    let seoKeywords = setData.data.seo_keywords;
+    let seoSuffix = setData.data.suffix;
+    let seoName = setData.data.website_name;
+
+    useSeoMeta({
+        title: seoTitle + "_" + seoSuffix,
+        meta: [
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+        ]
+    });
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:设置分类页面SEO数据")
+    console.log("后端错误反馈:", setData.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//4.设置seo信息 end---------------------------------------->
+
+
+
+</script>
+
+<style lang="less" scoped>
+@import '@/assets/css/zgzpClass.less';
+</style>

+ 912 - 0
pages/nongmingongqiuzhi/search.vue

@@ -0,0 +1,912 @@
+<template>
+    <div id="newsList">
+        <!-- 页面头部 -->
+        <HomePageHead></HomePageHead>
+
+        <!-- 导航栏 -->
+        <HomePageNavigation></HomePageNavigation>
+
+        <!-- 列表页广告一 -->
+        <HomeAdvertising :imgurl="adImg1" v-if="adImg1"></HomeAdvertising>
+
+        <!-- 二级标题-->
+        <HomeListSecondaryHeading v-if="parent_name != ''" :name="parent_name" :nav="secondNav" :pinyin="parent_pinyin">
+        </HomeListSecondaryHeading>
+
+        <main class="index_main">
+            <!-- 三农资讯网-招工招聘-社会招聘 snzx_society -->
+            <section class="index_2">
+                <!-- 职位搜索 -->
+                <div class="recruit_head_box clearfix">
+                    <div class="cruit_head_left">
+                        <span class="cruit_head_a cruit_head_only">职位搜索</span>
+                    </div>
+                    <div class="cruit_head_right clearfix">
+                        <span class="cruit_head_right_a" @click="createResume"
+                            v-if="job_search == 1 && type_id == 1">创建个人简历</span>
+                        <!-- <span class="cruit_head_right_a" @click="createJob"
+                            v-if="job_search == 1 && type_id == 3">发布招聘信息</span> -->
+                    </div>
+                </div>
+                <form class="cruit_form clearfix" action=" " method=" ">
+                    <div class="society_form_tip clearfix">
+                        <label class="society_form_label">行业类别:</label>
+                        <div class="society_form_right_a_box clearfix">
+                            <a class="society_form_right_a"
+                                :class="{ society_form_right_a_only: hyid == '' || !hyid || hyid == 0 }" title="全部"
+                                @click="hyChange(0)">
+                                全部
+                            </a>
+                            <NuxtLink v-for="(item, index) in industry_categoryList" :key="item">
+                                <span class="society_form_right_a"
+                                    :class="{ society_form_right_a_only: item.hyid == hyid }" :title="item.hyname"
+                                    @click="hyChange(item.hyid)" v-if="index < 20 && hyIndex == 1">{{ item.hyname
+                                    }}</span>
+                                <span class="society_form_right_a" v-if="hyIndex == 2" @click="hyChange(item.hyid)"
+                                    :class="{ society_form_right_a_only: item.hyid == hyid }" :title="item.hyname">
+                                    {{ item.hyname }}
+                                </span>
+                            </NuxtLink>
+                            <span class="society_form_right_btn" @click="hyIndex = 2" v-if="hyIndex == 1">展开</span>
+                            <span class="society_form_right_btn" @click="hyIndex = 1" v-if="hyIndex == 2">收起</span>
+                        </div>
+                    </div>
+                    <div class="society_form_tip clearfix">
+                        <label class="society_form_label">职位类别:</label>
+                        <div class="society_form_right_a_box clearfix">
+                            <a class="society_form_right_a"
+                                :class="{ society_form_right_a_only: zwid == '' || !zwid || zwid == 0 }" title=""
+                                @click="zwChange(0)">全部</a>
+                            <span v-for="(item, index) in position_categoryList" :key="item">
+                                <span class="society_form_right_a" v-if="index < 20 && zwIndex == 1"
+                                    @click="zwChange(item.zwid)"
+                                    :class="{ society_form_right_a_only: item.zwid == zwid }" :title="item.zwname">
+                                    {{ item.zwname }}
+                                </span>
+                                <span class="society_form_right_a" v-if="zwIndex == 2" @click="zwChange(item.zwid)"
+                                    :class="{ society_form_right_a_only: item.zwid == zwid }" :title="item.zwname">
+                                    {{ item.zwname }}
+                                </span>
+                            </span>
+                            <span class="society_form_right_btn society_form_right_btn_up" @click="zwIndex = 2"
+                                v-if="zwIndex == 1">展开</span>
+                            <span class="society_form_right_btn society_form_right_btn_up" @click="zwIndex = 1"
+                                v-if="zwIndex == 2">收起</span>
+                        </div>
+                    </div>
+                    <div class="society_form_tip clearfix">
+                        <label class="society_form_label">具体职位:</label>
+                        <div class="society_form_right_a_box clearfix">
+                            <a class="society_form_right_a" @click="jtzwChange(0)"
+                                :class="{ society_form_right_a_only: jtzwid == '' || !jtzwid || jtzwid == 0 }"
+                                title="">全部</a>
+                            <span v-for="(item, index) in positionList" :key="item">
+                                <span class="society_form_right_a" v-if="index < 20 && jtzwIndex == 1"
+                                    @click="jtzwChange(item.zwid)"
+                                    :class="{ society_form_right_a_only: item.zwid == jtzwid }" :title="item.zwname">
+                                    {{ item.zwname }}
+                                </span>
+                                <span class="society_form_right_a" v-if="jtzwIndex == 2" @click="jtzwChange(item.zwid)"
+                                    :class="{ society_form_right_a_only: item.zwid == jtzwid }" :title="item.zwname">
+                                    {{ item.zwname }}
+                                </span>
+                            </span>
+                            <!-- <span class="society_form_right_btn">展开</span> -->
+                            <span class="society_form_right_btn" @click="jtzwIndex = 2" v-if="jtzwIndex == 1">展开</span>
+                            <span class="society_form_right_btn" @click="jtzwIndex = 1" v-if="jtzwIndex == 2">收起</span>
+                        </div>
+                    </div>
+                    <div class="cruit_form_tip clearfix">
+                        <div class="cruit_form_per">
+                            <label class="cruit_form_label">地区选择:</label>
+                            <div class="cruit_form_label_right clearfix">
+                                <el-select v-model="province" placeholder="请选择省" style="width: 140px" clearable
+                                    @change="provinceChange">
+                                    <el-option v-for="item in provinceList" :key="item.id" :label="item.name"
+                                        :value="item.id" />
+                                </el-select>
+                                <el-select v-model="city" placeholder="请选择市" style="width: 140px" no-data-text="请先选择省"
+                                    clearable>
+                                    <el-option v-for="item in cityList" :key="item.id" :label="item.name"
+                                        :value="item.id" />
+                                </el-select>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="cruit_form_tip clearfix">
+                        <div class="cruit_form_per">
+                            <label class="cruit_form_label">关键词:</label>
+                            <div class="cruit_form_label_right clearfix">
+                                <el-input v-model="keywords" style="width: 300px" placeholder="请输入搜索关键词" clearable />
+                                <el-button type="success" @click="goSearch">搜索</el-button>
+                            </div>
+                        </div>
+                    </div>
+                </form>
+                <!-- 职位搜索 -->
+            </section>
+        </main>
+        <main class="color_main">
+            <main class="index_main">
+                <!-- 选项卡头 -->
+                <section class="index_3 clearfix">
+                    <div class="recruit_head_box clearfix">
+                        <div class="cruit_head_left">
+                            <!-- <a class="cruit_head_a" :class="{ cruit_head_only: job_search == 1 }"
+                                @mouseover="job_search = 1" title="">找工作</a> -->
+                            <!-- <a class="cruit_head_a" :class="{ cruit_head_only: job_search == 2 }"
+                                @mouseover="job_search = 2" title="">招人才</a> -->
+                            <a class="cruit_head_a cruit_head_only" title="">招人才</a>
+                        </div>
+                        <div class="society_head_right clearfix">
+                            <!-- <div class="society_head_checkbox_box" v-if="job_search == 1 && type_id == 1">
+                                <el-checkbox v-model="allJob" label="" @change="toggleAllJob" />
+                            </div>
+                            <div class="society_head_right_all_box" v-if="job_search == 1 && type_id == 1">
+                                全选
+                            </div> -->
+                            <div class="society_head_checkbox_box" v-if="job_search == 2 && type_id == 3">
+                                <el-checkbox v-model="allResume" label="" @change="toggleAllResume" />
+                            </div>
+                            <div class="society_head_right_all_box" v-if="job_search == 2 && type_id == 3">
+                                全选
+                            </div>
+                            <!-- <div class="society_head_right_a" title="" v-if="job_search == 1 && type_id == 1"
+                                @click="getjob">申请职位</div> -->
+                            <div class="society_head_right_a" v-if="job_search == 2 && type_id == 3"
+                                @click="talkResume">沟通简历</div>
+                        </div>
+                    </div>
+                    <!-- 选项卡头 -->
+                    <!-- 选项卡 -->
+                    <div class=" clearfix">
+                        <!-- 找工作 -->
+                        <!-- <div class=" clearfix" v-show="job_search == 1">
+                            <div class="cruit_ul_2 clearfix" v-if="job_vacancy">
+                                <div class="cruit_li_2 clearfix" v-for="(item, index) in job_vacancy" :key="item.id">
+                                    <div class="society_inp_checkbox_box_li_1 hand" v-if="type_id == 1">
+                                        <el-checkbox v-model="selectedJobs" :value="item.id" @change="jobChange" />
+                                    </div>
+                                    <NuxtLink class="cruit_li_2_a" :href="`/${item.pinyin}/${item.id}.html`" title="">
+                                        <div class="cruit_li_2_head_box clearfix">
+                                            <div class="cruit_li_2_head clearfix dot1">{{ item.title }}</div>
+                                            <div class="cruit_li_2_head_name clearfix dot1">
+                                                {{ item.business_name }}
+                                            </div>
+                                        </div>
+                                        <div class="cruit_li_2_foot_title_box clearfix">
+                                            <span class="cruit_li_2_foot_title">{{ item.jtzw_name }}</span>
+                                        </div>
+                                        <div class="cruit_li_2_foot clearfix">
+                                            <span class="cruit_li_2_foot_tag cruit_li_2_foot_addres">
+                                                {{ item.city_name }}
+                                            </span>
+                                            <span class="cruit_li_2_foot_tag cruit_li_2_foot_exper"
+                                                v-if="item.experience_name || item.education_name">
+                                                <span class="cruit_li_2_foot_tag_in">{{ item.experience_name }}</span>
+                                                <span class="cruit_li_2_foot_tag_in">{{ item.education_name }}</span>
+                                            </span>
+                                            <span class="cruit_li_2_foot_tag cruit_li_2_foot_time">
+                                                {{ getTime(item.updated_at, 'year', 1) }}
+                                            </span>
+                                        </div>
+                                    </NuxtLink>
+                                </div>
+                            </div>
+                            <div class="pagination" v-if="zptotal">
+                                <el-pagination size="small" background layout="prev, pager, next" :total="zptotal"
+                                    class="mt-4" prev-text="上一页" next-text="下一页" @change="changePage" />
+                            </div>
+                            <div class="empty" v-if="job_vacancy == false">
+                                <img src="@/public/topic/empty.png" alt="" class="empty_img">
+                                <span class="empty_text">当前暂无数据</span>
+                            </div>
+                        </div> -->
+                        <!-- 找工作 -->
+                        <!-- 招人才 -->
+                        <div class=" clearfix" v-show="job_search == 2">
+                            <div class="society_ul_3 clearfix" v-if="job_resume">
+                                <div class="society_li_3 clearfix" v-for="(item, index) in job_resume" :key="item">
+                                    <div class="society_inp_checkbox_box_li_3 hand" v-if="type_id == 3">
+                                        <el-checkbox v-model="selectedResume" :value="item.id" @change="jobChange" />
+                                    </div>
+                                    <NuxtLink class="society_li_3_a" :href="`/${item.pinyin}/${item.id}.html`" title="">
+                                        <div class="society_li_3_head_box clearfix">
+                                            <div class="society_li_3_head clearfix dot1">
+                                                {{ item.name }}
+                                            </div>
+                                            <div class="society_li_3_head_name clearfix dot1">
+                                                {{ item.jtzw_name }}
+                                            </div>
+                                        </div>
+                                        <div class="society_li_3_text_box clearfix">
+                                            <div class="society_li_3_text">
+                                                {{ item.sexy == 1 ? '男' : '女' }}
+                                                <em class="point">·</em>
+                                            </div>
+                                            <div class="society_li_3_text" v-if="item.experience">
+                                                {{ item.experience }}年
+                                                <em class="point">·</em>
+                                            </div>
+                                            <div class="society_li_3_text">
+                                                {{ item.origin }}
+                                                <em class="point">·</em>
+                                            </div>
+                                            <div class="society_li_3_text">{{ item.hy_name }}</div>
+                                        </div>
+                                        <div class="society_li_3_tag_box clearfix">
+                                            <span class="society_li_3_tag">{{ item.city_name }}</span>
+                                            <span class="society_li_3_tag">
+                                                {{ getTime(item.updated_at, 'year', 1) }}
+                                            </span>
+                                        </div>
+                                    </NuxtLink>
+                                </div>
+                            </div>
+                            <div class="pagination" v-if="qztotal">
+                                <el-pagination size="small" background layout="prev, pager, next" :total="qztotal"
+                                    class="mt-4" prev-text="上一页" next-text="下一页" @change="changePage" />
+                            </div>
+                            <div class="empty" v-if="job_resume == false">
+                                <img src="@/public/topic/empty.png" alt="" class="empty_img">
+                                <span class="empty_text">当前暂无数据</span>
+                            </div>
+                        </div>
+                        <!-- 招人才 -->
+                    </div>
+                    <!-- 选项卡 -->
+                </section>
+                <!-- 招聘职位 -->
+                <!-- <div class="cruit_alert_box">投递成功</div> -->
+            </main>
+            <!-- 弹框 -->
+            <section class="cruit_alert_rgb clearfix" v-if="resumeBoo">
+                <!-- 请选择要沟通的职位1 -->
+                <!-- <div class="cruit_alert_rgb_box">
+                    <div class="cruit_alert_rgb_head_box">
+                        <div class="cruit_alert_rgb_close hand back100"></div>
+                        <div class="cruit_alert_rgb_head">请选择要沟通的职位</div>
+                    </div>
+                    <form class="cruit_alert_rgb_form clearfix" action=" " method=" ">
+                        <div class="cruit_alert_rgb_form_in clearfix">
+                            <div class="cruit_alert_rgb_li clearfix" v-for="(item, index) in 17" :key="item.id">
+                                <input name="type" type="checkbox" value="" class="cruit_alert_rgb_checkbox hand" />
+                                <label
+                                    class="cruit_alert_rgb_label dot1">高级PHP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程HP工程师</label>
+                            </div>
+                        </div>
+                        <div class="cruit_alert_rgb_foot clearfix">
+                            <input class="cruit_alert_rgb_foot_sub hand" name="" type="submit" value="沟通职位">
+                        </div>
+                    </form>
+                </div> -->
+                <!-- 请选择要沟通的职位2 -->
+                <!-- 请选择要投递的简历1 -->
+                <div class="cruit_alert_rgb_box">
+                    <div class="cruit_alert_rgb_head_box">
+                        <div class="cruit_alert_rgb_close hand back100"></div>
+                        <div class="cruit_alert_rgb_head">请选择要沟通的岗位
+                            <span class="close" @click="resumeBoo = false">x</span>
+                        </div>
+
+                    </div>
+                    <form class="cruit_alert_rgb_form clearfix" action=" " method=" ">
+                        <div class="cruit_alert_rgb_form_in clearfix">
+                            <div class="cruit_alert_rgb_li clearfix" v-for="(item, index) in companyJobList"
+                                :key="item.id">
+                                <!-- <el-checkbox v-model="company_job" :value="item.id" @change="jobChange" /> -->
+                                <el-radio :value="item.id" v-model="company_job" @change="jobChange">
+                                    <div class="cruit_alert_rgb_label dot1">
+                                        {{ item.title }}
+                                    </div>
+                                </el-radio>
+                            </div>
+                        </div>
+                        <div class="cruit_alert_rgb_foot clearfix">
+                            <div class="cruit_alert_rgb_foot_sub hand" @click="getresume">沟通岗位</div>
+                        </div>
+                    </form>
+                </div>
+                <!-- 请选择要投递的简历2 -->
+            </section>
+        </main>
+        <!-- 页面底部 -->
+        <HomeFoot1></HomeFoot1>
+    </div>
+</template>
+
+<script setup>
+//1.页面必备依赖 start ---------------------------------------->
+import { ElSelect, ElOption, ElInput, ElButton, ElPagination, ElCheckbox, ElRadio, ElMessage } from 'element-plus';
+import { ref, onMounted, watch } from 'vue';
+import { useRoute } from 'vue-router'
+//当前列表名称
+
+
+const name = ref('')
+const selectedJobs = ref([])
+const selectedResume = ref([])
+const company_job = ref('')
+const allJob = ref(false)
+const allResume = ref(false)
+const job_search = ref(2)   // 选项卡
+const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
+
+//格式化跳转路径
+const getLinkPathDetail = (item) => {
+    if (item.islink == 1) {
+        return `${item.linkurl}`;
+    } else {
+        //return `/${item.aLIas_pinyin}/${item.id}`;
+        //return `/newsDetail/${item.id}`
+        return `/${item.pinyin}/${item.id}.html`;
+    }
+}
+//获取用户信息
+let type_id = ref('')
+let website_id = ref('')
+const gettypeid = async () => {
+    const gettypeid = await requestDataPromise('/user/getUserInfo', {
+        method: 'GET',
+        query: {},
+    });
+    console.log("gettypeid", gettypeid);
+    if (gettypeid.code == 200) {
+        type_id.value = gettypeid.data.type_id
+        website_id.value = gettypeid.data.website_id
+    }
+}
+gettypeid()
+// onMounted(() => {
+//     gettypeid()
+// })
+
+//1.页面必备依赖 end ---------------------------------------->
+
+//1.获得路由id start ---------------------------------------->
+const route = useRoute();
+
+const hyid = ref(route.query.hyid);
+const zwid = ref(route.query.zwid);
+const jtzwid = ref(route.query.jtzwid);
+const provinceid = ref(route.query.provinceid);
+const cityid = ref(route.query.cityid);
+// const zwid = route.query.zwid;
+// const jtzwid = route.query.jtzwid;
+// const provinceid = route.query.provinceid;
+// const cityid = route.query.cityid;
+const keyword = route.query.keywords;
+
+
+
+let articleId = 0;//路由id
+let pageNum = ref(2);
+let total = ref(0);
+let zptotal = ref(0);
+let qztotal = ref(0);
+const page = ref(1)
+const pageSize = ref(15);
+let hyIndex = ref(1);
+let zwIndex = ref(1);
+let jtzwIndex = ref(1);
+
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[2];
+const targetRoute = segments[1];
+// console.log('111222', targetRoute);
+
+
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+//let routeId = 20 //排除路径错误可以打开这个
+//articleId = numberPart;
+
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetRoute,
+    },
+});
+// console.log("111222333", getRouteId);
+
+if (getRouteId.code == 200) {
+    articleId = getRouteId.data.category_id
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//获得html前的数字
+// const pageUrl = segments[3]; 
+// const pageNumber = pageUrl.split('.')[0];
+// console.log("当前URL中的页码:")
+// console.log(pageNumber)//2
+// pageNum.value = parseInt(pageNumber);
+pageNum.value = parseInt(route.params.id);
+// 创建个人简历
+let createResume = () => {
+    window.open($BwebUrl + '/#/addJobHunting', '_blank');
+}
+// 发布招聘信息
+let createJob = () => {
+    window.open($BwebUrl + '/#/creatJob', '_blank');
+}
+//1.获得路由id end ---------------------------------------->
+
+//2.页面数据 start ---------------------------------------->
+// 2.1.1 获取省份
+const province = ref('')  //省
+const city = ref('')  //市
+const provinceList = ref([])  //省列表
+const cityList = ref([])  //市列表
+const getArea = await requestDataPromise('/web/selectWebsiteArea', {
+    method: 'GET',
+    query: {},
+});
+if (getArea.code == 200) {
+    provinceList.value = getArea.data;
+}
+
+
+// 2.1.2 获取
+const provinceChange = (val) => {
+    provinceid.value = val;
+    city.value = '';
+    console.log('获取到的省份id', val);
+    getCity(val)
+}
+const getCity = async (value) => {
+    const getCity = await requestDataPromise('/web/selectWebsiteArea', {
+        method: 'GET',
+        query: {
+            'pid': value,
+        },
+    });
+    if (getCity.code == 200) {
+        cityList.value = getCity.data;
+    }
+}
+
+
+if (provinceid) {
+    for (let i = 0; i < provinceList.value.length; i++) {
+        if (provinceList.value[i].id == provinceid) {
+            province.value = provinceList.value[i].id;
+        }
+    }
+    const getCity = await requestDataPromise('/web/selectWebsiteArea', {
+        method: 'GET',
+        query: {
+            'pid': provinceid,
+        },
+    });
+    if (getCity.code == 200) {
+        cityList.value = getCity.data;
+    }
+    if (cityid) {
+        for (let i = 0; i < cityList.value.length; i++) {
+            if (cityList.value[i].id == cityid) {
+                city.value = cityList.value[i].id;
+            }
+        }
+    }
+}
+
+
+// 2.2.1 行业和职位
+const keywords = ref('')  //关键词
+const industry_categoryList = ref([])  //行业类别列表
+const position_categoryList = ref([])  //职位类别列表
+const positionList = ref([])  //具体职位列表
+
+const getData = async () => {
+    const getData = await requestDataPromise('/web/getWebsiteJobSelect', {
+        method: 'GET',
+        query: {},
+    });
+    if (getData.code == 200) {
+        // console.log("获取到的分类数据:", getData.data);
+        industry_categoryList.value = getData.data.hy; //行业
+        position_categoryList.value = getData.data.zw; //职位
+        if (zwid.value == 0 || zwid.value == '' || zwid.value == undefined || zwid.value == null) {
+            positionList.value = getData.data.jtzw; //具体职位
+        }
+
+    }
+}
+getData()
+
+const job_vacancy = ref('') // 招聘岗位
+const job_resume = ref('') // 简历
+if (keyword) {
+    keywords.value = keyword
+}
+const getJob = async () => {
+    const getJob = await requestDataPromise('/web/getWebsiteJobList', {
+        method: 'GET',
+        query: {
+            'catid': articleId,
+            'city_id': provinceid.value,
+            'hy_id': hyid.value,
+            'zw_id': zwid.value,
+            'jtzw_id': jtzwid.value,
+            'page': page.value,
+            'pageSize': pageSize.value,
+            'keyword': keywords.value,
+        },
+    });
+    if (getJob.code == 200) {
+        // console.log("获取到的岗位和简历:", getJob.data);
+        job_vacancy.value = getJob.data.JobRecruiting; // 招聘岗位
+        job_resume.value = getJob.data.JobHunting; // 简历
+        zptotal.value = getJob.data.recruit_count;
+        qztotal.value = getJob.data.hunt_count;
+    }
+}
+getJob()
+
+let hyChange = (val) => {
+    console.log('hyChange', val)
+    hyid.value = val;
+    getJob()
+}
+let zwChange = async (val) => {
+    console.log('zwChange', val)
+    zwid.value = val;
+    const getPosition = await requestDataPromise('/web/getPositionList', {
+        method: 'GET',
+        query: {
+            'zwpid': val,
+        },
+    })
+    console.log("11112222", getPosition);
+
+    if (getPosition.code == 200) {
+        positionList.value = getPosition.data; //具体职位 
+    } else {
+        positionList.value = []; //具体职位
+        jtzwid.value = 0; //职位id
+    }
+    getJob()
+}
+let jtzwChange = (val) => {
+    console.log('jtzwChange', val)
+    jtzwid.value = val;
+    getJob()
+}
+
+// 搜索
+const goSearch = async () => {
+    const getJob = await requestDataPromise('/web/getWebsiteJobList', {
+        method: 'GET',
+        query: {
+            'catid': articleId,
+            'city_id': provinceid.value,
+            'hy_id': hyid.value,
+            'zw_id': zwid.value,
+            'jtzw_id': jtzwid.value,
+            'page': page.value,
+            'pageSize': pageSize.value,
+            'keyword': keywords.value,
+        },
+    });
+    console.log("111获取到的岗位和简历:", getJob.data);
+
+    if (getJob.code == 200) {
+        job_vacancy.value = getJob.data.JobRecruiting; // 招聘岗位
+        job_resume.value = getJob.data.JobHunting; // 简历
+        zptotal.value = getJob.data.recruit_count;
+        qztotal.value = getJob.data.hunt_count;
+    }
+}
+
+//2.2change事件
+let jobChange = (val) => {
+    console.log('jobChange', val)
+    console.log('jobChange111', selectedJobs.value)
+    console.log('jobChange111', selectedResume.value)
+    console.log('jobChange11122', company_job.value) //企业会员的职位
+    if (selectedJobs.value.length == job_vacancy.value.length) {
+        allJob.value = true;
+    } else {
+        allJob.value = false;
+    }
+    if (selectedResume.value.length == job_resume.value.length) {
+        allResume.value = true;
+    } else {
+        allResume.value = false;
+    }
+}
+let toggleAllJob = () => {
+    if (allJob.value) {
+        selectedJobs.value = job_vacancy.value.map(item => item.id);
+    } else {
+        selectedJobs.value = [];
+    }
+}
+
+let toggleAllResume = () => {
+    if (allResume.value) {
+        selectedResume.value = job_resume.value.map(item => item.id);
+    } else {
+        selectedResume.value = [];
+    }
+}
+
+
+//分页事件
+let changePage = (value) => {
+    console.log("当前页码", value);
+    navigateTo(`/${targetSegment}/${value}.html`)
+}
+
+//申请职位
+let getjob = async () => {
+    if (selectedJobs.value.length == 0) {
+        ElMessage({
+            message: '请选择要申请的职位',
+            type: 'warning',
+        });
+    } else {
+        // getWebsiteJobApply
+        const getJobList = await requestDataPromise('/web/getWebsiteJobApply', {
+            method: 'POST',
+            body: {
+                'website_id': website_id.value,
+                'recruit_id': selectedJobs.value,
+            }
+        })
+        if (getJobList.code == 200) {
+            ElMessage({
+                message: '投递成功',
+                type: 'success',
+            });
+        } else {
+            ElMessage({
+                message: getJobList.message,
+                type: 'error',
+            });
+        }
+
+    }
+
+}
+//沟通简历
+let talkResume = () => {
+    if (selectedResume.value.length == 0) {
+        ElMessage({
+            message: '请选择要沟通的简历',
+            type: 'warning',
+        });
+        return false;
+    } else {
+        resumeBoo.value = true;
+    }
+    // resumeBoo.value = true;
+
+}
+//获取当前企业会员的职位
+const companyJobList = ref([])
+let companyJOb = async () => {
+    const companyJOb = await requestDataPromise('/web/getWebsiteJobRecruiting', {
+        method: 'POST',
+        body: {
+            'pageSize': pageSize.value,
+            'website_id': website_id.value,
+        }
+    })
+    // console.log("获取到的企业会员的职位11:", companyJOb.data);
+    if (companyJOb.code == 200) {
+        // console.log("获取到的企业会员的职位:", companyJOb.data);
+        companyJobList.value = companyJOb.data
+    }
+}
+companyJOb()
+
+// 沟通简历
+let resumeBoo = ref(false)
+let getresume = async () => {
+    const resumelist = await requestDataPromise('/web/getWebsiteJobResume', {
+        method: 'POST',
+        body: {
+            'website_id': website_id.value,
+            'recruit_id': company_job.value,
+            'hunt_id': selectedResume.value,
+        },
+    });
+
+    // console.log("沟通简历00", resumelist);
+    // console.log("沟通简历11", website_id.value);
+    // console.log("沟通简历22", company_job.value);
+    // console.log("沟通简历33", selectedResume.value);
+    if (resumelist.code == 200) {
+        ElMessage({
+            message: '投递成功',
+            type: 'sussess',
+        });
+        resumeBoo.value = false;
+    } else {
+        ElMessage({
+            message: resumelist.message,
+            type: 'error',
+        });
+        resumeBoo.value = false;
+    }
+    company_job.value = '';
+    selectedResume.value = [];
+    job_search.value = 2
+}
+
+
+
+// //2.3获得页面名称
+// let getPageName = async () => {
+//     const pageName = await requestDataPromise('/web/getOneWebsiteCategory', {
+//         method: 'GET',
+//         query: {
+//             'catid': articleId
+//         },
+//     });
+//     console.log('11122233344',pageName);
+
+//     if (pageName.code == 200) {
+//         name.value = pageName.data.alias
+//     } else {
+//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+//         console.log("错误位置:设置页面标题")
+//         console.log("后端错误反馈:", pageName.message)
+//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+//     }
+// }
+// //获得列表
+// getPageName();
+//2.页面数据 end ---------------------------------------->
+
+
+//3.二级栏目 start ---------------------------------------->
+//3.1通过id获取一级栏目
+const parent_name = ref([]);
+const parent_id = ref([]);
+const parent_pinyin = ref("");
+let getParentNav = async () => {
+    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': articleId
+        },
+    });
+    // console.log("1112223334455", listData.data);
+
+    if (listData.code == 200) {
+        // console.log(111999)
+        console.log(listData.data);
+        parent_name.value = listData.data.alias;
+        parent_id.value = listData.data.category_id;
+        parent_pinyin.value = listData.data.aLIas_pinyin;
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+    getSecondNav();
+}
+//获得父级栏目详情
+getParentNav();
+
+// 3.2获取二级栏目
+const secondNav = ref([]);
+let getSecondNav = async () => {
+    const listData = await requestDataPromise('/web/getWebsiteModelCategory', {
+        method: 'GET',
+        query: {
+            'placeid': 1,
+            'pid': parent_id.value,
+            'num': 8,
+        },
+    });
+    console.log('listData', listData);
+
+    if (listData.code == 200) {
+        secondNav.value = listData.data;
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//3.二级栏目 end ---------------------------------------->
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+    method: 'GET',
+    query: {
+        'catid': articleId
+    },
+});
+
+if (setData.code == 200) {
+    let seoTitle = setData.data.seo_title;
+    let seoDescription = setData.data.seo_description;
+    let seoKeywords = setData.data.seo_keywords;
+    let seoSuffix = setData.data.suffix;
+    let seoName = setData.data.website_name;
+
+    useSeoMeta({
+        title: seoTitle + "_" + seoName + "_" + seoSuffix,
+        meta: [
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+        ]
+    });
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:设置列表页面SEO数据")
+    console.log("后端错误反馈:", setData.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//4.设置seo信息 end---------------------------------------->
+
+
+//5.广告 start---------------------------------------->
+let adImg1 = ref({});
+let adImg2 = ref({});
+
+onMounted(async () => {
+
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_search_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_list_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+
+})
+//5.广告 end---------------------------------------->
+</script>
+
+<style lang="less" scoped>
+@import url('@/assets/css/zgzpsearch.less');
+
+.empty {
+    width: 100%;
+    height: 150px;
+    line-height: 150px;
+    text-align: center;
+}
+
+.empty_img {
+    vertical-align: -30px;
+    margin-right: 20px;
+}
+
+.empty_text {
+    font-size: 26px;
+    color: #999;
+}
+</style>

+ 604 - 0
pages/zhaogongzhaopinnongmingong/[id].vue

@@ -0,0 +1,604 @@
+<template>
+    <div>
+        <HomePageHead></HomePageHead>
+        <HomePageNavigation></HomePageNavigation>
+        <HomeAdvertising :imgurl="adImg1" v-if="adImg1"></HomeAdvertising>
+        <!-- 面包屑导航 -->
+        <div class="breadcrumb">
+            <div class="inner">
+                <span class="location">当前位置:</span>
+                <el-breadcrumb :separator-icon="ArrowRight">
+                    <el-breadcrumb-item>
+                        <NuxtLink to="/">首页</NuxtLink>
+                    </el-breadcrumb-item>
+                    <el-breadcrumb-item>
+                        <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                    </el-breadcrumb-item>
+                    <el-breadcrumb-item>招聘详情</el-breadcrumb-item>
+                </el-breadcrumb>
+            </div>
+        </div>
+        <!-- 简历 -->
+        <!-- <main class="gerenjianli" v-if="type == 2">
+            <section class="index_1 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">个人简历</a>
+                    </div>
+                    <div class="seek_head_right_box clearfix">
+                        <span class="seek_head_right_text">更新时间:{{ jobInfo.created_at }}</span>
+                    </div>
+                </div>
+                <div class="index_1_left clearfix">
+                    <div class="seek_introduce_box clearfix">
+                        <div class="seek_introduce_left clearfix">
+                            <div class="seek_introduce_head clearfix">
+                                <h4 class="seek_introduce_h4">{{ jobInfo.name }}</h4>
+                                <div class="seek_introduce_tag clearfix" v-if="resume">此简历已被推荐</div>
+                                <div class="seek_introduce_text clearfix" v-if="resume">
+                                    (已有单位把本简历加入人才库)
+                                </div>
+                            </div>
+                            <div class="seek_introduce_title_box clearfix">
+                                <span class="seek_introduce_label">期望岗位:</span>
+                                <span class="seek_introduce_title">{{ jobInfo.jtzw_name }}</span>
+                                <span class="seek_introduce_label">薪资待遇:</span>
+                                <span class="seek_introduce_title">{{ jobInfo.salary_name }}</span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="seek_introduce_foot clearfix">
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.sexy">
+                            {{ jobInfo.sexy == 1 ? '男' : '女' }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.birth">
+                            {{ getTime(jobInfo.birth, 'year', 0) }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.origin">
+                            籍贯:{{ jobInfo.origin }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.education_name">
+                            {{ jobInfo.education_name }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.experience_name">
+                            {{ jobInfo.experience_name }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.hunt_cityname">
+                            工作地点:{{ jobInfo.hunt_cityname }}
+                        </span>
+                        <span class="seek_introduce_foot_text" v-if="jobInfo.language_name">
+                            {{ jobInfo.language_name }}
+                        </span>
+                    </div>
+                </div>
+                <div class="index_1_right clearfix">
+                    <img class="index_1_right_img" src="@/public/image/touxiang.png" title="" alt=""
+                        v-if="!jobInfo.imgurl">
+                    <img class="index_1_right_img" :src="jobInfo.imgurl" title="" alt="" v-if="jobInfo.imgurl">
+
+                </div>
+            </section>
+        </main> -->
+        <!-- <main class="jianli" v-if="type == 2">
+            <section class="index_2 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">自我介绍</a>
+                    </div>
+                </div>
+                <article class="seek_article">
+                    {{ jobInfo.self_evaluation }}
+                </article>
+            </section>
+            <section class="index_3 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">工作经历</a>
+                    </div>
+                </div>
+                <div class="seek_in clearfix" v-for="(item, index) in experienceInfo" :key="index">
+                    <div class="seek_in_head clearfix">
+                        <span class="seek_in_head_text">{{ index + 1 }}.{{ item.company_name }}</span>
+                        <span class="seek_in_head_text">
+                            职位类别:
+                            {{ item.zw_name }}
+                        </span>
+                        <span class="seek_in_head_text">
+                            具体职位:
+                            {{ item.jtzw_name }}
+                        </span>
+                        <span class="seek_in_head_text" style="float: right;" v-if="item.job_timeList">
+                            {{ getTime(item.job_timeList[0], 'year', 0) }}
+                            -
+                            {{ getTime(item.job_timeList[1], 'year', 0) }}
+                        </span>
+                    </div>
+                    <div class="seek_in_ul clearfix">
+                        <div class="seek_in_li clearfix">
+                            <label class="seek_in_label">工作内容:</label>
+                            <div class="seek_in_li_text">{{ item.job_content }}</div>
+                        </div>
+                        <div class="seek_in_li clearfix">
+                            <label class="seek_in_label">工作业绩:</label>
+                            <div class="seek_in_li_text">{{ item.performance }}</div>
+                        </div>
+                    </div>
+                </div>
+            </section>
+            <section class="index_4 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">教育背景</a>
+                    </div>
+                </div>
+                <div class="seek_in clearfix" v-for="(item, index) in education" :key="index">
+                    <div class="seek_in_head clearfix">
+                        <span class="seek_in_head_text"
+                            v-if="item.school_name || item.education_name || item.school_major || item.school_timeList">
+                            {{ index + 1 }}. {{ item.school_name }} {{ education }}
+                        </span>
+                        <span class="seek_in_head_text">
+                            {{ item.education_name }}
+                        </span>
+                        <span class="seek_in_head_text">{{ item.school_major }}</span>
+                        <span class="seek_in_head_text" style="float: right;" v-if="item.school_timeList">
+                            {{ getTime(item.school_timeList[0], 'year', 0) }}
+                            -
+                            {{ getTime(item.school_timeList[1], 'year', 0) }}
+                        </span>
+                    </div>
+                    <div class="seek_in_ul clearfix" v-if="item.school_experience">
+                        <div class="seek_in_li clearfix">
+                            <label class="seek_in_label">在校经历:</label>
+                            <div class="seek_in_li_text">{{ item.school_experience }}</div>
+                        </div>
+                    </div>
+                </div>
+            </section>
+            <section class="index_5 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">专业技能</a>
+                    </div>
+                </div>
+                <div class="seek_in clearfix">
+                    <div class="seek_in_ul clearfix">
+                        <div class="seek_in_li clearfix" v-for="(item, index) in skillList">
+                            <label class="seek_in_label" v-if="item.skill">{{ index + 1 }}.</label>
+                            <div class="seek_in_li_text">{{ item.skill }}</div>
+                        </div>
+                    </div>
+                </div>
+            </section>
+            <section class="index_6 clearfix">
+                <div class="seek_head_box clearfix">
+                    <div class="seek_head_left">
+                        <a class="seek_head_a seek_head_only" title="">联系方式</a>
+                    </div>
+                </div>
+                <div class="seek_in clearfix" v-if="type_id == 10000 || type_id == 3">
+                    <article class="seek_article_2">
+                        {{ jobInfo.phone }}
+                    </article>
+                </div>
+                <div class="seek_in clearfix" v-else>
+                    <article class="seek_article_2">
+                        登录后可查看
+                    </article>
+                </div>
+            </section>
+        </main> -->
+        
+        <!-- 岗位 -->
+        <div class="gangwei" v-if="type == 1">
+            <main class="color_main">
+                <main class="index_main">
+                    <section class="index_1 clearfix">
+                        <div class="cruit_head_box clearfix">
+                            <div class="cruit_head_left">
+                                <a class="cruit_head_a cruit_head_only" title="">基本信息</a>
+                            </div>
+                        </div>
+                        <div class="index_1_box clearfix">
+                            <div class="demand_head_box clearfix">
+                                <div class="demand_head_name">{{ jobInfo.title }}</div>
+                                <div class="demand_head_btn hand" v-if="type_id == 1" @click="applyJob">申请该职位</div>
+                                <div class="demand_head_btn1" v-if="type_id != 1">申请该职位</div>
+                            </div>
+                            <div class="cruit_li_2_foot clearfix">
+                                <span class="cruit_li_2_foot_tag cruit_li_2_foot_exper">
+                                    {{ jobInfo.hy_name }}
+                                    &gt;
+                                    {{ jobInfo.zw_name }}
+                                </span>
+                                <span class="cruit_li_2_foot_tag cruit_li_2_foot_addres">{{ jobInfo.city_name }}</span>
+                            </div>
+                        </div>
+                    </section>
+                </main>
+            </main>
+
+            <main class="index_main">
+                <section class="index_2 clearfix">
+                    <div class="demand_1 clearfix">
+                        <div class="demand_left_1 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">基本要求</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_2">
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">工作性质:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.job_nature_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">工作经验:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.experience_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">学历文凭:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.education_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">语言选择:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.language_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">薪资待遇:</div>
+                                    <div class="demand_li_2_text clearfix">{{ jobInfo.salary_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">截止日期:</div>
+                                    <div class="demand_li_2_text clearfix">
+                                        {{ getTime(jobInfo.created_at, 'year', 1) }}
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="demand_left_2 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">岗位职责</a>
+                                </div>
+                            </div>
+                            <article class="demand_article_1">
+                                {{ jobInfo.description }}
+                            </article>
+                        </div>
+                        <div class="demand_left_3 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">具体要求</a>
+                                </div>
+                            </div>
+                            <article class="demand_article_1">
+                                {{ jobInfo.jt_description }}
+                            </article>
+                        </div>
+                        <div class="demand_left_4 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">联系方式</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_2">
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">地址:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.address_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">邮箱:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.email }}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="demand_left_5 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">公司介绍</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_2">
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">公司规模:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.company_size_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">公司性质:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.company_nature_name }}</div>
+                                </div>
+                                <div class="demand_li_2 clearfix">
+                                    <div class="demand_li_2_label">公司行业:</div>
+                                    <div class="demand_li_2_text clearfix">{{ companyInfo.hy_name }}</div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="demand_2 clearfix">
+                        <div class="demand_right_1 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">招聘单位</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_1">
+                                <span class="demand_ul_1_span dot1">
+                                    {{ companyInfo.business_name }}
+                                </span>
+                            </div>
+                        </div>
+                        <div class="demand_right_2 clearfix">
+                            <div class="cruit_head_box clearfix">
+                                <div class="cruit_head_left">
+                                    <a class="cruit_head_a cruit_head_only" title="">其他职位</a>
+                                </div>
+                            </div>
+                            <div class="demand_ul_1">
+                                <NuxtLink class="demand_ul_1_a dot1" :href="`/${item.pinyin}/${item.id}.html`" title=""
+                                    v-for="(item, index) in other_job" :key="item.id">
+                                    {{ item.title }}
+                                </NuxtLink>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+            </main>
+        </div>
+        <HomeAdvertising :imgurl="adImg2" v-if="adImg2"></HomeAdvertising>
+        <HomeFoot1></HomeFoot1>
+    </div>
+
+</template>
+<script setup>
+import { ref } from 'vue'
+import { ElBreadcrumb, ElBreadcrumbItem } from 'element-plus'
+import { ArrowRight } from '@element-plus/icons-vue'
+const route = useRoute();
+const type = ref(1);
+
+//获取用户信息
+let type_id = ref('')
+let website_id = ref('')
+const gettypeid = await requestDataPromise('/user/getUserInfo', {
+    method: 'GET',
+    query: {},
+});
+console.log("gettypeid", gettypeid);
+if (gettypeid.code == 200) {
+    type_id.value = gettypeid.data.type_id
+    website_id.value = gettypeid.data.website_id
+}
+
+
+//1.1 获得跳转过来的id
+const articleId = parseInt(route.params.id);  //获得该页面的id
+let articleIdArr = Array.of(articleId);
+// console.log('111222111', articleId);
+
+//1.2 获得父级栏目的名称、id
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[1];
+const targetRoute = segments[2];
+console.log("targetSegment1", targetSegment);
+console.log("targetSegment2", targetRoute);
+
+// if (targetRoute == 'shehuizhaopin') {
+//     type.value = 1;
+// } else if (targetRoute == 'dagongqiuzhi') {
+//     type.value = 2;
+// } else {
+//     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+// }
+
+// const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+// const routeId = numberPart;
+
+let routeId;
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+if (getRouteId.code == 200) {
+    routeId = getRouteId.data.category_id
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//1.3 面包屑导航
+const parent_name = ref("");
+const parent_id = ref("");
+const parent_pinyin = ref("");
+let getParentNav = async () => {
+    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': routeId
+        },
+    });
+
+    if (listData.code == 200) {
+        parent_name.value = listData.data.alias;
+        parent_id.value = listData.data.parent_id;
+        parent_pinyin.value = listData.data.aLIas_pinyin;
+
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取面包屑导航")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//获得父级栏目详情
+getParentNav();
+
+//1.4 展示广告
+let adImg1 = ref({})
+let adImg2 = ref({})
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_detail_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_detail_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+})
+
+// 2 获取详情
+let jobInfo = ref([]) //基本信息
+let companyInfo = ref([])// 公司介绍
+let category = ref([]) // 栏目
+let other_job = ref([]) // 岗位
+let experienceInfo = ref([]) // 工作经历
+let education = ref([]) // 教育背景
+let skillList = ref([]) // 专业技能
+let resume = ref(0)
+
+
+const getDetail = async () => {
+    const listData = await requestDataPromise('/web/getWebsiteJobInfo', {
+        method: 'GET',
+        query: {
+            'id': articleId,
+            'type': type.value,
+            'pageSize': 10,
+        },
+    });
+
+    if (listData.code == 200) {
+        console.log("详情1111", listData.data);
+        // console.log("详情1111222", listData.data.job[0].job_experience);
+        // console.log("详情111122233", JSON.parse(listData.data.job[0].job_experience));
+        // console.log("详情1111222233344", JSON.parse(listData.data.job[0].education_experience));
+        // jobInfo.value = listData.data.job[0];
+        // category.value = listData.data.category;
+        if (type.value == 1) {
+            jobInfo.value = listData.data.job[0];
+            category.value = listData.data.category;
+            companyInfo.value = listData.data.company[0];
+            other_job.value = listData.data.other_job;
+        }
+        if (type.value == 2) {
+            jobInfo.value = listData.data.job[0];
+            category.value = listData.data.category;
+            experienceInfo.value = listData.data.job_experience;
+            education.value = listData.data.education_experience;
+            skillList.value = JSON.parse(listData.data.job[0].skillList);
+            resume.value = listData.data.resume;
+        }
+    }
+
+}
+getDetail();
+
+//获取行业 职位 具体职位
+const industry_categoryList = ref([])  //行业类别列表
+const position_categoryList = ref([])  //职位类别列表
+const positionList = ref([])  //具体职位列表
+
+const getData = async () => {
+    const getData = await requestDataPromise('/web/getWebsiteJobSelect', {
+        method: 'GET',
+        query: {},
+    });
+    if (getData.code == 200) {
+        // console.log("获取到的分类数据:", getData.data);
+        industry_categoryList.value = getData.data.hy; //行业
+        position_categoryList.value = getData.data.zw; //职位
+        positionList.value = getData.data.jtzw; //具体职位
+    }
+}
+getData()
+
+// 3 申请该职位
+const applyJob = async () => {
+    console.log("点击了申请该职位",website_id.value);
+    console.log("点击了申请该职位",articleIdArr);
+    
+    
+    const applyJob = await requestDataPromise('/web/getWebsiteJobApply', {
+        method: 'POST',
+        query: {
+            'website_id': website_id.value,
+            'recruit_id': articleIdArr,
+        },
+    });
+    console.log("申请该职位", applyJob);
+    
+    if (applyJob.code == 200) {
+        ElMessage({
+            message: '申请成功',
+            type: 'success',
+        });
+    }else{
+        ElMessage({
+            message: applyJob.message,
+            type:'error',
+        });
+    }
+}
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+    method: 'GET',
+    query: {
+        'catid': routeId,
+    },
+});
+
+if (setData.code == 200) {
+    let seoTitle = setData.data.seo_title;
+    let seoDescription = setData.data.seo_description;
+    let seoKeywords = setData.data.seo_keywords;
+    let seoSuffix = setData.data.suffix;
+    let seoName = setData.data.website_name;
+
+    useSeoMeta({
+        title: seoTitle + "_" + seoName + "_" + seoSuffix,
+        meta: [
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+        ]
+    });
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:设置列表页面SEO数据")
+    console.log("后端错误反馈:", setData.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//4.设置seo信息 end---------------------------------------->
+</script>
+
+<style scoped lang="less">
+@import "@/assets/css/zgzpjianli.less";
+@import "@/assets/css/zgzpzhaopin.less";
+</style>

+ 28 - 517
pages/zhaogongzhaopinnongmingong/index.html.vue

@@ -13,17 +13,17 @@
                         <a class="cruit_head_a cruit_head_only" href="" title="">职位搜索</a>
                     </div>
                     <div class="cruit_head_right clearfix">
-                        <span class="cruit_head_right_a" @click="createResume" v-if="type_id == 1">创建个人简历</span>
+                        <!-- <span class="cruit_head_right_a" @click="createResume" v-if="type_id == 1">创建个人简历</span> -->
                         <span class="cruit_head_right_a" @click="createJob" v-if="type_id == 3">发布招聘信息</span>
                     </div>
                 </div>
-                <div class="cruit_ul_1 clearfix">
+                <!-- <div class="cruit_ul_1 clearfix">
                     <NuxtLink class="cruit_ul_1_a" :class="{ cruit_ul_1_a_only: cruit_ul_1_a_only_num == index }"
                         :href="{ path: '/zhaogongzhaopinnongmingong/search', query: { provinceid: `${item.id}` } }"
                         title="" v-for="(item, index) in provinceList" :key="item.id">
                         {{ item.name }}
                     </NuxtLink>
-                </div>
+                </div> -->
                 <form class="cruit_form clearfix" action=" " method=" ">
                     <div class="cruit_form_tip clearfix">
                         <div class="cruit_form_per">
@@ -79,10 +79,7 @@
                             <label class="cruit_form_label">关键词:</label>
                             <div class="cruit_form_label_right clearfix">
                                 <el-input v-model="keywords" style="width: 300px" placeholder="请输入搜索关键词" clearable />
-                                <!-- <NuxtLink
-                                    :href="{ path: '/zhaogongzhaopin/search', query: { hyid: `${hyid}`, zwid: `${zwid}`, jtzwid: `${jtzwid}`, provinceid: `${provinceid}`, cityid: `${cityid}`, keywords: `${keywords}` } }"> -->
                                 <el-button type="success" @click="goSearch">搜索</el-button>
-                                <!-- </NuxtLink> -->
                             </div>
                         </div>
                     </div>
@@ -98,7 +95,6 @@
                         <div class="cruit_head_left">
                             <a class="cruit_head_a cruit_head_only" href="" title="">招聘职位</a>
                         </div>
-                        <!-- <a class="cruit_head_a_more" href="" title=""> 更多 &gt </a> -->
                     </div>
                     <div class="cruit_ul_2 clearfix" v-if="job_vacancy">
                         <div class="cruit_li_2 clearfix" v-for="(item, index) in job_vacancy" :key="item.id">
@@ -128,14 +124,17 @@
                         <img src="@/public/topic/empty.png" alt="" class="empty_img">
                         <span class="empty_text">当前暂无数据</span>
                     </div>
+                    <div class="pagination" v-if="zptotal">
+                        <el-pagination size="small" background layout="prev, pager, next" :total="zptotal" class="mt-4"
+                            prev-text="上一页" next-text="下一页" @change="changePage" />
+                    </div>
                 </section>
 
-                <section class="index_4 clearfix">
+                <!-- <section class="index_4 clearfix">
                     <div class="recruit_head_box clearfix">
                         <div class="cruit_head_left">
                             <a class="cruit_head_a cruit_head_only" href="" title="">人才服务</a>
                         </div>
-                        <!-- <a class="cruit_head_a_more" href="" title=""> 更多 &gt </a> -->
                     </div>
                     <div class="cruit_ul_3 clearfix" v-if="job_resume">
                         <div class="cruit_li_3 clearfix" v-for="(item, index) in job_resume" :key="item.id">
@@ -163,7 +162,6 @@
                                 </div>
                                 <div class="cruit_li_3_tag_box clearfix">
                                     <span class="cruit_li_3_tag">{{ item.city_name }}</span>
-                                    <!-- updated_at -->
                                     <span class="cruit_li_3_tag">
                                         {{ getTime(item.updated_at, 'year', 1) }}
                                     </span>
@@ -175,272 +173,10 @@
                         <img src="@/public/topic/empty.png" alt="" class="empty_img">
                         <span class="empty_text">当前暂无数据</span>
                     </div>
-                </section>
+                </section> -->
             </main>
         </main>
         <HomeAdvertising :imgurl="adImg1" v-if="adImg1"></HomeAdvertising>
-        <!-- 资讯部分 -->
-        <!-- <div class="layoutCopy">
-            <div class="layoutCopyLeft">
-                <div class="layoutCopyLeftTop">
-                    <div class="layoutCopyLeft1" v-if="pageData.length >= 5">
-                        <div class="layoutTitleBox" v-if="pageData[4]">
-                            <div class="layoutTitle" v-if="pageData[4].cid">
-                                <NuxtLink v-if="pageData[4].cid" :href="getLinkPath(pageData[4])" class="active"
-                                    :title="pageData[4].alias">
-                                    {{ pageData[4].alias }}
-                                </NuxtLink>
-                            </div>
-                            <div class="layoutMore" v-if="pageData[4].cid">
-                                <NuxtLink v-if="pageData[4].cid" :href="getLinkPath(pageData[4])"
-                                    :title="pageData[4].alias">
-                                    查看更多
-                                </NuxtLink>
-                            </div>
-                        </div>
-                        <div class="layoutCopyData_style1" v-if="boxData5[0]">
-                            <NuxtLink :href="getLinkPathDetail(boxData5[0])" :title="boxData5[0].title"
-                                :target="boxData5[0].islink == 1 ? '_blank' : '_self'">
-                                <img :src="boxData5[0].imgurl" :alt="boxData5[0].title">
-                                <div>
-                                    <span>{{ boxData5[0].title }}</span>
-                                </div>
-                            </NuxtLink>
-                            <NuxtLink :href="getLinkPathDetail(boxData5data2[0])" :title="boxData5data2[0]"
-                                :target="boxData5data2[0].islink == 1 ? '_blank' : '_self'">
-                                <p class="title">{{ boxData5data2[0].title }}</p>
-                                <p>&nbsp;</p>
-                            </NuxtLink>
-                        </div>
-                    </div>
-                    <div class="layoutCopyLeft2" v-if="pageData.length >= 6">
-                        <div class="layoutTitleBox" v-if="pageData[5]">
-                            <div class="layoutTitle" v-if="pageData[5].cid">
-                                <NuxtLink v-if="pageData[5].cid" :href="getLinkPath(pageData[5])" class="active"
-                                    :title="pageData[5].alias">
-                                    {{ pageData[5].alias }}
-                                </NuxtLink>
-                            </div>
-                            <div class="layoutMore" v-if="pageData[5].cid">
-                                <NuxtLink v-if="pageData[5].cid" :href="getLinkPath(pageData[5])"
-                                    :title="pageData[5].alias">
-                                    查看更多
-                                </NuxtLink>
-                            </div>
-                        </div>
-                        <div class="layoutCopyData_style2">
-                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.title" v-for="item in boxData6"
-                                :target="item.islink == 1 ? '_blank' : '_self'">
-                                <p class="title">{{ item.title }}</p>
-                            </NuxtLink>
-                        </div>
-                    </div>
-                </div>
-                <div class="layoutCopyLeftBottom" v-if="pageData.length >= 7">
-                    <div class="layoutTitleBox" v-if="pageData[6]">
-                        <div class="layoutTitle" v-if="pageData[6].cid">
-                            <NuxtLink v-if="pageData[6].cid" :href="getLinkPath(pageData[6])" class="active"
-                                :title="pageData[6].alias">
-                                {{ pageData[6].alias }}
-                            </NuxtLink>
-                        </div>
-                        <div class="layoutMore" v-if="pageData[6].cid">
-                            <NuxtLink v-if="pageData[6].cid" :href="getLinkPath(pageData[6])"
-                                :title="pageData[6].alias">
-                                查看更多
-                            </NuxtLink>
-                        </div>
-                    </div>
-                    <div class="layoutCopyData_style3">
-                        <div v-for="(item, index) in boxData7">
-                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.title" class="style3link1"
-                                v-if="index == 0" :target="item.islink == 1 ? '_blank' : '_self'">
-                                <div class="time">
-                                    <p>{{ getTime(item.updated_at, 'day', 1) }}</p>
-                                    <p>{{ getTime(item.updated_at, 'month', 1) }}</p>
-                                </div>
-                                <div>
-                                    <p class="title">{{ item.title }}</p>
-                                    <p class="introduce">{{ item.introduce }}</p>
-                                </div>
-                            </NuxtLink>
-                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.title" class="style3link2"
-                                v-if="index > 0" :target="item.islink == 1 ? '_blank' : '_self'">
-                                <div>
-                                    <b></b>
-                                    <p class="title">{{ item.title }}</p>
-                                </div>
-                                <p>&nbsp;</p>
-                            </NuxtLink>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="layoutCopyRight" v-if="pageData.length >= 8">
-                <div class="layoutTitleBox" v-if="pageData[7]">
-                    <div class="layoutTitle" v-if="pageData[7].cid">
-                        <NuxtLink v-if="pageData[7].cid" :href="getLinkPath(pageData[7])" class="active"
-                            :title="pageData[7].alias">
-                            {{ pageData[7].alias }}
-                        </NuxtLink>
-                    </div>
-                    <div class="layoutMore" v-if="pageData[7].cid">
-                        <NuxtLink v-if="pageData[7].cid" :href="getLinkPath(pageData[7])" :title="pageData[7].alias">
-                            查看更多
-                        </NuxtLink>
-                    </div>
-                </div>
-                <div class="layoutCopyData_style4">
-                    <div class="layoutCopyData_pic">
-                        <NuxtLink :href="getLinkPathDetail(item)" :title="item.title" v-for="item in boxData8"
-                            :target="item.islink == 1 ? '_blank' : '_self'">
-                            <img :src="item.imgurl" :alt="item.title">
-                            <p>{{ item.title }}</p>
-                        </NuxtLink>
-                    </div>
-                    <div class="layoutCopyData_text">
-                        <NuxtLink :href="getLinkPathDetail(item)" :title="item.title" v-for="item in boxData88"
-                            :target="item.islink == 1 ? '_blank' : '_self'">
-                            <div class="title">{{ item.title }}</div>
-                            <div class="more">详</div>
-                        </NuxtLink>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="farming">
-            <div class="inner">
-                <div class="farmerLeft">
-                    <div class="farmer">
-                        <h3>
-                            <div class="titleBoxTabs" v-if="pageData.length >= 9">
-                                <span class="active" v-if="pageData[8].cid">
-                                    <NuxtLink :href="getLinkPath(pageData[8])" :title="pageData[8].alias"
-                                        @mouseenter="tabsData1 = 1" :class="{ active: tabsData1 == 1 }">
-                                        {{ pageData[8].alias }}
-                                    </NuxtLink>
-                                </span>
-                                <span v-if="pageData[9].cid">
-                                    <NuxtLink :href="getLinkPath(pageData[9])" :title="pageData[9].alias"
-                                        @mouseenter="tabsData1 = 2" :class="{ active: tabsData1 == 2 }">
-                                        {{ pageData[9].alias }}
-                                    </NuxtLink>
-                                </span>
-                            </div>
-                        </h3>
-                        <ul class="mode1ul_style1" v-if="tabsData1 == 1">
-                            <li v-for="(item, index) in boxData9" class="imgbg">
-                                <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
-                                    :target="item.islink == 1 ? '_blank' : '_self'">
-                                    <img :src="item.imgurl" :alt="item.title">
-                                    <div>
-                                        <p>
-                                            <span v-if="index == 0">专题</span>
-                                            {{ item.title }}
-                                        </p>
-                                        <p>&nbsp;</p>
-                                    </div>
-                                </NuxtLink>
-                            </li>
-                        </ul>
-                        <ul class="mode1ul_style2" v-if="tabsData1 == 1">
-                            <li v-for="item in boxData9data2">
-                                <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
-                                    :target="item.islink == 1 ? '_blank' : '_self'">
-                                    <p class="title">{{ item.title }}</p>
-                                    <p>&nbsp;</p>
-                                </NuxtLink>
-                            </li>
-                        </ul>
-                        <ul class="mode1ul_style1" v-if="tabsData1 == 2">
-                            <li v-for="(item, index) in boxData10" class="imgbg">
-                                <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
-                                    :target="item.islink == 1 ? '_blank' : '_self'">
-                                    <img :src="item.imgurl" :alt="item.title">
-                                    <div>
-                                        <p>
-                                            <span v-if="index == 0">专题</span>
-                                            {{ item.title }}
-                                        </p>
-                                        <p>&nbsp;</p>
-                                    </div>
-                                </NuxtLink>
-                            </li>
-                        </ul>
-                        <ul class="mode1ul_style2" v-if="tabsData1 == 2">
-                            <li v-for="item in boxData10data2">
-                                <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
-                                    :target="item.islink == 1 ? '_blank' : '_self'">
-                                    <p class="title">{{ item.title }}</p>
-                                    <p>&nbsp;</p>
-                                </NuxtLink>
-                            </li>
-                        </ul>
-                    </div>
-                </div>
-                <div class="farmerRight">
-                    <div class="rich" v-if="pageData.length >= 11">
-                        <h3 v-if="pageData[10]">
-                            <span v-if="pageData[10].cid">
-                                <NuxtLink v-if="pageData[10].cid" :href="getLinkPath(pageData[10])" class="active"
-                                    :title="pageData[10].alias">
-                                    {{ pageData[10].alias }}
-                                </NuxtLink>
-                            </span>
-                            <NuxtLink v-if="pageData[10].cid" :href="getLinkPath(pageData[10])"
-                                :title="pageData[10].alias">
-                                查看更多
-                            </NuxtLink>
-                        </h3>
-                        <div class="richList">
-                            <div class="richListPic" v-if="boxData11[0]">
-                                <NuxtLink :href="getLinkPathDetail(boxData11[0])" :title="boxData11[0].title"
-                                    :target="boxData11[0].islink == 1 ? '_blank' : '_self'">
-                                    <img :src="boxData11[0].imgurl" :alt="boxData11[0].title">
-                                    <div>
-                                        <span>{{ boxData11[0].title }}</span>
-                                    </div>
-                                </NuxtLink>
-                            </div>
-                            <div class="richListText" v-if="boxData11data2[0]">
-                                <NuxtLink :href="getLinkPathDetail(boxData11data2[0])" :title="boxData11data2[0].title"
-                                    :target="boxData11data2[0].islink == 1 ? '_blank' : '_self'">
-                                    <span>{{ boxData11data2[0].title }}</span>
-                                </NuxtLink>
-                            </div>
-                            <div class="richListText" v-if="boxData11data2[1]">
-                                <NuxtLink :href="getLinkPathDetail(boxData11data2[1])" :title="boxData11data2[1].title"
-                                    :target="boxData11data2[1].islink == 1 ? '_blank' : '_self'">
-                                    <span>{{ boxData11data2[1].title }}</span>
-                                </NuxtLink>
-                            </div>
-                            <div class="richListPictow" v-if="boxData11[1]">
-                                <NuxtLink :href="getLinkPathDetail(boxData11[1])" :title="boxData11[1].title"
-                                    :target="boxData11[1].islink == 1 ? '_blank' : '_self'">
-                                    <img :src="boxData11[1].imgurl" :alt="boxData11[1].title">
-                                    <div>
-                                        <span>{{ boxData11[1].title }}</span>
-                                    </div>
-                                </NuxtLink>
-                            </div>
-                            <div class="richListText" v-if="boxData11data2[2]">
-                                <NuxtLink :href="getLinkPathDetail(boxData11data2[2])" :title="boxData11data2[2].title"
-                                    :target="boxData11data2[2].islink == 1 ? '_blank' : '_self'">
-                                    <span>{{ boxData11data2[2].title }}</span>
-                                </NuxtLink>
-                            </div>
-                            <div class="richListText" v-if="boxData11data2[3]">
-                                <NuxtLink :href="getLinkPathDetail(boxData11data2[3])" :title="boxData11data2[3].title"
-                                    :target="boxData11data2[3].islink == 1 ? '_blank' : '_self'">
-                                    <span>{{ boxData11data2[3].title }}</span>
-                                </NuxtLink>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div> -->
-
         <HomeFoot1></HomeFoot1>
     </div>
 </template>
@@ -448,7 +184,7 @@
 <script setup>
 //0.加载页面依赖 start ---------------------------------------->
 import { ref, onMounted } from 'vue';
-import { ElMessage, ElSelect, ElOption, ElInput, ElButton } from 'element-plus';
+import { ElMessage, ElSelect, ElOption, ElInput, ElButton, ElPagination } from 'element-plus';
 const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
 
 //获取用户信息
@@ -493,6 +229,15 @@ if (getRouteId.code == 200) {
 //1.获得路由id end ---------------------------------------->
 
 //2.页面交互效果 start ---------------------------------------->
+//分页
+const page = ref(1) //页码
+const pageSize = ref(20) //每页显示条数
+const zptotal = ref(0) //总条数
+//分页事件
+let changePage = (value) => {
+    console.log("当前页码", value);
+    // navigateTo(`/${targetSegment}/${value}.html`)
+}
 // 2.1 下拉列表
 // 2.1.1 获取省份
 const province = ref('')  //省
@@ -552,17 +297,19 @@ getData()
 const job_vacancy = ref('') // 招聘岗位
 const job_resume = ref('') // 简历
 const getJob = async () => {
-    const getJob = await requestDataPromise('/web/getWebsiteJob', {
+    const getJob = await requestDataPromise('/web/getWebsiteJobList', {
         method: 'GET',
         query: {
-            'job1_num': 8,
-            'job2_num': 8
+            'page': page.value,
+            'pageSize': pageSize.value
         },
     });
     if (getJob.code == 200) {
         console.log("获取到的岗位和简历:", getJob.data);
-        job_vacancy.value = getJob.data.job_recuiting; // 招聘岗位
-        job_resume.value = getJob.data.job_hunting; // 简历
+        job_vacancy.value = getJob.data.JobRecruiting; // 招聘岗位
+        job_resume.value = getJob.data.JobHunting; // 简历
+        zptotal.value = getJob.data.recruit_count;
+        // qztotal.value = getJob.data.hunt_count;
     }
 }
 getJob()
@@ -590,7 +337,7 @@ const zwChange = async (val) => {
 
     if (getPosition.code == 200) {
         positionList.value = getPosition.data; //具体职位 
-    }else{
+    } else {
         positionList.value = []; //具体职位
     }
 }
@@ -759,7 +506,7 @@ try {
         ]
 
         let jsonString = JSON.stringify(getJson);
-        getPageAllData(jsonString);
+        // getPageAllData(jsonString);
 
     } else {
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
@@ -836,242 +583,6 @@ async function getPageAllData(jsonString) {
     }
 }
 
-//5.页面基本信息 start---------------------------------------->
-//5.1 导航信息
-// const pageData = ref([
-//     // { cid: "", title: "", data: [] ,children_count:""},
-// ]);
-// //5.2 模块数据
-// //注意前置变量 在nuxt3的ssr模式中,并不存在变量提升。
-// //模块1
-// const boxData1 = ref([])
-// const boxData1data2 = ref([])
-// //模块2
-// const boxData2 = ref([]);
-// //模块3 - 该数据已经在模块中请求
-// //const boxData3 = ref([]);
-// //模块4
-// const boxData4 = ref([]);
-// //模块5
-// const boxData5 = ref([]);
-// const boxData5data2 = ref([]);
-// //模块6
-// const boxData6 = ref([]);
-// //模块7
-// const boxData7 = ref([]);
-// //模块8
-// const boxData8 = ref([]);
-// const boxData88 = ref([]);
-// //模块9 模块10 切换
-// const tabsData1 = ref(1)
-// //模块9
-// const boxData9 = ref([]);
-// const boxData9data2 = ref([]);
-// //模块10 
-// const boxData10 = ref([]);
-// const boxData10data2 = ref([]);
-// //模块11
-// const boxData11 = ref([]);
-// const boxData11data2 = ref([]);
-// //模块12 模块13 切换
-// const tabsData2 = ref(1)
-// //模块12
-// const boxData12 = ref([]);
-// //模块13 - 该模块只有一个入口
-// const boxData13 = ref([]);
-// //模块14 模块15 切换
-// const tabsData3 = ref(1)
-// //模块14 - 该模块含有子导航
-// const boxData14 = ref([]);
-// const boxData14data2 = ref([]);
-// const boxData14menu = ref([]);
-// const boxData14childpinyin = ref([]);
-// const boxData14mainData = ref([]);
-// //模块15
-// const boxData15 = ref([]);
-// const boxData15data2 = ref([]);
-// const boxData15menu = ref([]);
-// const boxData15childpinyin = ref([]);
-// const boxData15mainData = ref([]);
-// //模块16 模块17 切换
-// const tabsData4 = ref(1)
-// //模块16 - 该模块含有子导航
-// const boxData16 = ref([]);
-// const boxData16data2 = ref([]);
-// const boxData16menu = ref([]);
-// const boxData16childpinyin = ref([]);
-// const boxData16mainData = ref([]);
-// //模块17 - 政策法规 本来这个是模块3 原来是单独放到一个模块中的,现在提出来了
-// const boxData17 = ref({})
-
-
-// //3.2获得导航数据
-// try {
-//     const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
-//         method: 'GET',
-//         query: {
-//             'placeid': 1,
-//             'pid': 0,
-//             'num': 30
-//         },
-//     });
-//     if (navigateData.code == 200) {
-//         // 遍历可用的导航池放到页面中
-//         for (let index in navigateData.data) {
-//             let data = {
-//                 title: navigateData.data[index].name,
-//                 cid: navigateData.data[index].category_id,
-//                 children_count: navigateData.data[index].children_count,
-//                 alias: navigateData.data[index].alias,
-//                 aLIas_pinyin: navigateData.data[index].aLIas_pinyin
-//             };
-//             //主体渲染 第一层
-//             //新农村11
-//             if (navigateData.data[index].category_id == 11) { pageData.value[0] = data }
-//             //农民工317
-//             if (navigateData.data[index].category_id == 317) { pageData.value[1] = data }
-//             //第二层
-//             //政策法规1
-//             if (navigateData.data[index].category_id == 1) { pageData.value[2] = data }
-//             //三农之窗2
-//             if (navigateData.data[index].category_id == 2) { pageData.value[3] = data }
-//             //第三层
-//             //区域经济5
-//             if (navigateData.data[index].category_id == 5) { pageData.value[4] = data }
-//             //三农投资6
-//             if (navigateData.data[index].category_id == 12) { pageData.value[5] = data }
-//             //农贸信息13
-//             if (navigateData.data[index].category_id == 13) { pageData.value[6] = data }
-//             //书刊信息24
-//             if (navigateData.data[index].category_id == 24) { pageData.value[7] = data }
-//             //第四层
-//             //三农科教14
-//             if (navigateData.data[index].category_id == 14) { pageData.value[8] = data }
-//             //文化生活15
-//             if (navigateData.data[index].category_id == 15) { pageData.value[9] = data }
-//             //三农服务27
-//             if (navigateData.data[index].category_id == 27) { pageData.value[10] = data }
-//             //第五层
-//             //三农探索16
-//             if (navigateData.data[index].category_id == 16) { pageData.value[11] = data }
-//             //三农人物18
-//             if (navigateData.data[index].category_id == 18) { pageData.value[12] = data }
-//             //第六层
-//             //农资购销21
-//             if (navigateData.data[index].category_id == 21) { pageData.value[13] = data }
-//             //农产购销153
-//             if (navigateData.data[index].category_id == 153) { pageData.value[14] = data }
-//             //第七层
-//             //打假维权26
-//             if (navigateData.data[index].category_id == 26) { pageData.value[15] = data }
-//         }
-//     } else {
-//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-//         console.log("错误位置:首页导航池")
-//         console.log("后端错误反馈:", navigateData.message)
-//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-//     }
-// } catch (error) {
-//     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-//     console.log("错误位置:首页导航渲染阶段")
-//     console.log("错误:导航池渲染执行接口出错!请检查首页的14的模块的具体执行方法!")
-//     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-// }
-
-
-
-// let getJson = [
-//     { "parent": "11,2,8", "child": "" },//模块1新农村 
-//     { "parent": "317,0,8", "child": "" },//模块2农民工 
-//     { "parent": "2,0,5", "child": "" },//模块4三农之窗
-//     { "parent": "5,1,1", "child": "" },//模块5区域经济
-//     { "parent": "12,0,3", "child": "" },//模块6三农投资 
-//     { "parent": "13,0,4", "child": "" },//模块7农贸信息 
-//     { "parent": "24,2,7", "child": "" },//模块8书刊信息
-//     { "parent": "14,2,8", "child": "" },//模块9三农科教 
-//     { "parent": "15,2,8", "child": "" },//模块10文化生活
-//     { "parent": "27,2,4", "child": "" },//模块11三农服务27
-//     { "parent": "16,0,14", "child": "" },//模块12三农探索16
-//     { "parent": "18,0,14", "child": "" },//模块13三农人物18
-//     { "parent": "21,2,8", "child": "188,0,5" },//模块14农资购销
-//     { "parent": "153,2,8", "child": "258,0,5" },//模块15农产购销
-//     { "parent": "26,4,8", "child": "191,0,5" },//模块16打假维权
-//     { "parent": "1,4,8", "child": "" },//模块3政策法规
-// ]
-
-// let jsonString = JSON.stringify(getJson);
-
-// async function getPageAllData() {
-//     const mkdata = await requestDataPromise('/web/getWebsiteAllArticle', {
-//         method: 'GET',
-//         query: {
-//             'id': jsonString
-//         },
-//     });
-//     console.log("makdata:", mkdata);
-
-
-//     if (mkdata.code == 200) {
-//         //模块1新农村
-//         boxData1.value = mkdata.data[0].imgnum;
-//         boxData1data2.value = mkdata.data[0].textnum;
-//         //模块2农名工
-//         boxData2.value = mkdata.data[1].textnum;
-//         //模块4三农之窗
-//         boxData4.value = mkdata.data[2].textnum;
-//         //模块5区域经济
-//         boxData5.value = mkdata.data[3].imgnum;
-//         boxData5data2.value = mkdata.data[3].textnum;
-//         //模块6三农投资
-//         boxData6.value = mkdata.data[4].textnum;
-//         //模块7农贸信息
-//         boxData7.value = mkdata.data[5].textnum;
-//         //模块8书刊信息
-//         boxData8.value = mkdata.data[6].imgnum;
-//         boxData88.value = mkdata.data[6].textnum;
-//         //模块9三农科教
-//         boxData9.value = mkdata.data[7].imgnum;
-//         boxData9data2.value = mkdata.data[7].textnum;
-//         //模块10文化生活
-//         boxData10.value = mkdata.data[8].imgnum;
-//         boxData10data2.value = mkdata.data[8].textnum;
-//         //模块11三农服务
-//         boxData11.value = mkdata.data[9].imgnum;
-//         boxData11data2.value = mkdata.data[9].textnum;
-//         //模块12三农探索
-//         boxData12.value = mkdata.data[10].textnum;
-//         //模块13三农人物
-//         boxData13.value = mkdata.data[11].textnum;
-//         //模块14农资购销 该栏目含有子导航
-//         boxData14.value = mkdata.data[12].imgnum;
-//         boxData14data2.value = mkdata.data[12].textnum;
-//         boxData14menu.value = mkdata.data[12].child.all_childcat;
-//         boxData14childpinyin.value = mkdata.data[12].child.pinyin;
-//         boxData14mainData.value = mkdata.data[12].child.textnum;
-//         //模块14农产购销 
-//         boxData15.value = mkdata.data[13].imgnum;
-//         boxData15data2.value = mkdata.data[13].textnum;
-//         boxData15menu.value = mkdata.data[13].child.all_childcat;
-//         boxData15childpinyin.value = mkdata.data[13].child.pinyin;
-//         boxData15mainData.value = mkdata.data[13].child.textnum;
-//         //模块15打假维权 
-//         boxData16.value = mkdata.data[14].imgnum;
-//         boxData16data2.value = mkdata.data[14].textnum;
-//         boxData16menu.value = mkdata.data[14].child.all_childcat;
-//         boxData16childpinyin.value = mkdata.data[14].child.pinyin;
-//         boxData16mainData.value = mkdata.data[14].child.textnum;
-//         //模块17政策法规
-//         boxData17.value = mkdata.data[15];
-
-//     } else {
-//         ElMessage.error(mkdata.message)
-//     }
-// }
-// getPageAllData();
-
-//5.页面基本信息 end---------------------------------------->
-
-
 //4.设置seo信息 start---------------------------------------->
 const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
     method: 'GET',

+ 11 - 11
pages/zhaogongzhaopinnongmingong/search.vue

@@ -22,8 +22,8 @@
                         <span class="cruit_head_a cruit_head_only">职位搜索</span>
                     </div>
                     <div class="cruit_head_right clearfix">
-                        <span class="cruit_head_right_a" @click="createResume"
-                            v-if="job_search == 1 && type_id == 1">创建个人简历</span>
+                        <!-- <span class="cruit_head_right_a" @click="createResume"
+                            v-if="job_search == 1 && type_id == 1">创建个人简历</span> -->
                         <span class="cruit_head_right_a" @click="createJob"
                             v-if="job_search == 1 && type_id == 3">发布招聘信息</span>
                     </div>
@@ -134,8 +134,8 @@
                         <div class="cruit_head_left">
                             <a class="cruit_head_a" :class="{ cruit_head_only: job_search == 1 }"
                                 @mouseover="job_search = 1" title="">找工作</a>
-                            <a class="cruit_head_a" :class="{ cruit_head_only: job_search == 2 }"
-                                @mouseover="job_search = 2" title="">招人才</a>
+                            <!-- <a class="cruit_head_a" :class="{ cruit_head_only: job_search == 2 }"
+                                @mouseover="job_search = 2" title="">招人才</a> -->
                         </div>
                         <div class="society_head_right clearfix">
                             <div class="society_head_checkbox_box" v-if="job_search == 1 && type_id == 1">
@@ -144,17 +144,17 @@
                             <div class="society_head_right_all_box" v-if="job_search == 1 && type_id == 1">
                                 全选
                             </div>
-                            <div class="society_head_checkbox_box" v-if="job_search == 2 && type_id == 3">
+                            <!-- <div class="society_head_checkbox_box" v-if="job_search == 2 && type_id == 3">
                                 <el-checkbox v-model="allResume" label="" @change="toggleAllResume" />
                             </div>
                             <div class="society_head_right_all_box" v-if="job_search == 2 && type_id == 3">
                                 全选
-                            </div>
+                            </div> -->
                             <div class="society_head_right_a" title="" v-if="job_search == 1 && type_id == 1"
                                 @click="getjob">申请职位</div>
-                            <div class="society_head_right_a" v-if="job_search == 2 && type_id == 3"
+                            <!-- <div class="society_head_right_a" v-if="job_search == 2 && type_id == 3"
                                 @click="talkResume">
-                                沟通简历</div>
+                                沟通简历</div> -->
                             <!-- resumeBoo = true -->
                         </div>
                     </div>
@@ -205,7 +205,7 @@
                         </div>
                         <!-- 找工作 -->
                         <!-- 招人才 -->
-                        <div class=" clearfix" v-show="job_search == 2">
+                        <!-- <div class=" clearfix" v-show="job_search == 2">
                             <div class="society_ul_3 clearfix" v-if="job_resume">
                                 <div class="society_li_3 clearfix" v-for="(item, index) in job_resume" :key="item">
                                     <div class="society_inp_checkbox_box_li_3 hand" v-if="type_id == 3">
@@ -252,7 +252,7 @@
                                 <img src="@/public/topic/empty.png" alt="" class="empty_img">
                                 <span class="empty_text">当前暂无数据</span>
                             </div>
-                        </div>
+                        </div> -->
                         <!-- 招人才 -->
                     </div>
                     <!-- 选项卡 -->
@@ -562,7 +562,7 @@ let zwChange = async (val) => {
 
     if (getPosition.code == 200) {
         positionList.value = getPosition.data; //具体职位 
-    }else{
+    } else {
         positionList.value = []; //具体职位
         jtzwid.value = 0; //职位id
     }