mirror of
				https://github.com/yangjian102621/geekai.git
				synced 2025-11-04 08:13:43 +08:00 
			
		
		
		
	fine-tune the new UI theme, merge the code and fixed conflicts
This commit is contained in:
		@@ -107,7 +107,10 @@ func (t PowerType) String() string {
 | 
			
		||||
		return "退款"
 | 
			
		||||
	case PowerRedeem:
 | 
			
		||||
		return "兑换"
 | 
			
		||||
 | 
			
		||||
	case PowerGift:
 | 
			
		||||
		return "赠送"
 | 
			
		||||
	case PowerInvite:
 | 
			
		||||
		return "邀请"
 | 
			
		||||
	}
 | 
			
		||||
	return "其他"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
}
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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{
 | 
			
		||||
 
 | 
			
		||||
@@ -224,7 +224,7 @@
 | 
			
		||||
            text-overflow ellipsis
 | 
			
		||||
          }
 | 
			
		||||
          .prompt {
 | 
			
		||||
            color var( --el-text-color-primary)
 | 
			
		||||
            color var( --text-fb)
 | 
			
		||||
            cursor: text
 | 
			
		||||
          }
 | 
			
		||||
          .failed {
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -65,7 +65,7 @@
 | 
			
		||||
              label {
 | 
			
		||||
                display flex
 | 
			
		||||
                width 100px
 | 
			
		||||
                color :var(--el-text-color-primary)
 | 
			
		||||
                color :var(--text-fb)
 | 
			
		||||
              }
 | 
			
		||||
 | 
			
		||||
              .item-value {
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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="邀请码" />
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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({
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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([]);
 | 
			
		||||
 
 | 
			
		||||
@@ -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("");
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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("");
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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(() => {
 | 
			
		||||
  // 加载系统配置
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user