Browse Source

优化框架

master
科技小王子 10 months ago
parent
commit
928f9783e9
  1. 10
      components/AppHeader.vue
  2. 4
      nuxt.config.ts
  3. 2
      pages/[custom]/index.vue
  4. 75
      pages/product/index.vue
  5. 41
      pages/test.vue

10
components/AppHeader.vue

@ -1,8 +1,8 @@
<template> <template>
<header class="header bg-white fixed z-10 w-full">
<header class="header bg-black fixed z-10 w-full">
<div class="flex between md:w-3/4 m-auto px-2"> <div class="flex between md:w-3/4 m-auto px-2">
<div class="header__left flex"> <div class="header__left flex">
<div class="logo w-[140px] flex items-center" @click="reload">
<div class="logo w-[170px] flex items-center" @click="reload">
<nuxt-link v-if="config?.siteLogo" to="/"> <nuxt-link v-if="config?.siteLogo" to="/">
<el-image <el-image
:src="config.siteLogo" :src="config.siteLogo"
@ -20,6 +20,9 @@
<el-menu <el-menu
:default-active="currentIndex" :default-active="currentIndex"
mode="horizontal" mode="horizontal"
background-color="#000000"
text-color="#fff"
active-text-color="#ffd04b"
:collapse="true" :collapse="true"
:ellipsis="false" :ellipsis="false"
style="border-bottom: none" style="border-bottom: none"
@ -30,7 +33,7 @@
<template v-if="item.children.length > 0"> <template v-if="item.children.length > 0">
<el-sub-menu :index="item.path"> <el-sub-menu :index="item.path">
<template #title> <template #title>
<text class="text-[17px]">{{ item.title }}</text>
<el-button type="text" :icon="ElIconArrowDown" class="text-[17px]">{{ item.title }}</el-button>
</template> </template>
<el-menu-item v-for="(sub,subIndex) in item.children" :index="`${sub.path}`" :key="subIndex">{{ sub.title }}</el-menu-item> <el-menu-item v-for="(sub,subIndex) in item.children" :index="`${sub.path}`" :key="subIndex">{{ sub.title }}</el-menu-item>
</el-sub-menu> </el-sub-menu>
@ -85,6 +88,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
//
import type { Config } from '~/types/config'; import type { Config } from '~/types/config';
import type { ApiResult } from '~/api'; import type { ApiResult } from '~/api';
import type { Navigation } from '~/api/cms/navigation/model'; import type { Navigation } from '~/api/cms/navigation/model';

4
nuxt.config.ts

