fine-tune the new UI theme, merge the code and fixed conflicts

This commit is contained in:
RockYang 2024-12-24 16:13:36 +08:00
commit e857f98e5c
26 changed files with 141 additions and 139 deletions

View File

@ -107,7 +107,10 @@ func (t PowerType) String() string {
return "退款"
case PowerRedeem:
return "兑换"
case PowerGift:
return "赠送"
case PowerInvite:
return "邀请"
}
return "其他"
}

View File

@ -184,7 +184,7 @@ func (h *UserHandler) Register(c *gin.Context) {
if h.App.SysConfig.InvitePower > 0 {
err := h.userService.IncreasePower(int(inviteCode.UserId), h.App.SysConfig.InvitePower, model.PowerLog{
Type: types.PowerInvite,
Model: "",
Model: "Invite",
Remark: fmt.Sprintf("邀请用户注册奖励,金额:%d邀请码%s新用户%s", h.App.SysConfig.InvitePower, inviteCode.Code, user.Username),
})
if err != nil {

View File

@ -113,9 +113,9 @@
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
word-break: break-all;
height 34px
height 50px
font-size: .875rem;
color var(--el-text-color-primary)
color var(--text-fb)
}
}

View File

@ -131,7 +131,7 @@
min-width: 0;
flex: 1;
background-color: var(--el-bg-color)
color var(--el-text-color-primary)
color var(--text-fb)
.chat-config {
height 50px

View File

@ -27,9 +27,10 @@
--a-link-color: #6e8eff
--shadow-color:rgba(223,71,255,0.6)
--sm-btn-bg:#6052ed;
--theme-text-tertiary: #595959;
--theme-btn-fill-tertiary: #f0ebff;
--theme-text-btn-tertiary: #6841ea;
--theme-text-tertiary: #595959;
--theme-btn-fill-tertiary: #f0ebff;
--theme-text-btn-tertiary: #6841ea;
// #e7e7e8
@ -133,11 +134,19 @@
}
}
.sm-btn-theme{
background-color: var(--theme-btn-fill-tertiary) !important;
color: var(--theme-text-btn-tertiary) !important;
border: none;
}
background-color: var(--theme-btn-fill-tertiary) !important;
color: var(--theme-text-btn-tertiary) !important;
border: none;
}
.el-tag, .el-tag.el-tag--primary{
.el-tag, .el-tag.el-tag--primary{
--el-tag-bg-color:#f0ebff
}
}
.box-card{
padding: 20px;
background-color: var(--chat-bg);
border-radius: 8px;
}
.el-table th.el-table__cell {
background-color: var(--chat-bg)
}

View File

