Browse Source

tauri 打包配置 流程消息提示优化

master
whyzxhnd 1 day ago
parent
commit
4440593f19
  1. 3
      .gitignore
  2. 2
      server/.gitignore
  3. 30
      web/.env.dev.tauri
  4. 2
      web/.env.prod
  5. 7
      web/.env.prod.tauri
  6. 6
      web/.eslintrc.js
  7. 3
      web/.gitignore
  8. 18
      web/.vscode/extensions.json
  9. 16
      web/.vscode/launch.json
  10. 144
      web/.vscode/settings.json
  11. 34
      web/package.json
  12. 4
      web/src-tauri/.gitignore
  13. 4995
      web/src-tauri/Cargo.lock
  14. 25
      web/src-tauri/Cargo.toml
  15. 3
      web/src-tauri/build.rs
  16. 11
      web/src-tauri/capabilities/default.json
  17. BIN
      web/src-tauri/icons/128x128.png
  18. BIN
      web/src-tauri/icons/128x128@2x.png
  19. BIN
      web/src-tauri/icons/32x32.png
  20. BIN
      web/src-tauri/icons/64x64.png
  21. BIN
      web/src-tauri/icons/Square107x107Logo.png
  22. BIN
      web/src-tauri/icons/Square142x142Logo.png
  23. BIN
      web/src-tauri/icons/Square150x150Logo.png
  24. BIN
      web/src-tauri/icons/Square284x284Logo.png
  25. BIN
      web/src-tauri/icons/Square30x30Logo.png
  26. BIN
      web/src-tauri/icons/Square310x310Logo.png
  27. BIN
      web/src-tauri/icons/Square44x44Logo.png
  28. BIN
      web/src-tauri/icons/Square71x71Logo.png
  29. BIN
      web/src-tauri/icons/Square89x89Logo.png
  30. BIN
      web/src-tauri/icons/StoreLogo.png
  31. BIN
      web/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png
  32. BIN
      web/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png
  33. BIN
      web/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png
  34. BIN
      web/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png
  35. BIN
      web/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png
  36. BIN
      web/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png
  37. BIN
      web/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png
  38. BIN
      web/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png
  39. BIN
      web/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png
  40. BIN
      web/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png
  41. BIN
      web/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png
  42. BIN
      web/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png
  43. BIN
      web/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png
  44. BIN
      web/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png
  45. BIN
      web/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png
  46. BIN
      web/src-tauri/icons/icon.icns
  47. BIN
      web/src-tauri/icons/icon.ico
  48. BIN
      web/src-tauri/icons/icon.png
  49. BIN
      web/src-tauri/icons/ios/AppIcon-20x20@1x.png
  50. BIN
      web/src-tauri/icons/ios/AppIcon-20x20@2x-1.png
  51. BIN
      web/src-tauri/icons/ios/AppIcon-20x20@2x.png
  52. BIN
      web/src-tauri/icons/ios/AppIcon-20x20@3x.png
  53. BIN
      web/src-tauri/icons/ios/AppIcon-29x29@1x.png
  54. BIN
      web/src-tauri/icons/ios/AppIcon-29x29@2x-1.png
  55. BIN
      web/src-tauri/icons/ios/AppIcon-29x29@2x.png
  56. BIN
      web/src-tauri/icons/ios/AppIcon-29x29@3x.png
  57. BIN
      web/src-tauri/icons/ios/AppIcon-40x40@1x.png
  58. BIN
      web/src-tauri/icons/ios/AppIcon-40x40@2x-1.png
  59. BIN
      web/src-tauri/icons/ios/AppIcon-40x40@2x.png
  60. BIN
      web/src-tauri/icons/ios/AppIcon-40x40@3x.png
  61. BIN
      web/src-tauri/icons/ios/AppIcon-512@2x.png
  62. BIN
      web/src-tauri/icons/ios/AppIcon-60x60@2x.png
  63. BIN
      web/src-tauri/icons/ios/AppIcon-60x60@3x.png
  64. BIN
      web/src-tauri/icons/ios/AppIcon-76x76@1x.png
  65. BIN
      web/src-tauri/icons/ios/AppIcon-76x76@2x.png
  66. BIN
      web/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png
  67. 16
      web/src-tauri/src/lib.rs
  68. 6
      web/src-tauri/src/main.rs
  69. 37
      web/src-tauri/tauri.conf.json
  70. 2
      web/src/api/bpm/processExpression/index.ts
  71. 1
      web/src/api/bpm/simple/index.ts
  72. 18
      web/src/api/electron/lock/index.ts
  73. 24
      web/src/api/electron/lockworkcord/index.ts
  74. 8
      web/src/api/guide/isolationpoint/index.ts
  75. 22
      web/src/api/guide/lockguide/index.ts
  76. 5
      web/src/api/infra/dataSourceConfig/index.ts
  77. 46
      web/src/api/infra/demo/demo03/erp/index.ts
  78. 46
      web/src/api/infra/demo/demo03/inner/index.ts
  79. 46
      web/src/api/infra/demo/demo03/normal/index.ts
  80. 8
      web/src/api/isolation/plan/index.ts
  81. 18
      web/src/api/isolation/planitem/index.ts
  82. 16
      web/src/api/isolation/planitemdetail/index.ts
  83. 20
      web/src/api/isolation/planlifelock/index.ts
  84. 16
      web/src/api/isolation/point/index.ts
  85. 29
      web/src/api/lock/index.ts
  86. 5
      web/src/api/system/mail/account/index.ts
  87. 5
      web/src/api/system/mail/template/index.ts
  88. 5
      web/src/api/system/notify/template/index.ts
  89. 5
      web/src/api/system/oauth2/client.ts
  90. 5
      web/src/api/system/tenantPackage/index.ts
  91. BIN
      web/src/assets/imgs/iot/device.png
  92. 3
      web/src/components/Cropper/src/CopperModal.vue
  93. 4
      web/src/components/Descriptions/src/Descriptions.vue
  94. 7
      web/src/components/DiyEditor/components/mobile/Carousel/property.vue
  95. 2
      web/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue
  96. 2
      web/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts
  97. 8
      web/src/components/DiyEditor/components/mobile/TitleBar/property.vue
  98. 2
      web/src/components/FormCreate/src/type/index.ts
  99. 2
      web/src/components/FormCreate/src/utils/index.ts
  100. 7
      web/src/components/Icon/src/IconSelect.vue

3
.gitignore

@ -1,3 +0,0 @@
.vscode
.idea
.vite

2
server/.gitignore

