Jelajahi Sumber

修改很多,忘了提交,不知道啥了

lrf 3 tahun lalu
induk
melakukan
043218db23
10 mengubah file dengan 13058 tambahan dan 5842 penghapusan
  1. 3 0
      .gitignore
  2. 1 1
      babel.config.js
  3. 12939 5776
      package-lock.json
  4. 10 2
      package.json
  5. 78 0
      src/background.js
  6. 13 55
      src/components/HelloWorld.vue
  7. 1 1
      src/router/index.js
  8. 7 3
      src/views/project/column.vue
  9. 4 2
      src/views/project/table.vue
  10. 2 2
      vue.config.js

+ 3 - 0
.gitignore

@@ -21,3 +21,6 @@ pnpm-debug.log*
 *.njsproj
 *.sln
 *.sw?
+
+#Electron-builder output
+/dist_electron

+ 1 - 1
babel.config.js

@@ -1,3 +1,3 @@
 module.exports = {
-  presets: ["@vue/cli-plugin-babel/preset"],
+  presets: ['@vue/cli-plugin-babel/preset'],
 };

File diff ditekan karena terlalu besar
+ 12939 - 5776
package-lock.json


+ 10 - 2
package.json

@@ -5,8 +5,13 @@
   "scripts": {
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
-    "lint": "vue-cli-service lint"
+    "lint": "vue-cli-service lint",
+    "electron:build": "vue-cli-service electron:build",
+    "electron:serve": "vue-cli-service electron:serve",
+    "postinstall": "electron-builder install-app-deps",
+    "postuninstall": "electron-builder install-app-deps"
   },
+  "main": "background.js",
   "dependencies": {
     "axios": "^0.24.0",
     "core-js": "^3.6.5",
@@ -27,12 +32,15 @@
     "@vue/compiler-sfc": "^3.0.0",
     "@vue/eslint-config-prettier": "^6.0.0",
     "babel-eslint": "^10.1.0",
+    "electron": "^15.3.1",
+    "electron-devtools-installer": "^3.1.0",
     "eslint": "^6.7.2",
     "eslint-plugin-prettier": "^3.3.1",
     "eslint-plugin-vue": "^7.0.0",
     "less": "^3.0.4",
     "less-loader": "^5.0.0",
-    "prettier": "^2.2.1"
+    "prettier": "^2.2.1",
+    "vue-cli-plugin-electron-builder": "~2.1.1"
   },
   "eslintConfig": {
     "root": true,

+ 78 - 0
src/background.js

@@ -0,0 +1,78 @@
+'use strict';
+
+import { app, protocol, BrowserWindow } from 'electron';
+import { createProtocol } from 'vue-cli-plugin-electron-builder/lib';
+import installExtension, { VUEJS3_DEVTOOLS } from 'electron-devtools-installer';
+const isDevelopment = process.env.NODE_ENV !== 'production';
+
+// Scheme must be registered before the app is ready
+protocol.registerSchemesAsPrivileged([{ scheme: 'app', privileges: { secure: true, standard: true } }]);
+
+async function createWindow() {
+  // Create the browser window.
+  const win = new BrowserWindow({
+    width: 800,
+    height: 600,
+    webPreferences: {
+      // Use pluginOptions.nodeIntegration, leave this alone
+      // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
+      nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
+      contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION,
+    },
+  });
+
+  if (process.env.WEBPACK_DEV_SERVER_URL) {
+    // Load the url of the dev server if in development mode
+    await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL);
+    if (!process.env.IS_TEST) win.webContents.openDevTools();
+  } else {
+    createProtocol('app');
+    // Load the index.html when not in development
+    win.loadURL('app://./index.html');
+  }
+}
+
+// Quit when all windows are closed.
+app.on('window-all-closed', () => {
+  // On macOS it is common for applications and their menu bar
+  // to stay active until the user quits explicitly with Cmd + Q
+  if (process.platform !== 'darwin') {
+    app.quit();
+  }
+});
+
+app.on('activate', () => {
+  // On macOS it's common to re-create a window in the app when the
+  // dock icon is clicked and there are no other windows open.
+  if (BrowserWindow.getAllWindows().length === 0) createWindow();
+});
+
+// This method will be called when Electron has finished
+// initialization and is ready to create browser windows.
+// Some APIs can only be used after this event occurs.
+app.on('ready', async () => {
+  if (isDevelopment && !process.env.IS_TEST) {
+    // Install Vue Devtools
+    try {
+      await installExtension(VUEJS3_DEVTOOLS);
+    } catch (e) {
+      console.error('Vue Devtools failed to install:', e.toString());
+    }
+  }
+  createWindow();
+});
+
+// Exit cleanly on request from parent process in development mode.
+if (isDevelopment) {
+  if (process.platform === 'win32') {
+    process.on('message', (data) => {
+      if (data === 'graceful-exit') {
+        app.quit();
+      }
+    });
+  } else {
+    process.on('SIGTERM', () => {
+      app.quit();
+    });
+  }
+}

+ 13 - 55
src/components/HelloWorld.vue

@@ -4,43 +4,21 @@
     <p>
       For a guide and recipes on how to configure / customize this project,<br />
       check out the
-      <a href="https://cli.vuejs.org" target="_blank" rel="noopener"
-        >vue-cli documentation</a
-      >.
+      <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
     </p>
     <h3>Installed CLI Plugins</h3>
     <ul>
       <li>
