From 0a4ac6abb79130cd92c7165570c3d8faaec425ed Mon Sep 17 00:00:00 2001 From: Pang Date: Wed, 17 Jan 2024 13:58:48 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/IndexController.php | 31 ++++----- app/Http/Middleware/VerifyCsrfToken.php | 3 + docker-compose.yml | 2 +- electron/index.html | 3 +- resources/assets/js/App.vue | 65 ++++------------- resources/assets/js/app.js | 4 +- resources/assets/js/components/AceEditor.vue | 4 +- resources/assets/js/components/Drawio.vue | 10 +-- resources/assets/js/components/GanttView.vue | 2 - resources/assets/js/components/ImgUpload.vue | 2 - resources/assets/js/components/MicroApps.vue | 47 +++++++------ resources/assets/js/components/OnlyOffice.vue | 10 +-- .../assets/js/components/RightBottom.vue | 9 +-- resources/assets/js/components/TEditor.vue | 10 +-- resources/assets/js/functions/common.js | 58 ++++++++++++++++ resources/assets/js/functions/web.js | 12 +++- resources/assets/js/language/index.js | 30 ++++---- resources/assets/js/language/utils.js | 20 ++++-- resources/assets/js/pages/index.vue | 12 +--- resources/assets/js/pages/login.vue | 22 +++--- .../assets/js/pages/manage/application.vue | 2 +- .../js/pages/manage/approve/setting.vue | 4 +- resources/assets/js/pages/manage/calendar.vue | 4 +- .../manage/components/ProjectArchived.vue | 2 - .../manage/components/ProjectManagement.vue | 2 - .../pages/manage/components/TaskPriority.vue | 6 +- resources/assets/js/pages/manage/file.vue | 1 - .../js/pages/manage/setting/language.vue | 4 +- .../assets/js/pages/manage/setting/theme.vue | 4 +- resources/assets/js/pages/pro.vue | 4 +- resources/assets/js/store/actions.js | 69 ++++++++++--------- resources/assets/js/store/state.js | 4 +- .../assets/statics/public/js/loading-theme.js | 14 ++++ resources/views/main.blade.php | 3 +- resources/views/setting.blade.php | 14 ---- resources/views/storage.blade.php | 21 ++++++ 36 files changed, 279 insertions(+), 235 deletions(-) create mode 100644 resources/assets/statics/public/js/loading-theme.js delete mode 100755 resources/views/setting.blade.php create mode 100755 resources/views/storage.blade.php diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index 0b5b5bba9..c51b63195 100755 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -372,27 +372,20 @@ class IndexController extends InvokeController } /** - * 设置语言和皮肤 - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View + * 保存配置 + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|string */ - public function setting__theme_language() + public function storage__synch() { - return view('setting', [ - 'theme' => Request::input('theme'), - 'language' => Request::input('language') - ]); - } - - /** - * 设置用户信息 - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View - */ - public function setting__userinfo() - { - return view('setting', [ - 'userid' => Request::input('userid'), - 'token' => Request::input('token') - ]); + $key = Request::input('key'); + $value = Request::input('value'); + if ($key) { + $value = [$key => $value]; + } + if (!is_array($value)) { + $value = Base::json2array($value); + } + return view('storage', ['value' => Base::array2json($value)]); } /** diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index 3384b1c8e..de033c676 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -15,6 +15,9 @@ class VerifyCsrfToken extends Middleware // 接口部分 'api/*', + // 保存配置 + 'storage/synch/', + // 发布桌面端 'desktop/publish/', ]; diff --git a/docker-compose.yml b/docker-compose.yml index 4df02a05e..4598e73dc 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -177,7 +177,7 @@ services: okr: container_name: "dootask-okr-${APP_ID}" - image: "kuaifan/doookr:0.0.29" + image: "kuaifan/doookr:0.0.30" environment: TZ: "${TIMEZONE:-PRC}" DOO_TASK_URL: "http://${APP_IPPR}.3" diff --git a/electron/index.html b/electron/index.html index ac9433b87..beb9a7811 100644 --- a/electron/index.html +++ b/electron/index.html @@ -12,6 +12,7 @@ + @@ -20,7 +21,7 @@
-
+
PAGE LOADING
diff --git a/resources/assets/js/App.vue b/resources/assets/js/App.vue index eed60a9a0..4be9c24bc 100755 --- a/resources/assets/js/App.vue +++ b/resources/assets/js/App.vue @@ -19,9 +19,6 @@ - - -
@@ -44,7 +41,7 @@ import NetworkException from "./components/NetworkException"; import GuidePage from "./components/GuidePage"; import TaskOperation from "./pages/manage/components/TaskOperation"; import {mapState} from "vuex"; -import {languageType} from "./language"; +import {languageName} from "./language"; export default { components: {TaskOperation, NetworkException, PreviewImageState, RightBottom, FloatSpinner, GuidePage}, @@ -53,7 +50,6 @@ export default { return { routePath: null, searchInter: null, - iframes: [], } }, @@ -61,8 +57,6 @@ export default { this.electronEvents(); this.eeuiEvents(); this.otherEvents(); - this.synchThemeLanguage(); - this.synchAppTheme(); }, mounted() { @@ -80,11 +74,7 @@ export default { }, computed: { - ...mapState(['ws', 'themeMode', 'themeIsDark', 'windowOrientation']), - - isSoftware() { - return this.$Electron || this.$isEEUiApp; - }, + ...mapState(['ws', 'themeConf', 'windowOrientation']), }, watch: { @@ -108,7 +98,6 @@ export default { userId: { handler() { this.$store.dispatch("websocketConnection"); - this.synchUserToken(); // if (this.userId > 0) { if (this.$isEEUiApp) { @@ -143,6 +132,13 @@ export default { } }) } + // + window.localStorage.setItem("__system:userId__", this.userId) + window.localStorage.setItem("__system:userToken__", this.userToken) + $A.storageByIframe({ + userId: this.userId, + userToken: this.userToken, + }) }, immediate: true }, @@ -187,10 +183,6 @@ export default { this.$store.dispatch("audioStop", true) } }, - - themeIsDark() { - this.synchThemeLanguage(); - } }, methods: { @@ -226,42 +218,12 @@ export default { }); }, - synchUserToken() { - if (this.isSoftware) { - this.iframes = this.iframes.filter(({key}) => key != 'synchUserToken') - this.iframes.push({ - key: 'synchUserToken', - url: $A.apiUrl(`../setting/userinfo?userid=${this.userId}&token=${this.userToken}`) - }) - } - }, - autoTheme() { - if (this.themeMode === "auto") { + if (this.themeConf === "auto") { this.$store.dispatch("synchTheme") } }, - synchThemeLanguage() { - if (this.isSoftware) { - this.iframes = this.iframes.filter(({key}) => key != 'synchThemeLanguage') - this.iframes.push({ - key: 'synchThemeLanguage', - url: $A.apiUrl(`../setting/theme_language?theme=${this.themeIsDark ? 'dark' : 'light'}&language=${languageType}`) - }) - } - this.synchAppTheme() - }, - - synchAppTheme() { - if (this.$isEEUiApp) { - $A.eeuiAppSendMessage({ - action: 'updateTheme', - themeName: this.themeIsDark ? 'dark' : 'light', - }); - } - }, - windowSizeListener() { const windowWidth = $A(window).width(), windowHeight = $A(window).height(), @@ -315,10 +277,7 @@ export default { this.$Electron.registerMsgListener('browserWindowFocus', _ => { this.$store.state.windowActive = true; }) - this.iframes.push({ - key: 'manifest', - url: $A.apiUrl("../manifest") - }) + $A.loadIframe($A.apiUrl("../manifest")).catch(_ => {}) $A.bindScreenshotKey(this.$store.state.cacheKeyboard); // this.$Electron.sendMessage('setMenuLanguage', { @@ -422,7 +381,7 @@ export default { }, otherEvents() { - if (!this.isSoftware) { + if (!this.$isSoftware) { // 非客户端监听窗口激活 const hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in document ? 'webkitHidden' : 'mozHidden' in document ? 'mozHidden' : null; const visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange'); diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js index 512d27ec1..492c3c6d6 100644 --- a/resources/assets/js/app.js +++ b/resources/assets/js/app.js @@ -2,7 +2,7 @@ const isElectron = !!(window && window.process && window.process.type); const isEEUiApp = window && window.navigator && /eeui/i.test(window.navigator.userAgent); import microappInit from "./microapp" -import {switchLanguage as $L, setLanguage, getLanguage} from "./language"; +import {switchLanguage as $L} from "./language"; import './functions/common' import './functions/eeui' @@ -147,6 +147,7 @@ $A.isMainElectron = false; $A.isSubElectron = false; $A.isEEUiApp = isEEUiApp; $A.isElectron = isElectron; +$A.isSoftware = isEEUiApp || isElectron; $A.openLog = false; if (isElectron) { $A.Electron = electron; @@ -192,6 +193,7 @@ Vue.prototype.$Platform = $A.Platform; Vue.prototype.$isMainElectron = $A.isMainElectron; Vue.prototype.$isSubElectron = $A.isSubElectron; Vue.prototype.$isEEUiApp = $A.isEEUiApp; +Vue.prototype.$isSoftware = $A.isSoftware; Vue.config.productionTip = false; Vue.mixin(mixin) diff --git a/resources/assets/js/components/AceEditor.vue b/resources/assets/js/components/AceEditor.vue index d756dc494..48d7b74c8 100644 --- a/resources/assets/js/components/AceEditor.vue +++ b/resources/assets/js/components/AceEditor.vue @@ -294,11 +294,11 @@ export default { } }, computed: { - ...mapState(['themeIsDark']), + ...mapState(['themeName']), editTheme() { if (this.theme == 'auto') { - if (this.themeIsDark) { + if (this.themeName === 'dark') { return "dracula-dark" } else { return "chrome" diff --git a/resources/assets/js/components/Drawio.vue b/resources/assets/js/components/Drawio.vue index 411dec1b5..400f372a5 100644 --- a/resources/assets/js/components/Drawio.vue +++ b/resources/assets/js/components/Drawio.vue @@ -37,7 +37,7 @@ diff --git a/resources/views/storage.blade.php b/resources/views/storage.blade.php new file mode 100755 index 000000000..5831446c4 --- /dev/null +++ b/resources/views/storage.blade.php @@ -0,0 +1,21 @@ +