@ -51,4 +51,4 @@ rebel.xml
application-my.yaml application-my.yaml
/yudao-ui-app/unpackage/ /yudao-ui-app/unpackage/
**/.DS_Store
**/.DS_Store

30
web/.env.dev.tauri

@ -0,0 +1,30 @@
NODE_ENV=production
VITE_DEV=true
# 请求路径
VITE_BASE_URL='https://lock.zdhlcn.com:9807'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
# 接口地址
VITE_API_URL=/admin-api
# 是否删除debugger
VITE_DROP_DEBUGGER=false
# 是否删除console.log
VITE_DROP_CONSOLE=false
# 是否sourcemap
VITE_SOURCEMAP=true
# 打包路径
VITE_BASE_PATH=/
# 输出路径
VITE_OUT_DIR=dist
# TAURI启动标记
VITE_IS_TAURI=true

2
web/.env.prod

@ -15,7 +15,7 @@ VITE_API_URL=/admin-api
VITE_DROP_DEBUGGER=true VITE_DROP_DEBUGGER=true
# 是否删除console.log # 是否删除console.log
VITE_DROP_CONSOLE=false
VITE_DROP_CONSOLE=true
# 是否sourcemap # 是否sourcemap
VITE_SOURCEMAP=false VITE_SOURCEMAP=false

7
web/.env.test → web/.env.prod.tauri

@ -3,7 +3,7 @@ NODE_ENV=production
VITE_DEV=false VITE_DEV=false
# 请求路径 # 请求路径
VITE_BASE_URL=''
VITE_BASE_URL='https://lock.zdhlcn.com:9807'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server VITE_UPLOAD_TYPE=server
@ -24,4 +24,7 @@ VITE_SOURCEMAP=false
VITE_BASE_PATH=/ VITE_BASE_PATH=/
# 输出路径 # 输出路径
VITE_OUT_DIR=dist-test
VITE_OUT_DIR=dist-prod
# TAURI启动标记
VITE_IS_TAURI=true

6
web/.eslintrc.js

@ -17,6 +17,12 @@ module.exports = defineConfig({
jsx: true jsx: true
} }
}, },
ignorePatterns: [
'src/components/Tinyflow/**/*.js',
'src/components/Tinyflow/**/*.umd.js',
'src/types/auto-imports.d.ts',
'src/types/auto-components.d.ts'
],
extends: [ extends: [
'plugin:vue/vue3-recommended', 'plugin:vue/vue3-recommended',
'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/recommended',

3
web/.gitignore

@ -7,3 +7,6 @@ pnpm-debug
auto-*.d.ts auto-*.d.ts
.idea .idea
.history .history
pnpm-lock.yaml
.vite
.vscode

18
web/.vscode/extensions.json

@ -1,18 +0,0 @@
{
"recommendations": [
"christian-kohler.path-intellisense",
"vscode-icons-team.vscode-icons",
"davidanson.vscode-markdownlint",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"mrmlnc.vscode-less",
"lokalise.i18n-ally",
"redhat.vscode-yaml",
"csstools.postcss",
"mikestead.dotenv",
"eamodio.gitlens",
"antfu.iconify",
"antfu.unocss",
"Vue.volar"
]
}

16
web/.vscode/launch.json

@ -1,16 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "msedge",
"request": "launch",
"name": "Launch Edge against localhost",
"url": "http://localhost",
"webRoot": "${workspaceFolder}/src",
"sourceMaps": true
}
]
}

144
web/.vscode/settings.json

@ -1,144 +0,0 @@
{
"typescript.tsdk": "node_modules/typescript/lib",
"npm.packageManager": "pnpm",
"editor.tabSize": 2,
"prettier.printWidth": 100, //
"editor.defaultFormatter": "esbenp.prettier-vscode",
"files.eol": "\n",
"search.exclude": {
"**/node_modules": true,
"**/*.log": true,
"**/*.log*": true,
"**/bower_components": true,
"**/dist": true,
"**/elehukouben": true,
"**/.git": true,
"**/.gitignore": true,
"**/.svn": true,
"**/.DS_Store": true,
"**/.idea": true,
"**/.vscode": false,
"**/yarn.lock": true,
"**/tmp": true,
"out": true,
"dist": true,
"node_modules": true,
"CHANGELOG.md": true,
"examples": true,
"res": true,
"screenshots": true,
"yarn-error.log": true,
"**/.yarn": true
},
"files.exclude": {
"**/.cache": true,
"**/.editorconfig": true,
"**/.eslintcache": true,
"**/bower_components": true,
"**/.idea": true,
"**/tmp": true,
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true
},
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/.vscode/**": true,
"**/node_modules/**": true,
"**/tmp/**": true,
"**/bower_components/**": true,
"**/dist/**": true,
"**/yarn.lock": true
},
"stylelint.enable": true,
"stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass"],
"path-intellisense.mappings": {
"@/": "${workspaceRoot}/src"
},
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[less]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
"source.fixAll.stylelint": "explicit"
},
"editor.formatOnSave": true,
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"i18n-ally.localesPaths": ["src/locales"],
"i18n-ally.keystyle": "nested",
"i18n-ally.sortKeys": true,
"i18n-ally.namespace": false,
"i18n-ally.enabledParsers": ["ts"],
"i18n-ally.sourceLanguage": "en",
"i18n-ally.displayLanguage": "zh-CN",
"i18n-ally.enabledFrameworks": ["vue", "react"],
"cSpell.words": [
"brotli",
"browserslist",
"codemirror",
"commitlint",
"cropperjs",
"echart",
"echarts",
"esnext",
"esno",
"iconify",
"INTLIFY",
"lintstagedrc",
"logicflow",
"nprogress",
"pinia",
"pnpm",
"qrcode",
"sider",
"sortablejs",
"stylelint",
"svgs",
"unocss",
"unplugin",
"unref",
"videojs",
"VITE",
"vitejs",
"vueuse",
"wangeditor",
"zxcvbn"
],
//
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.expand": false,
"explorer.fileNesting.patterns": {
"*.ts": "$(capture).test.ts, $(capture).test.tsx",
"*.tsx": "$(capture).test.ts, $(capture).test.tsx",
"*.env": "$(capture).env.*",
"package.json": "pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.eslintrc-auto-import.json,.gitignore,prettier.config.js,stylelint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore"
},
"terminal.integrated.scrollback": 10000,
"nuxt.isNuxtApp": false
}

34
web/package.json

