瀏覽代碼

完成除频道页的所有页面开发

完成除频道页的所有页面开发
dangyunlong 1 天之前
父節點
當前提交
8d6255cb14

+ 4 - 0
404.vue

@@ -11,6 +11,10 @@
 //import { ElButton } from 'element-plus'
 
 const router = useRouter()
+console.log(123123)
+console.log(router.query.findPage)
+
+
 //跳转回到首页
 const goHome = () => {
   router.push('/')

+ 2 - 2
components/template/sector/body/about/1200x1150/1.vue

@@ -26,10 +26,10 @@
                 </div>
                 <div class="footImg"></div>
             </div>
-            <div v-if="templateData.componentList[1].component_style == 1">
+            <div v-if="templateData[1].component_style.toString()=='1'">
                 <menu1Style :skinId="skinId" :bottomMenu="bottomMenu" :pageId="pageId" />
             </div>
-            <div v-if="templateData.componentList[1].component_style == 2">
+            <div v-if="templateData[1].component_style.toString()=='2'">
                 <menu2Style :skinId="skinId" :bottomMenu="bottomMenu" :pageId="pageId" />
             </div>
             <div style="clear: both;"></div>

+ 13 - 12
components/template/sector/body/about/1200x1290/1.vue

@@ -15,18 +15,18 @@
         <div class="inner">
             <div class="innerDetail">
                 <div class="innerDetail1">
-                    <div v-if="templateData.componentList[0].component_style == 1">
+                    <div v-if="templateData[0].component_style.toString()=='1'">
                         <list1Style :skinId="skinId" :newsList="newsList" />
                     </div>
-                    <div v-if="templateData.componentList[0].component_style == 2">
+                    <div v-if="templateData[0].component_style.toString()=='2'">
                         <list2Style :skinId="skinId" :newsList="newsList" />
                     </div>
                 </div>
             </div>
-            <div v-if="templateData.componentList[1].component_style == 1">
+            <div v-if="templateData[1].component_style.toString()=='1'">
                 <menu1Style :skinId="skinId" :bottomMenu="bottomMenu" :pageId="pageId" />
             </div>
-            <div v-if="templateData.componentList[1].component_style == 2">
+            <div v-if="templateData[1].component_style.toString()=='2'">
                 <menu2Style :skinId="skinId" :bottomMenu="bottomMenu" :pageId="pageId" />
             </div>
             <div style="clear: both;"></div>
@@ -34,8 +34,9 @@
     </div>
 </template>
 
-<script setup>
+<script setup lang="ts">
 //0.页面依赖 start ---------------------------------------->
+import type { INewsDetail, IBottomMenu } from '@/utils/dataInterface'
 import { ElBreadcrumb, ElBreadcrumbItem } from 'element-plus'
 import { ArrowRight } from '@element-plus/icons-vue'
 //列表
@@ -44,11 +45,11 @@ import list2Style from '@/components/template/component/list/1200x1220/2.vue'
 //菜单
 import menu1Style from '@/components/template/component/menu/144x365/1.vue'
 import menu2Style from '@/components/template/component/menu/144x365/2.vue'
-
-const props = defineProps({
-    templateData:Object,//模板数据
-    skinId: Number,//皮肤id
-});
+interface Props {
+    templateData:any,
+    skinId: number,
+}
+const props = defineProps<Props>();
 //0.页面依赖 end ---------------------------------------->
 
 //1.页面数据 start ---------------------------------------->
@@ -58,7 +59,7 @@ const route = useRoute();
 const fullPath = route.path;
 const segments = fullPath.split('/'); 
 const targetSegment = segments[2]; 
-let pageId;
+let pageId:number;
 //通过导航路径反向查询导航id
 const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
     method: 'GET',
@@ -80,7 +81,7 @@ async function getPageMenu() {
 }
 getPageMenu();
 //1.3获得数据列表
-const newsList = ref([]);
+const newsList = ref<IListData[]>([]);
 let newslists = async () => {
     const listData =  await requestDataPromise('/web/getWebsiteFooterCategoryList', {
         method: 'GET',

+ 0 - 4
components/template/sector/body/ad/1200x90/1.vue

@@ -17,10 +17,6 @@ const props = defineProps({
     adData: Array,//广告池
     adTag: String,//广告标识
 });
-//console.log(props.adData)
-//找到传入的广告
-console.log(props.adData)
-console.log(props.adTag)
 const imgurl = requestAd(props.adData,props.adTag)
 </script>
 

+ 11 - 20
components/template/sector/body/search/list/1200x1300/1.vue

@@ -50,28 +50,21 @@
     </div>
 </template>
 
-<script setup>
+<script setup lang="ts">
+import type { IListData } from '@/utils/dataInterface';
 import { ElBreadcrumb, ElBreadcrumbItem, ElPagination } from 'element-plus'
 import { ArrowRight } from '@element-plus/icons-vue'
 //获得皮肤编号
 const props = defineProps({
-    skinId:String,
+    skinId:Number,
 });
 //搜索栏 start---------------------------------------->
-//自助建站没有城市,部门的功能
-// const route = useRoute();
-// const pageCatids = ""
-// if (route.params.id == 'search') {
-// } else {
-//     const pageCatids = route.params.id
-// }
-//const pageDepartment_id = route.query.department_id;
 //关键词
-let total = useState("total", () => 0)
-let page = useState("page", () => 1)
-let pageSize = useState("pageSize", () => 20)
+let total = ref<number>(0)
+let page = ref<number>(1)
+let pageSize = ref<number>(20)
 //格式化跳转链接
-const getLinkPathDetail = (item) => {
+const getLinkPathDetail = (item:any) => {
     if (item.islink == 1) {
         return `${item.linkurl}`;
     } else {
@@ -81,25 +74,23 @@ const getLinkPathDetail = (item) => {
 //搜索栏 end---------------------------------------->
 //新闻列表 start---------------------------------------->
 // 新闻列表
-const newsList = ref([]);
+const newsList = ref<IListData[]>([]);
 let keywordInput = ref("");
 //搜索
 let goSearch = async () => {
     console.log(page.value)
     console.log(pageSize.value)
     console.log(keywordInput.value)
-    //console.log(pageCatids)
-    //console.log(pageDepartment_id)
     const listData = await requestDataPromise('/web/selectWebsiteCategory', {
         method: 'GET',
         query: {
             'page': page.value,
             'pageSize': pageSize.value,
             'keyword': keywordInput.value,
-            //'cityid': pageCatids,
-            //'department_id': pageDepartment_id
         },
     });
+    console.log(listData)
+
     if (listData.data.rows) {
         console.log(listData)
         newsList.value = listData.data.rows;
@@ -111,7 +102,7 @@ let goSearch = async () => {
 }
 goSearch();
 //分页事件
-let changePage = (value) => {
+let changePage = (value:any) => {
     console.log("当前页码", value);
     page.value = value
     console.log(page.value);

+ 13 - 3
composables/publicFunction.ts

@@ -100,7 +100,18 @@ const getRoutePath = (type:number) => {
 //4.获得路由路径 end ---------------------------------------->
 
 //5.从广告池获得对应标识的广告 start ---------------------------------------->
-const requestAd = (adList:Array<any>,adTag: string) => {
+interface IAdList {
+    ad_tag: string;
+    height: number;
+    introduce: string;
+    name: string;
+    price: string;
+    thumb: string;
+    typeid: number;
+    website_id: number;
+    width: number;
+}
+const requestAd = (adList:IAdList[],adTag:string) => {
     for(let item of adList){
         if(item.ad_tag == adTag){
             return item;
@@ -108,6 +119,5 @@ const requestAd = (adList:Array<any>,adTag: string) => {
     }
     return null;
 }
-
 //5.从广告池获得对应标识的广告 end ---------------------------------------->
-export { getTime, getTitleLength, getLinkPath, getLinkPathDetail,getLinkPathDetail1, getRoutePath, getLinkPath1,requestAd,Test};
+export { getTime, getTitleLength, getLinkPath, getLinkPathDetail,getLinkPathDetail1, getRoutePath, getLinkPath1,requestAd};

+ 108 - 56
error.vue

@@ -1,63 +1,115 @@
 <template>
     <div class="errorBox">
-      <img src="http://img.bjzxtw.org.cn/pre/image/jpeg/20250701/1751346180738003.jpg" alt="页面不存在" v-if="errorCode == 404">
-      <img src="http://img.bjzxtw.org.cn/pre/image/jpeg/20250701/1751346208700657.jpg" alt="服务器渲染错误" v-if="errorCode == 500">
-      <div class="errorText" v-if="errorCode == 404">对不起,您访问的页面不存在</div>
-      <div class="errorText" v-if="errorCode == 500">服务器渲染错误</div>
-      <div @click="goHome" class="goHome">返回网站首页</div>
+        <img src="http://img.bjzxtw.org.cn/pre/image/jpeg/20250701/1751346180738003.jpg" alt="页面不存在" v-if="errorCode == 404">
+        <!-- <img src="http://img.bjzxtw.org.cn/pre/image/jpeg/20250701/1751346208700657.jpg" alt="服务器渲染错误" v-if="errorCode == 500"> -->
+        <!-- <div class="errorText" v-if="errorCode == 404">对不起,您访问的页面不存在</div> -->
+        <div class="errorText">对不起,当前网站遇到了一些问题..</div>
+        <div class="errorDetail">{{ errorMsg }}</div>
+        <!-- <div class="errorText">{{ errorMsg }}</div> -->
+        <div @click="goHome" class="goHome">返回网站首页</div>
     </div>
-  </template>
+</template>
   
-  <script setup>
-      //1.处理错误 start ---------------------------------------->
-      //获得错误信息
-      const error = useError();
-      //console.log('错误信息:', error.value);
-      //获得错误代码与错误文字
-      const errorCode = ref(0)
-      const errorText = ref('')
-      errorCode.value = error.value.statusCode;
-      errorText.value = error.value.message;
-      console.log('错误代码:', errorCode.value);
-      console.log('错误明细:', errorText.value);
-      //1.处理错误 end ---------------------------------------->
-  
-      //2.处理跳转 start ---------------------------------------->
-      const router = useRouter()
-      const goHome = () => {
-          router.push('/')
-      }
-      //2.处理跳转 end ---------------------------------------->
-  </script>
-  
-  <style lang="less" scoped>
+<script setup lang="ts">
+    //1.处理错误 start ---------------------------------------->
+    //获得错误信息
+    const error:any = useError();
+    //console.log('错误信息:', error.value);
+    //获得错误代码与错误文字
+    const errorCode = ref<number>(0)
+    const errorText = ref<string>('')
+    const route:any = useRoute()
+    errorCode.value = error.value.statusCode;
+    errorText.value = error.value.message;
+    console.log('错误代码:', errorCode.value);
+    console.log('错误明细:', errorText.value);
+    console.log('错误来源:',route.query.findPage + ".html")
+
+    //展示错误详细
+    const errorMsg = ref('您要访问的页面已不存在!')
+    //开始查找错误来源:
+    if(route.query.findPage == 'index'){
+        const websiteId = ref<number>(0)
+        //1.确定网站基本信息存在
+        try {
+            const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
+                method: 'GET',
+                query: {
+                    'link_textnum':24,
+                    'link_imgnum':18,
+                    'link_footnum':4
+                },
+            });
+            if(responseStatus.code == 200){
+                websiteId.value = responseStatus.data.website_head.id
+            }
+            if(responseStatus.code == 0){
+                errorMsg.value = "网站基本信息获取失败:" + responseStatus.message
+            }
+        } catch (error:any) {
+            errorMsg.value = "网站基本信息获取失败:" + error
+        }
+        //2.确定模板信息存在
+        if(websiteId.value != 0){
+            try{
+                const response = await requestDataPromise('/client/indexData', {
+                    method: 'POST',
+                    body: {
+                        'website_id':websiteId.value,
+                        'getpage':'index'
+                    },
+                });
+                if(response.code == 0){
+                    errorMsg.value = "模板数据获取失败:" + response.message
+                }
+            }catch(error:any){
+                errorMsg.value = "模板数据获取失败:" + error
+            }
+        }
+    }
+    //1.处理错误 end ---------------------------------------->
+    //2.处理跳转 start ---------------------------------------->
+    const router = useRouter()
+    const goHome = () => {
+        router.push('/')
+    }
+    //2.处理跳转 end ---------------------------------------->
+</script>
+
+<style lang="less" scoped>
     .errorBox {
-      width: 100%;
-      text-align: center;
-      padding-top: 150px;
-      img {
-        width: 404px;
-        height: 302px;
-        margin: 0 auto;
-      }
-      .goHome {
-        width: 120px;
-        height: 32px;
-        line-height: 32px;
-        font-size: 14px;
-        color: #20242E;
+        width: 100%;
+        text-align: center;
+        padding-top: 150px;
+        img {
+            width: 404px;
+            height: 302px;
+            margin: 0 auto;
+        }
+        .goHome {
+            width: 120px;
+            height: 32px;
+            line-height: 32px;
+            font-size: 14px;
+            color: #20242E;
+            text-align: center;
+            margin: 0 auto;
+            background: #fff;
+            border: 1px solid #D4D6D9;
+            border-radius: 2px;
+            cursor: pointer;
+        }
+        .errorText {
+            font-size:16px;
+            color: #727785;
+            margin-top: 40px;
+            margin-bottom: 20px;
+        }
+    }
+    .errorDetail {
+        font-size:14px;
+        color: #999;
         text-align: center;
-        margin: 0 auto;
-        background: #fff;
-        border: 1px solid #D4D6D9;
-        border-radius: 2px;
-        cursor: pointer;
-      }
-      .errorText {
-          font-size:16px;
-          color: #727785;
-          margin-top: 40px;
-          margin-bottom: 20px;
-      }
+        margin-bottom: 30px;
     }
-  </style>
+</style>

+ 15 - 13
pages/[dir]/[dir]/[id].vue

@@ -19,6 +19,7 @@
 </template>
 
 <script setup lang="ts">
+import type { IArticleDetail,ISurveyResult,ISurveyResultData } from '@/utils/dataInterface';
 //0.加载全局模板组件 start---------------------------------------->
 //0.1全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
@@ -46,23 +47,14 @@ const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
 if (getRouteId.code == 200) {
     routeId.value = getRouteId.data.category_id
 }
-//1.3获得二级导航
-const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
-    method: 'GET',
-    query: {
-        'placeid': 1,
-        'pid': routeId.value,
-        'num': 8
-    },
-});
 //1.4获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
 const templateBaseStore:any = useTemplateBaseStore()
 //1.5获得该页的皮肤id - 在每个组件中也是同样的获得方法
 const skinId = ref<number>(0)
-const websiteId = ref("");
+const websiteId = ref<number>(0)
 //1.6获得站点基本信息
-const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
+const responseStatus:any = await requestDataPromise('/web/getWebsiteAllinfo', {
     method: 'GET',
     query: {
         'link_textnum':24,
@@ -100,8 +92,18 @@ for(let item of response.data.ad.article){
 templateBaseStore.setAdList(adData.value)
 //2.4获得文章详情
 const route:any = useRoute();
-const articleId = parseInt(route.params.id); //获得该页面的id
-const articleData = ref({});
+const articleId = parseInt(route.params.id);
+const articleData = ref<IArticleDetail>({
+    title:'',
+    introduce:'',
+    keyword:'',
+    author:'',
+    copyfrom:'',
+    content:'',
+    website_name:'',
+    updated_at:'',
+    suffix:''
+});
 const mkdata = await requestDataPromise('/web/selectWebsiteArticleInfo', {
     method: 'GET',
     query: {

+ 10 - 9
pages/[dir]/[dir]/list-[id].vue

@@ -22,7 +22,8 @@
     <templateFoot></templateFoot>
 </template>
 
-<script setup>
+<script setup lang="ts">
+import type { IListData } from '@/utils/dataInterface';
 //0.加载全局模板组件 start---------------------------------------->
 //0.1全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
@@ -42,7 +43,7 @@ import templateList from '@/components/template/sector/body/list/list/1200x1220/
 import { ref, onMounted } from 'vue';
 //1.2使用url查询导航池id
 const parentSegment = getRoutePath(1);//父级页面的url路径转换出来的id
-const parentRouteId = ref("");
+const parentRouteId = ref<number>(0);
 const getparentRouteId = await requestDataPromise('/web/getWebsiteRoute', {
     method: 'GET',
     query: {
@@ -53,7 +54,7 @@ if (getparentRouteId.code == 200) {
     parentRouteId.value = getparentRouteId.data.category_id
 }
 const targetSegment = getRoutePath(2);//当前页面的url路径转换出来的id
-const routeId = ref("");
+const routeId = ref<number>(0);
 const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
     method: 'GET',
     query: {
@@ -74,10 +75,10 @@ const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
 });
 //1.4获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
-const templateBaseStore = useTemplateBaseStore()
+const templateBaseStore:any = useTemplateBaseStore()
 //1.5获得该页的皮肤id - 在每个组件中也是同样的获得方法
-const skinId = ref("")
-const websiteId = ref("")
+const skinId = ref<number>(0)
+const websiteId = ref<number>(0)
 //1.6获得站点基本信息
 const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
     method: 'GET',
@@ -106,7 +107,7 @@ let seoDescription = setData.data.seo_description;
 let seoKeywords = setData.data.seo_keywords;
 let seoSuffix = setData.data.suffix;
 let seoName = setData.data.website_name;
-useSeoMeta({
+useHead({
     title: seoTitle + "_" + seoSuffix,
     meta: [
         { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
@@ -128,14 +129,14 @@ const response = await requestDataPromise('/client/indexData', {
 const templateData = response.data.template.list;
 console.log(templateData)
 //2.2广告数据
-const adData = ref([]);
+const adData = ref<any[]>([]);
 adData.value.push(response.data.ad.top)
 for(let item of response.data.ad.list){
     adData.value.push(item)
 }
 templateBaseStore.setAdList(adData.value)
 //2.3分页数据
-const route = useRoute();
+const route:any = useRoute();
 let pageNum = ref(1); //当前页码
 pageNum.value = parseInt(route.params.id);//路由中传递的分页页码
 let total = ref(0); //总条数

+ 25 - 23
pages/[dir]/[id].vue

@@ -18,7 +18,8 @@
     <templateFoot></templateFoot>
 </template>
 
-<script setup>
+<script setup lang="ts">
+import type { IArticleDetail,ISurveyResult,ISurveyResultData } from '@/utils/dataInterface';
 //0.加载全局模板组件 start---------------------------------------->
 //0.1全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
@@ -36,7 +37,7 @@ import templateArticle from '@/components/template/sector/body/article/article/1
 import { ref, onMounted } from 'vue';
 //1.2使用url查询导航池id
 const targetSegment = getRoutePath(1);//当前页面的url路径 这是第一层 所以获得域名后面的第一层url
-const routeId = ref("");//当前url路径代表的cid
+const routeId = ref<number>(0);//当前url路径代表的cid
 const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
     method: 'GET',
     query: {
@@ -46,23 +47,14 @@ const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
 if (getRouteId.code == 200) {
     routeId.value = getRouteId.data.category_id
 }
-//1.3获得二级导航
-const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
-    method: 'GET',
-    query: {
-        'placeid': 1,
-        'pid': routeId.value,
-        'num': 8
-    },
-});
-//1.4获得pinia源
+//1.3获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
-const templateBaseStore = useTemplateBaseStore()
-//1.5获得该页的皮肤id - 在每个组件中也是同样的获得方法
-const skinId = ref("")
-const websiteId = ref("");
-//1.6获得站点基本信息
-const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
+const templateBaseStore:any = useTemplateBaseStore()
+//1.4获得该页的皮肤id - 在每个组件中也是同样的获得方法
+const skinId = ref<number>(0)
+const websiteId = ref<number>(0)
+//1.5获得站点基本信息
+const responseStatus:any = await requestDataPromise('/web/getWebsiteAllinfo', {
     method: 'GET',
     query: {
         'link_textnum':24,
@@ -81,7 +73,7 @@ if (responseStatus.code == 200) {
 
 //2.页面数据 start---------------------------------------->
 //2.1获得页面数据
-const response = await requestDataPromise('/client/indexData', {
+const response:any = await requestDataPromise('/client/indexData', {
     method: 'POST',
     body: {
         'website_id':websiteId.value,
@@ -92,16 +84,26 @@ const response = await requestDataPromise('/client/indexData', {
 const templateData = response.data.template.article;
 console.log(templateData)
 //2.3广告数据
-const adData = ref([]);
+const adData = ref<any[]>([]);
 adData.value.push(response.data.ad.top)
 for(let item of response.data.ad.article){
     adData.value.push(item)
 }
 templateBaseStore.setAdList(adData.value)
 //2.4获得文章详情
-const route = useRoute();
+const route:any = useRoute();
 const articleId = parseInt(route.params.id); //获得该页面的id
-const articleData = ref({});
+const articleData = ref<IArticleDetail>({
+    title:'',
+    introduce:'',
+    keyword:'',
+    author:'',
+    copyfrom:'',
+    content:'',
+    website_name:'',
+    updated_at:'',
+    suffix:''
+});
 const mkdata = await requestDataPromise('/web/selectWebsiteArticleInfo', {
     method: 'GET',
     query: {
@@ -117,7 +119,7 @@ if (mkdata.code == 200) {
     let seoKeywords = mkdata.data.keyword;
     let seoSuffix = mkdata.data.suffix;
     let seoName = mkdata.data.website_name;
-    useSeoMeta({
+    useHead({
         title: seoTitle + "_" + seoName + "_" + seoSuffix,
         meta: [
             { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },

+ 12 - 11
pages/[dir]/list-[id].vue

@@ -18,8 +18,9 @@
     <templateFoot></templateFoot>
 </template>
 
-<script setup>
+<script setup lang="ts">
 //0.加载全局模板组件 start---------------------------------------->
+import type { IListData } from '@/utils/dataInterface';
 //0.1全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
 import templateMenu from '@/components/template/sector/menu/1200x130/1.vue'
@@ -36,8 +37,8 @@ import templateList from '@/components/template/sector/body/list/list/1200x1220/
 import { ref, onMounted } from 'vue';
 //1.2使用url查询导航池id
 const targetSegment = getRoutePath(1);//当前页面的url路径 这是第一层 所以获得域名后面的第一层url
-const routeId = ref("");//当前url路径代表的cid
-const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+const routeId = ref<number>(0);//当前url路径代表的cid
+const getRouteId:any = await requestDataPromise('/web/getWebsiteRoute', {
     method: 'GET',
     query: {
         'pinyin': targetSegment,
@@ -48,12 +49,12 @@ if (getRouteId.code == 200) {
 }
 //1.3获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
-const templateBaseStore = useTemplateBaseStore()
+const templateBaseStore:any = useTemplateBaseStore()
 //1.4获得该页的皮肤id - 在每个组件中也是同样的获得方法
-const skinId = ref("")
-const websiteId = ref("")
+const skinId = ref<number>(0)
+const websiteId = ref<number>(0)
 //1.5获得站点基本信息
-const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
+const responseStatus:any = await requestDataPromise('/web/getWebsiteAllinfo', {
     method: 'GET',
     query: {
         'link_textnum':24,
@@ -80,7 +81,7 @@ let seoDescription = setData.data.seo_description;
 let seoKeywords = setData.data.seo_keywords;
 let seoSuffix = setData.data.suffix;
 let seoName = setData.data.website_name;
-useSeoMeta({
+useHead({
     title: seoTitle + "_" + seoSuffix,
     meta: [
         { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
@@ -102,20 +103,20 @@ const response = await requestDataPromise('/client/indexData', {
 const templateData = response.data.template.list;
 console.log(templateData)
 //2.2广告数据
-const adData = ref([]);
+const adData = ref<any[]>([]);
 adData.value.push(response.data.ad.top)
 for(let item of response.data.ad.list){
     adData.value.push(item)
 }
 templateBaseStore.setAdList(adData.value)
 //2.3分页数据
-const route = useRoute();
+const route:any = useRoute();
 let pageNum = ref(1); //当前页码
 pageNum.value = parseInt(route.params.id);//路由中传递的分页页码
 let total = ref(0); //总条数
 let pageSize = ref(20); //每页条数
 //3.1新闻列表数据
-const newsList = ref([]);
+const newsList = ref<IListData[]>([]);
 let newslists = async () => {
     const listData = await requestDataPromise('/web/getWebsiteArticleList', {
         method: 'GET',

+ 34 - 42
pages/about/[dir]/[dir]/[id].vue

@@ -3,19 +3,22 @@
     <templateHead></templateHead>
     <!-- 菜单 -->
     <templateMenu></templateMenu>
-    <div>
-        <!-- 广告组件 -->
-        <templateAd :adTag="'nmw_page_0001'" :skinId="skinId" :adData="adData"></templateAd>
-        <!-- 底部详情-详情 -->
-        <templateAboutDetail :skinId="skinId" :templateData="testTemplateData2"></templateAboutDetail>
-        <!-- 广告组件 -->
-        <templateAd :adTag="'nmw_page_0001'" :skinId="skinId" :adData="adData"></templateAd>
+    <!-- 内容 -->
+    <div v-for="(item,index) in templateData" :key="index">
+        <!--1.广告通栏-->
+        <div v-if="item.sectorName=='adSector'">
+            <templateAd :skinId="skinId" :adData="adData" :adTag="item.ad.ad_tag"></templateAd>
+        </div>
+        <!--2.单页-详情-->
+        <div v-if="item.sectorName=='aboutArticleSector'">
+            <templateAboutDetail :skinId="skinId" :templateData="item.componentList"></templateAboutDetail>
+        </div>
     </div>
     <!-- 底部 -->
     <templateFoot></templateFoot>
 </template>
 
-<script setup>
+<script setup lang="ts">
 //0.加载全局模板组件 start---------------------------------------->
 //0.1 全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
@@ -34,10 +37,10 @@ import { ref, onMounted } from 'vue';
 
 //1.2获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
-const templateBaseStore = useTemplateBaseStore()
+const templateBaseStore:any = useTemplateBaseStore()
 //1.3获得该页的皮肤id - 在每个组件中也是同样的获得方法
-const skinId = ref("")
-const websiteId = ref("")
+const skinId = ref<number>(0)
+const websiteId = ref<number>(0)
 //1.4获得站点基本信息
 const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
     method: 'GET',
@@ -60,7 +63,7 @@ if (responseStatus.code == 200) {
     let seoKeywords = templateBaseStore.webSiteInfo.website_head.keywords;
     let seoSuffix = templateBaseStore.webSiteInfo.website_head.suffix;
     let seoName = templateBaseStore.webSiteInfo.website_head.website_name;
-    useSeoMeta({
+    useHead({
         title: seoTitle + "_" + seoSuffix,
         meta: [
             { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
@@ -68,39 +71,28 @@ if (responseStatus.code == 200) {
         ]
     });
 }
-//1.5获得广告池
-const adData = ref([]);
-const adResponseStatus = await requestDataPromise('/web/getWebsiteAdvertisement', {
-    method: 'GET',
-    query: {},
-});
-if (adResponseStatus.code == 200) {
-    adData.value = adResponseStatus.data;
-    templateBaseStore.setAdList(adResponseStatus.data)
-}
 //1.获得基本信息单元 end---------------------------------------->
 
-//2.测试数据 start ---------------------------------------->
-//静态链接测试数据
-const testTemplateData2 = {
-    "sectorName": "linkSector",
-    "componentList": [
-        {
-            "component_type": 3,
-            "component_style": 1,
-            "sort": 1,
-            "componentData": {}
-        },
-        {
-            "component_type": 3,
-            "component_style": 1,
-            "sort": 1,
-            "componentData": {}
-        }
-    ],
-    "sort": 4
+//2.页面数据 start---------------------------------------->
+//2.1获得页面数据
+const response = await requestDataPromise('/client/indexData', {
+    method: 'POST',
+    body: {
+        'website_id':websiteId.value,
+        'getpage':'aloneArticle'
+    },
+});
+//页面数据
+const templateData = response.data.template.aloneArticle;
+
+//广告数据
+const adData = ref<any[]>([]);
+adData.value.push(response.data.ad.top)
+for(let item of response.data.ad.aloneArticle){
+    adData.value.push(item)
 }
-//2.测试数据 end ---------------------------------------->
+templateBaseStore.setAdList(adData.value)
+//2.页面数据 end---------------------------------------->
 </script>
 
 <style lang="less" scoped>

+ 33 - 43
pages/about/[dir]/index.html.vue

@@ -3,19 +3,22 @@
     <templateHead></templateHead>
     <!-- 菜单 -->
     <templateMenu></templateMenu>
-    <div>
-        <!-- 广告组件 -->
-        <templateAd :adTag="'nmw_page_0001'" :skinId="skinId" :adData="adData"></templateAd>
-        <!-- 底部详情-详情 -->
-        <templateAboutDetail :skinId="skinId" :templateData="testTemplateData2"></templateAboutDetail>
-        <!-- 广告组件 -->
-        <templateAd :adTag="'nmw_page_0001'" :skinId="skinId" :adData="adData"></templateAd>
+    <!-- 内容 -->
+    <div v-for="(item,index) in templateData" :key="index">
+        <!--1.广告通栏-->
+        <div v-if="item.sectorName=='adSector'">
+            <templateAd :skinId="skinId" :adData="adData" :adTag="item.ad.ad_tag"></templateAd>
+        </div>
+        <!--2.单页-详情-->
+        <div v-if="item.sectorName=='aboutArticleSector'">
+            <templateAboutDetail :skinId="skinId" :templateData="item.componentList"></templateAboutDetail>
+        </div>
     </div>
     <!-- 底部 -->
     <templateFoot></templateFoot>
 </template>
 
-<script setup>
+<script setup lang="ts">
 //0.加载全局模板组件 start---------------------------------------->
 //0.1 全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
@@ -31,13 +34,12 @@ import templateAboutDetail from '@/components/template/sector/body/about/1200x11
 //1.获得基本信息单元 start---------------------------------------->
 //1.1获得页面依赖
 import { ref, onMounted } from 'vue';
-
 //1.2获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
-const templateBaseStore = useTemplateBaseStore()
+const templateBaseStore:any = useTemplateBaseStore()
 //1.3获得该页的皮肤id - 在每个组件中也是同样的获得方法
-const skinId = ref("")
-const websiteId = ref("")
+const skinId = ref<number>(0)
+const websiteId = ref<number>(0)
 //1.4获得站点基本信息
 const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
     method: 'GET',
@@ -60,7 +62,7 @@ if (responseStatus.code == 200) {
     let seoKeywords = templateBaseStore.webSiteInfo.website_head.keywords;
     let seoSuffix = templateBaseStore.webSiteInfo.website_head.suffix;
     let seoName = templateBaseStore.webSiteInfo.website_head.website_name;
-    useSeoMeta({
+    useHead({
         title: seoTitle + "_" + seoSuffix,
         meta: [
             { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
@@ -68,39 +70,27 @@ if (responseStatus.code == 200) {
         ]
     });
 }
-//1.5获得广告池
-const adData = ref([]);
-const adResponseStatus = await requestDataPromise('/web/getWebsiteAdvertisement', {
-    method: 'GET',
-    query: {},
-});
-if (adResponseStatus.code == 200) {
-    adData.value = adResponseStatus.data;
-    templateBaseStore.setAdList(adResponseStatus.data)
-}
 //1.获得基本信息单元 end---------------------------------------->
 
-//2.测试数据 start ---------------------------------------->
-//静态链接测试数据
-const testTemplateData2 = {
-    "sectorName": "linkSector",
-    "componentList": [
-        {
-            "component_type": 3,
-            "component_style": 1,
-            "sort": 1,
-            "componentData": {}
-        },
-        {
-            "component_type": 3,
-            "component_style": 1,
-            "sort": 1,
-            "componentData": {}
-        }
-    ],
-    "sort": 4
+//2.页面数据 start---------------------------------------->
+//2.1获得页面数据
+const response = await requestDataPromise('/client/indexData', {
+    method: 'POST',
+    body: {
+        'website_id':websiteId.value,
+        'getpage':'aloneArticle'
+    },
+});
+//页面数据
+const templateData = response.data.template.aloneArticle;
+//广告数据
+const adData = ref<any[]>([]);
+adData.value.push(response.data.ad.top)
+for(let item of response.data.ad.aloneArticle){
+    adData.value.push(item)
 }
-//2.测试数据 end ---------------------------------------->
+templateBaseStore.setAdList(adData.value)
+//2.页面数据 end---------------------------------------->
 </script>
 
 <style lang="less" scoped>

+ 34 - 41
pages/about/[dir]/list-[id].vue

@@ -3,19 +3,22 @@
     <templateHead></templateHead>
     <!-- 菜单 -->
     <templateMenu></templateMenu>
-    <div>
-        <!-- 广告组件 -->
-        <templateAd :adTag="'nmw_page_0001'" :skinId="skinId" :adData="adData"></templateAd>
-        <!-- 底部详情-列表 -->
-        <templateAboutList :skinId="skinId" :templateData="testTemplateData2"></templateAboutList>
-        <!-- 广告组件 -->
-        <templateAd :adTag="'nmw_page_0002'" :skinId="skinId" :adData="adData"></templateAd>
+    <!-- 内容 -->
+    <div v-for="(item,index) in templateData" :key="index">
+        <!--1.广告通栏-->
+        <div v-if="item.sectorName=='adSector'">
+            <templateAd :skinId="skinId" :adData="adData" :adTag="item.ad.ad_tag"></templateAd>
+        </div>
+        <!--2.底部菜单-列表-->
+        <div v-if="item.sectorName=='aboutListSector'">
+            <templateAboutList :skinId="skinId" :templateData="item.componentList"></templateAboutList>
+        </div>
     </div>
     <!-- 底部 -->
     <templateFoot></templateFoot>
 </template>
 
-<script setup>
+<script setup lang="ts">
 //0.加载全局模板组件 start---------------------------------------->
 //0.1 全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
@@ -34,10 +37,10 @@ import { ref, onMounted } from 'vue';
 
 //1.2获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
-const templateBaseStore = useTemplateBaseStore()
+const templateBaseStore:any = useTemplateBaseStore()
 //1.3获得该页的皮肤id - 在每个组件中也是同样的获得方法
-const skinId = ref("")
-const websiteId = ref("")
+const skinId = ref<number>(0)
+const websiteId = ref<number>(0)
 //1.4获得站点基本信息
 const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
     method: 'GET',
@@ -60,7 +63,7 @@ if (responseStatus.code == 200) {
     let seoKeywords = templateBaseStore.webSiteInfo.website_head.keywords;
     let seoSuffix = templateBaseStore.webSiteInfo.website_head.suffix;
     let seoName = templateBaseStore.webSiteInfo.website_head.website_name;
-    useSeoMeta({
+    useHead({
         title: seoTitle + "_" + seoSuffix,
         meta: [
             { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
@@ -68,38 +71,28 @@ if (responseStatus.code == 200) {
         ]
     });
 }
-//1.5获得广告池
-const adData = ref([]);
-const adResponseStatus = await requestDataPromise('/web/getWebsiteAdvertisement', {
-    method: 'GET',
-    query: {},
-});
-if (adResponseStatus.code == 200) {
-    adData.value = adResponseStatus.data;
-    templateBaseStore.setAdList(adResponseStatus.data)
-}
 //1.获得基本信息单元 end---------------------------------------->
 
-//2.测试数据 start ---------------------------------------->
-//静态链接测试数据
-const testTemplateData2 = {
-    "sectorName": "linkSector",
-    "componentList": [
-        {
-            "component_type": 3,
-            "component_style": 1,
-            "sort": 1,
-            "componentData": {}
-        },
-        {
-            "component_type": 3,
-            "component_style": 1,
-            "sort": 1,
-            "componentData": {}
-        }
-    ],
-    "sort": 4
+//2.页面数据 start---------------------------------------->
+//2.1获得页面数据
+const response = await requestDataPromise('/client/indexData', {
+    method: 'POST',
+    body: {
+        'website_id':websiteId.value,
+        'getpage':'aloneList'
+    },
+});
+//页面数据
+const templateData = response.data.template.aloneList;
+console.log(templateData)
+//广告数据
+const adData = ref<any[]>([]);
+adData.value.push(response.data.ad.top)
+for(let item of response.data.ad.aloneList){
+    adData.value.push(item)
 }
+templateBaseStore.setAdList(adData.value)
+//2.页面数据 end---------------------------------------->
 </script>
 
 <style lang="less" scoped>

+ 66 - 57
pages/index.vue

@@ -4,16 +4,6 @@
     <!-- 菜单 -->
     <templateMenu></templateMenu>
     <!-- 内容 -->
-    <!-- <div>
-        <templateHeadline :skinId="skinId" :templateData="testTemplateData"></templateHeadline>
-        <templateBanner :skinId="skinId" :templateData="testTemplateData"></templateBanner>
-        <templateAd :adTag="'bbzxw_index_1'" :skinId="skinId" :adData="adData"></templateAd>
-        <templateStaticLink :skinId="skinId" :templateData="testTemplateData2"></templateStaticLink>
-        <templateNewSector1 :skinId="skinId" :templateData="testTemplateData"></templateNewSector1>
-        <templateNewSector2 :skinId="skinId" :templateData="testTemplateData"></templateNewSector2>
-        <templateNewSector3 :skinId="skinId" :templateData="testTemplateData"></templateNewSector3>
-        <templateNewAndAd :skinId="skinId" :templateData="testTemplateData" :adData="adData" :adTag="'bbzxw_index_9'"></templateNewAndAd>
-    </div> -->
     <div v-for="(item,index) in templateData" :key="index">
         <!--1.广告通栏-->
         <div v-if="item.sectorName=='adSector'">
@@ -52,7 +42,8 @@
     <templateFoot></templateFoot>
 </template>
 
-<script setup>  
+<script setup lang="ts">  
+import type { IWebSiteBase } from '@/utils/dataInterface'
 //0.加载全局模板组件 start---------------------------------------->
 //0.1 全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
@@ -75,67 +66,85 @@ import templateNewSector2 from '@/components/template/sector/body/index/list/120
 import templateNewSector3 from '@/components/template/sector/body/index/list/1200x980/1.vue'
 //0.2.8 图文与广告组合
 import templateNewAndAd from '@/components/template/sector/body/index/list/1200x480/1.vue'
-//0.加载全局模板组件 end---------------------------------------->
+// //0.加载全局模板组件 end---------------------------------------->
 
 //1.获得基本信息单元 start---------------------------------------->
 //1.1获得页面依赖
 import { ref } from 'vue';
 //1.2获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
-const templateBaseStore = useTemplateBaseStore()
+const templateBaseStore:any = useTemplateBaseStore()
 //1.3获得该页的皮肤id - 在每个组件中也是同样的获得方法
-const skinId = ref("")
-const websiteId = ref("")
+const skinId = ref<number>(0)
+const websiteId = ref<number>(0)
 //1.4获得站点基本信息
-const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
-    method: 'GET',
-    query: {
-        'link_textnum':24,
-        'link_imgnum':18,
-        'link_footnum':4
-    },
-});
-if (responseStatus.code == 200) {
-    //0.3.1设置站点基本信息
-    templateBaseStore.setWebSiteInfo(responseStatus.data)
-    websiteId.value = responseStatus.data.website_head.id;//获得网站id
-    //0.3.2设置皮肤id
-    skinId.value = templateBaseStore.webSiteInfo.website_foot.foot_info.template_id;
-    console.log("当前的网站id:"+responseStatus.data.website_head.id)
-    //0.3.3设置seo信息
-    let seoTitle = templateBaseStore.webSiteInfo.website_head.title;
-    let seoDescription = templateBaseStore.webSiteInfo.website_head.description;
-    let seoKeywords = templateBaseStore.webSiteInfo.website_head.keywords;
-    let seoSuffix = templateBaseStore.webSiteInfo.website_head.suffix;
-    let seoName = templateBaseStore.webSiteInfo.website_head.website_name;
-    useSeoMeta({
-        title: seoTitle + "_" + seoSuffix,
-        meta: [
-            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
-            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
-        ]
+try {
+    const responseStatus:any = await requestDataPromise('/web/getWebsiteAllinfo', {
+        method: 'GET',
+        query: {
+            'link_textnum':24,
+            'link_imgnum':18,
+            'link_footnum':4
+        },
     });
+    if (responseStatus.code == 200) {
+        //0.3.1设置站点基本信息
+        templateBaseStore.setWebSiteInfo(responseStatus.data as IWebSiteBase)
+        websiteId.value = responseStatus.data.website_head.id;//获得网站id
+        //0.3.2设置皮肤id
+        skinId.value = templateBaseStore.webSiteInfo.website_foot.foot_info.template_id;
+        console.log("当前的网站id:"+responseStatus.data.website_head.id)
+        //0.3.3设置seo信息
+        let seoTitle = templateBaseStore.webSiteInfo.website_head.title;
+        let seoDescription = templateBaseStore.webSiteInfo.website_head.description;
+        let seoKeywords = templateBaseStore.webSiteInfo.website_head.keywords;
+        let seoSuffix = templateBaseStore.webSiteInfo.website_head.suffix;
+        let seoName = templateBaseStore.webSiteInfo.website_head.website_name;
+        useHead({
+            title: seoTitle + "_" + seoSuffix,
+            meta: [
+                { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+                { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+            ]
+        });
+    }else if(responseStatus.code == 0){
+        navigateTo('/404?findPage=index')
+    }
+} catch (error) {
+    navigateTo('/404?findPage=index')
 }
 //1.获得基本信息单元 end---------------------------------------->
 
 //2.页面数据 start---------------------------------------->
 //2.1获得页面数据
-const response = await requestDataPromise('/client/indexData', {
-    method: 'POST',
-    body: {
-        'website_id':websiteId.value,
-        'getpage':'index'
-    },
-});
-//页面数据
-const templateData = response.data.template.index;
-//广告数据
-const adData = ref([]);
-adData.value.push(response.data.ad.top)
-for(let item of response.data.ad.index){
-    adData.value.push(item)
+const templateData = ref<any[]>([])
+const adData = ref<any[]>([]);
+try {
+    const response = await requestDataPromise('/client/indexData', {
+        method: 'POST',
+        body: {
+            'website_id':websiteId.value,
+            'getpage':'index'
+        },
+    });
+    console.log(response)
+    if(response.code == 200){
+        //页面数据
+        templateData.value = response.data.template.index;
+        //广告数据
+        adData.value.push(response.data.ad.top)
+        for(let item of response.data.ad.index){
+            adData.value.push(item)
+        }
+        templateBaseStore.setAdList(adData.value)
+    }else if(response.code == 0){
+        //第一种情况,code为0 跳转到404
+        navigateTo('/404?findPage=index')
+    }
+}catch (error) {
+    //第二种情况,服务器无响应 跳转到404
+    navigateTo('/404?findPage=index')
 }
-templateBaseStore.setAdList(adData.value)
 //2.页面数据 end---------------------------------------->
 </script>
 

+ 35 - 22
pages/search/[id].vue

@@ -4,20 +4,22 @@
         <templateHead></templateHead>
         <!-- 菜单 -->
         <templateMenu></templateMenu>
-        <div>
-            <!--广告组件 农民网-->
-            <templateAd :adTag="'nmw_search_0001'" :skinId="skinId" :adData="adData"></templateAd>
-            <!--搜索组件-->
-            <templateSearch :skinId="skinId" :templateData="testTemplateData"></templateSearch>
-            <!--广告组件 农民网-->
-            <templateAd :adTag="'nmw_search_0002'" :skinId="skinId" :adData="adData"></templateAd>
+        <div v-for="(item,index) in templateData" :key="index">
+            <!--1.广告通栏-->
+            <div v-if="item.sectorName=='adSector'">
+                <templateAd :skinId="skinId" :adData="adData" :adTag="item.ad.ad_tag"></templateAd>
+            </div>
+            <!-- 2.搜索列表 -->
+            <div v-if="item.sectorName=='searchListSector'">
+                <templateSearch :skinId="skinId" :templateData="item.componentList"></templateSearch>
+            </div>
         </div>
         <!-- 底部 -->
         <templateFoot></templateFoot>
     </div>
 </template>
 
-<script setup>
+<script setup lang="ts">
 //0.加载全局模板组件 start---------------------------------------->
 //0.1 全局通栏
 import templateHead from '@/components/template/sector/head/1200x200/1.vue'
@@ -34,12 +36,12 @@ import templateSearch from '@/components/template/sector/body/search/list/1200x1
 import { ref, onMounted } from 'vue';
 //1.2获得pinia源
 import { useTemplateBaseStore } from '@/stores/templateBase'
-const templateBaseStore = useTemplateBaseStore()
+const templateBaseStore:any = useTemplateBaseStore()
 //1.3获得该页的皮肤id - 在每个组件中也是同样的获得方法
-const skinId = ref("")
-const websiteId = ref("")
+const skinId = ref<number>(0)
+const websiteId = ref<number>(0)
 //1.4获得站点基本信息
-const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
+const responseStatus:any = await requestDataPromise('/web/getWebsiteAllinfo', {
     method: 'GET',
     query: {
         'link_textnum':24,
@@ -60,7 +62,7 @@ if (responseStatus.code == 200) {
     let seoKeywords = templateBaseStore.webSiteInfo.website_head.keywords;
     let seoSuffix = templateBaseStore.webSiteInfo.website_head.suffix;
     let seoName = templateBaseStore.webSiteInfo.website_head.website_name;
-    useSeoMeta({
+    useHead({
         title: seoTitle + "_" + seoSuffix,
         meta: [
             { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
@@ -68,17 +70,28 @@ if (responseStatus.code == 200) {
         ]
     });
 }
-//1.5获得广告池
-const adData = ref([]);
-const adResponseStatus = await requestDataPromise('/web/getWebsiteAdvertisement', {
-    method: 'GET',
-    query: {},
+//1.获得基本信息单元 end---------------------------------------->
+
+//2.页面数据 start---------------------------------------->
+//2.1获得页面数据
+const response = await requestDataPromise('/client/indexData', {
+    method: 'POST',
+    body: {
+        'website_id':websiteId.value,
+        'getpage':'search'
+    },
 });
-if (adResponseStatus.code == 200) {
-    adData.value = adResponseStatus.data;
-    templateBaseStore.setAdList(adResponseStatus.data)
+//页面数据
+const templateData = response.data.template.search;
+console.log(templateData)
+//广告数据
+const adData = ref<any[]>([]);
+adData.value.push(response.data.ad.top)
+for(let item of response.data.ad.aloneArticle){
+    adData.value.push(item)
 }
-//1.获得基本信息单元 end---------------------------------------->
+templateBaseStore.setAdList(adData.value)
+//2.页面数据 end---------------------------------------->
 </script>
 
 <style lang="less" scoped>

+ 1 - 1
stores/templateBase.js

@@ -2,7 +2,7 @@ import { defineStore } from "pinia";
 export const useTemplateBaseStore = defineStore("templateBase", {
     state: () => ({
         webSiteInfo: {},
-        webAdList:[]
+        webAdList:[],
     }),
     actions: {
         //网站基本信息

+ 140 - 49
utils/dataInterface.ts

@@ -1,56 +1,147 @@
 //自助建站接口契约
 
-//详情页 start ---------------------------------------->
-//文章正文
-export interface IArticleDetail {
+//首页 start ---------------------------------------->
+export interface IWebSiteBase{
+    website_foot:IWebSiteFoot;
+    website_head:IWebSiteHead;
+}
+
+export interface IWebSiteHead{
+    ad_key: string;
+    api_url: string|null;
+    description: string;
+    id: number;
+    keywords: string;
+    login_url: string|null;
+    logo: string;
+    suffix: string;
+    title: string;
+    weblog_url: string|null;
+    website_name: string;
+    website_url: string[];
+}
+
+export interface IWebSiteFoot{
+    foot_cate:any[];
+    foot_info:IWebSiteFootInfo;
+    link_foot:any[];
+    link_img:any[];
+    link_text:any[];
+}
+
+export interface IWebSiteFootInfo{
+    action_id:number;
+    communications:string;
+    communications_img:string;
+    company_address:string;
+    company_logo:string;
+    company_name:string;
+    company_url:string;
+    contact_number:string;
+    copyright_information:string;
+    created_at:string;
+    customer_service:string;
+    customer_service_qq:string;
+    email:string;
+    icp_number:string;
+    icp_number_img:string;
+    icp_number_url:string;
     id:number;
-    catid:number;
-    title:string;
-    introduce:string;
-    tag:string;
-    keyword:string;
-    author:string;
-    copyfrom:string;
-    fromurl:string;
-    hits:number;
-    ip:string;
+    online_service:string;
+    organizer:string;
+    page_type:number[];
+    project_logo:string;
+    project_name:string;
+    project_url:string;
+    record_number:string;
+    record_number_url:string;
+    service_qq_img:string;
+    statement:string;
+    statistics:string;
+    statistics_onetext:string;
+    statistics_onetype:string;
+    statistics_oneurl:string;
+    statistics_twotext:string;
+    statistics_twotype:string;
+    statistics_twourl:string;
     status:number;
-    islink:number;
-    linkurl:string;
-    imgurl:string;
-    admin_user_id:number;
-    cat_arr_id:string;
-    created_at:string;
+    template_id:number;
     updated_at:string;
-    is_original:number;
-    survey_id:string;
-    survey_name:string;
-    is_survey:number;
-    survey_type:number;
-    web_site_id:string;
-    ignore_ids: string|null;
-    reason: string|null;
-    department_arr_id: string;
-    department_id: number;
-    city_arr_id: string;
-    city_id: number;
-    level: string;
-    commend_id: string;
-    level_text: string;
-    content: string;
-    article_id: number;
-    website_url: string|null;
-    email: string|null;
-    contacts: string|null;
-    contacts_mobile:string|null;
-    contacts_address:string|null;
-    zip_code: string|null;
-    enterprise_name: string|null;
-    category_id: number;
-    cat_name: string;
-    website_name: string;
-    suffix: string;
-    commendArticle: any[];//推荐文章,暂时未确定
+    user_id:number;
+    website_id:number;
+}
+//首页 end ---------------------------------------->
+
+//列表页 start ---------------------------------------->
+//列表数据是数组 所以是否为必填无所谓,默认就是空
+export interface IListData {
+    id: number,
+    title: string,
+    imgurl: string,
+    author: string,
+    updated_at: string,
+    introduce: string,
+    islink: number,
+    linkurl: string,
+    copyfrom: string,
+    cat_arr_id: string|null,
+    catid: number,
+    category_name: string,
+    pinyin: string
+}
+//列表页 end ---------------------------------------->
+
+//详情页 start ---------------------------------------->
+//文章正文
+export interface IArticleDetail {
+    id?:number;
+    catid?:number;
+    title:string;//文章标题-必备字段
+    introduce:string;//文章简介-必备字段
+    tag?:string;
+    keyword:string;//关键字-必备字段
+    author:string;//作者-必备字段
+    copyfrom:string;//来源-必备字段
+    fromurl?:string;
+    hits?:number;
+    ip?:string;
+    status?:number;
+    islink?:number;
+    linkurl?:string;
+    imgurl?:string;
+    admin_user_id?:number;
+    cat_arr_id?:string;
+    created_at?:string;
+    updated_at:string;//更新时间-必备字段
+    is_original?:number;
+    survey_id?:string;
+    survey_name?:string;
+    is_survey?:number;
+    survey_type?:number;
+    web_site_id?:string;
+    ignore_ids?: string|null;
+    reason?: string|null;
+    department_arr_id?: string;
+    department_id?: number;
+    city_arr_id?: string;
+    city_id?: number;
+    level?: string;
+    commend_id?: string;
+    level_text?: string;
+    content: string;//文章正文-必备字段
+    article_id?: number;
+    website_url?: string|null;
+    email?: string|null;
+    contacts?: string|null;
+    contacts_mobile?:string|null;
+    contacts_address?:string|null;
+    zip_code?: string|null;
+    enterprise_name?: string|null;
+    category_id?: number;
+    cat_name?: string;
+    website_name: string;//网站名称-必备字段
+    suffix: string;//关键字-必备字段
+    commendArticle?:any[];//推荐文章,暂时未确定
 }
 //投票结果
 export interface ISurveyResult {
@@ -74,7 +165,7 @@ export interface ISurveyResultData {
 }
 //详情页 end ---------------------------------------->
 
-//单页-详情 start ---------------------------------------->
+//单页-详情/列表 start ---------------------------------------->
 export interface INewsDetail {
     id?:number;
     list_title?:string;