1
This commit is contained in:
24
components/AppFooter_bak/AppFooter.vue
Normal file
24
components/AppFooter_bak/AppFooter.vue
Normal file
@@ -0,0 +1,24 @@
|
||||
<template>
|
||||
|
||||
<!-- 底部菜单 -->
|
||||
<SubMenu />
|
||||
<!-- 版权信息 -->
|
||||
<Copyright />
|
||||
<!-- 侧边工具栏 -->
|
||||
<ToolBar />
|
||||
<!-- 底部菜单 -->
|
||||
<!-- <TabBar />-->
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import SubMenu from "~/components/AppFooter/SubMenu/SubMenu.vue";
|
||||
import Copyright from "~/components/AppFooter/Copyright/Copyright.vue";
|
||||
import ToolBar from "~/components/AppFooter/ToolBar/ToolBar.vue";
|
||||
import TabBar from "~/components/AppFooter/TabBar/TabBar.vue";
|
||||
import Partners from "~/components/Index/Partners.vue";
|
||||
import Customized from "~/components/Index/Customized.vue";
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
</style>
|
||||
46
components/AppFooter_bak/Copyright/Copyright.vue
Normal file
46
components/AppFooter_bak/Copyright/Copyright.vue
Normal file
@@ -0,0 +1,46 @@
|
||||
<script setup lang="ts">
|
||||
import {useConfigInfo} from "~/composables/configState";
|
||||
import Link from "~/components/AppFooter/Link/Link.vue";
|
||||
const config = useConfigInfo();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- PC端 -->
|
||||
<div class="w-full sm:bg-black hidden-sm-and-down">
|
||||
<div class="xl:w-screen-xl flex flex-col justify-between m-auto">
|
||||
<!-- 友情链接 -->
|
||||
<Link />
|
||||
<!-- 版权信息 -->
|
||||
<div class="w-full xl:w-screen-xl xl:px-0 px-4 w-full m-auto flex flex-row sm:justify-between justify-center items-center sm:py-3 text-center text-sm">
|
||||
<div class="text-gray-400 sm:gap-xs leading-7 flex flex-col sm:flex-row">
|
||||
<span>Copyright © {{ new Date().getFullYear() }} {{ config?.copyright }}</span>
|
||||
<nuxt-link to="https://beian.miit.gov.cn/" class="visited:text-gray-400 hover:text-gray-200" target="_blank"> <span>备案号:{{ config?.icpNo }}</span></nuxt-link>
|
||||
</div>
|
||||
<div class="tools flex items-center opacity-80 hover:opacity-90 text-gray-400 text-xs">
|
||||
Powered by <a rel="nofollow" href="https://site.websoft.top" target="_blank" class="visited:text-gray-400 hover:text-gray-200 ml-1">云·企业官网</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 移动端 -->
|
||||
<div class="w-full sm:bg-black hidden-sm-and-up">
|
||||
<div class="xl:w-screen-xl flex flex-col justify-between m-auto">
|
||||
<!-- 友情链接 -->
|
||||
<Link />
|
||||
<!-- 版权信息 -->
|
||||
<div class="w-full xl:w-screen-xl xl:px-0 px-4 w-full m-auto flex flex-col sm:justify-between justify-center items-center py-3 text-center text-sm">
|
||||
<div class="text-gray-400 sm:gap-xs leading-7 flex flex-col sm:flex-row">
|
||||
<span>Copyright © {{ new Date().getFullYear() }} {{ config?.copyright }}</span>
|
||||
<nuxt-link to="https://beian.miit.gov.cn/" class="visited:text-gray-400 hover:text-gray-200" target="_blank"> <span>备案号:{{ config?.icpNo }}</span></nuxt-link>
|
||||
</div>
|
||||
<div class="tools flex items-center opacity-80 hover:opacity-90 text-gray-300 text-xs mt-5">
|
||||
Powered by <a rel="nofollow" href="https://site.websoft.top" target="_blank" class="visited:text-gray-300 hover:text-gray-200 ml-1">云·企业官网</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
24
components/AppFooter_bak/Link/Link.vue
Normal file
24
components/AppFooter_bak/Link/Link.vue
Normal file
@@ -0,0 +1,24 @@
|
||||
<template>
|
||||
<el-space class="text-gray-400 text-sm hidden-sm-and-down">
|
||||
<span>友情链接:</span>
|
||||
<template v-for="(item,index) in list" :key="index">
|
||||
<nuxt-link :to="item.url" target="_blank" class="link:text-gray-400 visited:text-gray-400 hover:text-gray-200">{{ item.name }}</nuxt-link>
|
||||
<el-divider v-if="list.length-1 != index" direction="vertical" style="border-color: #9ca3af;" />
|
||||
</template>
|
||||
<el-divider direction="vertical" style="border-color: #9ca3af;" />
|
||||
<nuxt-link :to="`/links`" class="link:text-gray-400 visited:text-gray-400 hover:text-gray-200">更多...</nuxt-link>
|
||||
</el-space>
|
||||
<div class="border-b-solid bg-gray-700 border-1 mt-4 opacity-40 hidden-sm-and-down"></div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {listCmsLink, pageCmsLink} from "~/api/cms/cmsLink";
|
||||
import type {CmsLink} from "~/api/cms/cmsLink/model";
|
||||
|
||||
const list = ref<CmsLink[]>([])
|
||||
pageCmsLink({limit: 10}).then(res => {
|
||||
list.value = res?.list || [];
|
||||
})
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
55
components/AppFooter_bak/SubMenu/SubMenu.vue
Normal file
55
components/AppFooter_bak/SubMenu/SubMenu.vue
Normal file
@@ -0,0 +1,55 @@
|
||||
<template>
|
||||
<!-- PC端 -->
|
||||
<div class="w-full bg-black h-[300px] py-5 hidden-sm-and-down">
|
||||
<div class="xl:w-screen-xl flex justify-between m-auto">
|
||||
<template v-for="(item,index) in subMenu">
|
||||
<div class="item">
|
||||
<div class="text-base text-gray-400 hover:text-gray-200 py-3 font-bold">{{ item.title }}</div>
|
||||
<div class="sub-menu flex flex-col">
|
||||
<template v-for="(sub,subIndex) in item.children">
|
||||
<nuxt-link :to="navTo(sub)" class="py-1 text-sm"><span class="text-gray-400 hover:text-gray-200">{{ sub.title }}</span></nuxt-link>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="flex flex-col text-base">
|
||||
<p class="text-base text-gray-400 py-2 font-bold">微信公众号</p>
|
||||
<el-avatar :src="config.wxQrcode" shape="square" :size="120" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 移动端 -->
|
||||
<el-collapse v-model="activeNames" accordion class="hidden-sm-and-up my-collapse">
|
||||
<template v-for="(item,index) in subMenu">
|
||||
<el-collapse-item :title="item.title" :name="index">
|
||||
<template v-if="item.children">
|
||||
<template v-for="sub in item.children">
|
||||
<nuxt-link :to="sub.path" class="block cursor-pointer text-gray-600 hover:text-gray-900 py-0.5">
|
||||
<span class="px-4">{{ sub.title }}</span>
|
||||
</nuxt-link>
|
||||
</template>
|
||||
</template>
|
||||
</el-collapse-item>
|
||||
</template>
|
||||
</el-collapse>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {useConfigInfo, useSubMenu} from "~/composables/configState";
|
||||
const subMenu = useSubMenu();
|
||||
const config = useConfigInfo();
|
||||
const activeNames = ref(['1'])
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.my-collapse{
|
||||
.el-collapse-item__header{
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.el-collapse-item__wrap{
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.el-collapse-item{
|
||||
padding: 0 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
53
components/AppFooter_bak/TabBar/TabBar.vue
Normal file
53
components/AppFooter_bak/TabBar/TabBar.vue
Normal file
@@ -0,0 +1,53 @@
|
||||
<template>
|
||||
<div class="hidden-sm-and-up tab-bar flex justify-around items-center bg-white w-full fixed bottom-0 pt-2 pb-5 border-t border-gray-100 border-solid">
|
||||
<template v-for="(item,index) in list">
|
||||
<nuxt-link class="item flex flex-col justify-center items-center hover:text-green-700 block" @click="onLink(item,index)">
|
||||
<component :is="item.icon" :style="{ fontSize: '18px',color: currentIndex == index ? '#15803DFF' : '#333333' }" />
|
||||
<span :style="{ color: currentIndex == index ? '#15803DFF' : '#333333'}" class="py-1">{{ item.name }}</span>
|
||||
</nuxt-link>
|
||||
</template>
|
||||
</div>
|
||||
<div class="hidden-sm-and-up h-[80px]"></div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { HomeOutlined, MessageOutlined, ShopOutlined, AppstoreOutlined, ReadOutlined } from '@ant-design/icons-vue';
|
||||
|
||||
const currentIndex = ref<number>()
|
||||
|
||||
const list = ref([
|
||||
{
|
||||
name: '首页',
|
||||
icon: HomeOutlined,
|
||||
path: '/'
|
||||
},
|
||||
{
|
||||
name: '产品',
|
||||
icon: AppstoreOutlined,
|
||||
path: '/market'
|
||||
},
|
||||
{
|
||||
name: '文档',
|
||||
icon: ReadOutlined,
|
||||
path: '/docs'
|
||||
},
|
||||
{
|
||||
name: '店铺',
|
||||
icon: ShopOutlined,
|
||||
path: '/user'
|
||||
}
|
||||
])
|
||||
|
||||
const onLink = (item: any,index: number) => {
|
||||
if(item.path == '/'){
|
||||
// 回到页面顶部
|
||||
window.scrollTo(0, 0)
|
||||
}
|
||||
currentIndex.value = index
|
||||
navigateTo(item.path)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
47
components/AppFooter_bak/ToolBar/ToolBar.vue
Normal file
47
components/AppFooter_bak/ToolBar/ToolBar.vue
Normal file
@@ -0,0 +1,47 @@
|
||||
<script setup lang="ts">
|
||||
import {useConfigInfo, useSetting} from "~/composables/configState";
|
||||
|
||||
const config = useConfigInfo();
|
||||
const setting = useSetting()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
<div v-if="setting.floatTool" id="toolbar" class="hidden-sm-and-down">
|
||||
<ul>
|
||||
<!-- <li>-->
|
||||
<!-- <a :href="`http://wpa.qq.com/msgrd?v=3&uin=${config.qqCode}&site=qq&menu=yes`" target="_blank">-->
|
||||
<!-- <span class="icon-font icon-qq"></span>-->
|
||||
<!-- <span class="wz">腾讯QQ{{ config.qqCode }}</span>-->
|
||||
<!-- </a>-->
|
||||
<!-- </li>-->
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="icon-font icon-qq"></span>
|
||||
<span class="wz">{{ config.qqCode }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="icon-font icon-phone">config.callPhone</span>
|
||||
<span class="wz">{{ config.callPhone }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="ewm">
|
||||
<span class="icon-font icon-ewm"></span>
|
||||
<div class="ewm-box"><img :src="config.wxMpQrcode" alt="微信二维码"/></div>
|
||||
</li>
|
||||
<li>
|
||||
<nuxt-link to="/order/3622">
|
||||
<span class="icon-font icon-message"></span>
|
||||
<span class="wz">在线留言</span>
|
||||
</nuxt-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<el-backtop :bottom="100" :right="25"></el-backtop>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user