@ -1,26 +1,26 @@
{ {
"name": "yudao-ui-admin-vue3",
"version": "2.6.1-snapshot",
"description": "基于vue3、vite4、element-plus、typesScript",
"author": "xingyu",
"private": false,
"name": "ElectronicLock",
"version": "0.0.1",
"private": true,
"scripts": { "scripts": {
"i": "pnpm install", "i": "pnpm install",
"dev": "vite --mode dev", "dev": "vite --mode dev",
"ts:check": "vue-tsc --noEmit", "ts:check": "vue-tsc --noEmit",
"build:local": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build",
"build:dev": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode dev",
"build:test": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode test",
"build:prod": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode prod",
"build:dev": "vite build --mode dev",
"build:prod": "vite build --mode prod",
"serve:dev": "vite preview --mode dev", "serve:dev": "vite preview --mode dev",
"serve:prod": "vite preview --mode prod", "serve:prod": "vite preview --mode prod",
"preview": "pnpm build:local && vite preview",
"preview": "pnpm build:dev && vite preview",
"clean": "npx rimraf node_modules", "clean": "npx rimraf node_modules",
"clean:cache": "npx rimraf node_modules/.cache", "clean:cache": "npx rimraf node_modules/.cache",
"lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src", "lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src",
"lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", "lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
"lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", "lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
"lint:lint-staged": "lint-staged -c "
"dev:tauri": "vite --mode dev.tauri",
"build:tauri": "vite build --mode prod.tauri",
"tauri:dev": "tauri dev",
"tauri:build": "tauri build",
"tauri:icon": "tauri icon"
}, },
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.1.0", "@element-plus/icons-vue": "^2.1.0",
@ -86,6 +86,7 @@
"@iconify/json": "^2.2.187", "@iconify/json": "^2.2.187",
"@intlify/unplugin-vue-i18n": "^2.0.0", "@intlify/unplugin-vue-i18n": "^2.0.0",
"@purge-icons/generated": "^0.9.0", "@purge-icons/generated": "^0.9.0",
"@tauri-apps/cli": "^2.8.1",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/node": "^20.11.21", "@types/node": "^20.11.21",
"@types/nprogress": "^0.2.3", "@types/nprogress": "^0.2.3",
@ -139,18 +140,9 @@
"vue-eslint-parser": "^9.3.2", "vue-eslint-parser": "^9.3.2",
"vue-tsc": "^1.8.27" "vue-tsc": "^1.8.27"
}, },
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://gitee.com/yudaocode/yudao-ui-admin-vue3"
},
"bugs": {
"url": "https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues"
},
"homepage": "https://gitee.com/yudaocode/yudao-ui-admin-vue3",
"web-types": "./web-types.json", "web-types": "./web-types.json",
"engines": { "engines": {
"node": ">= 16.0.0", "node": ">= 16.0.0",
"pnpm": ">=8.6.0" "pnpm": ">=8.6.0"
} }
}
}

4
web/src-tauri/.gitignore

@ -0,0 +1,4 @@
# Generated by Cargo
# will have compiled files and executables
/target/
/gen/schemas

4995
web/src-tauri/Cargo.lock

File diff suppressed because it is too large

25
web/src-tauri/Cargo.toml

@ -0,0 +1,25 @@
[package]
name = "挂牌上锁平台"
version = "0.1.0"
description = "挂牌上锁平台"
authors = ["you"]
license = ""
repository = ""
edition = "2021"
rust-version = "1.77.2"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2.4.0", features = [] }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
log = "0.4"
tauri = { version = "2.8.2", features = [] }
tauri-plugin-log = "2"

3
web/src-tauri/build.rs

@ -0,0 +1,3 @@
fn main() {
tauri_build::build()
}

11
web/src-tauri/capabilities/default.json

@ -0,0 +1,11 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "enables the default permissions",
"windows": [
"main"
],
"permissions": [
"core:default"
]
}

BIN
web/src-tauri/icons/128x128.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
web/src-tauri/icons/128x128@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
web/src-tauri/icons/32x32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
web/src-tauri/icons/64x64.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
web/src-tauri/icons/Square107x107Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
web/src-tauri/icons/Square142x142Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
web/src-tauri/icons/Square150x150Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
web/src-tauri/icons/Square284x284Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
web/src-tauri/icons/Square30x30Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

BIN
web/src-tauri/icons/Square310x310Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
web/src-tauri/icons/Square44x44Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
web/src-tauri/icons/Square71x71Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
web/src-tauri/icons/Square89x89Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
web/src-tauri/icons/StoreLogo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
web/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
web/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
web/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
web/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
web/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
web/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
web/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
web/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
web/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
web/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
web/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
web/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
web/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
web/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
web/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
web/src-tauri/icons/icon.icns

Binary file not shown.

BIN
web/src-tauri/icons/icon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
web/src-tauri/icons/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
web/src-tauri/icons/ios/AppIcon-20x20@1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

BIN
web/src-tauri/icons/ios/AppIcon-20x20@2x-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
web/src-tauri/icons/ios/AppIcon-20x20@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
web/src-tauri/icons/ios/AppIcon-20x20@3x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
web/src-tauri/icons/ios/AppIcon-29x29@1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

BIN
web/src-tauri/icons/ios/AppIcon-29x29@2x-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
web/src-tauri/icons/ios/AppIcon-29x29@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
web/src-tauri/icons/ios/AppIcon-29x29@3x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
web/src-tauri/icons/ios/AppIcon-40x40@1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
web/src-tauri/icons/ios/AppIcon-40x40@2x-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
web/src-tauri/icons/ios/AppIcon-40x40@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
web/src-tauri/icons/ios/AppIcon-40x40@3x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
web/src-tauri/icons/ios/AppIcon-512@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
web/src-tauri/icons/ios/AppIcon-60x60@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
web/src-tauri/icons/ios/AppIcon-60x60@3x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
web/src-tauri/icons/ios/AppIcon-76x76@1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
web/src-tauri/icons/ios/AppIcon-76x76@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
web/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

16
web/src-tauri/src/lib.rs

@ -0,0 +1,16 @@
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.setup(|app| {
if cfg!(debug_assertions) {
app.handle().plugin(
tauri_plugin_log::Builder::default()
.level(log::LevelFilter::Info)
.build(),
)?;
}
Ok(())
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

6
web/src-tauri/src/main.rs

@ -0,0 +1,6 @@
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
app_lib::run();
}

37
web/src-tauri/tauri.conf.json

@ -0,0 +1,37 @@
{
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
"productName": "ElectronicLock",
"version": "0.1.0",
"identifier": "lock.zdhlcn.com",
"build": {
"frontendDist": "../dist-prod",
"devUrl": "http://localhost",
"beforeDevCommand": "pnpm dev:tauri",
"beforeBuildCommand": "pnpm build:tauri"
},
"app": {
"windows": [
{
"title": "挂牌上锁平台",
"width": 800,
"height": 600,
"resizable": true,
"fullscreen": false
}
],
"security": {
"csp": null
}
},
"bundle": {
"active": true,
"targets": "all",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
]
}
}