@ -4,7 +4,7 @@ import {domain} from "~/config";
export default defineNuxtConfig({ export default defineNuxtConfig({
compatibilityDate: '2024-04-03', compatibilityDate: '2024-04-03',
devtools: {enabled: false}, devtools: {enabled: false},
modules: ["@element-plus/nuxt", '@unocss/nuxt', "@nuxt/image"],
modules: ["@element-plus/nuxt",'@unocss/nuxt', "@nuxt/image"],
css: [ css: [
'element-plus/dist/index.css', 'element-plus/dist/index.css',
'element-plus/theme-chalk/display.css', 'element-plus/theme-chalk/display.css',
@ -31,7 +31,7 @@ export default defineNuxtConfig({
runtimeConfig: { runtimeConfig: {
public: { public: {
// 一般只需修改租户号和接口地址 // 一般只需修改租户号和接口地址
tenantId: '16880',
tenantId: '5',
domain: 'websoft.top', domain: 'websoft.top',
apiBase: 'https://modules.gxwebsoft.com/api', apiBase: 'https://modules.gxwebsoft.com/api',
// 以下一般不需要修改 // 以下一般不需要修改

2
pages/[custom]/index.vue

@ -15,8 +15,6 @@
</div> </div>
</div> </div>
</div> </div>
{{ config }}
{{ token }}
<div v-if="!form"> <div v-if="!form">
<el-empty description="404 页面不存在"></el-empty> <el-empty description="404 页面不存在"></el-empty>
</div> </div>

75
pages/product/index.vue

@ -0,0 +1,75 @@
<template>
<div class="banner m-auto text-center pt-[60px]" v-if="form">
<el-image v-if="form.photo" :src="form.photo"></el-image>
</div>
<div class="container">
<div v-if="form" class="flex flex-col w-[1280px] m-auto">
<el-breadcrumb class="my-5" separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>{{ form.name }}</el-breadcrumb-item>
</el-breadcrumb>
<div class="w-7xl m-auto bg-white">
<div class="title text-3xl text-center py-10">{{ form.name }}</div>
<div class="p-4 leading-7" v-html="form.content">
</div>
</div>
</div>
</div>
<div v-if="!form">
<el-empty description="404 页面不存在"></el-empty>
</div>
</template>
<script setup lang="ts">
import type {Design} from "~/api/cms/design/model";
import type {ApiResult} from "~/api";
import {useServerRequest} from "~/composables/useServerRequest";
import {useConfigInfo, useToken} from "~/composables/configState";
import type {GoodsCategory} from "~/api/shop/goodsCategory/model";
const route = useRoute();
const { query, params } = route;
const pageName = window.location.pathname;
console.log(window.location.pathname,'pageName')
//
const config = useConfigInfo();
const token = useToken();
//
const form = ref<Design | any>();
//
const { data: design } = await useServerRequest<ApiResult<Design[]>>('/cms/design', {params: {
path: `${pageName}`
}})
if (design.value) {
design.value?.data?.map((d,i) => {
if(i == 0){
form.value = d;
console.log(d.name)
useHead({
title: `${d.name} 网宿软件`,
meta: [{ name: "keywords", content: "Nuxt Vue SSR Typescript" }],
bodyAttrs: {
class: "page-container",
},
script: [
{
children: "console.log('Hello World')",
},
],
});
}
})
}
const { data: category } = useServerRequest<ApiResult<GoodsCategory>>('/shop/goods-category')
console.log(category.value)
</script>
<style scoped lang="scss">
</style>

41
pages/test.vue

@ -4,25 +4,30 @@
<template> <template>
<div class="p-20 pt-[200px]"> <div class="p-20 pt-[200px]">
<el-dropdown>
<span class="el-dropdown-link">
Dropdown List
<el-icon class="el-icon--right">
<arrow-down />
</el-icon>
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>Action 1</el-dropdown-item>
<el-dropdown-item>Action 2</el-dropdown-item>
<el-dropdown-item>Action 3</el-dropdown-item>
<el-dropdown-item disabled>Action 4</el-dropdown-item>
<el-dropdown-item divided>Action 5</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-tag type="primary">Tag 1</el-tag>
<el-icon>
<ElIconLink/>
</el-icon>
<el-icon><ElIconArrowDown /></el-icon>
<!-- <el-dropdown>-->
<!-- <span class="el-dropdown-link">-->
<!-- Dropdown List-->
<!-- <el-icon class="el-icon&#45;&#45;right">-->
<!-- <arrow-down />-->
<!-- </el-icon>-->
<!-- </span>-->
<!-- <template #dropdown>-->
<!-- <el-dropdown-menu>-->
<!-- <el-dropdown-item>Action 1</el-dropdown-item>-->
<!-- <el-dropdown-item>Action 2</el-dropdown-item>-->
<!-- <el-dropdown-item>Action 3</el-dropdown-item>-->
<!-- <el-dropdown-item disabled>Action 4</el-dropdown-item>-->
<!-- <el-dropdown-item divided>Action 5</el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </template>-->
<!-- </el-dropdown>-->
<!-- <el-tag type="primary">Tag 1</el-tag>-->
</div> </div>
</template> </template>

Loading…
Cancel
Save