@ -25,8 +25,8 @@
color:var(--text-theme-color)
}
img{
width 30px
height: 30px
width 40px
height: 40px
object-fit: cover
border-radius: 50%
padding: 4px
@ -44,6 +44,10 @@
align-items center
flex-direction column
.iconfont {
font-size 22px
}
.icon-expand {
font-size 24px
margin-bottom 10px
@ -57,6 +61,7 @@
cursor pointer
color var(--text-color)
}
}
.menu-list-collapse{
.flex-center-col{
@ -66,6 +71,10 @@
height: 38px;
line-height: 38px;
.iconfont {
font-size 16px
}
}
.menu-list-item:hover,

View File

@ -3,9 +3,9 @@
overflow hidden
color var(--text-color)
display flex
justify-content center
align-items baseline
align-items center
background: var(--theme-bg) !important
flex-flow column
height: 100vh
@ -33,22 +33,25 @@
}
.menu-box {
position absolute
top 0
width 100%
display flex
height 80px
align-items center
.el-menu {
padding 0 30px
width 100%
display flex
justify-content space-between
align-items center
background none
border none
.menu-item {
display flex
padding 20px 0
// padding 20px 0
height 40px
align-items center
color var(--text-color);
.iconfont{

View File

@ -224,7 +224,7 @@
text-overflow ellipsis
}
.prompt {
color var( --el-text-color-primary)
color var( --text-fb)
cursor: text
}
.failed {

View File

@ -130,10 +130,13 @@
position: absolute
bottom: 10px
right: 20px
display: flex;
.mm-toolbar {
line-height: 36px;
display flex
flex-flow row
margin-left: 10px;
.mm-toolbar-brand {
display none
@ -141,7 +144,7 @@
.mm-toolbar-item {
cursor pointer
color var( --el-text-color-primary)
color var( --text-fb)
}
}

View File

@ -136,10 +136,11 @@
.el-button {
margin 10px 5px 0 5px
padding 0
height 32px
filter: none;
.icon-alipay,.icon-wechat-pay {
color var(--text-theme-color)
color #ffffff
}
.icon-qq {
color #15A6E8

View File

@ -65,7 +65,7 @@
label {
display flex
width 100px
color :var(--el-text-color-primary)
color :var(--text-fb)
}
.item-value {

View File

@ -20,6 +20,7 @@
display flex
flex-flow row
justify-content: space-between;
align-items center
.upload-music {
.iconfont {
@ -293,7 +294,7 @@
.tags {
font-size 14px
color var(--el-text-color-primary)
color var(--text-fb)
padding 3px 0
}
}

View File

@ -20,32 +20,31 @@
}
--btnColor: linear-gradient(88deg, #af61f0 1.44%, #5b62ce);
--border-active:rgba(255, 255, 255, 0.1);
// --card-bg: rgba(17, 28, 68, 1);
// --card-bg: #1f243f;
--card-bg:#252d58;
--card-bg-table: rgba(17, 28, 68, 1);
--chat-bg:#1f243f
--chat-wel-bg:#2d2f388a;
--card-bg-table: rgba(17, 28, 68, 1);
--theme-bg:rgb(13, 20, 53);
--theme-bg-color: rgb(13, 20, 53);
--theme-bg-all:rgb(13, 20, 53);
--sign-bg: rgba(27, 37, 75, 1);
--text-theme-color: #fff;
--sign-bg: rgba(27, 37, 75, 1);
--text-theme-color: #fff;
--text-color-primary: #d1c7ff;
--el-text-color-regular: rgba(163, 174, 208, 1)
--el-border-color:rgb(79, 80, 85)
--el-text-color-primary: #fff;//
--el-bg-color-overlay: rgba(17, 28, 68, 1);
--el-border-color-light: rgba(255, 255, 255, 0.2);
--theme-text-color-secondary: #a3aed0;
--theme-text-color-primary: #fff;
--theme-text-primary: #f3f3f3;
--line-box:rgba(255, 255, 255, 0.1);
// --chat-bg:#141a36;
--chat-bg:#1f243f
--el-bg-color:#141a36;
--el-fill-color-blank: rgba(17, 28, 68, 1);
--el-fill-color-light: rgba(86, 86, 95, .2);
--el-color-primary-light-9:rgba(86, 86, 95, .2);
--chat-wel-bg:#2d2f388a;
--theme-text-color-secondary: #a3aed0;
// --el-pagination-button-bg-color: rgba(86,86,95,0.2);
--el-text-color-regular: rgba(163, 174, 208, 1)
--el-border-color:rgb(79, 80, 85);//
--el-bg-color-overlay: rgba(17, 28, 68, 1);
--el-border-color-light: rgba(255, 255, 255, 0.2);
--chat-content-bg:rgba(86, 86, 95, .2);
--chat-content-bg-list:rgba(86, 86, 95, .2);
--hover-deep-color:#30323c;
//layout
.more-menus li.moreTitle,
.twoTittle .title,
@ -62,13 +61,6 @@
background: #0080006e;
}
--theme-text-color-primary: #fff;
--theme-text-primary: #f3f3f3;
--chat-content-bg:rgba(86, 86, 95, .2);
--chat-content-bg-list:rgba(86, 86, 95, .2);
--hover-deep-color:#30323c;
// --theme-text-tertiary: #e1e1e1;
//
--btn-bg: rgba(86, 86, 95, .5);

View File

@ -3,51 +3,42 @@
@import 'font.styl'
:root[data-theme="light"] {
--text-fb:#000;
// rgba(43, 54, 116, 1)
--text-color: #5b62ce; //
--normal-color: rgba(43, 54, 116, 1); //
p, h1, h2, h3, h4, h5, h6, article {
// color: var(--text-color) !important;
font-family: $font-regular;
}
html,
body,
#app,
.wrapper {
// background: var(--theme-bg)
// background-color: var(--theme-bg)
// background: linear-gradient(88deg, #fff3f3 1.44%, #e7e8ff);
font-family: $font-regular;
}//#6b61f6
}
--btnColor: linear-gradient(88deg, #af61f0 1.44%, #5b62ce);
--border-active:rgba(134, 140, 255, 1);
--code-btnColor: linear-gradient(88deg, #af61f0 1.44%, #5b62ce);
--card-bg:#fff;
--chat-bg:#fff;
--theme-bg:linear-gradient(88deg, #fff3f3 1.44%, #e7e8ff);
--theme-bg-all:#f5f7fd;
--theme-bg-color: #f5f7fd;
--sign-bg: rgba(244, 247, 254, 1);
--text-theme-color: rgba(43, 54, 116, 1)
--text-theme-color: rgba(43, 54, 116, 1)
--text-color-primary: rgba(67, 24, 255, 1);
--line-box:rgba(79, 89, 102, 0.122);
--el-bg-color-overlay: #fff;
--el-bg-color:#fff;
--el-fill-color-blank: #fff;
--theme-text-color-primary: #000;
--theme-text-color-primary: #000;
--theme-text-primary: #000;
--theme-text-color-secondary: #666;
--chat-bg: #fff;
--chat-content-bg:#f5f7fc;
--chat-list-bg: #0302020a;
--chat-content-bg-list: #fff;
--chat-wel-bg: rgba(247, 247, 248, 1);
--el-pagination-button-bg-color: rgba(86, 86, 95, 0.2);
--hover-deep-color: #fff;
--chat-content-bg-list:#fff;
--chat-wel-bg:rgba(247, 247, 248, 1);
--hover-deep-color:#fff;
--el-bg-color-overlay: #fff;
--el-bg-color:#fff;
--el-fill-color-blank: #fff;
--el-pagination-button-bg-color: rgba(86,86,95,0.2);
//
--btn-bg: rgba(100, 100, 100, .1);

View File

@ -19,7 +19,7 @@
<el-input v-model="form.code" maxlength="6"/>
</el-col>
<el-col :span="8" style="padding-left: 10px">
<send-msg :receiver="form.mobile" type="mobile"/>
<send-msg :receiver="form.mobile" size="default" type="mobile"/>
</el-col>
</el-row>
</el-form-item>

View File

@ -257,7 +257,8 @@ const reGenerate = (prompt) => {
code {
// color:var(--theme-text-color-primary);
color:#fff
background-color var(--el-color-primary-light-3)
// background-color var(--el-color-primary-light-3)
background-color: var(--el-color-primary);
padding 3px 5px;
border-radius 5px;
}
@ -349,7 +350,6 @@ const reGenerate = (prompt) => {
padding 10px 10px 10px 0;
.bar-item {
background-color var( --little-btn-bg);
padding 3px 5px;
margin-right 10px;
border-radius 5px;

View File

@ -6,13 +6,6 @@
:row-key="(row) => row.id"
table-layout="auto"
border
style="
--el-table-border-color: #373c47;
--el-table-tr-bg-color: #2d323b;
--el-table-row-hover-bg-color: #373c47;
--el-table-header-bg-color: #474e5c;
--el-table-text-color: #d1d1d1;
"
>
<el-table-column prop="username" label="用户" />
<el-table-column prop="invite_code" label="邀请码" />

View File

@ -8,7 +8,7 @@
>
<div class="form" id="bind-mobile-form">
<el-form :model="form">
<el-form-item label="兑换码">
<el-form-item>
<el-input v-model="form.code"/>
</el-form-item>
</el-form>

View File

@ -1,12 +1,10 @@
<template>
<el-container class="send-verify-code">
<el-button
type="primary"
class="btn-normal"
type="success"
:size="props.size"
:disabled="!canSend"
@click="sendMsg"
plain
>
{{ btnText }}
</el-button>
@ -17,12 +15,12 @@
<script setup>
//
import { ref } from "vue";
import { validateEmail, validateMobile } from "@/utils/validate";
import { httpPost } from "@/utils/http";
import { showMessageError, showMessageOK } from "@/utils/dialog";
import {ref} from "vue";
import {validateEmail, validateMobile} from "@/utils/validate";
import {httpPost} from "@/utils/http";
import {showMessageError, showMessageOK} from "@/utils/dialog";
import Captcha from "@/components/Captcha.vue";
import { getSystemInfo } from "@/store/cache";
import {getSystemInfo} from "@/store/cache";
// eslint-disable-next-line no-undef
const props = defineProps({

View File

@ -1,6 +1,6 @@
<template>
<div :class="'sidebar '+theme">
<a class="logo" href="/" target="_blank">
<a class="logo w-full" href="/" target="_blank">
<el-image :src="logo"/>
<span class="text" v-show="!sidebar.collapse">{{ title }}</span>
</a>
@ -212,7 +212,6 @@ setMenuItems(items)
.logo {
display flex
width 219px
background-color #324157
padding 6px 15px;
cursor pointer

View File

@ -19,7 +19,7 @@
</template>
</el-input>
</div>
<el-scrollbar :height="{ height: +'px' }">
<el-scrollbar :height="chatBoxHeight">
<div class="content">
<el-row v-for="chat in chatList" :key="chat.chat_id">
<div :class="chat.chat_id === chatId ? 'chat-list-item active' : 'chat-list-item'" @click="loadChat(chat)">
@ -262,24 +262,24 @@
</div>
</template>
<script setup>
import { nextTick, onMounted, onUnmounted, ref, watch } from "vue";
import {nextTick, onMounted, onUnmounted, ref, watch} from "vue";
import ChatPrompt from "@/components/ChatPrompt.vue";
import ChatReply from "@/components/ChatReply.vue";
import { Delete, Edit, InfoFilled, More, Plus, Promotion, Search, Share, VideoPause } from "@element-plus/icons-vue";
import {Delete, Edit, InfoFilled, More, Plus, Promotion, Search, Share, VideoPause} from "@element-plus/icons-vue";
import "highlight.js/styles/a11y-dark.css";
import { isMobile, randString, removeArrayItem, UUID } from "@/utils/libs";
import { ElMessage, ElMessageBox } from "element-plus";
import { httpGet, httpPost } from "@/utils/http";
import { useRouter } from "vue-router";
import {isMobile, randString, removeArrayItem, UUID} from "@/utils/libs";
import {ElMessage, ElMessageBox} from "element-plus";
import {httpGet, httpPost} from "@/utils/http";
import {useRouter} from "vue-router";
import Clipboard from "clipboard";
import { checkSession, getClientId, getSystemInfo } from "@/store/cache";
import {checkSession, getClientId, getSystemInfo} from "@/store/cache";
import Welcome from "@/components/Welcome.vue";
import { useSharedStore } from "@/store/sharedata";
import {useSharedStore} from "@/store/sharedata";
import FileSelect from "@/components/FileSelect.vue";
import FileList from "@/components/FileList.vue";
import ChatSetting from "@/components/ChatSetting.vue";
import BackTop from "@/components/BackTop.vue";
import { closeLoading, showLoading, showMessageError } from "@/utils/dialog";
import {closeLoading, showLoading, showMessageError} from "@/utils/dialog";
const title = ref("GeekAI-智能助手");
const models = ref([]);

View File

@ -38,15 +38,6 @@
</div>
</li>
<!-- <li
class="menu-list-item flex-center-col"
v-for="item in 5"
:key="item"
>
<el-icon><Location /></el-icon>
<div>首页</div>
</li> -->
<!-- 更多 -->
<div class="bot" :style="{ width: isCollapse ? '65px' : '170px' }">
<div class="bot-line"></div>
@ -116,13 +107,11 @@
</a>
<ThemeChange />
<!-- <div v-if="!isCollapse">会员</div> -->
</li>
</div>
</ul>
</div>
</div>
<!-- :style="{ 'padding-left': isCollapse ? '65px' : '170px' }" -->
<el-scrollbar class="right-main">
<div
v-if="loginUser.id === undefined || !loginUser.id"
@ -133,7 +122,6 @@
<div class="topheader" v-if="loginUser.id === undefined || !loginUser.id">
<el-button @click="router.push('/login')" class="btn-go animate__animated animate__pulse animate__infinite" round>登录</el-button>
</div>
<!-- <div class="content custom-scroll"> -->
<div class="content custom-scroll">
<router-view :key="routerViewKey" v-slot="{ Component }">
<transition name="move" mode="out-in">
@ -155,25 +143,24 @@
</template>
<script setup>
import { CirclePlus, Setting, UserFilled } from "@element-plus/icons-vue";
import {CirclePlus, Setting, UserFilled} from "@element-plus/icons-vue";
import ThemeChange from "@/components/ThemeChange.vue";
import avatarImg from "@/assets/img/avatar.jpg";
import { useRouter } from "vue-router";
import { onMounted, ref, watch } from "vue";
import { httpGet } from "@/utils/http";
import { ElMessage } from "element-plus";
import { checkSession, getLicenseInfo, getSystemInfo } from "@/store/cache";
import { removeUserToken } from "@/store/session";
import { useSharedStore } from "@/store/sharedata";
import {useRouter} from "vue-router";
import {onMounted, ref, watch} from "vue";
import {httpGet} from "@/utils/http";
import {ElMessage} from "element-plus";
import {checkSession, getLicenseInfo, getSystemInfo} from "@/store/cache";
import {removeUserToken} from "@/store/session";
import {useSharedStore} from "@/store/sharedata";
import ConfigDialog from "@/components/UserInfoDialog.vue";
import { showMessageError } from "@/utils/dialog";
import {showMessageError} from "@/utils/dialog";
const isCollapse = ref(true);
const router = useRouter();
const logo = ref("");
const mainNavs = ref([]);
const moreNavs = ref([]);
// const curPath = ref(router.currentRoute.value.path);
const curPath = ref();
const title = ref("");

View File

@ -82,11 +82,12 @@
</el-col>
</el-row>
</div>
<div class="box-card">
<h2>您推荐的用户</h2>
<h2>您推荐的用户</h2>
<div class="invite-logs">
<invite-list v-if="isLogin" />
<div class="invite-logs">
<invite-list v-if="isLogin" />
</div>
</div>
</div>
</div>

View File

@ -87,18 +87,25 @@
</div>
<div class="chat-box">
<div class="top-bar">
<!-- <div class="top-bar">
<el-button @click="downloadImage" type="primary">
<el-icon>
<Download />
</el-icon>
<span>下载图片</span>
<span>下载图片-</span>
</el-button>
</div>
</div> -->
<div class="body" id="markmap">
<svg ref="svgRef" :style="{ height: rightBoxHeight + 'px' }" />
<div id="toolbar"></div>
<div id="toolbar">
<el-button @click="downloadImage" type="primary">
<el-icon>
<Download />
</el-icon>
<span>下载图片</span>
</el-button>
</div>
</div>
</div>
<!-- end task list box -->
@ -119,7 +126,8 @@ import { Toolbar } from "markmap-toolbar";
import { useSharedStore } from "@/store/sharedata";
const leftBoxHeight = ref(window.innerHeight - 105);
const rightBoxHeight = ref(window.innerHeight - 115);
//const rightBoxHeight = ref(window.innerHeight - 115);
const rightBoxHeight = ref(window.innerHeight);
const prompt = ref("");
const text = ref("");

View File

@ -87,11 +87,12 @@
</el-col>
</el-row>
<el-empty description="暂无数据" v-else :image="nodata" />
<div class="box-card">
<h2 class="headline">消费账单</h2>
<h2 class="headline">消费账单</h2>
<div class="user-order">
<user-order v-if="isLogin" :key="userOrderKey" />
<div class="user-order">
<user-order v-if="isLogin" :key="userOrderKey" />
</div>
</div>
</div>
</div>

View File

@ -358,7 +358,7 @@
</div>
</el-tab-pane>
<el-tab-pane label="公告配置" name="notice">
<md-editor class="mgb20" v-model="notice" @on-upload-img="onUploadImg"/>
<md-editor class="mgb20" v-model="notice" :theme="store.theme" @on-upload-img="onUploadImg"/>
<el-form-item>
<div style="padding-top: 10px;margin-left: 150px;">
<el-button type="primary" @click="save('notice')">保存</el-button>
@ -366,7 +366,7 @@
</el-form-item>
</el-tab-pane>
<el-tab-pane label="思维导图" name="mark_map">
<md-editor class="mgb20" v-model="system['mark_map_text']" @on-upload-img="onUploadImg"/>
<md-editor class="mgb20" :theme="store.theme" v-model="system['mark_map_text']" @on-upload-img="onUploadImg"/>
<el-form-item>
<div style="padding-top: 10px;margin-left: 150px;">
<el-button type="primary" @click="save('system')">保存</el-button>
@ -440,7 +440,8 @@
<el-tab-pane label="修复数据" name="fixData">
<div class="container">
<!-- <p class="text">有些版本升级的时候更新了数据库的结构比如字段名字改了需要把之前的字段的值转移到其他字段这些无法通过简单的 SQL 语句可以实现的需要手动写程序修正数据</p>-->
<p class="text">有些版本升级的时候更新了数据库的结构比如字段名字改了需要把之前的字段的值转移到其他字段这些无法通过简单的
SQL 语句可以实现的需要手动写程序修正数据</p>
<!-- <p class="text">当前版本 v4.1.4 需要修正用户数据增加了 mobile email 字段需要把之前用手机号或者邮箱注册的用户的 username 字段数据初始化到 mobile 或者 email 字段另外需要把订单的支付渠道从名字称修正为 key</p>-->
@ -464,6 +465,7 @@ import 'md-editor-v3/lib/style.css';
import Menu from "@/views/admin/Menu.vue";
import {copyObj, dateFormat} from "@/utils/libs";
import ItemsInput from "@/components/ui/ItemsInput.vue";
import {useSharedStore} from "@/store/sharedata";
const activeName = ref('basic')
const system = ref({models: []})
@ -479,6 +481,7 @@ const mjModels = ref([
{name: "快速Fast", value: "fast"},
{name: "急速Turbo", value: "turbo"},
])
const store = useSharedStore()
onMounted(() => {
//