diff --git a/package.json b/package.json index 6aeb63c..09b91ef 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,8 @@ "version": "2.2.2", "private": true, "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", + "dev": "vue-cli-service electron:serve", + "build": "vue-cli-service electron:build", "lint": "vue-cli-service lint", "electron:build": "vue-cli-service electron:build", "electron:serve": "vue-cli-service electron:serve", diff --git a/src/main.ts b/src/main.ts index 2d54876..17bd2a3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -8,6 +8,7 @@ import 'element-ui/lib/theme-chalk/index.css' import VueLazyLoad from 'vue-lazyload' import axios from 'axios' import mainMixin from './renderer/utils/mainMixin' +import bus from '@/utils/bus' webFrame.setVisualZoomLevelLimits(1, 1) webFrame.setLayoutZoomLevelLimits(0, 0) @@ -25,6 +26,7 @@ Vue.prototype.$builtInPicBed = [ ] Vue.prototype.$db = db Vue.prototype.$http = axios +Vue.prototype.$bus = bus Vue.use(ElementUI) Vue.use(VueLazyLoad) diff --git a/src/main/apis/gui/index.ts b/src/main/apis/gui/index.ts index 2179b0d..55803f0 100644 --- a/src/main/apis/gui/index.ts +++ b/src/main/apis/gui/index.ts @@ -12,6 +12,9 @@ import { getWindowId, getSettingWindowId } from '~/main/apis/bus' +import { + SHOW_INPUT_BOX +} from '~/universal/events/constants' class GuiApi implements IGuiApi { private windowId: number = -1 @@ -40,9 +43,9 @@ class GuiApi implements IGuiApi { }) { await this.showSettingWindow() this.getWebcontentsByWindowId(this.settingWindowId) - .send('showInputBox', options) + .send(SHOW_INPUT_BOX, options) return new Promise((resolve, reject) => { - ipcMain.once('showInputBox', (event: Event, value: string) => { + ipcMain.once(SHOW_INPUT_BOX, (event: Event, value: string) => { resolve(value) }) }) diff --git a/src/renderer/components/InputBoxDialog.vue b/src/renderer/components/InputBoxDialog.vue new file mode 100644 index 0000000..e1f977d --- /dev/null +++ b/src/renderer/components/InputBoxDialog.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/renderer/layouts/SettingPage.vue b/src/renderer/layouts/SettingPage.vue index 144f412..44659be 100644 --- a/src/renderer/layouts/SettingPage.vue +++ b/src/renderer/layouts/SettingPage.vue @@ -120,20 +120,7 @@ 确定 - - - - 取消 - 确定 - - + diff --git a/src/renderer/pages/Upload.vue b/src/renderer/pages/Upload.vue index 54e9eb0..19f3f39 100644 --- a/src/renderer/pages/Upload.vue +++ b/src/renderer/pages/Upload.vue @@ -48,7 +48,8 @@
快捷上传
- 剪贴板图片上传 + 剪贴板 + URL @@ -62,6 +63,10 @@ import { IpcRendererEvent, remote } from 'electron' +import { + SHOW_INPUT_BOX, + SHOW_INPUT_BOX_RESPONSE +} from '~/universal/events/constants' const { Menu } = remote @Component({ name: 'upload' @@ -92,6 +97,7 @@ export default class extends Vue { }) ipcRenderer.send('getPicBeds') ipcRenderer.on('getPicBeds', this.getPicBeds) + this.$bus.$on(SHOW_INPUT_BOX_RESPONSE, this.handleInputBoxValue) } @Watch('progress') onProgressChange (val: number) { @@ -141,6 +147,22 @@ export default class extends Vue { uploadClipboardFiles () { ipcRenderer.send('uploadClipboardFilesFromUploadPage') } + uploadURLFiles () { + this.$bus.$emit(SHOW_INPUT_BOX, { + title: '请输入URL', + placeholder: 'http://或者https://开头' + }) + } + handleInputBoxValue (val: string) { + if (val === '') return false + if (val.includes('http://') || val.includes('https://')) { + ipcRenderer.send('uploadChoosedFiles', { + path: val + }) + } else { + this.$message.error('请输入合法的URL') + } + } getDefaultPicBed () { const current: string = this.$db.get('picBed.current') this.picBed.forEach(item => { @@ -239,8 +261,8 @@ export default class extends Vue { .el-radio-button__inner border-left none border-radius 0 14px 14px 0 - .paste-upload - width 100% + .quick-upload + width 46% .el-icon-caret-bottom cursor pointer diff --git a/src/renderer/utils/bus.ts b/src/renderer/utils/bus.ts new file mode 100644 index 0000000..b0230b5 --- /dev/null +++ b/src/renderer/utils/bus.ts @@ -0,0 +1,2 @@ +import Vue from 'vue' +export default new Vue() diff --git a/src/universal/events/constants.ts b/src/universal/events/constants.ts index e69de29..7622a5f 100644 --- a/src/universal/events/constants.ts +++ b/src/universal/events/constants.ts @@ -0,0 +1,2 @@ +export const SHOW_INPUT_BOX = 'SHOW_INPUT_BOX' +export const SHOW_INPUT_BOX_RESPONSE = 'SHOW_INPUT_BOX_RESPONSE' diff --git a/src/universal/types/extra-vue.d.ts b/src/universal/types/extra-vue.d.ts index 082156c..c0319aa 100644 --- a/src/universal/types/extra-vue.d.ts +++ b/src/universal/types/extra-vue.d.ts @@ -8,6 +8,7 @@ declare module 'vue/types/vue' { $db: typeof db $http: typeof axios $builtInPicBed: string[] + $bus: Vue letPicGoSaveData(data: IObj): void } }