更新.gitignore文件,添加.specstory/history/和.cursorindexingignore的忽略规则;在nuxt.config.js中添加favicon链接;修改contactUs.vue,替换社交链接部分为Location组件,并调整样式;更新favicon.ico文件。
This commit is contained in:
parent
df9c74ba16
commit
e7586ad0b9
3
.gitignore
vendored
3
.gitignore
vendored
@ -89,3 +89,6 @@ sw.*
|
|||||||
# Vim swap files
|
# Vim swap files
|
||||||
*.swp
|
*.swp
|
||||||
dist.zip
|
dist.zip
|
||||||
|
|
||||||
|
.specstory/history/
|
||||||
|
.cursorindexingignore
|
||||||
|
|||||||
6
.specstory/.project.json
Normal file
6
.specstory/.project.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"workspace_id": "6bd1-6b72-4fd1-06ef",
|
||||||
|
"workspace_id_at": "2025-04-29T01:32:19.325Z",
|
||||||
|
"git_id": "6d07-2686-bb33-e057",
|
||||||
|
"git_id_at": "2025-04-29T01:32:19.769Z"
|
||||||
|
}
|
||||||
210
components/Location.vue
Normal file
210
components/Location.vue
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
<template>
|
||||||
|
<div class="contact-container">
|
||||||
|
<div class="social-icons">
|
||||||
|
<a
|
||||||
|
v-for="icon in socialIcons"
|
||||||
|
:key="icon.name"
|
||||||
|
:href="icon.link"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<img :src="icon.icon" :alt="icon.name" class="icon" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-card">
|
||||||
|
<div class="image-section">
|
||||||
|
<img src="../static/images/location.png" alt="Company Image" class="company-image" />
|
||||||
|
</div>
|
||||||
|
<div class="info-section">
|
||||||
|
<h2 class="company-name">{{ companyName }}</h2>
|
||||||
|
<p class="company-address">{{ companyAddress }}</p>
|
||||||
|
<p class="company-contact">{{ companyContact }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { defineComponent } from "vue";
|
||||||
|
import about from "../pages/aboutUs.vue";
|
||||||
|
|
||||||
|
// 可配置的社交图标数据
|
||||||
|
const socialIcons = [
|
||||||
|
{
|
||||||
|
name: "Telegram",
|
||||||
|
icon: "https://cdn-icons-png.flaticon.com/512/2111/2111646.png",
|
||||||
|
link: "https://t.me/buddyscloud",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Phone",
|
||||||
|
icon: "https://cdn-icons-png.flaticon.com/512/126/126341.png",
|
||||||
|
link: "tel:+8615656988217",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "WhatsApp",
|
||||||
|
icon: "https://cdn-icons-png.flaticon.com/512/733/733585.png",
|
||||||
|
link: "https://whatsapp.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Facebook",
|
||||||
|
icon: "https://cdn-icons-png.flaticon.com/512/733/733547.png",
|
||||||
|
link: "https://facebook.com",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const companyName = "南京知云信息科技有限公司";
|
||||||
|
const companyAddress = "江苏省南京市高淳区砖墙镇竹园里138号砖墙经济园B区1幢101-76号南京,jiangsu 211305";
|
||||||
|
const companyContact = "Phone: (+86) 15656988217 | Email: admin@buddyscloud.com";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.contact-container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
position: relative;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-icons {
|
||||||
|
position: absolute;
|
||||||
|
top: -50px;
|
||||||
|
right: 20px;
|
||||||
|
display: flex;
|
||||||
|
gap: 15px;
|
||||||
|
background: transparent;
|
||||||
|
padding: 10px 15px;
|
||||||
|
border-radius: 25px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon:hover {
|
||||||
|
transform: scale(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-card {
|
||||||
|
display: flex;
|
||||||
|
background-color: #ff6700;
|
||||||
|
border-radius: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||||
|
margin-top: 20px;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-section {
|
||||||
|
flex: 1;
|
||||||
|
max-width: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-image {
|
||||||
|
width: 100%;
|
||||||
|
height: 160px;
|
||||||
|
object-fit: contain; /*contain 保持图片比例,fill 拉伸图片*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section {
|
||||||
|
flex: 2;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-name {
|
||||||
|
margin-top: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address,
|
||||||
|
.company-contact {
|
||||||
|
color: #ffffff;
|
||||||
|
margin: 10px 0;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移动端响应式样式 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.contact-container {
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-icons {
|
||||||
|
position: static;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
background: rgba(255, 255, 255, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-card {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-section {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-image {
|
||||||
|
height: 200px;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section {
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-name {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address,
|
||||||
|
.company-contact {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 小屏幕手机适配 */
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.contact-container {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-icons {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-image {
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-name {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address,
|
||||||
|
.company-contact {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -22,7 +22,10 @@ export default {
|
|||||||
innerHTML: `(function(d,w,c){if(w[c])return;var s=d.createElement("script");w[c]=function(){(w[c].z=w[c].z||[]).push(arguments);};s.async=true;s.src="https://static.ahc.ink/hecong.js";if(d.head)d.head.appendChild(s);})(document,window,"_AIHECONG");_AIHECONG("ini",{channelId:"9BgJ9p"});`,
|
innerHTML: `(function(d,w,c){if(w[c])return;var s=d.createElement("script");w[c]=function(){(w[c].z=w[c].z||[]).push(arguments);};s.async=true;s.src="https://static.ahc.ink/hecong.js";if(d.head)d.head.appendChild(s);})(document,window,"_AIHECONG");_AIHECONG("ini",{channelId:"9BgJ9p"});`,
|
||||||
type: 'text/javascript',
|
type: 'text/javascript',
|
||||||
body: true
|
body: true
|
||||||
}
|
},
|
||||||
|
],
|
||||||
|
link: [
|
||||||
|
{ rel: "icon", type: "image/x-icon", href: "favicon.ico" }
|
||||||
],
|
],
|
||||||
__dangerouslyDisableSanitizers: ['script'], // 允许内联脚本
|
__dangerouslyDisableSanitizers: ['script'], // 允许内联脚本
|
||||||
htmlAttrs: {
|
htmlAttrs: {
|
||||||
|
|||||||
@ -28,12 +28,13 @@
|
|||||||
我们将尽快给您回复 We will respond as soon as possible
|
我们将尽快给您回复 We will respond as soon as possible
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer-social">
|
<Location class="footer-social"/>
|
||||||
|
<!-- <div class="footer-social">
|
||||||
<a :href="contactLinks.telegram" target="_blank">
|
<a :href="contactLinks.telegram" target="_blank">
|
||||||
<img src="../assets/icon/Send.webp" alt="telegram" />
|
<img src="../assets/icon/Send.webp" alt="telegram" />
|
||||||
</a>
|
</a>
|
||||||
<a :href="contactLinks.phone" target="_blank">
|
<a :href="contactLinks.phone" target="_blank">
|
||||||
<img src="../assets/icon/Phone.webp" alt="phone" />
|
<img src="../static/images/phone.webp" alt="phone" />
|
||||||
</a>
|
</a>
|
||||||
<a :href="contactLinks.wechat" target="_blank">
|
<a :href="contactLinks.wechat" target="_blank">
|
||||||
<img src="../assets/icon/Wexin.webp" alt="wechat" />
|
<img src="../assets/icon/Wexin.webp" alt="wechat" />
|
||||||
@ -41,14 +42,10 @@
|
|||||||
<a :href="contactLinks.facebook" target="_blank">
|
<a :href="contactLinks.facebook" target="_blank">
|
||||||
<img src="../assets/icon/Facebook.webp" alt="facebook" />
|
<img src="../assets/icon/Facebook.webp" alt="facebook" />
|
||||||
</a>
|
</a>
|
||||||
<a :href="contactLinks.email" target="_blank">
|
</div> -->
|
||||||
<img src="../assets/icon/Email.webp" alt="email" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<FooterMenu v-if="isContactPage"></FooterMenu>
|
<FooterMenu v-if="isContactPage"></FooterMenu>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -58,6 +55,7 @@ import NavMenu from "../components/NavMenu.vue";
|
|||||||
import FooterMenu from "../components/FooterMenu.vue";
|
import FooterMenu from "../components/FooterMenu.vue";
|
||||||
import { contactLinks } from "../static/js/contact_link.js";
|
import { contactLinks } from "../static/js/contact_link.js";
|
||||||
import {updateTDK} from "../assets/js/dynamic-tdk.js";
|
import {updateTDK} from "../assets/js/dynamic-tdk.js";
|
||||||
|
import Location from "../components/Location.vue"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@ -92,6 +90,8 @@ export default {
|
|||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
background: url("../assets/back/ri.webp") no-repeat;
|
background: url("../assets/back/ri.webp") no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
|
/* background-size: fit; */
|
||||||
|
object-fit: fill;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: left;
|
justify-content: left;
|
||||||
padding: 0 clamp(2rem, 10vw, 16rem);
|
padding: 0 clamp(2rem, 10vw, 16rem);
|
||||||
@ -108,6 +108,7 @@ export default {
|
|||||||
align-self: end;
|
align-self: end;
|
||||||
margin-bottom: 15%;
|
margin-bottom: 15%;
|
||||||
min-height: 58%;
|
min-height: 58%;
|
||||||
|
bottom: 145px;
|
||||||
}
|
}
|
||||||
.contact-form-container {
|
.contact-form-container {
|
||||||
background-color: rgba(255, 255, 255, 0.8); /* 半透明白色背景 */
|
background-color: rgba(255, 255, 255, 0.8); /* 半透明白色背景 */
|
||||||
@ -203,17 +204,25 @@ export default {
|
|||||||
background: url("../assets/back/ri2.webp") no-repeat;
|
background: url("../assets/back/ri2.webp") no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-form-container {
|
.contact-form-container {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
margin: 0 auto;
|
margin: 20px auto;
|
||||||
height: 68%;
|
height: auto;
|
||||||
min-width: 90%;
|
min-width: 90%;
|
||||||
max-width: 90%;
|
max-width: 90%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-social {
|
.footer-social {
|
||||||
display: none;
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
margin: 20px auto;
|
||||||
|
width: 90%;
|
||||||
|
min-height: auto;
|
||||||
|
bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 15 KiB |
BIN
static/images/location.png
Normal file
BIN
static/images/location.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
static/images/phone.webp
Normal file
BIN
static/images/phone.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
Loading…
x
Reference in New Issue
Block a user