Compare commits

...

6 Commits

  1. 2
      .env
  2. 2
      index.html
  3. BIN
      public/favicon.ico
  4. BIN
      public/favicon.svg
  5. 18
      src/App.vue
  6. BIN
      src/assets/images/conversation/logo2.png
  7. BIN
      src/assets/images/logo1.png
  8. BIN
      src/assets/images/logo2.png
  9. 2
      src/components/AppContainerBox/index.vue
  10. 2
      src/components/AppContentBox/index.vue
  11. 2
      src/components/AppMessage/index.vue
  12. 2
      src/layout/AppMenu/index.vue
  13. 18
      src/views/conversation/index.vue
  14. 18
      src/views/conversationNet/index.vue
  15. 2
      src/views/login/index.vue
  16. 18
      src/views/repository/index.vue
  17. 4
      src/views/task/components/InviteForm/index.vue
  18. 17
      src/views/textToImage/index.vue
  19. 19
      src/views/visualAnalysis/index.vue

2
.env

@ -1,5 +1,5 @@
# 网站标题 # 网站标题
VITE_GLOB_APP_TITLE = 青鸟语言大模型-同聪 VITE_GLOB_APP_TITLE = 青鸟AI助手-同聪
# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符 # 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符
VITE_GLOB_APP_SHORT_NAME = 同聪 VITE_GLOB_APP_SHORT_NAME = 同聪

2
index.html

@ -2,7 +2,7 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>%VITE_GLOB_APP_TITLE%</title> <title>%VITE_GLOB_APP_TITLE%</title>
</head> </head>

BIN
public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
public/favicon.svg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

18
src/App.vue

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed } from 'vue' import { computed,onMounted,onBeforeUnmount} from 'vue'
import { App, ConfigProvider } from 'ant-design-vue' import { App, ConfigProvider } from 'ant-design-vue'
import zhCN from 'ant-design-vue/es/locale/zh_CN' import zhCN from 'ant-design-vue/es/locale/zh_CN'
@ -16,6 +16,22 @@ const themeConfig = computed(() =>
}, },
), ),
) )
function isH5(){
const w = document.body.clientWidth
if(w < 880){
window.location.href = 'http://aih.sinenux.com/#/'
}
}
isH5()
onMounted(()=> {
window.addEventListener('resize', isH5)
})
onBeforeUnmount(()=>{
window.removeEventListener('resize', isH5);
})
</script> </script>
<template> <template>

BIN
src/assets/images/conversation/logo2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/assets/images/logo1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 B

BIN
src/assets/images/logo2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

2
src/components/AppContainerBox/index.vue

@ -17,7 +17,7 @@ import { AppContentBox } from '@/components/AppContentBox'
<style lang="scss" scoped> <style lang="scss" scoped>
@include app('container-box') { @include app('container-box') {
padding: 20px 0 20px 0; padding: 15px 0 15px 0;
background-color: #edf3ff; background-color: #edf3ff;
} }
</style> </style>

2
src/components/AppContentBox/index.vue