2
web/src/api/bpm/processExpression/index.ts

@ -39,4 +39,4 @@ export const ProcessExpressionApi = {
exportProcessExpression: async (params) => { exportProcessExpression: async (params) => {
return await request.download({ url: `/bpm/process-expression/export-excel`, params }) return await request.download({ url: `/bpm/process-expression/export-excel`, params })
} }
}
}

1
web/src/api/bpm/simple/index.ts

@ -1,6 +1,5 @@
import request from '@/config/axios' import request from '@/config/axios'
export const updateBpmSimpleModel = async (data) => { export const updateBpmSimpleModel = async (data) => {
return await request.post({ return await request.post({
url: '/bpm/model/simple/update', url: '/bpm/model/simple/update',

18
web/src/api/electron/lock/index.ts

@ -1,16 +1,16 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 电子锁信息 */ /** 电子锁信息 */
export interface Lock { export interface Lock {
id?: number; // 主键ID
lockNumber?: number; // 编号
lockName?: string; // 名称
lockStatus?: number; // 状态
lockType?: number; // 锁具类型
lockEnableStatus?: number; // 启用状态: 0=未启用, 1=已启用
lockLastChargeTime?: string | Dayjs; // 上次充电时间
lockBluetoothId?: string; // 蓝牙ID
id?: number // 主键ID
lockNumber?: number // 编号
lockName?: string // 名称
lockStatus?: number // 状态
lockType?: number // 锁具类型
lockEnableStatus?: number // 启用状态: 0=未启用, 1=已启用
lockLastChargeTime?: string | Dayjs // 上次充电时间
lockBluetoothId?: string // 蓝牙ID
} }
// 电子锁 API // 电子锁 API

24
web/src/api/electron/lockworkcord/index.ts

@ -1,17 +1,17 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 电子锁操作记录信息 */ /** 电子锁操作记录信息 */
export interface LockWorkRecord { export interface LockWorkRecord {
id?: number; // 主键ID
operatorId?: number; // 操作人ID
lockId?: number; // 电子锁ID
isolationPlanItemDetailId?: number; // 关联的子项详情ID (某些操作可能不关联)
recordType?: number; // 记录类型
signaturePath?: string; // 操作签名 (图片路径)
beforePhotoPath?: string; // 操作前照片 (图片路径)
afterPhotoPath?: string; // 操作后照片 (图片路径)
gpsCoordinates?: string; // 操作GPS坐标
id?: number // 主键ID
operatorId?: number // 操作人ID
lockId?: number // 电子锁ID
isolationPlanItemDetailId?: number // 关联的子项详情ID (某些操作可能不关联)
recordType?: number // 记录类型
signaturePath?: string // 操作签名 (图片路径)
beforePhotoPath?: string // 操作前照片 (图片路径)
afterPhotoPath?: string // 操作后照片 (图片路径)
gpsCoordinates?: string // 操作GPS坐标
} }
// 电子锁操作记录 API // 电子锁操作记录 API
@ -43,7 +43,9 @@ export const LockWorkRecordApi = {
/** 批量删除电子锁操作记录 */ /** 批量删除电子锁操作记录 */
deleteLockWorkRecordList: async (ids: number[]) => { deleteLockWorkRecordList: async (ids: number[]) => {
return await request.delete({ url: `/electron/lock-word-record/delete-list?ids=${ids.join(',')}` })
return await request.delete({
url: `/electron/lock-word-record/delete-list?ids=${ids.join(',')}`
})
}, },
// 导出电子锁操作记录 Excel // 导出电子锁操作记录 Excel

8
web/src/api/guide/isolationpoint/index.ts

@ -1,11 +1,11 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 指导书与隔离点关联信息 */ /** 指导书与隔离点关联信息 */
export interface IsolationPoint { export interface IsolationPoint {
id?: number; // id
guideId?: number; // 隔离指导书ID
isolationPointId?: number; // 隔离点ID
id?: number // id
guideId?: number // 隔离指导书ID
isolationPointId?: number // 隔离点ID
} }
// 指导书与隔离点关联 API // 指导书与隔离点关联 API

22
web/src/api/guide/lockguide/index.ts

@ -1,18 +1,18 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 隔离指导书信息 */ /** 隔离指导书信息 */
export interface LockGuide { export interface LockGuide {
id?: number; // 主键ID
name?: string; // 指导书名称
code?: string; // 指导书编码
operatorId?: number; // 操作人ID
operatorHelperId?: number; // 操作协助人ID
verifierId?: number; // 验证人ID
verifierHelperId?: number; // 验证协助人ID
guideContent?: string; // 工作内容和范围
guideLockNums?: number; // 所需设备锁数量
isolationPointIds?: number[]; // 关联隔离点ID
id?: number // 主键ID
name?: string // 指导书名称
code?: string // 指导书编码
operatorId?: number // 操作人ID
operatorHelperId?: number // 操作协助人ID
verifierId?: number // 验证人ID
verifierHelperId?: number // 验证协助人ID
guideContent?: string // 工作内容和范围
guideLockNums?: number // 所需设备锁数量
isolationPointIds?: number[] // 关联隔离点ID
} }
// 隔离指导书 API // 隔离指导书 API

5
web/src/api/infra/dataSourceConfig/index.ts

@ -26,7 +26,10 @@ export const deleteDataSourceConfig = (id: number) => {
// 批量删除数据源配置 // 批量删除数据源配置
export const deleteDataSourceConfigList = (ids: number[]) => { export const deleteDataSourceConfigList = (ids: number[]) => {
return request.delete({ url: '/infra/data-source-config/delete-list', params: { ids: ids.join(',') } })
return request.delete({
url: '/infra/data-source-config/delete-list',
params: { ids: ids.join(',') }
})
} }
// 查询数据源配置详情 // 查询数据源配置详情

46
web/src/api/infra/demo/demo03/erp/index.ts

@ -1,29 +1,29 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 学生课程信息 */ /** 学生课程信息 */
export interface Demo03Course { export interface Demo03Course {
id: number; // 编号
studentId?: number; // 学生编号
name?: string; // 名字
score?: number; // 分数
id: number // 编号
studentId?: number // 学生编号
name?: string // 名字
score?: number // 分数
} }
/** 学生班级信息 */ /** 学生班级信息 */
export interface Demo03Grade { export interface Demo03Grade {
id: number; // 编号
studentId?: number; // 学生编号
name?: string; // 名字
teacher?: string; // 班主任
id: number // 编号
studentId?: number // 学生编号
name?: string // 名字
teacher?: string // 班主任
} }
/** 学生信息 */ /** 学生信息 */
export interface Demo03Student { export interface Demo03Student {
id: number; // 编号
name?: string; // 名字
sex?: number; // 性别
birthday?: string | Dayjs; // 出生日期
description?: string; // 简介
id: number // 编号
name?: string // 名字
sex?: number // 性别
birthday?: string | Dayjs // 出生日期
description?: string // 简介
} }
// 学生 API // 学生 API
@ -55,7 +55,9 @@ export const Demo03StudentApi = {
/** 批量删除学生 */ /** 批量删除学生 */
deleteDemo03StudentList: async (ids: number[]) => { deleteDemo03StudentList: async (ids: number[]) => {
return await request.delete({ url: `/infra/demo03-student-erp/delete-list?ids=${ids.join(',')}` })
return await request.delete({
url: `/infra/demo03-student-erp/delete-list?ids=${ids.join(',')}`
})
}, },
// 导出学生 Excel // 导出学生 Excel
@ -63,7 +65,7 @@ export const Demo03StudentApi = {
return await request.download({ url: `/infra/demo03-student-erp/export-excel`, params }) return await request.download({ url: `/infra/demo03-student-erp/export-excel`, params })
}, },
// ==================== 子表(学生课程) ====================
// ==================== 子表(学生课程) ====================
// 获得学生课程分页 // 获得学生课程分页
getDemo03CoursePage: async (params) => { getDemo03CoursePage: async (params) => {
@ -86,7 +88,9 @@ export const Demo03StudentApi = {
/** 批量删除学生课程 */ /** 批量删除学生课程 */
deleteDemo03CourseList: async (ids: number[]) => { deleteDemo03CourseList: async (ids: number[]) => {
return await request.delete({ url: `/infra/demo03-student-erp/demo03-course/delete-list?ids=${ids.join(',')}` })
return await request.delete({
url: `/infra/demo03-student-erp/demo03-course/delete-list?ids=${ids.join(',')}`
})
}, },
// 获得学生课程 // 获得学生课程
@ -94,7 +98,7 @@ export const Demo03StudentApi = {
return await request.get({ url: `/infra/demo03-student-erp/demo03-course/get?id=` + id }) return await request.get({ url: `/infra/demo03-student-erp/demo03-course/get?id=` + id })
}, },
// ==================== 子表(学生班级) ====================
// ==================== 子表(学生班级) ====================
// 获得学生班级分页 // 获得学生班级分页
getDemo03GradePage: async (params) => { getDemo03GradePage: async (params) => {
@ -117,11 +121,13 @@ export const Demo03StudentApi = {
/** 批量删除学生班级 */ /** 批量删除学生班级 */
deleteDemo03GradeList: async (ids: number[]) => { deleteDemo03GradeList: async (ids: number[]) => {
return await request.delete({ url: `/infra/demo03-student-erp/demo03-grade/delete-list?ids=${ids.join(',')}` })
return await request.delete({
url: `/infra/demo03-student-erp/demo03-grade/delete-list?ids=${ids.join(',')}`
})
}, },
// 获得学生班级 // 获得学生班级
getDemo03Grade: async (id: number) => { getDemo03Grade: async (id: number) => {
return await request.get({ url: `/infra/demo03-student-erp/demo03-grade/get?id=` + id }) return await request.get({ url: `/infra/demo03-student-erp/demo03-grade/get?id=` + id })
},
}
} }

46
web/src/api/infra/demo/demo03/inner/index.ts

@ -1,29 +1,29 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 学生课程信息 */ /** 学生课程信息 */
export interface Demo03Course { export interface Demo03Course {
id: number; // 编号
studentId?: number; // 学生编号
name?: string; // 名字
score?: number; // 分数
id: number // 编号
studentId?: number // 学生编号
name?: string // 名字
score?: number // 分数
} }
/** 学生班级信息 */ /** 学生班级信息 */
export interface Demo03Grade { export interface Demo03Grade {
id: number; // 编号
studentId?: number; // 学生编号
name?: string; // 名字
teacher?: string; // 班主任
id: number // 编号
studentId?: number // 学生编号
name?: string // 名字
teacher?: string // 班主任
} }
/** 学生信息 */ /** 学生信息 */
export interface Demo03Student { export interface Demo03Student {
id: number; // 编号
name?: string; // 名字
sex?: number; // 性别
birthday?: string | Dayjs; // 出生日期
description?: string; // 简介
id: number // 编号
name?: string // 名字
sex?: number // 性别
birthday?: string | Dayjs // 出生日期
description?: string // 简介
demo03courses?: Demo03Course[] demo03courses?: Demo03Course[]
demo03grade?: Demo03Grade demo03grade?: Demo03Grade
} }
@ -57,7 +57,9 @@ export const Demo03StudentApi = {
/** 批量删除学生 */ /** 批量删除学生 */
deleteDemo03StudentList: async (ids: number[]) => { deleteDemo03StudentList: async (ids: number[]) => {
return await request.delete({ url: `/infra/demo03-student-inner/delete-list?ids=${ids.join(',')}` })
return await request.delete({
url: `/infra/demo03-student-inner/delete-list?ids=${ids.join(',')}`
})
}, },
// 导出学生 Excel // 导出学生 Excel
@ -65,17 +67,21 @@ export const Demo03StudentApi = {
return await request.download({ url: `/infra/demo03-student-inner/export-excel`, params }) return await request.download({ url: `/infra/demo03-student-inner/export-excel`, params })
}, },
// ==================== 子表(学生课程) ====================
// ==================== 子表(学生课程) ====================
// 获得学生课程列表 // 获得学生课程列表
getDemo03CourseListByStudentId: async (studentId) => { getDemo03CourseListByStudentId: async (studentId) => {
return await request.get({ url: `/infra/demo03-student-inner/demo03-course/list-by-student-id?studentId=` + studentId })
return await request.get({
url: `/infra/demo03-student-inner/demo03-course/list-by-student-id?studentId=` + studentId
})
}, },
// ==================== 子表(学生班级) ====================
// ==================== 子表(学生班级) ====================
// 获得学生班级 // 获得学生班级
getDemo03GradeByStudentId: async (studentId) => { getDemo03GradeByStudentId: async (studentId) => {
return await request.get({ url: `/infra/demo03-student-inner/demo03-grade/get-by-student-id?studentId=` + studentId })
},
return await request.get({
url: `/infra/demo03-student-inner/demo03-grade/get-by-student-id?studentId=` + studentId
})
}
} }

46
web/src/api/infra/demo/demo03/normal/index.ts

@ -1,29 +1,29 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 学生课程信息 */ /** 学生课程信息 */
export interface Demo03Course { export interface Demo03Course {
id: number; // 编号
studentId?: number; // 学生编号
name?: string; // 名字
score?: number; // 分数
id: number // 编号
studentId?: number // 学生编号
name?: string // 名字
score?: number // 分数
} }
/** 学生班级信息 */ /** 学生班级信息 */
export interface Demo03Grade { export interface Demo03Grade {
id: number; // 编号
studentId?: number; // 学生编号
name?: string; // 名字
teacher?: string; // 班主任
id: number // 编号
studentId?: number // 学生编号
name?: string // 名字
teacher?: string // 班主任
} }
/** 学生信息 */ /** 学生信息 */
export interface Demo03Student { export interface Demo03Student {
id: number; // 编号
name?: string; // 名字
sex?: number; // 性别
birthday?: string | Dayjs; // 出生日期
description?: string; // 简介
id: number // 编号
name?: string // 名字
sex?: number // 性别
birthday?: string | Dayjs // 出生日期
description?: string // 简介
demo03courses?: Demo03Course[] demo03courses?: Demo03Course[]
demo03grade?: Demo03Grade demo03grade?: Demo03Grade
} }
@ -57,7 +57,9 @@ export const Demo03StudentApi = {
/** 批量删除学生 */ /** 批量删除学生 */
deleteDemo03StudentList: async (ids: number[]) => { deleteDemo03StudentList: async (ids: number[]) => {
return await request.delete({ url: `/infra/demo03-student-normal/delete-list?ids=${ids.join(',')}` })
return await request.delete({
url: `/infra/demo03-student-normal/delete-list?ids=${ids.join(',')}`
})
}, },
// 导出学生 Excel // 导出学生 Excel
@ -65,17 +67,21 @@ export const Demo03StudentApi = {
return await request.download({ url: `/infra/demo03-student-normal/export-excel`, params }) return await request.download({ url: `/infra/demo03-student-normal/export-excel`, params })
}, },
// ==================== 子表(学生课程) ====================
// ==================== 子表(学生课程) ====================
// 获得学生课程列表 // 获得学生课程列表
getDemo03CourseListByStudentId: async (studentId) => { getDemo03CourseListByStudentId: async (studentId) => {
return await request.get({ url: `/infra/demo03-student-normal/demo03-course/list-by-student-id?studentId=` + studentId })
return await request.get({
url: `/infra/demo03-student-normal/demo03-course/list-by-student-id?studentId=` + studentId
})
}, },
// ==================== 子表(学生班级) ====================
// ==================== 子表(学生班级) ====================
// 获得学生班级 // 获得学生班级
getDemo03GradeByStudentId: async (studentId) => { getDemo03GradeByStudentId: async (studentId) => {
return await request.get({ url: `/infra/demo03-student-normal/demo03-grade/get-by-student-id?studentId=` + studentId })
},
return await request.get({
url: `/infra/demo03-student-normal/demo03-grade/get-by-student-id?studentId=` + studentId
})
}
} }

8
web/src/api/isolation/plan/index.ts

@ -1,11 +1,11 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 检修任务信息 */ /** 检修任务信息 */
export interface Plan { export interface Plan {
id: number; // 主键ID
ipName?: string; // 任务名称
status?: number; // 状态
id: number // 主键ID
ipName?: string // 任务名称
status?: number // 状态
} }
// 检修任务 API // 检修任务 API

18
web/src/api/isolation/planitem/index.ts

@ -1,16 +1,16 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 检修任务子项信息 */ /** 检修任务子项信息 */
export interface PlanItem { export interface PlanItem {
id?: number; // 主键ID
isolationPlanId?: number; // 检修任务ID
guideId?: number; // 隔离指导书ID
operatorId?: number; // 集中挂牌人ID
operatorHelperId?: number; // 集中挂牌协助人ID
verifierId?: number; // 验证人ID
verifierHelperId?: number; // 验证协助人ID
status?: number; // 子项状态: 0=未完成, 1=已完成
id?: number // 主键ID
isolationPlanId?: number // 检修任务ID
guideId?: number // 隔离指导书ID
operatorId?: number // 集中挂牌人ID
operatorHelperId?: number // 集中挂牌协助人ID
verifierId?: number // 验证人ID
verifierHelperId?: number // 验证协助人ID
status?: number // 子项状态: 0=未完成, 1=已完成
} }
// 检修任务子项 API // 检修任务子项 API

16
web/src/api/isolation/planitemdetail/index.ts

@ -1,13 +1,13 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 检修任务子项详情信息 */ /** 检修任务子项详情信息 */
export interface PlanItemDetail { export interface PlanItemDetail {
id?: number; // 主键ID
isolationPlanItemId?: number; // 检修任务子项ID
isolationPointId?: number; // 隔离点ID
lockId?: number; // 电子锁ID
lockStatus?: number; // 锁状态: 0=未上锁, 1=已上锁, 2=已解锁
id?: number // 主键ID
isolationPlanItemId?: number // 检修任务子项ID
isolationPointId?: number // 隔离点ID
lockId?: number // 电子锁ID
lockStatus?: number // 锁状态: 0=未上锁, 1=已上锁, 2=已解锁
} }
// 检修任务子项详情 API // 检修任务子项详情 API
@ -39,7 +39,9 @@ export const PlanItemDetailApi = {
/** 批量删除检修任务子项详情 */ /** 批量删除检修任务子项详情 */
deletePlanItemDetailList: async (ids: number[]) => { deletePlanItemDetailList: async (ids: number[]) => {
return await request.delete({ url: `/isolation/plan-item-detail/delete-list?ids=${ids.join(',')}` })
return await request.delete({
url: `/isolation/plan-item-detail/delete-list?ids=${ids.join(',')}`
})
}, },
// 导出检修任务子项详情 Excel // 导出检修任务子项详情 Excel

20
web/src/api/isolation/planlifelock/index.ts

@ -1,15 +1,15 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 个人生命锁信息 */ /** 个人生命锁信息 */
export interface PlanLifeLock { export interface PlanLifeLock {
id: number; // 主键ID
isolationPlanItemDetailId?: number; // 子项详情ID
userId?: number; // 上锁人ID
lockType?: number; // 生命锁类型
lockStatus?: number; // 锁定状态: 0=未上锁, 1=已上锁
lockTime?: number; // 上锁时间
unlockTime?: number; // 解锁时间
id: number // 主键ID
isolationPlanItemDetailId?: number // 子项详情ID
userId?: number // 上锁人ID
lockType?: number // 生命锁类型
lockStatus?: number // 锁定状态: 0=未上锁, 1=已上锁
lockTime?: number // 上锁时间
unlockTime?: number // 解锁时间
} }
// 个人生命锁 API // 个人生命锁 API
@ -41,7 +41,9 @@ export const PlanLifeLockApi = {
/** 批量删除个人生命锁 */ /** 批量删除个人生命锁 */
deletePlanLifeLockList: async (ids: number[]) => { deletePlanLifeLockList: async (ids: number[]) => {
return await request.delete({ url: `/isolation/plan-life-lock/delete-list?ids=${ids.join(',')}` })
return await request.delete({
url: `/isolation/plan-life-lock/delete-list?ids=${ids.join(',')}`
})
}, },
// 导出个人生命锁 Excel // 导出个人生命锁 Excel

16
web/src/api/isolation/point/index.ts

@ -1,15 +1,15 @@
import request from '@/config/axios' import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import type { Dayjs } from 'dayjs'
/** 隔离点信息 */ /** 隔离点信息 */
export interface Point { export interface Point {
id?: number; // 主键ID
ipType?: string; // 隔离点类型
ipName?: string; // 隔离点名称
ipLocation?: string; // 隔离点位置
ipNumber?: number; // 隔离点编号
status?: number; // 隔离点状态
guideLockNums?: number; // 电子锁数量
id?: number // 主键ID
ipType?: string // 隔离点类型
ipName?: string // 隔离点名称
ipLocation?: string // 隔离点位置
ipNumber?: number // 隔离点编号
status?: number // 隔离点状态
guideLockNums?: number // 电子锁数量
} }
// 隔离点 API // 隔离点 API

29
web/src/api/lock/index.ts

@ -1,7 +1,5 @@
import request from '@/config/axios' import request from '@/config/axios'
export const getAllLock = (params: PageParam = { pageSize: 9999, pageNo: 1 }) => { export const getAllLock = (params: PageParam = { pageSize: 9999, pageNo: 1 }) => {
return request.get({ url: `/electron/lock/page`, params }) return request.get({ url: `/electron/lock/page`, params })
} }
@ -29,13 +27,13 @@ export const getAllPlanLifeLock = (params: PageParam = { pageSize: 9999, pageNo:
} }
const baseUrl = import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL const baseUrl = import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL
export const getAgentConfigSignature = (url: string) => { export const getAgentConfigSignature = (url: string) => {
return fetch(`${baseUrl}/js/weixin/getAgentConfigSignature?url=${url}`).then(async res => {
return fetch(`${baseUrl}/js/weixin/getAgentConfigSignature?url=${url}`).then(async (res) => {
return await res.json() return await res.json()
}) })
} }
export const getConfigSignature = (url: string) => { export const getConfigSignature = (url: string) => {
return fetch(`${baseUrl}/js/weixin/getConfigSignature?url=${url}`).then(async res => {
return fetch(`${baseUrl}/js/weixin/getConfigSignature?url=${url}`).then(async (res) => {
return await res.json() return await res.json()
}) })
} }
@ -44,23 +42,30 @@ export const getAllFormattedIsolationPlan = () => {
return request.get({ url: `/isolation/plan/planListAll` }) return request.get({ url: `/isolation/plan/planListAll` })
} }
// 获取所有基础数据 // 获取所有基础数据
export const getAllBaseData = () => request.get({ url: `isolation/point/getListAll` }) export const getAllBaseData = () => request.get({ url: `isolation/point/getListAll` })
// 查询用户管理列表 // 查询用户管理列表
export const getAllUser = () => request.get({ url: 'system/user/list-all-simple' }) export const getAllUser = () => request.get({ url: 'system/user/list-all-simple' })
// 根据隔离点获取相关记录 // 根据隔离点获取相关记录
export const getIsolationPointDetail = (id: number) => request.get({ url: `isolation/point/getPointListAll`, params: { id } })
export const getIsolationPointDetail = (id: number) =>
request.get({ url: `isolation/point/getPointListAll`, params: { id } })
export const bindLock = (data: { planItemDetailId: number; lockId: number }) => request.put({ url: `isolation/point/bindlock`, data })
export const bindLock = (data: { planItemDetailId: number; lockId: number }) =>
request.put({ url: `isolation/point/bindlock`, data })
export const lockAction = (data: { planItemDetailId: number, operateRecordId: number }) => request.put({ url: `isolation/point/createLock`, data })
export const lockAction = (data: { planItemDetailId: number; operateRecordId: number }) =>
request.put({ url: `isolation/point/createLock`, data })
export const verifyLockAction = (data: { planItemDetailId: number, verifyRecordId: number }) => request.put({ url: `isolation/point/verifyLock`, data })
export const verifyLockAction = (data: { planItemDetailId: number; verifyRecordId: number }) =>
request.put({ url: `isolation/point/verifyLock`, data })
export const verifyUnlockAction = (data: { planItemDetailId: number, lifelockId: number }) => request.put({ url: `isolation/point/verifyUnLock`, data })
export const verifyUnlockAction = (data: { planItemDetailId: number; lifelockId: number }) =>
request.put({ url: `isolation/point/verifyUnLock`, data })
export const unLockAction = (data: { planItemDetailId: number, planId: number, lifelockId: number }) => request.put({ url: `isolation/point/unLock`, data })
export const unLockAction = (data: {
planItemDetailId: number
planId: number
lifelockId: number
}) => request.put({ url: `isolation/point/unLock`, data })

5
web/src/api/system/mail/account/index.ts

@ -38,7 +38,10 @@ export const deleteMailAccount = async (id: number) => {
// 批量删除邮箱账号 // 批量删除邮箱账号
export const deleteMailAccountList = async (ids: number[]) => { export const deleteMailAccountList = async (ids: number[]) => {
return await request.delete({ url: '/system/mail-account/delete-list', params: { ids: ids.join(',') } })
return await request.delete({
url: '/system/mail-account/delete-list',
params: { ids: ids.join(',') }
})
} }
// 获得邮箱账号精简列表 // 获得邮箱账号精简列表

5
web/src/api/system/mail/template/index.ts

@ -46,7 +46,10 @@ export const deleteMailTemplate = async (id: number) => {
// 批量删除邮件模版 // 批量删除邮件模版
export const deleteMailTemplateList = async (ids: number[]) => { export const deleteMailTemplateList = async (ids: number[]) => {
return await request.delete({ url: '/system/mail-template/delete-list', params: { ids: ids.join(',') } })
return await request.delete({
url: '/system/mail-template/delete-list',
params: { ids: ids.join(',') }
})
} }
// 发送邮件 // 发送邮件

5
web/src/api/system/notify/template/index.ts

@ -45,7 +45,10 @@ export const deleteNotifyTemplate = async (id: number) => {
// 批量删除站内信模板 // 批量删除站内信模板
export const deleteNotifyTemplateList = async (ids: number[]) => { export const deleteNotifyTemplateList = async (ids: number[]) => {
return await request.delete({ url: '/system/notify-template/delete-list', params: { ids: ids.join(',') } })
return await request.delete({
url: '/system/notify-template/delete-list',
params: { ids: ids.join(',') }
})
} }
// 发送站内信 // 发送站内信

5
web/src/api/system/oauth2/client.ts

@ -48,5 +48,8 @@ export const deleteOAuth2Client = (id: number) => {
// 批量删除 OAuth2 客户端 // 批量删除 OAuth2 客户端
export const deleteOAuth2ClientList = (ids: number[]) => { export const deleteOAuth2ClientList = (ids: number[]) => {
return request.delete({ url: '/system/oauth2-client/delete-list', params: { ids: ids.join(',') } })
return request.delete({
url: '/system/oauth2-client/delete-list',
params: { ids: ids.join(',') }
})
} }

5
web/src/api/system/tenantPackage/index.ts

@ -39,7 +39,10 @@ export const deleteTenantPackage = (id: number) => {
// 批量删除租户套餐 // 批量删除租户套餐
export const deleteTenantPackageList = (ids: number[]) => { export const deleteTenantPackageList = (ids: number[]) => {
return request.delete({ url: '/system/tenant-package/delete-list', params: { ids: ids.join(',') } })
return request.delete({
url: '/system/tenant-package/delete-list',
params: { ids: ids.join(',') }
})
} }
// 获取租户套餐精简信息列表 // 获取租户套餐精简信息列表

BIN
web/src/assets/imgs/iot/device.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

3
web/src/components/Cropper/src/CopperModal.vue

@ -208,7 +208,8 @@ $prefix-cls: #{$namespace}-cropper-am;
&-cropper { &-cropper {
height: 300px; height: 300px;
background: #eee; background: #eee;
background-image: linear-gradient(
background-image:
linear-gradient(
45deg, 45deg,
rgb(0 0 0 / 25%) 25%, rgb(0 0 0 / 25%) 25%,
transparent 0, transparent 0,

4
web/src/components/Descriptions/src/Descriptions.vue

@ -130,9 +130,7 @@ const toggleClick = () => {
<DictTag :type="item.dictType" :value="data[item.field] + ''" /> <DictTag :type="item.dictType" :value="data[item.field] + ''" />
</slot> </slot>
<slot v-else :name="item.field" :row="data"> <slot v-else :name="item.field" :row="data">
{{
item.mappedField ? data[item.mappedField] : data[item.field]
}}
{{ item.mappedField ? data[item.mappedField] : data[item.field] }}
</slot> </slot>
</template> </template>
</ElDescriptionsItem> </ElDescriptionsItem>

7
web/src/components/DiyEditor/components/mobile/Carousel/property.vue

@ -17,7 +17,12 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="高度" prop="height"> <el-form-item label="高度" prop="height">
<el-input-number class="!w-50% mr-10px" controls-position="right" v-model="formData.height" /> px
<el-input-number
class="!w-50% mr-10px"
controls-position="right"
v-model="formData.height"
/>
px
</el-form-item> </el-form-item>
<el-form-item label="指示器" prop="indicator"> <el-form-item label="指示器" prop="indicator">
<el-radio-group v-model="formData.indicator"> <el-radio-group v-model="formData.indicator">

2
web/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue

@ -39,7 +39,7 @@
</span> </span>
</div> </div>
</div> </div>
</el-carousel-item>
</el-carousel-item>
</el-carousel> </el-carousel>
</template> </template>

2
web/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts

@ -1,4 +1,4 @@
import {ComponentStyle, DiyComponent} from '@/components/DiyEditor/util'
import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util'
/** 积分商城属性 */ /** 积分商城属性 */
export interface PromotionPointProperty { export interface PromotionPointProperty {

8
web/src/components/DiyEditor/components/mobile/TitleBar/property.vue

@ -31,13 +31,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="高度" prop="height" label-width="70px"> <el-form-item label="高度" prop="height" label-width="70px">
<el-slider
v-model="formData.height"
:max="200"
:min="20"
show-input
input-size="small"
/>
<el-slider v-model="formData.height" :max="200" :min="20" show-input input-size="small" />
</el-form-item> </el-form-item>
</el-card> </el-card>
<el-card header="主标题" class="property-group" shadow="never"> <el-card header="主标题" class="property-group" shadow="never">

2
web/src/components/FormCreate/src/type/index.ts

@ -46,6 +46,6 @@ export interface SelectRuleOption {
label: string // label 名称 label: string // label 名称
name: string // 组件名称 name: string // 组件名称
icon: string // 组件图标 icon: string // 组件图标
props?: any[], // 组件规则
props?: any[] // 组件规则
event?: any[] // 事件配置 event?: any[] // 事件配置
} }

2
web/src/components/FormCreate/src/utils/index.ts

@ -19,7 +19,7 @@ export const localeProps = (t, prefix, rules) => {
/** /**
* field, title * field, title
*
*
* @param rule https://www.form-create.com/v3/guide/rule * @param rule https://www.form-create.com/v3/guide/rule
* @param fields * @param fields
* @param parentTitle * @param parentTitle

7
web/src/components/Icon/src/IconSelect.vue

@ -125,7 +125,12 @@ watch(
<template> <template>
<div class="selector"> <div class="selector">
<ElInput v-model="inputValue" @click="visible = !visible" :clearable="props.clearable" @clear="clearIcon">
<ElInput
v-model="inputValue"
@click="visible = !visible"
:clearable="props.clearable"
@clear="clearIcon"
>
<template #append> <template #append>
<ElPopover <ElPopover
:popper-options="{ :popper-options="{

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save