修改
BIN
web/public/images/16_9.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
web/public/images/1_1.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
web/public/images/1_2.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
web/public/images/2_1.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
web/public/images/3_4.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
web/public/images/4_3.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
web/public/images/9_16.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
web/public/images/mj1.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
web/public/images/mj2.jpg
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
web/public/images/mj3.jpg
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
web/public/images/nj1.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
web/public/images/nj2.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
web/public/images/nj3.jpg
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
web/public/images/nj4.jpg
Normal file
After Width: | Height: | Size: 32 KiB |
153
web/src/App.vue
@ -39,4 +39,157 @@ html, body {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 省略显示 */
|
||||||
|
.ellipsis {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.sl {
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.sl3 {
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.sl4 {
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 居中布局 */
|
||||||
|
.auto_center{
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%,-50%);
|
||||||
|
}
|
||||||
|
.h_center{
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
-webkit-transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.w_center{
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
-webkit-transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* flex布局 */
|
||||||
|
.flex-row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-col {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.justify-start {
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.justify-end {
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.justify-center {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.justify-between {
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.justify-around {
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
.justify-evenly {
|
||||||
|
justify-content: space-evenly;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items-start {
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items-end {
|
||||||
|
align-items: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items-center {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items-baseline {
|
||||||
|
align-items: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items-stretch {
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.self-start {
|
||||||
|
align-self: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.self-end {
|
||||||
|
align-self: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.self-center {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.self-baseline {
|
||||||
|
align-self: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.self-stretch {
|
||||||
|
align-self: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-1 {
|
||||||
|
flex: 1 1 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-auto {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grow {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grow-0 {
|
||||||
|
flex-grow: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shrink {
|
||||||
|
flex-shrink: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shrink-0 {
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shrink-1 {
|
||||||
|
flex-shrink: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.relative {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
|
|
||||||
.el-icon {
|
.el-icon {
|
||||||
position relative
|
position relative
|
||||||
top 3px
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.grid-content {
|
.grid-content {
|
||||||
@ -49,29 +48,72 @@
|
|||||||
padding 8px 14px
|
padding 8px 14px
|
||||||
display flex
|
display flex
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color #585858
|
background-color #585858
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.icon{
|
||||||
|
width 20px
|
||||||
|
height 20px
|
||||||
|
margin-bottom 5px
|
||||||
|
}
|
||||||
|
|
||||||
.shape {
|
.shape {
|
||||||
width 16px
|
width 16px
|
||||||
height 16px
|
height 16px
|
||||||
margin-right 5px
|
margin-bottom 5px
|
||||||
border 1px solid #C4C4C4
|
border 1px solid #C4C4C4
|
||||||
border-radius 3px
|
border-radius 3px
|
||||||
}
|
}
|
||||||
|
|
||||||
.shape.vertical {
|
.shape.size9-16 {
|
||||||
width 12px
|
width 9px
|
||||||
height 20px
|
height 16px
|
||||||
}
|
}
|
||||||
|
|
||||||
.shape.horizontal {
|
.shape.size16-9 {
|
||||||
height 12px
|
height 9px
|
||||||
width 20px
|
width 16px
|
||||||
position relative
|
position relative
|
||||||
top 3px
|
margin 4px 0 7px
|
||||||
|
}
|
||||||
|
|
||||||
|
.shape.size3-4 {
|
||||||
|
width 12px
|
||||||
|
height 16px
|
||||||
|
}
|
||||||
|
|
||||||
|
.shape.size4-3 {
|
||||||
|
height 12px
|
||||||
|
width 16px
|
||||||
|
position relative
|
||||||
|
margin 4px 0 4px
|
||||||
|
}
|
||||||
|
|
||||||
|
.shape.size2-3 {
|
||||||
|
width 11px
|
||||||
|
height 16px
|
||||||
|
}
|
||||||
|
|
||||||
|
.shape.size3-2 {
|
||||||
|
height 11px
|
||||||
|
width 16px
|
||||||
|
position relative
|
||||||
|
margin 4px 0 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
.shape.size1-2 {
|
||||||
|
width 8px
|
||||||
|
height 16px
|
||||||
|
}
|
||||||
|
|
||||||
|
.shape.size2-1 {
|
||||||
|
height 8px
|
||||||
|
width 16px
|
||||||
|
position relative
|
||||||
|
margin 4px 0 8px
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,6 +132,7 @@
|
|||||||
border 1px solid #454545
|
border 1px solid #454545
|
||||||
border-radius 5px
|
border-radius 5px
|
||||||
padding 10px
|
padding 10px
|
||||||
|
margin-bottom 10px
|
||||||
display flex
|
display flex
|
||||||
flex-flow column
|
flex-flow column
|
||||||
align-items center
|
align-items center
|
||||||
@ -118,14 +161,23 @@
|
|||||||
|
|
||||||
.form-item-inner {
|
.form-item-inner {
|
||||||
display flex
|
display flex
|
||||||
|
align-items: center
|
||||||
|
|
||||||
|
.el-select {
|
||||||
|
--el-select-input-focus-border-color: #47FFF1;
|
||||||
|
--el-input-focus-border-color: #47FFF1;
|
||||||
|
}
|
||||||
|
.el-input__wrapper {
|
||||||
|
background: #383838;
|
||||||
|
}
|
||||||
|
.el-input__inner {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
.el-icon {
|
.el-icon {
|
||||||
margin-left 10px
|
margin-left 10px
|
||||||
margin-top 2px
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.img-uploader {
|
.img-uploader {
|
||||||
.el-upload {
|
.el-upload {
|
||||||
border: 1px dashed var(--el-border-color);
|
border: 1px dashed var(--el-border-color);
|
||||||
@ -153,6 +205,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.param-line.pt {
|
.param-line.pt {
|
||||||
|
display: flex
|
||||||
|
align-items: center
|
||||||
padding-top 5px
|
padding-top 5px
|
||||||
padding-bottom 5px
|
padding-bottom 5px
|
||||||
}
|
}
|
||||||
@ -192,6 +246,5 @@
|
|||||||
margin-left 10px
|
margin-left 10px
|
||||||
cursor pointer
|
cursor pointer
|
||||||
position relative
|
position relative
|
||||||
top 2px
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,6 +4,99 @@
|
|||||||
color #ffffff
|
color #ffffff
|
||||||
overflow-x hidden
|
overflow-x hidden
|
||||||
|
|
||||||
|
.task-list-inner {
|
||||||
|
.el-tabs {
|
||||||
|
--el-tabs-header-height: 55px;
|
||||||
|
}
|
||||||
|
.el-tabs__item {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.title-tabs .el-tabs__item.is-active {
|
||||||
|
color: #47FFF1;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.title-tabs .el-tabs__active-bar {
|
||||||
|
background-color: #47FFF1;
|
||||||
|
}
|
||||||
|
.title-tabs .el-tabs__content {
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-textarea {
|
||||||
|
--el-input-focus-border-color: #47FFF1;
|
||||||
|
}
|
||||||
|
.el-textarea__inner {
|
||||||
|
background: transparent;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input__wrapper {
|
||||||
|
background: transparent;
|
||||||
|
padding 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
.text{
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: #6b778c;
|
||||||
|
font-size: 15px
|
||||||
|
}
|
||||||
|
|
||||||
|
.param-line.pt {
|
||||||
|
padding-top 5px
|
||||||
|
padding-bottom 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-item-inner {
|
||||||
|
display flex
|
||||||
|
align-items: center
|
||||||
|
|
||||||
|
.el-icon {
|
||||||
|
margin-left 10px
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-form-item__label {
|
||||||
|
color #ffffff
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-uploader {
|
||||||
|
.el-upload {
|
||||||
|
border: 1px dashed var(--el-border-color);
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
width 300px;
|
||||||
|
transition: var(--el-transition-duration-fast);
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--el-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-icon.uploader-icon {
|
||||||
|
font-size: 28px
|
||||||
|
color: #8c939d
|
||||||
|
width 100%
|
||||||
|
height: 120px
|
||||||
|
text-align: center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-btn{
|
||||||
|
margin: 20px 0
|
||||||
|
|
||||||
|
.el-icon.submit-icon {
|
||||||
|
font-size: 28px
|
||||||
|
width 100%
|
||||||
|
height: 100px
|
||||||
|
text-align: center
|
||||||
|
margin-right: 10px
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.running-job-list {
|
.running-job-list {
|
||||||
.job-item {
|
.job-item {
|
||||||
|
@ -1,43 +1,43 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="home">
|
<div class="home">
|
||||||
<div class="navigator">
|
<div class="navigator">
|
||||||
<div class="logo">
|
<div class="logo">
|
||||||
<el-image :src="logo"/>
|
<el-link href="/">
|
||||||
<div class="divider"></div>
|
<el-image :src="logo" />
|
||||||
</div>
|
</el-link>
|
||||||
|
<div class="divider"></div>
|
||||||
<ul class="nav-items">
|
</div>
|
||||||
<li v-for="item in navs" :key="item.path">
|
<ul class="nav-items">
|
||||||
<el-tooltip
|
<li v-for="item in navs" :key="item.path">
|
||||||
effect="light"
|
<el-tooltip effect="light" :content="item.title" placement="right">
|
||||||
:content="item.title"
|
<a @click="changeNav(item)" :class="item.path === curPath ? 'active' : ''">
|
||||||
placement="right"
|
<el-image :src="item.icon_path" :width="20" v-if="item.icon_path" />
|
||||||
>
|
<i :class="'iconfont icon-' + item.icon" v-else></i>
|
||||||
<a @click="changeNav(item)" :class="item.path === curPath?'active':''">
|
</a>
|
||||||
<el-image :src="item.icon_path" :width="20" v-if="item.icon_path"/>
|
</el-tooltip>
|
||||||
<i :class="'iconfont icon-'+item.icon" v-else></i>
|
<div :class="item.path === curPath ? 'title active' : 'title'">{{ item.title }}</div>
|
||||||
</a>
|
</li>
|
||||||
</el-tooltip>
|
</ul>
|
||||||
</li>
|
</div>
|
||||||
</ul>
|
<div class="content">
|
||||||
</div>
|
<router-view v-slot="{ Component }">
|
||||||
<div class="content">
|
<transition name="move" mode="out-in">
|
||||||
<router-view v-slot="{ Component }">
|
<component :is="Component"></component>
|
||||||
<transition name="move" mode="out-in">
|
</transition>
|
||||||
<component :is="Component"></component>
|
</router-view>
|
||||||
</transition>
|
</div>
|
||||||
</router-view>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
||||||
import {useRouter} from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import {ref} from "vue";
|
import { checkSession } from "@/action/session";
|
||||||
|
import { isMobile } from "@/utils/libs";
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const logo = '/images/logo.png';
|
const logo = '/images/icon-logo.png';
|
||||||
const navs = ref([
|
const navs = ref([
|
||||||
{path: "/chat", icon_path: "/images/chat.png", title: "对话聊天"},
|
{path: "/chat", icon_path: "/images/chat.png", title: "对话聊天"},
|
||||||
{path: "/mj", icon_path: "/images/mj.png", title: "MJ 绘画"},
|
{path: "/mj", icon_path: "/images/mj.png", title: "MJ 绘画"},
|
||||||
@ -51,8 +51,8 @@ const navs = ref([
|
|||||||
const curPath = ref(router.currentRoute.value.path)
|
const curPath = ref(router.currentRoute.value.path)
|
||||||
|
|
||||||
const changeNav = (item) => {
|
const changeNav = (item) => {
|
||||||
curPath.value = item.path
|
curPath.value = item.path
|
||||||
router.push(item.path)
|
router.push(item.path)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ const changeNav = (item) => {
|
|||||||
.navigator {
|
.navigator {
|
||||||
display flex
|
display flex
|
||||||
flex-flow column
|
flex-flow column
|
||||||
width 48px
|
width 70px
|
||||||
padding 10px 6px
|
padding 10px 6px
|
||||||
border-right: 1px solid #3c3c3c
|
border-right: 1px solid #3c3c3c
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ const changeNav = (item) => {
|
|||||||
display flex
|
display flex
|
||||||
flex-flow column
|
flex-flow column
|
||||||
align-items center
|
align-items center
|
||||||
height 60px
|
|
||||||
|
|
||||||
.divider {
|
.divider {
|
||||||
border-bottom 1px solid #4A4A4A
|
border-bottom 1px solid #4A4A4A
|
||||||
@ -85,7 +85,9 @@ const changeNav = (item) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.nav-items {
|
.nav-items {
|
||||||
margin-top 10px
|
margin-top: 20px;
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
margin-bottom 15px
|
margin-bottom 15px
|
||||||
@ -94,8 +96,8 @@ const changeNav = (item) => {
|
|||||||
color #DADBDC
|
color #DADBDC
|
||||||
background-color #40444A
|
background-color #40444A
|
||||||
border-radius 10px
|
border-radius 10px
|
||||||
width 44px
|
width 48px
|
||||||
height 44px
|
height 48px
|
||||||
display flex
|
display flex
|
||||||
justify-content center
|
justify-content center
|
||||||
align-items center
|
align-items center
|
||||||
@ -112,6 +114,16 @@ const changeNav = (item) => {
|
|||||||
|
|
||||||
a:hover, a.active {
|
a:hover, a.active {
|
||||||
color #47fff1
|
color #47fff1
|
||||||
|
}
|
||||||
|
|
||||||
|
.title{
|
||||||
|
font-size: 12px
|
||||||
|
padding-top: 5px
|
||||||
|
color: #e5e7eb;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.active {
|
||||||
|
color #47fff1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ let webpack = require('webpack')
|
|||||||
module.exports = defineConfig({
|
module.exports = defineConfig({
|
||||||
transpileDependencies: true,
|
transpileDependencies: true,
|
||||||
lintOnSave: false, //关闭eslint校验
|
lintOnSave: false, //关闭eslint校验
|
||||||
|
productionSourceMap: false, //在生产模式中禁用 Source Map,既可以减少包大小,也可以加密源码
|
||||||
configureWebpack: {
|
configureWebpack: {
|
||||||
// disable performance hints
|
// disable performance hints
|
||||||
performance: {
|
performance: {
|
||||||
|