@ -11,7 +11,7 @@
<style lang="scss" scoped> <style lang="scss" scoped>
@include app('content-box') { @include app('content-box') {
width: calc(100% - $sub-menu-width); width: calc(100% - $sub-menu-width);
padding: 30px; padding: 15px 30px 15px 30px;
border-radius: 30px 0 0 30px; border-radius: 30px 0 0 30px;
background-color: #ffffff; background-color: #ffffff;
position: relative; position: relative;

2
src/components/AppMessage/index.vue

@ -158,7 +158,7 @@ onMounted(async () => {
v-if="item.messageType === MessageTypeEnum.AI || item.messageType === MessageTypeEnum.DESCRIBE" v-if="item.messageType === MessageTypeEnum.AI || item.messageType === MessageTypeEnum.DESCRIBE"
class="ai" class="ai"
> >
<img class="icon-ai" src="@/assets/images/conversation/logo.png" alt=""> <img class="icon-ai" src="@/assets/images/conversation/logo2.png" alt="">
<div class="content" :class="[aiWidthType === 'auto' ? 'width-auto' : 'width-full']"> <div class="content" :class="[aiWidthType === 'auto' ? 'width-auto' : 'width-full']">
<div v-if="conversationData?.type === MenuTypeEnum.TEXT_TO_IMAGE" class="pt-2 pb-2"> <div v-if="conversationData?.type === MenuTypeEnum.TEXT_TO_IMAGE" class="pt-2 pb-2">
<Spin tip="正在生成中..." :spinning="item.messageStatus !== MessageStatusEnum.END"> <Spin tip="正在生成中..." :spinning="item.messageStatus !== MessageStatusEnum.END">

2
src/layout/AppMenu/index.vue

@ -110,7 +110,7 @@ function showConfirm() {
<template> <template>
<div class="app-menu h-full flex flex-col justify-between"> <div class="app-menu h-full flex flex-col justify-between">
<img class="logo" src="~@/assets/images/logo.png" alt=""> <img class="logo" src="~@/assets/images/logo2.png" alt="">
<div class="menu header-menu w-full"> <div class="menu header-menu w-full">
<div <div
v-for="item in menu" v-for="item in menu"

18
src/views/conversation/index.vue

@ -28,6 +28,7 @@ const { createConfirm } = useMessage()
const messageStore = useMessageStore() const messageStore = useMessageStore()
const modelSelectDisabled = ref(false)
const sendBtnLoading = ref(false) const sendBtnLoading = ref(false)
const subMenuActiveIndex = ref(-1) // const subMenuActiveIndex = ref(-1) //
const subMenuActionIndex = ref(-1) // const subMenuActionIndex = ref(-1) //
@ -73,6 +74,15 @@ watch(
}, },
) )
watch(
() => subMenuActiveIndex.value,
(val) => {
if (val === -1) {
modelSelectDisabled.value = false
}
},
)
/** /**
* @description: 点击会话操作项 * @description: 点击会话操作项
*/ */
@ -210,7 +220,7 @@ async function getHistoryMessage() {
} }
return return
} }
modelSelectDisabled.value = true
res.records.forEach((item: any) => { res.records.forEach((item: any) => {
const itemData: MessageItem = { const itemData: MessageItem = {
messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI, messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI,
@ -413,7 +423,7 @@ onUnmounted(() => {
<template #content> <template #content>
<Spin :spinning="spinning" wrapper-class-name="app-content-spin"> <Spin :spinning="spinning" wrapper-class-name="app-content-spin">
<AppModelSelect <AppModelSelect
v-if="conversationDefaultShow" :disabled="modelSelectDisabled"
:active-index="modelIndex" :active-index="modelIndex"
:options="modelOptions" :options="modelOptions"
@change="handleModel" @change="handleModel"
@ -437,7 +447,7 @@ onUnmounted(() => {
v-if="!conversationDefaultShow && appMessageShow" v-if="!conversationDefaultShow && appMessageShow"
ref="appMessageRef" ref="appMessageRef"
:key="MenuTypeEnum.TEXT_TO_TEXT" :key="MenuTypeEnum.TEXT_TO_TEXT"
class="pl-27 pr-5" class="pl-27 pr-5 mt-13"
:el-index="elIndex" :el-index="elIndex"
:list="messageList" :list="messageList"
@on-scroll-top="onScrollTop" @on-scroll-top="onScrollTop"
@ -447,7 +457,7 @@ onUnmounted(() => {
<!-- 发送框 --> <!-- 发送框 -->
<AppTextarea <AppTextarea
class="pl-44 pr-24 mt-10" class="pl-44 pr-24 mt-4"
:btn-loading="sendBtnLoading" :btn-loading="sendBtnLoading"
:is-stop="false" :is-stop="false"
@send="handleSend" @send="handleSend"

18
src/views/conversationNet/index.vue

@ -28,6 +28,7 @@ const { createConfirm } = useMessage()
const messageStore = useMessageStore() const messageStore = useMessageStore()
const modelSelectDisabled = ref(false)
const sendBtnLoading = ref(false) const sendBtnLoading = ref(false)
const subMenuActiveIndex = ref(-1) // const subMenuActiveIndex = ref(-1) //
const subMenuActionIndex = ref(-1) // const subMenuActionIndex = ref(-1) //
@ -73,6 +74,15 @@ watch(
}, },
) )
watch(
() => subMenuActiveIndex.value,
(val) => {
if (val === -1) {
modelSelectDisabled.value = false
}
},
)
/** /**
* @description: 点击会话操作项 * @description: 点击会话操作项
*/ */
@ -210,7 +220,7 @@ async function getHistoryMessage() {
} }
return return
} }
modelSelectDisabled.value = true
res.records.forEach((item: any) => { res.records.forEach((item: any) => {
const itemData: MessageItem = { const itemData: MessageItem = {
messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI, messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI,
@ -413,7 +423,7 @@ onUnmounted(() => {
<template #content> <template #content>
<Spin :spinning="spinning" wrapper-class-name="app-content-spin"> <Spin :spinning="spinning" wrapper-class-name="app-content-spin">
<AppModelSelect <AppModelSelect
v-if="conversationDefaultShow" :disabled="modelSelectDisabled"
:active-index="modelIndex" :active-index="modelIndex"
:options="modelOptions" :options="modelOptions"
@change="handleModel" @change="handleModel"
@ -437,7 +447,7 @@ onUnmounted(() => {
v-if="!conversationDefaultShow && appMessageShow" v-if="!conversationDefaultShow && appMessageShow"
ref="appMessageRef" ref="appMessageRef"
:key="MenuTypeEnum.CONVERSATION_NET" :key="MenuTypeEnum.CONVERSATION_NET"
class="pl-27 pr-5" class="pl-27 pr-5 mt-13"
:el-index="elIndex" :el-index="elIndex"
:list="messageList" :list="messageList"
@on-scroll-top="onScrollTop" @on-scroll-top="onScrollTop"
@ -447,7 +457,7 @@ onUnmounted(() => {
<!-- 发送框 --> <!-- 发送框 -->
<AppTextarea <AppTextarea
class="pl-44 pr-24 mt-10" class="pl-44 pr-24 mt-4"
:btn-loading="sendBtnLoading" :btn-loading="sendBtnLoading"
:is-stop="false" :is-stop="false"
@send="handleSend" @send="handleSend"

2
src/views/login/index.vue

@ -166,7 +166,7 @@ window.screen.availHeight - 70
青鸟AI助手-同聪 青鸟AI助手-同聪
</div> </div>
<div class="en"> <div class="en">
THE BIG LANGUAGE MODEL BLUEBIRO - Tong Cong LARGE LANGUAGE MODEL - Tong Cong
</div> </div>
</div> </div>
</div> </div>

18
src/views/repository/index.vue

@ -29,6 +29,7 @@ const { createConfirm } = useMessage()
const messageStore = useMessageStore() const messageStore = useMessageStore()
const modelSelectDisabled = ref(false)
const sendBtnLoading = ref(false) const sendBtnLoading = ref(false)
const subMenuActiveIndex = ref(-1) // const subMenuActiveIndex = ref(-1) //
const subMenuActionIndex = ref(-1) // const subMenuActionIndex = ref(-1) //
@ -92,6 +93,15 @@ watch(
}, },
) )
watch(
() => subMenuActiveIndex.value,
(val) => {
if (val === -1) {
modelSelectDisabled.value = false
}
},
)
/** /**
* @description: 点击会话操作项 * @description: 点击会话操作项
*/ */
@ -229,7 +239,7 @@ async function getHistoryMessage() {
} }
return return
} }
modelSelectDisabled.value = true
res.records.forEach((item: any) => { res.records.forEach((item: any) => {
const itemData: MessageItem = { const itemData: MessageItem = {
messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI, messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI,
@ -416,7 +426,7 @@ onUnmounted(() => {
<template #content> <template #content>
<Spin :spinning="spinning" wrapper-class-name="app-content-spin"> <Spin :spinning="spinning" wrapper-class-name="app-content-spin">
<AppModelSelect <AppModelSelect
v-if="conversationDefaultShow" :disabled="modelSelectDisabled"
:active-index="modelIndex" :active-index="modelIndex"
:options="modelOptions" :options="modelOptions"
@change="handleModel" @change="handleModel"
@ -439,7 +449,7 @@ onUnmounted(() => {
v-if="!conversationDefaultShow && appMessageShow" v-if="!conversationDefaultShow && appMessageShow"
ref="appMessageRef" ref="appMessageRef"
:key="MenuTypeEnum.REPOSITORY" :key="MenuTypeEnum.REPOSITORY"
class="pl-27 pr-5" class="pl-27 pr-5 mt-13"
:el-index="elIndex" :el-index="elIndex"
:list="messageList" :list="messageList"
@on-scroll-top="onScrollTop" @on-scroll-top="onScrollTop"
@ -449,7 +459,7 @@ onUnmounted(() => {
<!-- 发送框 --> <!-- 发送框 -->
<AppTextarea <AppTextarea
class="pl-44 pr-24 mt-10" class="pl-44 pr-24 mt-4"
:btn-loading="sendBtnLoading" :btn-loading="sendBtnLoading"
:is-stop="false" :is-stop="false"
@send="handleSend" @send="handleSend"

4
src/views/task/components/InviteForm/index.vue

@ -47,7 +47,7 @@ const code = userStore.getChatInfo?.inviteCode as string
<div class="close" @click="handleClose"> <div class="close" @click="handleClose">
</div> </div>
<div class="qr"> <div class="qr">
<QRCode ref="qrcodeCanvasRef" bg-color="white" :size="145" :value="`http://223.99.228.207:6001/#/Login?inviteCode=${code}`" /> <QRCode ref="qrcodeCanvasRef" bg-color="white" :size="145" :value="`http://ai.sinenux.com/#/Login?inviteCode=${code}`" />
</div> </div>
<Button type="primary" class="save-qr" @click="dowloadChange"> <Button type="primary" class="save-qr" @click="dowloadChange">
保存二维码 保存二维码
@ -62,7 +62,7 @@ const code = userStore.getChatInfo?.inviteCode as string
{{ code }} {{ code }}
</div> </div>
<div class="i-copy"> <div class="i-copy">
<Button class="copy-btn" @click="copyText(`http://223.99.228.207:6001/#/Login?inviteCode=${code}`)"> <Button class="copy-btn" @click="copyText(`http://ai.sinenux.com/#/Login?inviteCode=${code}`)">
复制邀请码链接 复制邀请码链接
</Button> </Button>
</div> </div>

17
src/views/textToImage/index.vue

@ -27,6 +27,7 @@ const { createConfirm } = useMessage()
const messageStore = useMessageStore() const messageStore = useMessageStore()
const modelSelectDisabled = ref(false)
const sendBtnLoading = ref(false) const sendBtnLoading = ref(false)
const subMenuActiveIndex = ref(-1) // const subMenuActiveIndex = ref(-1) //
const subMenuActionIndex = ref(-1) // const subMenuActionIndex = ref(-1) //
@ -84,6 +85,15 @@ watch(
}, },
) )
watch(
() => subMenuActiveIndex.value,
(val) => {
if (val === -1) {
modelSelectDisabled.value = false
}
},
)
/** /**
* @description: 点击会话操作项 * @description: 点击会话操作项
*/ */
@ -214,6 +224,7 @@ async function getHistoryMessage() {
} }
return return
} }
modelSelectDisabled.value = true
res.records.forEach((item: any) => { res.records.forEach((item: any) => {
const itemData: MessageItem = { const itemData: MessageItem = {
messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI, messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI,
@ -384,7 +395,7 @@ onUnmounted(() => {
<template #content> <template #content>
<Spin :spinning="spinning" wrapper-class-name="app-content-spin"> <Spin :spinning="spinning" wrapper-class-name="app-content-spin">
<AppModelSelect <AppModelSelect
v-if="conversationDefaultShow" :disabled="modelSelectDisabled"
:active-index="modelIndex" :active-index="modelIndex"
:options="modelOptions" :options="modelOptions"
@change="handleModel" @change="handleModel"
@ -407,7 +418,7 @@ onUnmounted(() => {
<AppMessage <AppMessage
v-if="!conversationDefaultShow && appMessageShow" v-if="!conversationDefaultShow && appMessageShow"
ref="appMessageRef" ref="appMessageRef"
class="pl-27 pr-5" class="pl-27 pr-5 mt-13"
:list="messageList" :list="messageList"
:el-index="elIndex" :el-index="elIndex"
ai-width-type="auto" ai-width-type="auto"
@ -418,7 +429,7 @@ onUnmounted(() => {
<!-- 发送框 --> <!-- 发送框 -->
<AppTextarea <AppTextarea
class="pl-44 pr-24 mt-10" class="pl-44 pr-24 mt-4"
:btn-loading="sendBtnLoading" :btn-loading="sendBtnLoading"
@send="handleSend" @send="handleSend"
></AppTextarea> ></AppTextarea>

19
src/views/visualAnalysis/index.vue

@ -27,6 +27,7 @@ const { createConfirm } = useMessage()
const messageStore = useMessageStore() const messageStore = useMessageStore()
const modelSelectDisabled = ref(false)
const sendBtnLoading = ref(false) const sendBtnLoading = ref(false)
const subMenuActiveIndex = ref(-1) // const subMenuActiveIndex = ref(-1) //
const subMenuActionIndex = ref(-1) // const subMenuActionIndex = ref(-1) //
@ -70,6 +71,16 @@ watch(
}, },
) )
watch(
() => subMenuActiveIndex.value,
(val) => {
if (val === -1) {
modelSelectDisabled.value = false
}
},
)
/** /**
* @description: 点击会话操作项 * @description: 点击会话操作项
*/ */
@ -216,7 +227,7 @@ async function getHistoryMessage() {
} }
return return
} }
modelSelectDisabled.value = true
res.records.forEach((item: any) => { res.records.forEach((item: any) => {
const itemData: MessageItem = { const itemData: MessageItem = {
messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI, messageType: item.roleType === MessageTypeEnum.USER ? MessageTypeEnum.USER : MessageTypeEnum.AI,
@ -381,7 +392,7 @@ onUnmounted(() => {
<template #content> <template #content>
<Spin :spinning="spinning" wrapper-class-name="app-content-spin"> <Spin :spinning="spinning" wrapper-class-name="app-content-spin">
<AppModelSelect <AppModelSelect
v-if="conversationDefaultShow" :disabled="modelSelectDisabled"
:active-index="modelIndex" :active-index="modelIndex"
:options="modelOptions" :options="modelOptions"
@change="handleModel" @change="handleModel"
@ -403,7 +414,7 @@ onUnmounted(() => {
<AppMessage <AppMessage
v-if="!conversationDefaultShow && appMessageShow" v-if="!conversationDefaultShow && appMessageShow"
ref="appMessageRef" ref="appMessageRef"
class="pl-27 pr-5" class="pl-27 pr-5 mt-13"
height="calc(100% - 120px)" height="calc(100% - 120px)"
:el-index="elIndex" :el-index="elIndex"
:list="messageList" :list="messageList"
@ -416,7 +427,7 @@ onUnmounted(() => {
class="w-full" class="w-full"
> >
<AppTextarea <AppTextarea
class="pl-44 pr-24 mt-10" class="pl-44 pr-24 mt-4"
:is-upload="true" :is-upload="true"
:default-file-url="defaultFileUrl" :default-file-url="defaultFileUrl"
:upload-disabled="uploadDisabled" :upload-disabled="uploadDisabled"

Loading…
Cancel
Save