locale ru

This commit is contained in:
2023-07-11 17:21:34 +08:00
parent 4789db178f
commit 2bc08f4a39
173 changed files with 5065 additions and 1431 deletions

View File

@ -2,9 +2,9 @@
<div class="more conter1400">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<span class="_one" @click="handleShow()" style="cursor: pointer"
>解决方案</span
>
<span class="_one" @click="handleShow()" style="cursor: pointer">{{
t("solution.solution")
}}</span>
</el-breadcrumb-item>
<el-breadcrumb-item>
<span class="_one">{{ oneLevelTitle.title }}</span>
@ -41,12 +41,16 @@
<script setup>
// import request from "@/utils/request";
import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
const router = useRouter();
const { t } = useI18n();
function handlePath(id) {
let routeData = router.resolve({ path: `/solution/detail/${id}/` });
window.open(routeData.href, "_blank");
}
// async function solution_case_list() {
// return {
// code: 200,
@ -95,6 +99,7 @@ const props = defineProps({
});
console.log(props.data);
const emit = defineEmits();
function handleShow() {
emit("update:isShowMore", false);
}
@ -113,6 +118,7 @@ function getDataList() {
// loading.value = false;
// });
}
onMounted(() => {
// getDataList();
});
@ -120,31 +126,38 @@ onMounted(() => {
<style lang="scss" scoped>
.more {
padding-top: 30px;
.el-breadcrumb {
padding-bottom: 22px;
._one {
font-size: 16px;
font-weight: 400;
color: #666666;
}
._two {
font-size: 16px;
font-weight: 600 !important;
color: #333333;
}
}
._list {
display: flex;
flex-wrap: wrap;
li {
cursor: pointer;
width: calc(100% / 6);
padding: 0 11px 44px;
box-sizing: border-box;
&:hover ._head,
&:hover ._detail {
opacity: 0.6;
}
._head {
margin: 5px 0;
font-size: 17px;
@ -153,6 +166,7 @@ onMounted(() => {
color: #333333;
line-height: 19px;
}
._detail {
font-size: 15px;
font-family: Source Han Sans CN;

View File

@ -4,10 +4,12 @@
<div class="head">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<span class="one">服务案例</span>
<span class="one">{{ t("solution.serviceCase") }}</span>
</el-breadcrumb-item>
<el-breadcrumb-item>
<span>服务案例详情</span>
<span>
{{ t("solution.serviceCaseDetails") }}
</span>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
@ -16,7 +18,9 @@
<div>{{ state.data.title }}</div>
<div class="description">
<span class="visits">浏览量{{ state.data.visits }}</span>
<span class="visits"
>{{ t("solution.pageviews") }}{{ state.data.visits }}</span
>
<span>{{ parseTime(state.data.created_at) }}</span>
</div>
</div>
@ -34,7 +38,8 @@ import seeMore from "./components/seeMore.vue";
import { getInfo } from "@/api/website/solution/index";
import webFooter from "@/components/webFooter/index.vue";
import request from "@/utils/request";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
function detail(id) {
return request({
url: "/v1/service/solution_case/detail",

View File

@ -2,52 +2,54 @@
<div v-loading="loading" class="small">
<div class="_title">
<div
v-if="!state.banner"
style="height: 394px; background-color: #108de9"
v-if="!state.banner"
style="height: 394px; background-color: #108de9"
></div>
<div v-else style="height: 394px">
<img
:src="state.banner"
alt="banner"
style="width: 100%; height: 100%"
:src="state.banner"
alt="banner"
style="width: 100%; height: 100%"
/>
</div>
<div
v-if="state.caseList.length"
:class="isFixed ? '_fixed' : ''"
class="_li"
v-if="state.caseList.length"
:class="isFixed ? '_fixed' : ''"
class="_li"
>
<ul class="conter1000">
<li
v-for="(item, index) in state.caseList"
:key="item.id"
:class="activeId == item.id ? '_active' : ''"
@click="setScrollTop(item.id, index)"
v-for="(item, index) in state.caseList"
:key="item.id"
:class="activeId == item.id ? '_active' : ''"
@click="setScrollTop(item.id, index)"
>
{{ item.title }}
</li>
</ul>
</div>
<h2 v-else style="text-align: center; line-height: 100px">暂无数据</h2>
<h2 v-else style="text-align: center; line-height: 100px">
{{ t("common.noData") }}
</h2>
</div>
<div v-show="!isShowMore" class="box">
<div
v-for="(item, index) in state.caseList"
:key="index"
:ref="setItemRef"
:data-id="item.id"
class="_item"
v-for="(item, index) in state.caseList"
:key="index"
:ref="setItemRef"
:data-id="item.id"
class="_item"
>
<h3 class="_tit text-center" style="font-size: 24px; color: #333333">
{{ item.title }}
</h3>
<div class="_info conter1000">
<div v-if="isOddEvenNumber(index)" class="_r">
<img :src="item.image" alt srcset/>
<img :src="item.image" alt srcset />
</div>
<div
:class="isOddEvenNumber(index) ? '_paddingl' : '_paddingr'"
class="_l"
:class="isOddEvenNumber(index) ? '_paddingl' : '_paddingr'"
class="_l"
>
<h3 :class="isOddEvenNumber(index) ? 'text-right' : ''">
{{ item.title }}
@ -56,59 +58,60 @@
<p>{{ item.description }}</p>
</div>
<div v-if="!isOddEvenNumber(index)" class="_r">
<img :src="item.image" alt srcset/>
<img :src="item.image" alt srcset />
</div>
</div>
<div class="_list conter1400">
<ul>
<li
v-for="child in item.children.slice(0, 2)"
:key="child.id"
@click="handlePath(child.id)"
v-for="child in item.children.slice(0, 2)"
:key="child.id"
@click="handlePath(child.id)"
>
<el-image
:src="child.image"
fit="cover"
style="width: 100%; height: 135px"
:src="child.image"
fit="cover"
style="width: 100%; height: 135px"
></el-image>
<div class="_head text_hidden">{{ child.title }}</div>
<div class="_detail text_hidden">{{ child.description }}</div>
</li>
</ul>
<div class="_liBtn text-right">
<el-button class="x_btns" @click="handleShowMore(item)"
>查看更多
</el-button
>
<el-button class="x_btns" @click="handleShowMore(item)">
{{ t("common.viewMore") }}
</el-button>
</div>
</div>
</div>
</div>
<seeMore
v-if="isShowMore"
v-model:isShowMore="isShowMore"
v-model:oneLevelTitle="oneLevelTitle"
:data="moreData"
v-if="isShowMore"
v-model:isShowMore="isShowMore"
v-model:oneLevelTitle="oneLevelTitle"
:data="moreData"
></seeMore>
<webFooter></webFooter>
</div>
</template>
<script setup>
import {nextTick, onMounted, reactive} from "vue";
import { nextTick, onMounted, reactive } from "vue";
import seeMore from "./components/seeMore.vue";
import webFooter from "@/components/webFooter/index.vue";
import {banner} from "@/api/website/home/index";
import {useRoute, useRouter} from "vue-router";
import {getCase} from "@/api/website/solution";
import { banner } from "@/api/website/home/index";
import { useRoute, useRouter } from "vue-router";
import { getCase } from "@/api/website/solution";
import { useI18n } from "vue-i18n";
// import { getCategory } from "../../../api/website/solution";
const router = useRouter();
function handlePath(id) {
let routeData = router.resolve({path: `/solution/detail/${id}/`});
let routeData = router.resolve({ path: `/solution/detail/${id}/` });
window.open(routeData.href, "_blank");
}
const { t } = useI18n();
let moreData = ref([]);
const loading = ref(true);
const oneLevelTitle = ref({});
@ -139,7 +142,6 @@ watch(route, () => {
initData();
});
onMounted(() => {
initData();
});
@ -151,20 +153,21 @@ async function initData() {
let mode = route.params.mode;
// let key = keyDict[name];
mode && getCase({mode}).then((res) => {
state.caseList = res.data;
initScroll();
// loading.value = false;
});
mode &&
getCase({ mode }).then((res) => {
state.caseList = res.data;
initScroll();
// loading.value = false;
});
loading.value = true;
banner({locals: `解决方案>${name}`})
.then((resp) => {
state.banner = resp.data[0].images;
loading.value = false;
})
.catch(() => {
loading.value = false;
});
banner({ locals: `解决方案>${name}` })
.then((resp) => {
state.banner = resp.data[0].images;
loading.value = false;
})
.catch(() => {
loading.value = false;
});
}
function initScroll() {
@ -190,15 +193,15 @@ function initScroll() {
function getScroll() {
return {
left:
window.pageXOffset ||
document.documentElement.scrollLeft ||
document.body.scrollLeft ||
0,
window.pageXOffset ||
document.documentElement.scrollLeft ||
document.body.scrollLeft ||
0,
top:
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop ||
0,
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop ||
0,
};
}