**RuoYi-Vue-Postgresql-Electron**

#### Введение
Если версия RuoYi — настольная, то она в основном интегрирует веб-тихую печать с PostgreSQL.

#### Среда
1. Версия NodeJS должна быть 16.13.0 или выше. Если версия ниже, пожалуйста, используйте код из ветки electron4: https://gitee.com/suxia2/ruo-yi-vue-postgresql-electron/tree/electron4/.

### Модификации
1. **В этом проекте нужно выполнить только первые два SQL-файла:**
    1. [postgresql.sql](https://gitee.com/suxia2/RuoYi-Vue-Postgresql/blob/master/sql/postgresql.sql).
    2. [postgresql_view.sql](https://gitee.com/suxia2/RuoYi-Vue-Postgresql/blob/master/sql/postgresql_view.sql).
    3. Файлы [quartz.sql](https://gitee.com/suxia2/RuoYi-Vue-Postgresql/blob/master/sql/quartz.sql) и [ry_20210908.sql](https://gitee.com/suxia2/RuoYi-Vue-Postgresql/blob/master/sql/ry_20210908.sql) выполнять не нужно, так как они содержат MySQL-синтаксис и используются для сравнения с официальным проектом.
2. **Если у вас возникли проблемы с этим проектом, пожалуйста, создайте вопрос в системе отслеживания ошибок.**

### Известные проблемы
1. После упаковки проекта нельзя ссылаться на «clipboard». Нужно закомментировать содержимое файла /src/directive/module/clipboard.js.


#### Использование на фронте
```bash
# Клонируем проект
git clone https://gitee.com/suxia2/ruo-yi-vue-postgresql-electron

# Переходим в каталог проекта
cd ruoyi-ui

# Устанавливаем зависимости
npm install

# Рекомендуется не использовать cnpm для установки зависимостей, так как это может вызвать различные странные ошибки. Можно решить проблему с медленной загрузкой npm с помощью следующей команды:
npm install --registry=https://registry.npm.taobao.org

# Запускаем сервер
npm run electron:serve
# Собираем пакет для Windows
npm run electron:build

# В файле vue.config.js настройте параметры, подробности см. в документации https://blog.csdn.net/honest1120110/article/details/116643392
pluginOptions: {
    electronBuilder: {
      // preload: 'src/preload.js',
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule: true,
      publish: [{
        "provider": "xxxx有限公司",
        "url": "http://xxxxx/"
      }],
      "copyright": "Copyright © 2022",
      builderOptions:{
        appId: 'com.ruoyi',
        productName: 'ruoyi',
        nsis:{
          "oneClick": false,
          "allowElevation": true,
          "allowToChangeInstallationDirectory": true,
        },
        win: {
          "icon": "build/app.ico",
          "target": [
            {
              "target": "nsis",         //使用nsis打成安装包,"portable"打包成免安装版
              "arch": [
                "ia32",             //32位
                "x64"               //64位
              ]
            }
          ]
        },
      },

      // preload: path.join(__dirname, "/dist_electron/preload.js"),
    },
  },

```

### Этапы модификации завершены
1. Установите electron-builder:
```javascript
Чтобы решить проблему со скоростью доступа к внешней сети:
npm config set registry https://registry.npm.taobao.org/
npm config set ELECTRON_MIRROR http://npm.taobao.org/mirrors/electron/

vue add electron-builder
```
2. Добавьте следующий код в файл vue.config.js:
```
 pluginOptions: {
    electronBuilder: {
      nodeIntegration: true,
      contextIsolation: false,
    }
  }
```
3. Измените и добавьте следующий код в класс запуска /src/background.js:
```
const win = new BrowserWindow({
    width: 1200,
    height: 700,
    // fullscreen: true,//全屏
    show: false,
    webPreferences: {
      // Use pluginOptions.nodeIntegration, leave this alone
      // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
      contextIsolation:false,     //上下文隔离
      enableRemoteModule: true,   //启用远程模块
      nodeIntegration: true, //开启自带node环境
      webviewTag: true,     //开启webview
      webSecurity: false,
      allowDisplayingInsecureContent: true,
      allowRunningInsecureContent: true
    },
    // frame: false,//客户端窗口顶部菜单去掉
  })
  win.maximize()
  win.show()
  ipcMain.on('getPrinterList', (event) => {
    //主线程获取打印机列表
    const list = win.webContents.getPrinters();
    //通过webContents发送事件到渲染线程,同时将打印机列表也传过去
    win.webContents.send('getPrinterList', list);
  });
```
5. Расположение шаблона печати:
```
  /static/print.html
```



### Этот проект синхронизируется с обновлениями на официальном сайте
### Реализация на основе Postgresql
1. Автоматическое создание кода.
2. Преобразование синтаксиса MySQL в синтаксис Postgresql (соответствующий файл — postgresql.sql).
### Автоматическое создание кода
1. Выполните файл view.sql в папке sql.
2. Операция аналогична.

<p align="center">
    <img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.5</h1>
<h4 align="center">Java-фреймворк для быстрой разработки SpringBoot+Vue с разделением переднего и заднего плана</h4>
<p align="center">
    <a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a>
    <a Нажмите кнопку, чтобы присоединиться к группе.