Browse Source

修复已知问题

master
科技小王子 6 months ago
parent
commit
7a899c2445
  1. 2
      api/cms/cmsNavigation/model/index.ts
  2. 18
      composables/configState.ts
  3. 4
      nuxt.config.ts
  4. 35
      pages/components/AboutUs.vue
  5. 18
      pages/components/Carousel.vue
  6. 35
      pages/components/CompanyStyle.vue
  7. 34
      pages/components/NewsCenter.vue
  8. 23
      pages/components/VideoCenter.vue
  9. 30
      pages/index.vue

2
api/cms/cmsNavigation/model/index.ts

@ -1,4 +1,5 @@
import type { PageParam } from '@/api'; import type { PageParam } from '@/api';
import type {CmsDesign} from "~/api/cms/cmsDesign/model";
/** /**
* *
@ -77,6 +78,7 @@ export interface CmsNavigation {
disabled?: boolean; disabled?: boolean;
label?: string; label?: string;
value?: number; value?: number;
design?: CmsDesign;
} }
/** /**

18
composables/configState.ts

@ -1,37 +1,35 @@
import { useState } from '#imports'; import { useState } from '#imports';
import type { Config } from '~/types/global';
import type {Website} from "~/api/cms/website/model";
import type {Navigation} from "~/api/cms/navigation/model";
import type {CmsWebsite} from "~/api/cms/cmsWebsite/model";
import type {CmsNavigation} from "~/api/cms/cmsNavigation/model";
import type {User} from "~/api/system/user/model"; import type {User} from "~/api/system/user/model";
import type {Company} from "~/api/system/company/model"; import type {Company} from "~/api/system/company/model";
import type {MyCart, ShopCart} from "~/api/shop/shopCart/model";
// 网站信息 // 网站信息
export const useWebsite = () => export const useWebsite = () =>
useState<Website>('website', () => {
useState<CmsWebsite>('website', () => {
return {}; return {};
}); });
// 参数配置 // 参数配置
export const useConfigInfo = () => export const useConfigInfo = () =>
useState<Config>('config', () => {
useState<any>('config', () => {
return {}; return {};
}); });
// 主导航 // 主导航
export const useMenu = () => export const useMenu = () =>
useState<Navigation[]>('menu', () => {
useState<CmsNavigation[]>('menu', () => {
return []; return [];
}); });
// 副导航 // 副导航
export const useSubMenu = () => export const useSubMenu = () =>
useState<Navigation[]>('subMenu', () => {
useState<CmsNavigation[]>('subMenu', () => {
return []; return [];
}); });
// 页面元素 // 页面元素
export const useForm = () => useState<Navigation>('form', () => {
export const useForm = () => useState<CmsNavigation>('form', () => {
return {}; return {};
}); });
@ -73,7 +71,7 @@ export const useCompany = () =>
export const useShowLogin = () => useState('showLogin',() => false) export const useShowLogin = () => useState('showLogin',() => false)
// 购物车状态 // 购物车状态
export const useCart = () => useState<MyCart>('cart', () => {
export const useCart = () => useState<any>('cart', () => {
return { return {
num: 1, num: 1,
type: 1, type: 1,

4
nuxt.config.ts

@ -27,11 +27,11 @@ export default defineNuxtConfig({
} }
}, },
devServer: { devServer: {
port: 10301
port: 10304
}, },
runtimeConfig: { runtimeConfig: {
public: { public: {
tenantId: 10301,
tenantId: 10304,
// 开发环境配置 // 开发环境配置
// apiServer: 'http://127.0.0.1:9002/api', // apiServer: 'http://127.0.0.1:9002/api',
// 生产环境 // 生产环境

35
pages/components/AboutUs.vue

@ -1,5 +1,5 @@
<template> <template>
<div class="w-full bg-white pb-20 mb-3 relative" style="background: url('https://oss.wsdns.cn/20241109/247155f6063c4cee91421569b974975b.png') no-repeat center">
<div class="w-full bg-white pb-20 mb-3 relative" :style="`background: url('${config?.IndexAboutBg}') no-repeat center`">
<div class="text-center flex flex-col items-center py-15 relative"> <div class="text-center flex flex-col items-center py-15 relative">
<div class="sub-title"> <div class="sub-title">
<p class="text-gray-200 text-6xl font-bold dark:text-gray-700 py-0 line-height-5"> <p class="text-gray-200 text-6xl font-bold dark:text-gray-700 py-0 line-height-5">
@ -10,10 +10,10 @@
{{ title }} {{ title }}
</h2> </h2>
</div> </div>
<div class="xl:w-screen-xl m-auto text-xl flex justify-between" v-if="indexAboutInfo">
<p class="indent-xl max-w-3/5 px-4" :class="indexAboutInfo.style" style="font-family: Source Han Serif, SimSun,serif">{{ indexAboutInfo.value }}</p>
<div class="xl:w-screen-xl m-auto text-xl flex justify-between" v-if="config?.IndexAboutInfo">
<p class="indent-xl max-w-3/5 px-4" :class="config?.IndexAboutStyle" style="font-family: Source Han Serif, SimSun,serif">{{ config?.IndexAboutInfo }}</p>
<div class="carousel px-3 text-center"> <div class="carousel px-3 text-center">
<el-image :src="indexAboutImg?.value" />
<el-image :src="config?.IndexAboutImg" />
</div> </div>
</div> </div>
</div> </div>
@ -23,11 +23,12 @@
<script setup lang="ts"> <script setup lang="ts">
import {useServerRequest} from "~/composables/useServerRequest"; import {useServerRequest} from "~/composables/useServerRequest";
import type {ApiResult, PageResult} from "~/api";
import type {CmsArticle} from "~/api/cms/cmsArticle/model";
import type {ApiResult} from "~/api";
import type {Config} from "~/types/global";
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
config?: any;
title?: string; title?: string;
comments?: string; comments?: string;
}>(), }>(),
@ -38,22 +39,16 @@ const emit = defineEmits<{
(e: 'done'): void; (e: 'done'): void;
}>(); }>();
const indexAboutInfo = ref();
const indexAboutImg = ref();
// //
const reload = async () => {
const {data: IndexAboutInfo} = await useServerRequest<ApiResult<PageResult<CmsArticle>>>('/cms/cms-website-field/10733', {
baseURL: 'https://server.gxwebsoft.com/api'
})
const {data: IndexAboutImg} = await useServerRequest<ApiResult<PageResult<CmsArticle>>>('/cms/cms-website-field/10734', {
baseURL: 'https://server.gxwebsoft.com/api'
})
indexAboutInfo.value = IndexAboutInfo.value?.data;
indexAboutImg.value = IndexAboutImg.value?.data;
}
reload();
// const reload = async () => {
// const { data: fields } = await useServerRequest<ApiResult<Config>>('/cms/cms-website-field/config', {baseURL: 'https://server.gxwebsoft.com/api',});
// if (fields.value?.data) {
// config.value = fields.value?.data;
// }
// }
// reload();
</script> </script>
<style lang="less"> <style lang="less">

18
pages/components/Carousel.vue

@ -1,5 +1,5 @@
<template> <template>
<div class="w-full bg-white mt-[60px] mb-3">
<div class="w-full bg-white mt-[60px] mb-3" v-if="ad">
<el-carousel indicator-position="none" :height="ad?.height"> <el-carousel indicator-position="none" :height="ad?.height">
<el-carousel-item v-for="(item,index) in ad?.imgArr" :key="index"> <el-carousel-item v-for="(item,index) in ad?.imgArr" :key="index">
<div class="item relative" @click="openSpmUrl(`https://www.baidu.com`)"> <div class="item relative" @click="openSpmUrl(`https://www.baidu.com`)">
@ -18,6 +18,7 @@ import type {CmsAd} from "~/api/cms/cmsAd/model";
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
config?: any;
list?: any[]; list?: any[];
disabled?: boolean; disabled?: boolean;
title?: string; title?: string;
@ -42,12 +43,17 @@ const where = reactive<CompanyParam>({
// //
const reload = async () => { const reload = async () => {
const {data: response} = await useServerRequest<ApiResult<CmsAd>>('/cms/cms-ad/287')
if (response.value?.data) {
ad.value = response.value.data;
console.log(ad.value,'adsss')
const {data: response} = await useServerRequest<ApiResult<PageResult<CmsAd>>>('/cms/cms-ad/page',{params: {adType: '幻灯片',pageName: '首页'}})
if (response.value?.data?.list) {
ad.value = response.value.data?.list[0];
} }
} }
reload();
watch(
() => props.config,
() => {
reload();
},
{immediate: true}
);
</script> </script>

35
pages/components/CompanyStyle.vue

@ -1,7 +1,4 @@
<template> <template>
<!-- <div class="relative">-->
<!-- <el-image src="https://oss.wsdns.cn/20241108/dbb0ef723f414394bbf6736818f7ac2c.png" class="absolute top-0 z-0" />-->
<!-- </div>-->
<div class="w-full bg-gray-100 pb-20"> <div class="w-full bg-gray-100 pb-20">
<div class="text-center flex flex-col items-center py-15 relative "> <div class="text-center flex flex-col items-center py-15 relative ">
<div class="sub-title"> <div class="sub-title">
@ -29,12 +26,12 @@
<script setup lang="ts"> <script setup lang="ts">
import {useServerRequest} from "~/composables/useServerRequest"; import {useServerRequest} from "~/composables/useServerRequest";
import type {ApiResult, PageResult} from "~/api"; import type {ApiResult, PageResult} from "~/api";
import type {CmsArticle} from "~/api/cms/cmsArticle/model";
import type {FileRecord} from "~/api/system/file/model"; import type {FileRecord} from "~/api/system/file/model";
import {openSpmUrl} from "~/utils/common";
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
config?: any;
groupId?: number;
title?: string; title?: string;
comments?: string; comments?: string;
}>(), }>(),
@ -50,25 +47,25 @@ const emit = defineEmits<{
const list = ref<FileRecord[]>([]) const list = ref<FileRecord[]>([])
const {data: response} = await useServerRequest<ApiResult<PageResult<PageResult<FileRecord>>>>('/file/page',{
const reload = async () => {
const {data: response} = await useServerRequest<ApiResult<PageResult<FileRecord>>>('/file/page',{
baseURL: 'https://server.gxwebsoft.com/api', baseURL: 'https://server.gxwebsoft.com/api',
query: { query: {
groupId: 2517
groupId: props.groupId
} }
})
if(response.value?.data){
})
if(response.value?.data){
if(response.value?.data.list){ if(response.value?.data.list){
list.value = response.value?.data.list list.value = response.value?.data.list
} }
}
} }
</script>
<style lang="less">
/* 在全局样式表如 app.css 或 styles.css 中添加 */
.el-tabs__item {
font-size: 3em; /* 调整为你想要的字体大小 */
}
.custom-tabs .el-tabs__item {
font-size: 22px; /* 调整为你想要的字体大小 */
}
</style>
watch(
() => props.groupId,
() => {
reload();
},
{immediate: true}
);
</script>

