Browse Source

change errors

master
godo 6 months ago
parent
commit
8b7f0c3597
  1. 6
      README.md
  2. 11
      docs/Faq.md
  3. 32
      frontend/components.d.ts
  4. 2
      frontend/package.json.md5
  5. 2
      frontend/src/App.vue
  6. 1
      frontend/src/components/desktop/LockDesktop.vue
  7. 2
      frontend/src/components/localchat/AiChatInfo.vue
  8. 2
      frontend/src/components/window/WindowInner.vue
  9. 2
      frontend/src/stores/aichat.ts
  10. 5
      frontend/src/stores/model.ts
  11. 2
      frontend/src/system/config.ts
  12. 6
      frontend/src/system/index.ts
  13. 2
      frontend/src/system/menu/Tary.ts
  14. 3
      frontend/wailsjs/go/app/App.d.ts
  15. 4
      frontend/wailsjs/go/app/App.js
  16. 9
      godo/ai/server/chat.go
  17. 6
      godo/ai/server/ollama.go
  18. 3
      godo/cmd/main.go
  19. 4
      godo/files/onlyoffice.go
  20. 4
      godo/libs/dir.go
  21. 3
      godo/localchat/addr.go
  22. 8
      godo/localchat/server.go

6
README.md

@ -15,9 +15,13 @@
## 🎉 V1.0.4更新日志(未发布)
- 新增远程状态下是否支持跨域
- 新增配置远程存储状态下是否支持跨域
- 修复系统重启错误
- 支持配置onlyOffice地址,onlyOffice编辑word/ppt/excel文件
- 修复1.0.3闪屏问题
- 修复默认不打开广告
- 修复设置ollama地址无效的问题
- 修复内网聊天初始化问题
## 🏭 第三阶段目标(十二月底发布)
1. **文档处理与Markdown智能升级**:(已完成)

11
docs/Faq.md

