Files
lilishop-ui/buyer/src/components/footer/Footer.vue
lifenlong 88fc1b0b2a refactor: 四端完成 Options API → script setup + vuex → pinia 迁移
- buyer(95) / seller(169) / im(53) / manager(280) 共 597 个组件全部从 Options API 转换为 <script setup>
- 四端 vuex 全部移除,状态管理统一迁移至 pinia 4(stores/ 目录)
- util.js 等基础设施去除 vm 首参依赖;全局属性($Message/$filters 等)在 script 内改为具名导入
- 被外部 ref 访问的公共组件均已补齐 defineExpose(清单见各端 MIGRATION-VUE3.md)
- 各端 eslint 启用 vue/component-api-style 防止新代码回退 Options API
- 四端 yarn build 全部通过;迁移约定与注意事项已更新至各端 MIGRATION-VUE3.md
2026-10-13 07:06:59 +08:00

260 lines
5.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<footer class="footer">
<div class="clearfix"></div>
<div class="icon-row">
<div class="footer-icon flex flex-a-c">
<h5 class="footer-icon-child">多</h5>
<span class="footer-icon-text">品类齐全,轻松购物</span>
</div>
<div class="footer-icon flex flex-a-c">
<h5 class="footer-icon-child footer-icon-child-2">快</h5>
<span class="footer-icon-text">多仓直发,极速配送</span>
</div>
<div class="footer-icon flex flex-a-c">
<h5 class="footer-icon-child footer-icon-child-3">好</h5>
<span class="footer-icon-text">正品行货,精致服务</span>
</div>
<div class="footer-icon flex flex-a-c">
<h5 class="footer-icon-child footer-icon-child-4">省</h5>
<span class="footer-icon-text">天天低价,畅选无忧</span>
</div>
</div>
<div class="service-intro">
<div class="servece-type">
<div class="servece-type-info" v-for="(guide, index) in guideArr" :key="index">
<ul>
<li v-for="(item, index) in guide" :key="index" @click="goArticle">{{item}}</li>
</ul>
</div>
</div>
<div class="clearfix"></div>
<div class="friend-link flex">
<div class="friend-link-item">
<ul>
<li v-for="(link, index) in moreLink" :key="index" @click="goArticle">
<span class="link-item" :class="{'link-last-item': index === 4}">{{link}}</span>
</li>
</ul>
</div>
</div>
<div class="information footer-bottmom">
<div class="icp">
<li v-if="config.icpCard">
<a :href='"https://tsm.miit.gov.cn/dxxzsp/xkz/xkzgl/resource/qiyesearch.jsp?num="+config.icpCard+"&type=xuke"' target="_blank">
{{config.icpCard}}
</a>
</li>
<li v-if="config.icpMessage" class="footer-bottmom">
<a href="https://beian.miit.gov.cn/" target="_blank">
{{config.icpMessage}}
</a>
</li>
</div>
<a class="flex " :href="config.company.href">
<img class="zhizhao" src="@/assets/images/zhizhao.jpg" mode="" />{{config.company.name}}
</a>
</div>
<div class="clearfix"></div>
<div class="copyright">
<p>Copyright © {{year}} {{config.title}}</p>
</div>
</div>
</footer>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import config from '@/config'
defineOptions({ name: 'Footer' })
const router = useRouter()
const guideArr = ref([
// 导航链接
["购物指南", "购物流程", "会员介绍", "生活旅行", "常见问题"],
["配送方式", "上门自提", "配送查询", "收取标准", "物流规则"],
["支付方式", "在线支付", "公司转账", "余额支付", "积分支付"],
["售后服务", "售后政策", "退款说明", "返修/退货", "取消订单"],
])
const moreLink = ref(["关于我们", "联系我们", "联系客服", "商家帮助", "隐私政策"]) // 更多链接
const year = ref(new Date().getFullYear()) // 当前年份
function goArticle() {
// 跳转文章页
router.push("/article")
}
</script>
<style scoped lang="scss">
/*****************************底 部 开 始*****************************/
.footer {
width: 100%;
height: 370px;
background: #FFFFFF;
}
.icon-row {
display: flex;
align-items: center;
justify-content: space-between;
width: 1056px;
height: 71px;
margin: 0 auto;
}
.footer-icon {
float: left;
}
.footer-icon-child {
overflow: hidden;
width: 36.4px;
display: flex;
align-items: center;
justify-content: center;
font-size: 18.2px;
font-weight: normal;
color: #333;
height: 36.4px;
border: 1.4px solid #CECECE;
border-radius: 50%;
}
.icp {
margin-right: 30px !important;
>*{
margin: 0 4px;
}
flex-direction: column;
}
.flex{
display: flex;
align-items: center;
>img{
margin-right: 4px;
}
}
.footer-icon-text {
margin-left: 11px;
font-size: 16px;
font-weight: normal;
text-align: center;
}
.service-intro {
width: 100%;
border-top: 1px solid $border_color;
}
.servece-type {
width: 952px;
margin: 22px auto 10px auto;
display: flex;
flex-direction: row;
justify-content: space-between;
}
.servece-type-info{
}
.servece-type-info ul {
list-style: none;
}
.servece-type-info li {
font-size: 12px;
cursor: pointer;
font-weight: normal;
line-height: 15px;
text-align: center;
margin-bottom: 13px;
color: #333;
}
.servece-type-info li:first-child {
font-size: 14.82px;
font-weight: normal;
line-height: 18px;
letter-spacing: 0px;
margin-bottom: 17px;
color: #333333;
}
.friend-link {
display: flex;
align-items: flex-start;
justify-content: center;
width: 908px;
padding: 10px 0;
margin: 0px auto;
border-top: 1px solid $border_color;
}
.information {
margin-top: 23px;
margin-bottom: 21px;
display: flex;
justify-content: center;
}
a{
color: #3457FF;
}
.zhizhao {
width: 20px;
height: 20px;
border-radius: 50%;
}
.friend-link-item ul {
list-style: none;
}
.friend-link-item li {
padding: 5px 0px;
float: left;
margin-right: 59px;
font-weight: normal;
line-height: 13px;
color: #333333;
}
.link-item {
padding: 0px 8px;
cursor: pointer;
}
.link-last-item {
border: none;
}
.copyright {
width: 100%;
cursor: pointer;
text-align: center;
height:25px;
opacity: 1;
margin-bottom: 12px;
font-size: 12px;
font-weight: normal;
line-height: 13px;
letter-spacing: 0px;
color: #959595;
}
.footer-icon-text {
@include title_color($light_title_color);
}
.copyright,
.friend-link,
.servece-type-info {
@include sub_color($light_sub_color);
}
/*****************************底 部 结 束*****************************/
</style>