-        <a
-          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel"
-          target="_blank"
-          rel="noopener"
-          >babel</a
-        >
+        <a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a>
       </li>
       <li>
-        <a
-          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router"
-          target="_blank"
-          rel="noopener"
-          >router</a
-        >
+        <a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a>
       </li>
       <li>
-        <a
-          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex"
-          target="_blank"
-          rel="noopener"
-          >vuex</a
-        >
+        <a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a>
       </li>
       <li>
-        <a
-          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint"
-          target="_blank"
-          rel="noopener"
-          >eslint</a
-        >
+        <a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a>
       </li>
     </ul>
     <h3>Essential Links</h3>
@@ -49,19 +27,13 @@
         <a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a>
       </li>
       <li>
-        <a href="https://forum.vuejs.org" target="_blank" rel="noopener"
-          >Forum</a
-        >
+        <a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a>
       </li>
       <li>
-        <a href="https://chat.vuejs.org" target="_blank" rel="noopener"
-          >Community Chat</a
-        >
+        <a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a>
       </li>
       <li>
-        <a href="https://twitter.com/vuejs" target="_blank" rel="noopener"
-          >Twitter</a
-        >
+        <a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a>
       </li>
       <li>
         <a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a>
@@ -70,33 +42,19 @@
     <h3>Ecosystem</h3>
     <ul>
       <li>
-        <a href="https://router.vuejs.org" target="_blank" rel="noopener"
-          >vue-router</a
-        >
+        <a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a>
       </li>
       <li>
         <a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a>
       </li>
       <li>
-        <a
-          href="https://github.com/vuejs/vue-devtools#vue-devtools"
-          target="_blank"
-          rel="noopener"
-          >vue-devtools</a
-        >
+        <a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a>
       </li>
       <li>
-        <a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener"
-          >vue-loader</a
-        >
+        <a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a>
       </li>
       <li>
-        <a
-          href="https://github.com/vuejs/awesome-vue"
-          target="_blank"
-          rel="noopener"
-          >awesome-vue</a
-        >
+        <a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a>
       </li>
     </ul>
   </div>
@@ -104,7 +62,7 @@
 
 <script>
 export default {
-  name: "HelloWorld",
+  name: 'HelloWorld',
   props: {
     msg: String,
   },

+ 1 - 1
src/router/index.js

@@ -9,7 +9,7 @@ const routes = [
 ];
 
 const router = createRouter({
-  history: createWebHistory(process.env.VUE_APP_BASE_URL),
+  history: createWebHistory(`/${process.env.VUE_APP_BASE_URL}`),
   routes,
 });
 

+ 7 - 3
src/views/project/column.vue

@@ -16,14 +16,14 @@
       <el-table-column align="center" label="字段类型">
         <template #default="{ row }">
           <el-select v-model="row.type" placeholder="请选择字段类型">
-            <el-option v-for="(i, index) in columnType" :key="`type-${index}`" :label="i.label" :value="i.value"></el-option>
+            <el-option v-for="(i, index) in columnType" :key="`type-${index}`" :label="i.label" :value="i.value"> </el-option>
           </el-select>
         </template>
       </el-table-column>
       <el-table-column align="center" label="是否为索引">
         <template #default="{ row }">
           <el-radio-group v-model="row.index">
-            <el-radio v-for="(i, index) in required" :key="`index-${index}`" :label="i.value">{{ i.value ? '是' : '否' }}</el-radio>
+            <el-radio v-for="(i, index) in required" :key="`index-${index}`" :label="i.value">{{ i.value ? '是' : '否' }} </el-radio>
           </el-radio-group>
         </template>
       </el-table-column>
@@ -78,7 +78,11 @@ export default defineComponent({
   },
   methods: {
     toAdd() {
-      this.$emit('update:value', [...this.value, { index: false, required: false }]);
+      let def = this.columnType.find((f) => f.default);
+      let obj = { index: false, required: false };
+      if (def) obj.type = def.value;
+      else obj.type = _.get(_.head(this.columnType), 'value');
+      this.$emit('update:value', [...this.value, obj]);
     },
     async init() {
       const arr = ['columnType', 'required'];

+ 4 - 2
src/views/project/table.vue

@@ -85,6 +85,8 @@ export default defineComponent({
   },
   methods: {
     async toSearch({ ...condition } = {}) {
+      console.log('in function:');
+      console.log(this.project);
       await this.query({ ...condition, project: _.get(this.project, 'id') });
     },
     async toEdit(id) {
@@ -107,7 +109,7 @@ export default defineComponent({
         type: 'warning',
       }).then(async () => {
         const data = await this.destory(id);
-        if (data) await this.query();
+        if (data) await this.toSearch();
       });
     },
     async submit() {
@@ -124,7 +126,7 @@ export default defineComponent({
           else res = await this.update(data);
           if (res) {
             this.view = 'table';
-            await this.query();
+            await this.toSearch();
           }
         } else {
           console.log('error submit!!');

+ 2 - 2
vue.config.js

@@ -1,7 +1,7 @@
 const path = require('path');
 module.exports = {
-  publicPath: '/',
-  outputDir: 'process.env.VUE_APP_BASE_URL',
+  publicPath: `/${process.env.VUE_APP_BASE_URL}`,
+  outputDir: process.env.VUE_APP_BASE_URL,
   productionSourceMap: false,
   configureWebpack: {
     // 开发生产共同配置