@ -74,3 +74,14 @@ systemctl stop godoos
左下角,系统设置,选远程存储,添加docker的ip或虚拟机的ip地址(例子:http://192.168.1.16:56780)
### 如何配置onlyoffice
```
docker pull onlyoffice/documentserver
docker run -i -t -d -p 8000:80 -e JWT_ENABLED=false --restart=always --name=onlyoffice --privileged=true -v /data/onlyoffice/logs:/var/log/onlyoffice -v /data/onlyoffice/data:/var/www/onlyoffice/Data -v /data/onlyoffice/lib:/var/lib/onlyoffice -v /data/onlyoffice/db:/var/lib/postgresql onlyoffice/documentserver
```
- 系统设置,编辑器配置填写onlyoffice的网址,如:http://127.0.0.1:8000
- 局域网内只配置一台机器即可,其他机器访问的时候,需要配置onlyoffice的公网ip,如:http://192.168.1.1:8000

32
frontend/components.d.ts

@ -64,23 +64,55 @@ declare module 'vue' {
DownModelInfo: typeof import('./src/components/ai/DownModelInfo.vue')['default']
EditFileName: typeof import('./src/components/builtin/EditFileName.vue')['default']
EditType: typeof import('./src/components/builtin/EditType.vue')['default']
ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBadge: typeof import('element-plus/es')['ElBadge']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol']
ElCollapse: typeof import('element-plus/es')['ElCollapse']
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElDrawer: typeof import('element-plus/es')['ElDrawer']
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElFooter: typeof import('element-plus/es')['ElFooter']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
ElMain: typeof import('element-plus/es')['ElMain']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElProgress: typeof import('element-plus/es')['ElProgress']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSlider: typeof import('element-plus/es')['ElSlider']
ElSpace: typeof import('element-plus/es')['ElSpace']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTransfer: typeof import('element-plus/es')['ElTransfer']
ElTree: typeof import('element-plus/es')['ElTree']
Error: typeof import('./src/components/taskbar/Error.vue')['default']
FileIcon: typeof import('./src/components/builtin/FileIcon.vue')['default']
FileIconImg: typeof import('./src/components/builtin/FileIconImg.vue')['default']

2
frontend/package.json.md5

@ -1 +1 @@
0427c64c40c111c3bee3a5dd4c0d87ed
d53bd39c40fc22f9f32490af3d478550

2
frontend/src/App.vue

@ -6,7 +6,7 @@ import { isMobileDevice } from "@/util/device";
onMounted(() => {
new System();
isMobile.value = isMobileDevice();
console.log(isMobile.value);
//console.log(isMobile.value);
});
const isMobile = ref<boolean>(false);

1
frontend/src/components/desktop/LockDesktop.vue

@ -63,7 +63,6 @@
</div>
<div
class="actions"
v-if="config.userType === 'member'"
>
<a
href="#"

2
frontend/src/components/localchat/AiChatInfo.vue

@ -14,7 +14,7 @@ function changPrompt(id:number) {
}
const changeInfo = async () => {
const info = chatStore.editInfo;
console.log(info)
//console.log(info)
if (!info.title) {
notifyInfo(t("aichat.inputTitle"));
return;

2
frontend/src/components/window/WindowInner.vue

@ -4,7 +4,7 @@
<template v-if="officeFile">
<OnlyOffice v-if="config.editorType == 'onlyoffice'" :onlyType="onlyType" :eventType="win.eventType" :ext="ext" />
</template>
<IframeFile v-else :src="win.url" :ext="win.ext" :eventType="win.eventType" />
</template>
<Suspense v-else>

2
frontend/src/stores/aichat.ts

@ -30,7 +30,7 @@ export const useAiChatStore = defineStore('aichat', () => {
}
const initChat = async () => {
if (activeId.value === 0) {
return await newChat()
await newChat()
}
modelList.value = await modelStore.getModelAction('chat')
const promptRes = await promptStore.getPrompts('chat')

5
frontend/src/stores/model.ts

@ -91,6 +91,11 @@ export const useModelStore = defineStore('modelStore', () => {
//console.log(res)
if (res.ok) {
resetData(res)
const modelData = await getModel("chat")
if(modelData){
await setCurrentModel("chat", modelData?.model)
}
}
}
function getModelInfo(model: string) {

2
frontend/src/system/config.ts

@ -121,7 +121,7 @@ export const getSystemConfig = (ifset = false) => {
// 初始化账户信息,若本地存储中已存在则不进行覆盖
if (!config.account) {
config.account = {
ad: true,
ad: false,
username: '',
password: '',
};

6
frontend/src/system/index.ts

@ -333,10 +333,10 @@ export class System {
);
}
//if(!options.window.content)return
if (typeof options.window.content !== 'string') {
console.log('index.ts:', options.window.content)
//if (typeof options.window.content !== 'string') {
//console.log('index.ts:', options.window.content)
//options.window.content = markRaw(options.window.content);
}
//}
// console.log(options.window)
// console.log(options.name)
this._rootState.windowMap[loc].set(options.name, options);

2
frontend/src/system/menu/Tary.ts

@ -19,7 +19,7 @@ export class Tray {
this.image = options.image;
} else {
//this.image = markRaw(options.image);
console.log('tary.ts:', options.image)
//console.log('tary.ts:', options.image)
}
if (typeof options.component === 'string') {
this.component = options.component;

3
frontend/wailsjs/go/app/App.d.ts

@ -1,6 +1,9 @@
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
import {context} from '../models';
export function OpenDirDialog():Promise<string>;
export function RestartApp():Promise<void>;
export function Shutdown(arg1:context.Context):Promise<void>;

4
frontend/wailsjs/go/app/App.js

@ -9,3 +9,7 @@ export function OpenDirDialog() {
export function RestartApp() {
return window['go']['app']['App']['RestartApp']();
}
export function Shutdown(arg1) {
return window['go']['app']['App']['Shutdown'](arg1);
}

9
godo/ai/server/chat.go

@ -3,6 +3,7 @@ package server
import (
"encoding/json"
"godo/libs"
"log"
"net/http"
)
@ -12,14 +13,14 @@ func ChatHandler(w http.ResponseWriter, r *http.Request) {
var req map[string]interface{}
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
libs.ErrorMsg(w, err.Error())
libs.ErrorMsg(w, "the chat request error:"+err.Error())
return
}
headers, url, err := GetHeadersAndUrl(req, "chat")
// log.Printf("url: %s", url)
// log.Printf("headers: %v", headers)
log.Printf("url: %s", url)
log.Printf("headers: %v", headers)
if err != nil {
libs.ErrorMsg(w, err.Error())
libs.ErrorMsg(w, "the chat request header or url errors:"+err.Error())
return
}
ForwardHandler(w, r, req, url, headers, "POST")

6
godo/ai/server/ollama.go

@ -398,9 +398,9 @@ func GetOllamaUrl() string {
if s := strings.TrimSpace(Var("OLLAMA_HOST")); s != "" {
return "http://" + s
}
ollamaUrl, ok := libs.GetConfig("ollamaUrl")
if ok {
return "http://" + ollamaUrl.(string)
ollamaUrl := libs.GetConfigString("ollamaUrl")
if ollamaUrl != "" {
return ollamaUrl
} else {
return "http://localhost:11434"
}

3
godo/cmd/main.go

@ -50,8 +50,9 @@ func OsStart() {
router := mux.NewRouter()
router.Use(recoverMiddleware)
if libs.GetIsCors() {
//router.Use(corsMiddleware())
router.Use(corsMiddleware())
}
router.Use(corsMiddleware())
router.Use(loggingMiddleware{}.Middleware)
staticDir := libs.GetStaticDir()
router.PathPrefix("/static").Handler(http.StripPrefix("/static", http.FileServer(http.Dir(staticDir))))

4
godo/files/onlyoffice.go

@ -54,7 +54,7 @@ func OnlyOfficeCallbackHandler(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
// 打印原始请求体
fmt.Printf("Received raw data: %s\n", body)
//fmt.Printf("Received raw data: %s\n", body)
// 解析 JSON 数据
var callbackData CallbackData
@ -65,7 +65,7 @@ func OnlyOfficeCallbackHandler(w http.ResponseWriter, r *http.Request) {
}
// 打印解析后的回调数据
fmt.Printf("Received callback: %+v\n", callbackData)
//fmt.Printf("Received callback: %+v\n", callbackData)
// 使用 key 查找对应的 path
mapOnlyOfficeMutex.Lock()

4
godo/libs/dir.go

@ -201,9 +201,9 @@ func GetNetPath() string {
func GetIsCors() bool {
isCors := GetString("isCors")
if isCors == "" {
return false
} else {
return true
} else {
return false
}
}

3
godo/localchat/addr.go

@ -31,6 +31,7 @@ import (
"time"
"godo/libs"
"godo/store"
)
// 发送 UDP 包并忽略响应
@ -158,7 +159,7 @@ func getArpCacheIPs() ([]string, error) {
default:
return nil, fmt.Errorf("unsupported operating system: %v", runtime.GOOS)
}
cmd = store.SetHideConsoleCursor(cmd)
out, err = cmd.Output()
if err != nil {
return nil, fmt.Errorf("error executing arp command: %v", err)

8
godo/localchat/server.go

@ -114,14 +114,6 @@ func UdpServer() {
continue
}
// if udpMsg.Type == "file" {
// ReceiveFile(udpMsg)
// continue
// }
// if udpMsg.Type == "fileAccessed" {
// HandlerSendFile(udpMsg)
// continue
// }
if udpMsg.Type == "image" {
filePath, err := ReceiveImg(udpMsg)
if err != nil {

Loading…
Cancel
Save