34
pages/components/NewsCenter.vue

@ -28,11 +28,7 @@
<el-col :span="13"> <el-col :span="13">
<div class="tabs px-10 w-full"> <div class="tabs px-10 w-full">
<el-tabs class="custom-tabs" v-model="categoryId" @tab-change="handleClick"> <el-tabs class="custom-tabs" v-model="categoryId" @tab-change="handleClick">
<el-tab-pane label="企业新闻" :name="939" class="text-xl" />
<el-tab-pane label="媒体报道" :name="940">
</el-tab-pane>
<el-tab-pane label="出资企业聚焦" :name="941">
</el-tab-pane>
<el-tab-pane v-for="(cate,index) in category?.data" :key="index" :label="cate.title" :name="cate.navigationId" class="text-xl" />
</el-tabs> </el-tabs>
<template v-for="(item,index) in list" :key="index"> <template v-for="(item,index) in list" :key="index">
<li class="flex justify-between py-2"> <li class="flex justify-between py-2">
@ -57,9 +53,12 @@ import type {ApiResult, PageResult} from "~/api";
import type {CmsArticle} from "~/api/cms/cmsArticle/model"; import type {CmsArticle} from "~/api/cms/cmsArticle/model";
import type {CompanyParam} from "~/api/system/company/model"; import type {CompanyParam} from "~/api/system/company/model";
import {TENANT_ID} from "~/config"; import {TENANT_ID} from "~/config";
import type {CmsNavigation} from "~/api/cms/cmsNavigation/model";
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
config?: any;
parentId?: number;
list?: any[]; list?: any[];
disabled?: boolean; disabled?: boolean;
title?: string; title?: string;
@ -75,9 +74,10 @@ const emit = defineEmits<{
(e: 'done'): void; (e: 'done'): void;
}>(); }>();
const category = ref<ApiResult<CmsNavigation[]>>();
const list = ref<CmsArticle[]>([]); const list = ref<CmsArticle[]>([]);
const hotList = ref<CmsArticle[]>([]); const hotList = ref<CmsArticle[]>([]);
const categoryId = ref(939)
const categoryId = ref();
// //
const where = reactive<CompanyParam>({ const where = reactive<CompanyParam>({
@ -99,6 +99,20 @@ if (hotResponse.value?.data) {
hotList.value = hotResponse.value?.data.list hotList.value = hotResponse.value?.data.list
} }
//
const getCategory = async () => {
const { data: categoryInfo } = await useServerRequest<ApiResult<CmsNavigation[]>>('/cms/cms-navigation', {
params: {
parentId: props.parentId
}
})
if(categoryInfo.value){
category.value = categoryInfo.value
categoryId.value = categoryInfo.value?.data && categoryInfo.value?.data[0].navigationId
}
await reload();
}
// //
const reload = async () => { const reload = async () => {
const {data: response} = await useServerRequest<ApiResult<PageResult<CmsArticle>>>('/cms/cms-article/page', { const {data: response} = await useServerRequest<ApiResult<PageResult<CmsArticle>>>('/cms/cms-article/page', {
@ -112,5 +126,11 @@ const reload = async () => {
} }
} }
reload();
watch(
() => props.parentId,
() => {
getCategory();
},
{immediate: true}
);
</script> </script>

23
pages/components/VideoCenter.vue

@ -10,14 +10,14 @@
{{ title }} {{ title }}
</h2> </h2>
</div> </div>
<div class="xl:w-screen-xl m-auto text-xl">
<div class="carousel py-3 text-center" v-if="indexVideo">
<div class="xl:w-screen-xl m-auto text-xl" v-if="config">
<div class="carousel py-3 text-center" v-if="config?.IndexVideoCenter">
<video id="my-video" class="video-js vjs-default-skin" controls preload="auto" width="900" height="510" <video id="my-video" class="video-js vjs-default-skin" controls preload="auto" width="900" height="510"
:poster="indexVideoImg?.value" data-setup="{}">
<source :src="indexVideo?.value" type="video/mp4">
:poster="config?.IndexVideoImg" data-setup="{}">
<source :src="config?.IndexVideoCenter" type="video/mp4">
<p class="vjs-no-js"> <p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a web browser that To view this video please enable JavaScript, and consider upgrading to a web browser that
<a :href="indexVideo?.value" target="_blank">supports HTML5 video</a>
<a :href="config?.IndexVideoCenter" target="_blank">supports HTML5 video</a>
</p> </p>
</video> </video>
</div> </div>
@ -26,12 +26,10 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {useServerRequest} from "~/composables/useServerRequest";
import type {ApiResult, PageResult} from "~/api";
import type {CmsArticle} from "~/api/cms/cmsArticle/model";
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
config?: any;
list?: any[]; list?: any[];
disabled?: boolean; disabled?: boolean;
title?: string; title?: string;
@ -52,14 +50,7 @@ const indexVideoImg = ref();
// //
const reload = async () => { const reload = async () => {
const {data: IndexVideo} = await useServerRequest<ApiResult<PageResult<CmsArticle>>>('/cms/cms-website-field/10735', {
baseURL: 'https://server.gxwebsoft.com/api'
})
const {data: IndexVideoImg} = await useServerRequest<ApiResult<PageResult<CmsArticle>>>('/cms/cms-website-field/10736', {
baseURL: 'https://server.gxwebsoft.com/api'
})
indexVideo.value = IndexVideo.value?.data;
indexVideoImg.value = IndexVideoImg.value?.data;
} }
reload(); reload();

30
pages/index.vue

@ -2,15 +2,15 @@
<!-- <Flash/>--> <!-- <Flash/>-->
<Carousel />
<Carousel v-if="config" />
<NewsCenter title="新闻中心" comments="News Center"/>
<NewsCenter title="新闻中心" v-if="config" :parentId="parentId" :config="config" comments="News Center"/>
<AboutUs title="关于我们" comments="About Us"/>
<AboutUs title="关于我们" v-if="config" :config="config" comments="About Us"/>
<VideoCenter title="视频中心" comments="Video Center" />
<VideoCenter title="视频中心" v-if="config" :config="config" comments="Video Center" />
<CompanyStyle title="公司风采" comments="Company Style" />
<CompanyStyle title="公司风采" v-if="config" :groupId="groupId" :config="config" comments="Company Style" />
<!-- <CompanyList :param="{official: true,recommend: true,limit: 4}" :fit="`cover`" title="产品服务" comments="拥抱开源、坚守品质;致力于打造安全稳定高可用的WEB应用!"/>--> <!-- <CompanyList :param="{official: true,recommend: true,limit: 4}" :fit="`cover`" title="产品服务" comments="拥抱开源、坚守品质;致力于打造安全稳定高可用的WEB应用!"/>-->
@ -20,7 +20,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {useConfigInfo, useForm, useToken, useWebsite} from "~/composables/configState"; import {useConfigInfo, useForm, useToken, useWebsite} from "~/composables/configState";
import type {BreadcrumbItem} from "~/types/global";
import type {BreadcrumbItem, Config} from "~/types/global";
import Flash from './components/Flash.vue'; import Flash from './components/Flash.vue';
import ArticleList from './components/ArticleList.vue'; import ArticleList from './components/ArticleList.vue';
import NewsCenter from "~/pages/components/NewsCenter.vue"; import NewsCenter from "~/pages/components/NewsCenter.vue";
@ -28,21 +28,24 @@ import AboutUs from "~/pages/components/AboutUs.vue";
import VideoCenter from "~/pages/components/VideoCenter.vue"; import VideoCenter from "~/pages/components/VideoCenter.vue";
import CompanyStyle from "~/pages/components/CompanyStyle.vue"; import CompanyStyle from "~/pages/components/CompanyStyle.vue";
import Carousel from "~/pages/components/Carousel.vue"; import Carousel from "~/pages/components/Carousel.vue";
import type {ApiResult} from "~/api";
// //
const route = useRoute(); const route = useRoute();
const layout = ref<any>();
const token = useToken(); const token = useToken();
const form = useForm(); const form = useForm();
const config = useConfigInfo();
const groupId = ref()
const parentId = ref()
const breadcrumb = ref<BreadcrumbItem>(); const breadcrumb = ref<BreadcrumbItem>();
// //
const reload = async () => { const reload = async () => {
// //
if (form.value?.layout) {
layout.value = JSON.parse(form.value?.layout)
}
// if (form.value?.layout) {
// layout.value = JSON.parse(form.value?.layout)
// }
// () // ()
if (!token.value || token.value == '') { if (!token.value || token.value == '') {
@ -52,6 +55,13 @@ const reload = async () => {
// } // }
} }
//
const { data: fields } = await useServerRequest<ApiResult<Config>>('/cms/cms-website-field/config', {baseURL: 'https://server.gxwebsoft.com/api',});
if (fields.value?.data) {
config.value = fields.value?.data;
groupId.value = config.value?.IndexPhotoGroupId;
parentId.value = config.value?.IndexNewsCenterParentId;
}
// seo // seo
useHead({ useHead({
title: `构建现代WEB应用 · WEBSOFT`, title: `构建现代WEB应用 · WEBSOFT`,

Loading…
Cancel
Save