mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2026-01-27 21:09:41 +00:00
0.0.6
修复已知bug 优化代码生成器 优化安装引导
This commit is contained in:
parent
ef01fcf32f
commit
f4f9f311cb
@ -38,10 +38,10 @@ niucloud-admin是一款快速开发通用管理后台框架,前端采用最新
|
||||
| [论坛地址](https://www.niucloud.com/bbs)
|
||||
|
||||
### 演示地址
|
||||
- 站点后台演示网址:[<a href='http://demo-saas.site.niucloud.com/site' target="_blank"> 查看 </a>]
|
||||
<a href='http://demo-saas.site.niucloud.com/site' target="_blank">http://demo-saas.site.niucloud.com/site 账号:admin 密码:123456
|
||||
- 平台后台演示网址:[<a href='http://demo-saas.site.niucloud.com/admin/' target="_blank"> 查看 </a>]
|
||||
<a href='http://demo-saas.site.niucloud.com/admin/' target="_blank">http://demo-saas.site.niucloud.com/admin/ 账号:admin 密码:123456
|
||||
- 站点后台演示网址:[<a href='https://demo.niucloud.com/site/' target="_blank"> 查看 </a>]
|
||||
<a href='https://demo.niucloud.com/site/' target="_blank">https://demo.niucloud.com/site/ 账号:test 密码:123456
|
||||
- 平台后台演示网址:[<a href='https://demo.niucloud.com/admin/' target="_blank"> 查看 </a>]
|
||||
<a href='https://demo.niucloud.com/admin/' target="_blank">https://demo.niucloud.com/admin/ 账号:admin 密码:123456
|
||||
|
||||
### 开源使用须知
|
||||
|
||||
|
||||
461
admin/package-lock.json
generated
461
admin/package-lock.json
generated
@ -8,48 +8,51 @@
|
||||
"name": "admin",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.0.10",
|
||||
"@highlightjs/vue-plugin": "^2.1.0",
|
||||
"@vueuse/core": "^9.12.0",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||
"axios": "^1.4.0",
|
||||
"crypto-js": "^4.1.1",
|
||||
"css-color-function": "^1.3.3",
|
||||
"echarts": "^5.4.1",
|
||||
"element-plus": "^2.2.29",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.30",
|
||||
"qrcode": "^1.5.1",
|
||||
"sass": "^1.58.0",
|
||||
"sortablejs": "^1.15.0",
|
||||
"vue": "^3.2.45",
|
||||
"vue-i18n": "^9.2.2",
|
||||
"vue-jsonp": "^2.0.0",
|
||||
"vue-router": "^4.1.6",
|
||||
"vue-web-terminal": "^3.1.7",
|
||||
"vue3-video-play": "^1.3.1-beta.6"
|
||||
"@element-plus/icons-vue": "2.0.10",
|
||||
"@highlightjs/vue-plugin": "2.1.0",
|
||||
"@types/lodash-es": "4.17.6",
|
||||
"@vueuse/core": "9.12.0",
|
||||
"@wangeditor/editor": "5.1.23",
|
||||
"@wangeditor/editor-for-vue": "5.1.12",
|
||||
"axios": "1.4.0",
|
||||
"crypto-js": "4.1.1",
|
||||
"css-color-function": "1.3.3",
|
||||
"echarts": "5.4.1",
|
||||
"element-plus": "2.2.29",
|
||||
"highlight.js": "11.0.1",
|
||||
"lodash-es": "4.17.21",
|
||||
"nprogress": "0.2.0",
|
||||
"pinia": "2.0.30",
|
||||
"qrcode": "1.5.1",
|
||||
"sass": "1.58.0",
|
||||
"sortablejs": "1.15.0",
|
||||
"vue": "3.2.45",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-jsonp": "2.0.0",
|
||||
"vue-router": "4.1.6",
|
||||
"vue-web-terminal": "3.1.7",
|
||||
"vue3-video-play": "1.3.1-beta.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/line-clamp": "^0.4.2",
|
||||
"@types/qrcode": "^1.5.0",
|
||||
"@types/sortablejs": "^1.15.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.53.0",
|
||||
"@vitejs/plugin-vue": "^4.0.0",
|
||||
"autoprefixer": "^10.4.13",
|
||||
"eslint": "^8.34.0",
|
||||
"eslint-config-standard-with-typescript": "^34.0.0",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-n": "^15.6.1",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-vue": "^9.9.0",
|
||||
"postcss": "^8.4.21",
|
||||
"tailwindcss": "^3.2.4",
|
||||
"typescript": "^4.9.5",
|
||||
"unplugin-auto-import": "^0.13.0",
|
||||
"unplugin-vue-components": "^0.23.0",
|
||||
"vite": "^4.1.0",
|
||||
"vue-tsc": "^1.0.24"
|
||||
"@tailwindcss/line-clamp": "0.4.2",
|
||||
"@types/qrcode": "1.5.0",
|
||||
"@types/sortablejs": "1.15.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.53.0",
|
||||
"@vitejs/plugin-vue": "4.0.0",
|
||||
"autoprefixer": "10.4.13",
|
||||
"eslint": "8.34.0",
|
||||
"eslint-config-standard-with-typescript": "34.0.0",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-n": "15.6.1",
|
||||
"eslint-plugin-promise": "6.1.1",
|
||||
"eslint-plugin-vue": "9.9.0",
|
||||
"postcss": "8.4.21",
|
||||
"tailwindcss": "3.2.4",
|
||||
"typescript": "4.9.5",
|
||||
"unplugin-auto-import": "0.13.0",
|
||||
"unplugin-vue-components": "0.23.0",
|
||||
"vite": "4.1.0",
|
||||
"vue-tsc": "1.0.24"
|
||||
}
|
||||
},
|
||||
"node_modules/@ampproject/remapping": {
|
||||
@ -1516,6 +1519,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
|
||||
"integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.47",
|
||||
@ -1527,6 +1531,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
|
||||
"integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
@ -1536,6 +1541,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
|
||||
"integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
@ -1553,6 +1559,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
|
||||
"integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
@ -1567,6 +1574,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
|
||||
"integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
@ -1575,6 +1583,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
|
||||
"integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
@ -1584,40 +1593,93 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
|
||||
"integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
|
||||
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
"@vue/reactivity": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
|
||||
"integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
|
||||
"node_modules/@vue/runtime-core/node_modules/@vue/reactivity": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz",
|
||||
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
|
||||
"dependencies": {
|
||||
"@vue/runtime-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core/node_modules/@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
|
||||
"dependencies": {
|
||||
"@vue/runtime-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"csstype": "^2.6.8"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom/node_modules/@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
|
||||
"integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
|
||||
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.2.47"
|
||||
"vue": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer/node_modules/@vue/compiler-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
|
||||
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer/node_modules/@vue/compiler-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer/node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
|
||||
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer/node_modules/@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
|
||||
"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
|
||||
"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@vueuse/core": {
|
||||
"version": "9.12.0",
|
||||
@ -3934,10 +3996,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/highlight.js": {
|
||||
"version": "11.9.0",
|
||||
"resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.9.0.tgz",
|
||||
"integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
|
||||
"peer": true,
|
||||
"version": "11.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.0.1.tgz",
|
||||
"integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==",
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
}
|
||||
@ -6114,9 +6175,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.1.tgz",
|
||||
"integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.0.tgz",
|
||||
"integrity": "sha512-YoUKE/9bbK4C8ZeSYMDDEF8H5aypmWUq4WisftDhntR1gkI2zt2SGT/5Wd2xu6ZoVXkCyO3U4844KWG9e4nFoQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esbuild": "^0.16.14",
|
||||
@ -6163,15 +6224,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
|
||||
"integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz",
|
||||
"integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/compiler-sfc": "3.2.47",
|
||||
"@vue/runtime-dom": "3.2.47",
|
||||
"@vue/server-renderer": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-sfc": "3.2.45",
|
||||
"@vue/runtime-dom": "3.2.45",
|
||||
"@vue/server-renderer": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-eslint-parser": {
|
||||
@ -6295,6 +6356,69 @@
|
||||
"vue-json-viewer": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/vue/node_modules/@vue/compiler-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
|
||||
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/vue/node_modules/@vue/compiler-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/vue/node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
|
||||
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/reactivity-transform": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7",
|
||||
"postcss": "^8.1.10",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/vue/node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
|
||||
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/vue/node_modules/@vue/reactivity-transform": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
|
||||
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7"
|
||||
}
|
||||
},
|
||||
"node_modules/vue/node_modules/@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
|
||||
},
|
||||
"node_modules/vue3-video-play": {
|
||||
"version": "1.3.1-beta.6",
|
||||
"resolved": "https://registry.npmmirror.com/vue3-video-play/-/vue3-video-play-1.3.1-beta.6.tgz",
|
||||
@ -7617,6 +7741,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
|
||||
"integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.47",
|
||||
@ -7628,6 +7753,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
|
||||
"integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
@ -7637,6 +7763,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
|
||||
"integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
@ -7654,6 +7781,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
|
||||
"integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
@ -7668,6 +7796,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
|
||||
"integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
@ -7676,6 +7805,7 @@
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
|
||||
"integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
@ -7685,37 +7815,96 @@
|
||||
}
|
||||
},
|
||||
"@vue/runtime-core": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
|
||||
"integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
|
||||
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
|
||||
"requires": {
|
||||
"@vue/reactivity": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
"@vue/reactivity": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vue/reactivity": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz",
|
||||
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
|
||||
"requires": {
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@vue/runtime-dom": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
|
||||
"integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
|
||||
"requires": {
|
||||
"@vue/runtime-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47",
|
||||
"@vue/runtime-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"csstype": "^2.6.8"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@vue/server-renderer": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
|
||||
"integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
|
||||
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
|
||||
"requires": {
|
||||
"@vue/compiler-ssr": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
|
||||
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
|
||||
"requires": {
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-ssr": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
|
||||
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@vue/shared": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
|
||||
"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
|
||||
"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@vueuse/core": {
|
||||
"version": "9.12.0",
|
||||
@ -9565,10 +9754,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"highlight.js": {
|
||||
"version": "11.9.0",
|
||||
"resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.9.0.tgz",
|
||||
"integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
|
||||
"peer": true
|
||||
"version": "11.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.0.1.tgz",
|
||||
"integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ=="
|
||||
},
|
||||
"hls.js": {
|
||||
"version": "1.3.4",
|
||||
@ -11295,9 +11483,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"vite": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.1.tgz",
|
||||
"integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.0.tgz",
|
||||
"integrity": "sha512-YoUKE/9bbK4C8ZeSYMDDEF8H5aypmWUq4WisftDhntR1gkI2zt2SGT/5Wd2xu6ZoVXkCyO3U4844KWG9e4nFoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esbuild": "^0.16.14",
|
||||
@ -11308,15 +11496,80 @@
|
||||
}
|
||||
},
|
||||
"vue": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
|
||||
"integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz",
|
||||
"integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==",
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/compiler-sfc": "3.2.47",
|
||||
"@vue/runtime-dom": "3.2.47",
|
||||
"@vue/server-renderer": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-sfc": "3.2.45",
|
||||
"@vue/runtime-dom": "3.2.45",
|
||||
"@vue/server-renderer": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
|
||||
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
|
||||
"requires": {
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-sfc": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
|
||||
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/reactivity-transform": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7",
|
||||
"postcss": "^8.1.10",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-ssr": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
|
||||
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/reactivity-transform": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
|
||||
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7"
|
||||
}
|
||||
},
|
||||
"@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"vue-eslint-parser": {
|
||||
|
||||
@ -9,47 +9,50 @@
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.0.10",
|
||||
"@highlightjs/vue-plugin": "^2.1.0",
|
||||
"@vueuse/core": "^9.12.0",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||
"axios": "^1.4.0",
|
||||
"crypto-js": "^4.1.1",
|
||||
"css-color-function": "^1.3.3",
|
||||
"echarts": "^5.4.1",
|
||||
"element-plus": "^2.2.29",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.30",
|
||||
"qrcode": "^1.5.1",
|
||||
"sass": "^1.58.0",
|
||||
"sortablejs": "^1.15.0",
|
||||
"vue": "^3.2.45",
|
||||
"vue-i18n": "^9.2.2",
|
||||
"vue-router": "^4.1.6",
|
||||
"vue-web-terminal": "^3.1.7",
|
||||
"vue3-video-play": "^1.3.1-beta.6",
|
||||
"vue-jsonp": "^2.0.0"
|
||||
"@element-plus/icons-vue": "2.0.10",
|
||||
"@highlightjs/vue-plugin": "2.1.0",
|
||||
"@vueuse/core": "9.12.0",
|
||||
"@wangeditor/editor": "5.1.23",
|
||||
"@wangeditor/editor-for-vue": "5.1.12",
|
||||
"@types/lodash-es": "4.17.6",
|
||||
"axios": "1.4.0",
|
||||
"crypto-js": "4.1.1",
|
||||
"css-color-function": "1.3.3",
|
||||
"echarts": "5.4.1",
|
||||
"element-plus": "2.2.29",
|
||||
"nprogress": "0.2.0",
|
||||
"pinia": "2.0.30",
|
||||
"qrcode": "1.5.1",
|
||||
"sass": "1.58.0",
|
||||
"sortablejs": "1.15.0",
|
||||
"vue": "3.2.45",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-router": "4.1.6",
|
||||
"vue-web-terminal": "3.1.7",
|
||||
"vue3-video-play": "1.3.1-beta.6",
|
||||
"vue-jsonp": "2.0.0",
|
||||
"lodash-es": "4.17.21",
|
||||
"highlight.js": "11.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/line-clamp": "^0.4.2",
|
||||
"@types/qrcode": "^1.5.0",
|
||||
"@types/sortablejs": "^1.15.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.53.0",
|
||||
"@vitejs/plugin-vue": "^4.0.0",
|
||||
"autoprefixer": "^10.4.13",
|
||||
"eslint": "^8.34.0",
|
||||
"eslint-config-standard-with-typescript": "^34.0.0",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-n": "^15.6.1",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-vue": "^9.9.0",
|
||||
"postcss": "^8.4.21",
|
||||
"tailwindcss": "^3.2.4",
|
||||
"typescript": "^4.9.5",
|
||||
"unplugin-auto-import": "^0.13.0",
|
||||
"unplugin-vue-components": "^0.23.0",
|
||||
"vite": "^4.1.0",
|
||||
"vue-tsc": "^1.0.24"
|
||||
"@tailwindcss/line-clamp": "0.4.2",
|
||||
"@types/qrcode": "1.5.0",
|
||||
"@types/sortablejs": "1.15.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.53.0",
|
||||
"@vitejs/plugin-vue": "4.0.0",
|
||||
"autoprefixer": "10.4.13",
|
||||
"eslint": "8.34.0",
|
||||
"eslint-config-standard-with-typescript": "34.0.0",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-n": "15.6.1",
|
||||
"eslint-plugin-promise": "6.1.1",
|
||||
"eslint-plugin-vue": "9.9.0",
|
||||
"postcss": "8.4.21",
|
||||
"tailwindcss": "3.2.4",
|
||||
"typescript": "4.9.5",
|
||||
"unplugin-auto-import": "0.13.0",
|
||||
"unplugin-vue-components": "0.23.0",
|
||||
"vite": "4.1.0",
|
||||
"vue-tsc": "1.0.24"
|
||||
}
|
||||
}
|
||||
@ -48,3 +48,12 @@ export function getModuleVersion() {
|
||||
export function downloadVersion(params: Record<string, any>) {
|
||||
return request.post(`addon/download/${params.addon}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取框架最新版本
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getFrameworkNewVersion() {
|
||||
return request.get(`niucloud/framework/newversion`)
|
||||
}
|
||||
|
||||
@ -38,6 +38,14 @@ export function editSite(params: Record<string, any>) {
|
||||
return request.put(`site/site/${params.site_id}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除站点
|
||||
* @param siteId
|
||||
*/
|
||||
export function deleteSite(siteId: number) {
|
||||
return request.delete(`site/site/${siteId}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭站点
|
||||
* @param params
|
||||
|
||||
@ -128,6 +128,15 @@ export function getAddonMenu(key: any) {
|
||||
return request.get(`sys/menu/addon_menu/${key}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取类型为目录的菜单
|
||||
* @param key
|
||||
*/
|
||||
export function getMenuByTypeDir(key: any = 'system') {
|
||||
return request.get(`sys/menu/dir/${key}`)
|
||||
}
|
||||
|
||||
|
||||
/***************************************************** 站点菜单 ****************************************************/
|
||||
|
||||
/**
|
||||
|
||||
@ -19,5 +19,6 @@
|
||||
"placeholderOtherPage": "请选择一个页面",
|
||||
"developTitle": "开发环境配置",
|
||||
"wapDomain": "wap域名(WAP_DOMAIN)",
|
||||
"wapDomainPlaceholder": "请输入wap域名"
|
||||
}
|
||||
"wapDomainPlaceholder": "请输入wap域名",
|
||||
"settingTips": "点击查看如何配置"
|
||||
}
|
||||
|
||||
@ -67,5 +67,7 @@
|
||||
"addonUninstall": "插件卸载",
|
||||
"appIdentification":"应用标识",
|
||||
"tipText":"标识指开发应用或插件的文件夹名称",
|
||||
"uninstallTips": "卸载插件将会移除admin web uni-app目录下该插件的内容,是否要继续进行卸载?"
|
||||
}
|
||||
"uninstallTips": "卸载插件将会移除admin web uni-app目录下该插件的内容,是否要继续进行卸载?",
|
||||
"upgrade": "升级",
|
||||
"newVersion": "最新版本"
|
||||
}
|
||||
|
||||
@ -44,5 +44,6 @@
|
||||
"manager": "站点管理员",
|
||||
"managerPlaceholder": "请选择站点管理员",
|
||||
"newAddManager": "新增管理员",
|
||||
"edit": "编辑"
|
||||
"edit": "编辑",
|
||||
"siteDeleteTips": "确定要删除该站点吗?该操作将删除该站点和站点相关数据,该操作无法退回,确定要继续删除吗?"
|
||||
}
|
||||
|
||||
@ -14,7 +14,10 @@
|
||||
<text class="mb-[10px]">{{ t('wapDomain') }}</text>
|
||||
<el-input v-model="wapDomain" :placeholder="t('wapDomainPlaceholder')" clearable/>
|
||||
</div>
|
||||
<el-button type="primary" @click="saveDomain()">{{ t('confirm') }}</el-button>
|
||||
<div class="flex">
|
||||
<el-button type="primary" @click="saveDomain()">{{ t('confirm') }}</el-button>
|
||||
<el-button type="primary" @click="settingTips()" plain>{{ t('settingTips') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -233,6 +236,10 @@
|
||||
}, 100 * 3);
|
||||
}
|
||||
|
||||
const settingTips = () => {
|
||||
window.open('https://www.kancloud.cn/niucloud/niucloud-admin-develop/3213393')
|
||||
}
|
||||
|
||||
const setDomain = (key: string) => {
|
||||
page[key].use_template.wapPreview = page[key].wapUrl + page[key].use_template.url;
|
||||
page[key].timeIframe = new Date().getTime();
|
||||
|
||||
@ -140,7 +140,12 @@ const toLinkFn = (link)=>{
|
||||
*/
|
||||
const addonList = ref([])
|
||||
getInstalledAddonList().then(({ data }) => {
|
||||
addonList.value = data
|
||||
const apps = []
|
||||
Object.keys(data).forEach(key => {
|
||||
const addon = data[key]
|
||||
addon.type == 'app' && apps.push(addon)
|
||||
})
|
||||
addonList.value = apps
|
||||
}).catch()
|
||||
|
||||
const handleChick = () => {
|
||||
|
||||
@ -119,6 +119,7 @@
|
||||
v-if="row.status == 1 || row.status == 3">{{ row.status == 1 ? t('closeTxt') : t('openTxt')
|
||||
}}</el-button>
|
||||
<el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
|
||||
<el-button type="primary" link @click="deleteEvent(row)">{{ t('delete') }}</el-button>
|
||||
<el-button type="primary" link @click="urlEvent(row)">{{ t('url') }}</el-button>
|
||||
<el-button type="primary" link @click="infoEvent(row)">{{ t('info') }}</el-button>
|
||||
</template>
|
||||
@ -141,12 +142,13 @@
|
||||
import { reactive, ref } from 'vue'
|
||||
import { img } from '@/utils/common'
|
||||
import { t } from '@/lang'
|
||||
import { getSiteList, getSiteGroupAll, getStatusList, closeSite, openSite } from '@/app/api/site'
|
||||
import { FormInstance } from 'element-plus'
|
||||
import { getSiteList, getSiteGroupAll, getStatusList, closeSite, openSite, deleteSite } from '@/app/api/site'
|
||||
import {ElMessageBox, FormInstance} from 'element-plus'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import EditSite from '@/app/views/site/components/edit-site.vue'
|
||||
import { getInstalledAddonList } from '@/app/api/addon'
|
||||
import { CollectionTag } from '@element-plus/icons-vue'
|
||||
import {deleteMenu} from "@/app/api/sys";
|
||||
|
||||
const route = useRoute()
|
||||
const pageName = route.meta.title
|
||||
@ -285,7 +287,7 @@ const editEvent = (data: any) => {
|
||||
* @param data
|
||||
*/
|
||||
const toSiteLink = (data: any) => {
|
||||
// window.localStorage.setItem('site.siteId', data.site_id)
|
||||
window.localStorage.setItem('site.siteId', data.site_id)
|
||||
window.open(`${location.origin}/site/`)
|
||||
}
|
||||
|
||||
@ -301,6 +303,21 @@ const openClose = (i, site_id) => {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const deleteEvent = (data: any) => {
|
||||
ElMessageBox.confirm(t('siteDeleteTips'), t('warning'),
|
||||
{
|
||||
confirmButtonText: t('confirm'),
|
||||
cancelButtonText: t('cancel'),
|
||||
type: 'warning'
|
||||
}
|
||||
).then(() => {
|
||||
deleteSite(data.site_id).then(res => {
|
||||
loadSiteList()
|
||||
}).catch(() => {
|
||||
})
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('associatedModel')" prop="model">
|
||||
<el-select :placeholder="t('associatedModelPlaceholder')" v-model="formData.model" class="input-width">
|
||||
<el-select :placeholder="t('associatedModelPlaceholder')" v-model="formData.model" class="input-width" filterable>
|
||||
<el-option v-for="item in modelList" :label="item" :value="item" :key="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -121,13 +121,13 @@ const getAddonDevelopFn = async () => {
|
||||
let { data } = await getAddonDevelop({})
|
||||
addonLst.value = [{ title: "系统", key: "system" }]
|
||||
addonLst.value.push(...data)
|
||||
getGeneratorAllModelFn({addon:'system'})
|
||||
getGeneratorAllModelFn({addon:'system'})
|
||||
}
|
||||
getAddonDevelopFn()
|
||||
//选择应用
|
||||
const addonChange =(val:any)=>{
|
||||
formData.value.model = ''
|
||||
getGeneratorAllModelFn({addon:val})
|
||||
getGeneratorAllModelFn({addon:val})
|
||||
}
|
||||
const beforeClose=(next:any)=>{
|
||||
formRef.value?.clearValidate()
|
||||
|
||||
@ -34,6 +34,8 @@
|
||||
class="input-width" />
|
||||
<p class="text-[12px] text-[#a9a9a9] leading-normal mt-[5px]">
|
||||
生成代码所属功能模块,对应路由名称,例如会员模块,充值模块,订单模块等</p>
|
||||
<p class="text-[12px] text-[#a9a9a9] leading-normal mt-[5px]">
|
||||
命名规范,小写,多个单词使用下划线连接,例如: member,article_category</p>
|
||||
</div>
|
||||
|
||||
</el-form-item>
|
||||
@ -43,8 +45,9 @@
|
||||
class="input-width" />
|
||||
<p class="text-[12px] text-[#a9a9a9] leading-normal mt-[5px]">
|
||||
生成代码所属文件名称,controller,model,service,等类型文件名</p>
|
||||
<p class="text-[12px] text-[#a9a9a9] leading-normal mt-[5px]">
|
||||
命名规范,小写,多个单词使用下划线连接,例如: article_category</p>
|
||||
</div>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
@ -216,6 +219,7 @@
|
||||
<p class="text-[12px] text-[#a9a9a9] leading-normal mt-[5px]">列表排序规则。</p>
|
||||
</div>
|
||||
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('menuType')">
|
||||
<!-- <div>
|
||||
@ -225,11 +229,11 @@
|
||||
</el-radio-group>
|
||||
<p class="text-[12px] text-[#a9a9a9] leading-normal mt-[5px]">自动构建:自动执行生成菜单sql。手动添加:自行添加菜单。</p>
|
||||
</div> -->
|
||||
<el-tree-select class="input-width" v-if="formData.addon_name != ''"
|
||||
v-model="formData.parent_menu" :props="{ label: 'menu_name', value: 'menu_key' }"
|
||||
<el-tree-select class="input-width" v-if="formData.addon_name != ''" clearable
|
||||
v-model="formData.parent_menu" :props="{ label: 'menu_name', value: 'menu_key' }"
|
||||
:data="addonMenuList" check-strictly :render-after-expand="false" />
|
||||
<el-tree-select class="input-width" v-else v-model="formData.parent_menu"
|
||||
:props="{ label: 'menu_name', value: 'menu_key' }" :data="sysMenuList" check-strictly
|
||||
<el-tree-select class="input-width" v-else v-model="formData.parent_menu" clearable
|
||||
:props="{ label: 'menu_name', value: 'menu_key' }" :data="sysMenuList" check-strictly
|
||||
:render-after-expand="false" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item :label="t('controller')">
|
||||
@ -251,7 +255,7 @@
|
||||
</el-tab-pane>
|
||||
<el-tab-pane :label="t('associatedConfiguration')" name="associatedConfiguration">
|
||||
<div class="mb-[20px]">
|
||||
<el-button type="primary" class="w-[100px]" @click="addEvent(null, 0)">{{ t('insertAssociated')
|
||||
<el-button type="primary" class="w-[100px]" @click="addEvent(null, -1)">{{ t('insertAssociated')
|
||||
}}</el-button>
|
||||
</div>
|
||||
<el-table :data="formData.relations" size="large">
|
||||
@ -295,7 +299,7 @@ import editAssociated from '@/app/views/tools/code/components/edit-associated.vu
|
||||
import editViewType from '@/app/views/tools/code/components/edit-view-type.vue'
|
||||
import editVerify from '@/app/views/tools/code/components/edit-verify.vue'
|
||||
import { getGenerateTableInfo, editGenerateTable, getAddonDevelop, generatorCheckFile, generateCreate } from '@/app/api/tools'
|
||||
import { getSystemMenu, getAddonMenu } from '@/app/api/sys'
|
||||
import { getMenuByTypeDir } from '@/app/api/sys'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import Sortable from 'sortablejs'
|
||||
import { useTemplateRefsList } from '@vueuse/core'
|
||||
@ -309,7 +313,7 @@ const id: number = parseInt(route.query.id || 0)
|
||||
|
||||
const loading = ref(true)
|
||||
const tableRef = useTemplateRefsList<HTMLElement>()
|
||||
const toggleIndex = ref(0)
|
||||
let toggleIndex = ref(0)
|
||||
const activeName = ref('basicSettings')
|
||||
/**
|
||||
* 表单数据
|
||||
@ -395,12 +399,12 @@ const verifyType = [
|
||||
{
|
||||
label: '',
|
||||
value: 'between'
|
||||
}
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
const addonList = ref<Array<any>>([])
|
||||
// 获取插件远程搜索
|
||||
//获取插件远程搜索
|
||||
const getAddonDevelopFn = (search: string) => {
|
||||
getAddonDevelop({ search }).then(res => {
|
||||
addonList.value = res.data
|
||||
@ -409,7 +413,7 @@ const getAddonDevelopFn = (search: string) => {
|
||||
})
|
||||
})
|
||||
}
|
||||
// 拖拽排序
|
||||
//拖拽排序
|
||||
const rowDrop = () => {
|
||||
const tbody = tableRef.value.$el.querySelector(
|
||||
'.el-table__body-wrapper tbody'
|
||||
@ -425,17 +429,17 @@ const rowDrop = () => {
|
||||
nextTick(() => {
|
||||
rowDrop()
|
||||
})
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
getAddonDevelopFn('')
|
||||
})
|
||||
// 删除类型change
|
||||
//删除类型change
|
||||
const deleteTypeChange = (val: any) => {
|
||||
formData.delete_column_name = val ? formData.table_column[formData.table_column.length - 1].column_name : ''
|
||||
}
|
||||
// 排序字段change
|
||||
//排序字段change
|
||||
const orderColumnNameChange = (val: any) => {
|
||||
formData.order_type = val ? 1 : 0
|
||||
}
|
||||
@ -450,7 +454,7 @@ const validator = computed(() => {
|
||||
return formData.addon_name ? `addon${formData.addon_name ? '\\' + formData.addon_name : ''}\\app\\validate${formData.module_name ? '\\' + formData.module_name : ''}${formData.class_name ? '\\' + formData.class_name : ''}` : `app\\validate${formData.module_name ? '\\' + formData.module_name : ''}${formData.class_name ? '\\' + formData.class_name : ''}`
|
||||
})
|
||||
const webView = computed(() => {
|
||||
return formData.addon_name ? `addon${formData.addon_name ? '\\' + formData.addon_name : ''}\\admin\\src` : 'admin\\src'
|
||||
return formData.addon_name ? `addon${formData.addon_name ? '\\' + formData.addon_name : ''}\\admin\\src` : `admin\\src`
|
||||
})
|
||||
const routerView = computed(() => {
|
||||
return formData.addon_name ? `addon${formData.addon_name ? '\\' + formData.addon_name : ''}\\app\\adminapi\\route${formData.module_name ? '\\' + formData.module_name : ''}` : `app\\adminapi\\route${formData.module_name ? '\\' + formData.module_name : ''}`
|
||||
@ -462,8 +466,8 @@ const setFormData = async (id: number = 0) => {
|
||||
if (data[key] != undefined) formData[key] = data[key]
|
||||
})
|
||||
formData.table_column.forEach(el => {
|
||||
el.betweenMin = cloneDeep(el.min_number)
|
||||
el.betweenMax = cloneDeep(el.max_number)
|
||||
el.betweenMin = cloneDeep(el.min_number);
|
||||
el.betweenMax = cloneDeep(el.max_number);
|
||||
})
|
||||
if (formData.addon_name != '') getAddonMenuFn(formData.addon_name)
|
||||
loading.value = false
|
||||
@ -474,46 +478,48 @@ const formRef = ref<FormInstance>()
|
||||
|
||||
const sysMenuList = ref<Array<any>>([])
|
||||
const addonMenuList = ref<Array<any>>([])
|
||||
// 获取系统菜单列表
|
||||
//获取系统菜单列表
|
||||
const getSystemMenuFn = async () => {
|
||||
const { data } = await getSystemMenu()
|
||||
sysMenuList.value = [{ menu_name: '顶级', menu_key: '' }]
|
||||
let { data } = await getMenuByTypeDir()
|
||||
sysMenuList.value = [{ menu_name: "顶级", menu_key: "" }]
|
||||
sysMenuList.value.push(...data)
|
||||
}
|
||||
getSystemMenuFn()
|
||||
// 获取系统应用菜单列表
|
||||
//获取系统应用菜单列表
|
||||
const getAddonMenuFn = async (key: any) => {
|
||||
const { data } = await getAddonMenu(key)
|
||||
let { data } = await getMenuByTypeDir(key)
|
||||
addonMenuList.value = data
|
||||
}
|
||||
// 选择插件
|
||||
//选择插件
|
||||
const addonChange = async (val: any) => {
|
||||
formData.parent_menu = ''
|
||||
if (val != '') {
|
||||
await getAddonMenuFn(val)
|
||||
formData.parent_menu = addonMenuList.value[0].menu_key
|
||||
if (addonMenuList.value[0]) formData.parent_menu = addonMenuList.value[0].menu_key
|
||||
}
|
||||
}
|
||||
const associatedIndex = ref(0)
|
||||
const editDialog = ref()
|
||||
// 添加编辑关联设置
|
||||
//添加编辑关联设置
|
||||
|
||||
const addEvent = (val: any, index: number) => {
|
||||
associatedIndex.value = index
|
||||
editDialog.value.setFormData(val)
|
||||
|
||||
}
|
||||
const complete = (row: any) => {
|
||||
if (associatedIndex.value) {
|
||||
if (associatedIndex.value != -1) {
|
||||
formData.relations.splice(associatedIndex.value, 1, row)
|
||||
} else {
|
||||
formData.relations.unshift(row)
|
||||
}
|
||||
}
|
||||
// 删除关联配置
|
||||
//删除关联配置
|
||||
const deleteEvent = (index: number) => {
|
||||
formData.relations.splice(index, 1)
|
||||
}
|
||||
const onSave = async (code: number) => {
|
||||
|
||||
const data = cloneDeep(formData)
|
||||
// if (data.table_column.some(el => { return ['select', 'radio', 'checkbox'].includes(el.view_type) && el.dict_type == '' })) {
|
||||
// // ElMessage({
|
||||
@ -544,13 +550,14 @@ const onSave = async (code: number) => {
|
||||
loading.value = false
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '操作成功'
|
||||
message: '操作成功',
|
||||
})
|
||||
setTimeout(() => {
|
||||
window.codeActiveName = 'codeList'
|
||||
back()
|
||||
}, 650)
|
||||
}
|
||||
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
@ -558,7 +565,7 @@ const onSave = async (code: number) => {
|
||||
/**
|
||||
* 同步校验
|
||||
*/
|
||||
const generatorCheckFileFn = () => {
|
||||
const generatorCheckFileFn = (() => {
|
||||
generatorCheckFile({ id: formData.id }).then(res => {
|
||||
loading.value = false
|
||||
ElMessageBox.confirm(
|
||||
@ -566,7 +573,7 @@ const generatorCheckFileFn = () => {
|
||||
t('warning'),
|
||||
{
|
||||
confirmButtonText: t('confirm'),
|
||||
cancelButtonText: t('cancel')
|
||||
cancelButtonText: t('cancel'),
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
@ -577,7 +584,7 @@ const generatorCheckFileFn = () => {
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
})
|
||||
/**
|
||||
* 同步or下载
|
||||
*/
|
||||
@ -586,7 +593,7 @@ const generateCreateFn = (generate_type: any) => {
|
||||
loading.value = false
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '操作成功'
|
||||
message: '操作成功',
|
||||
})
|
||||
window.open(img(res.data.file), '_blank')
|
||||
setTimeout(() => {
|
||||
@ -609,6 +616,7 @@ const validatorBtn = (row: any, index: number) => {
|
||||
rowIndex.value = index
|
||||
editVerifyRef.value?.setFormData(row)
|
||||
}
|
||||
|
||||
}
|
||||
const completeVerify = (row: any) => {
|
||||
formData.table_column.splice(rowIndex.value, 1, row)
|
||||
@ -616,11 +624,13 @@ const completeVerify = (row: any) => {
|
||||
const viewTypeBtn = (row: any, index: number) => {
|
||||
if (!['input', 'textarea'].includes(row.view_type)) row.validate_type = ''
|
||||
if (['select', 'radio', 'checkbox'].includes(row.view_type)) {
|
||||
|
||||
rowIndex.value = index
|
||||
editViewTypeRef.value?.setFormData(row)
|
||||
} else if (row.view_type === 'number') {
|
||||
validatorBtn(row, index)
|
||||
}
|
||||
|
||||
}
|
||||
const completeViewType = (row: any) => {
|
||||
formData.table_column.splice(rowIndex.value, 1, row)
|
||||
|
||||
@ -97,13 +97,12 @@
|
||||
<el-tab-pane :label="t('codeList')" name="codeList">
|
||||
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
|
||||
<el-form :inline="true" :model="codeTableData.searchParam" ref="searchFormRef">
|
||||
<el-form-item :label="t('addonName')" prop="addon_name">
|
||||
<el-select v-model="codeTableData.searchParam.addon_name" placeholder="Select" filterable
|
||||
remote clearable :remote-method="getAddonDevelopFn">
|
||||
<el-form-item :label="t('addonName')" prop="addon_name">
|
||||
<el-select v-model="codeTableData.searchParam.addon_name" placeholder="Select" filterable remote clearable :remote-method="getAddonDevelopFn">
|
||||
<el-option label="全部" value="" />
|
||||
<el-option label="系统" value="2" />
|
||||
<el-option :label="item.title" :value="item.key" v-for="item in addonList"
|
||||
:key="item.key" />
|
||||
:key="item.key" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
@ -111,7 +110,7 @@
|
||||
<el-input v-model="codeTableData.searchParam.table_name"
|
||||
:placeholder="t('tableNamePlaceholder')" />
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="loadGenerateTableList()">{{ t('search') }}</el-button>
|
||||
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
|
||||
@ -171,10 +170,9 @@
|
||||
<el-dialog v-model="dialogVisible" class="dialog-visible" width="70%" title="代码预览">
|
||||
<div class="flex h-[50vh]" v-loading="codeLoading">
|
||||
<el-scrollbar class="h-[100%] w-[270px]">
|
||||
<el-tree v-if="treeData.length && treeKey != ''" :data="treeData"
|
||||
:props="{ label: 'name', value: 'key' }" node-key="key" :current-node-key="treeKey"
|
||||
:expand-on-click-node="false" highlight-current default-expand-all ref="treeRef"
|
||||
@node-click="nodeClick">
|
||||
<el-tree v-if="treeData.length && treeKey != ''" :data="treeData" :props="{ label: 'name', value: 'key' }"
|
||||
node-key="key" :current-node-key="treeKey" :expand-on-click-node="false" highlight-current
|
||||
default-expand-all ref="treeRef" @node-click="nodeClick">
|
||||
<template #default="{ node, data }">
|
||||
<div class="flex items-center">
|
||||
<el-icon v-if="data.children">
|
||||
@ -204,7 +202,7 @@
|
||||
<script lang="ts" setup>
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { getGenerateTableList, deleteGenerateTable, generateCreate, generatePreview, generatorCheckFile, getAddonDevelop } from '@/app/api/tools'
|
||||
import { getGenerateTableList, deleteGenerateTable, generateCreate, generatePreview, generatorCheckFile,getAddonDevelop } from '@/app/api/tools'
|
||||
import { img } from '@/utils/common'
|
||||
import { ElMessageBox, ElMessage } from 'element-plus'
|
||||
import AddTable from '@/app/views/tools/code/components/add-table.vue'
|
||||
@ -212,20 +210,20 @@ import type { FormInstance } from 'element-plus'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
|
||||
const route = useRoute()
|
||||
const pageName = route.meta.title
|
||||
const pageName = route.meta.title;
|
||||
|
||||
const router = useRouter()
|
||||
const activeName = ref('codeGeneration')
|
||||
const codeTableData = reactive({
|
||||
let codeTableData = reactive({
|
||||
page: 1,
|
||||
limit: 10,
|
||||
total: 0,
|
||||
loading: true,
|
||||
data: [],
|
||||
searchParam: {
|
||||
table_name: '',
|
||||
table_content: '',
|
||||
addon_name: ''
|
||||
table_name: "",
|
||||
table_content: "",
|
||||
addon_name:""
|
||||
}
|
||||
})
|
||||
|
||||
@ -234,8 +232,8 @@ const searchFormRef = ref<FormInstance>()
|
||||
const resetForm = (formEl: FormInstance | undefined) => {
|
||||
if (!formEl) return
|
||||
|
||||
formEl.resetFields()
|
||||
loadGenerateTableList()
|
||||
formEl.resetFields();
|
||||
loadGenerateTableList();
|
||||
}
|
||||
onMounted(() => {
|
||||
if (window.codeActiveName) {
|
||||
@ -265,7 +263,7 @@ const loadGenerateTableList = (page: number = 1) => {
|
||||
}
|
||||
|
||||
const addonList = ref<Array<any>>([])
|
||||
// 获取插件远程搜索
|
||||
//获取插件远程搜索
|
||||
const getAddonDevelopFn = (search: string) => {
|
||||
getAddonDevelop({ search }).then(res => {
|
||||
addonList.value = res.data
|
||||
@ -274,6 +272,7 @@ const getAddonDevelopFn = (search: string) => {
|
||||
|
||||
const addCodeDialog: Record<string, any> | null = ref(null)
|
||||
|
||||
|
||||
/**
|
||||
* 添加代码生成
|
||||
*/
|
||||
@ -290,7 +289,7 @@ const deleteEvent = (id: number) => {
|
||||
{
|
||||
confirmButtonText: t('confirm'),
|
||||
cancelButtonText: t('cancel'),
|
||||
type: 'warning'
|
||||
type: 'warning',
|
||||
}
|
||||
).then(() => {
|
||||
deleteGenerateTable(id).then(() => {
|
||||
@ -300,6 +299,7 @@ const deleteEvent = (id: number) => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param data
|
||||
@ -311,7 +311,7 @@ const editEvent = (data: any) => {
|
||||
/**
|
||||
* 同步校验
|
||||
*/
|
||||
const generatorCheckFileFn = (id: any) => {
|
||||
const generatorCheckFileFn = ((id: any) => {
|
||||
generatorCheckFile({ id }).then(res => {
|
||||
codeTableData.loading = false
|
||||
ElMessageBox.confirm(
|
||||
@ -319,7 +319,7 @@ const generatorCheckFileFn = (id: any) => {
|
||||
t('warning'),
|
||||
{
|
||||
confirmButtonText: t('confirm'),
|
||||
cancelButtonText: t('cancel')
|
||||
cancelButtonText: t('cancel'),
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
@ -329,7 +329,7 @@ const generatorCheckFileFn = (id: any) => {
|
||||
}).catch(() => {
|
||||
codeTableData.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* 同步or下载
|
||||
@ -339,11 +339,12 @@ const generateCreateFn = (id: any, generate_type: any) => {
|
||||
generateCreate({ id, generate_type }).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '操作成功'
|
||||
message: '操作成功',
|
||||
})
|
||||
if (generate_type != 3) {
|
||||
codeTableData.loading = false
|
||||
window.open(img(res.data.file), '_blank')
|
||||
|
||||
} else {
|
||||
loadGenerateTableList()
|
||||
}
|
||||
@ -374,6 +375,7 @@ const generatePreviewFn = (id: number) => {
|
||||
codeLoading.value = false
|
||||
}).catch(() => {
|
||||
codeLoading.value = false
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
@ -383,32 +385,32 @@ const nodeClick = (node) => {
|
||||
})
|
||||
}
|
||||
const listToTree = (arr) => {
|
||||
const ret = []
|
||||
var ret = [];
|
||||
if (Array.isArray(arr)) {
|
||||
for (let i = 0; i < arr.length; ++i) {
|
||||
const path = arr[i].split('/')
|
||||
let _ret = ret
|
||||
for (let j = 0; j < path.length; ++j) {
|
||||
const name = path[j]
|
||||
let obj = null
|
||||
for (var i = 0; i < arr.length; ++i) {
|
||||
var path = arr[i].split("/");
|
||||
var _ret = ret;
|
||||
for (var j = 0; j < path.length; ++j) {
|
||||
var name = path[j];
|
||||
var obj = null;
|
||||
for (var k = 0; k < _ret.length; ++k) {
|
||||
const _obj = _ret[k]
|
||||
var _obj = _ret[k];
|
||||
if (_obj.name === name) {
|
||||
obj = _obj
|
||||
break
|
||||
obj = _obj;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!obj) {
|
||||
obj = { name, path: name.indexOf('.') < 0 ? '' : arr[i], key: 'k' + i + j + k }
|
||||
if (name.indexOf('.') < 0) obj.children = []
|
||||
obj = { name: name, path: name.indexOf(".") < 0 ? '' : arr[i], key: 'k' + i + j + k };
|
||||
if (name.indexOf(".") < 0) obj.children = [];
|
||||
if (obj.path === arr[0]) treeKey.value = obj.key
|
||||
_ret.push(obj)
|
||||
_ret.push(obj);
|
||||
}
|
||||
if (obj.children) _ret = obj.children
|
||||
if (obj.children) _ret = obj.children;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret
|
||||
return ret;
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -449,9 +451,9 @@ const listToTree = (arr) => {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
:deep(.dialog-visible .el-scrollbar__view),
|
||||
:deep(.dialog-visible .el-scrollbar__view .hljs.ruby) {
|
||||
:deep(.dialog-visible .el-scrollbar__view), :deep(.dialog-visible .el-scrollbar__view .hljs.ruby){
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<style></style>
|
||||
<style>
|
||||
</style>
|
||||
|
||||
@ -99,7 +99,7 @@
|
||||
"timeout": "网络请求超时!",
|
||||
"requestError": "请求错误",
|
||||
"errNetwork": "网络请求错误",
|
||||
"baseUrlError": " 接口请求错误,请检查VITE_APP_BASE_URL参数配置或者伪静态配置"
|
||||
"baseUrlError": " 接口请求错误,请检查VITE_APP_BASE_URL参数配置或者伪静态配置, <a style='text-decoration: underline;' href='https://www.kancloud.cn/niucloud/niucloud-admin-develop/3213750' target='blank'>点击查看相关手册</a>"
|
||||
},
|
||||
"linkPlaceholder": "请选择跳转链接",
|
||||
"selectLinkTips": "链接选择",
|
||||
|
||||
@ -25,7 +25,7 @@ const systemStore = useSystemStore()
|
||||
const userStore = useUserStore()
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const siteInfo = storage.get('siteInfo') || false
|
||||
const siteInfo = userStore.siteInfo
|
||||
|
||||
const menuActive = computed(() => String(route.name))
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<el-container class="w-100 h-screen">
|
||||
<el-header class="logo-wrap w-100 border-0 border-b-[1px] border-solid border-[e5e7eb]">
|
||||
<div class="logo flex items-center m-auto max-w-[210px] h-[30px]" v-if="!systemStore.menuIsCollapse">
|
||||
<img class="max-h-[40px] max-w-[40px] rounded-full" v-if="storage.get('siteInfo').logo" :src="img(siteInfo.logo)" alt="">
|
||||
<img class="max-h-[40px] max-w-[40px] rounded-full" v-if="siteInfo.logo" :src="img(siteInfo.logo)" alt="">
|
||||
<img class="max-h-[40px] max-w-[40px] rounded-full" v-else src="@/app/assets/images/icon-addon.png" alt="">
|
||||
<span class="ml-[8px] text-[16px]">{{siteInfo.site_name}}</span>
|
||||
</div>
|
||||
@ -35,7 +35,7 @@ const logo = ref('@/app/assets/images/login_logo.png')
|
||||
const systemStore = useSystemStore()
|
||||
const userStore = useUserStore()
|
||||
const route = useRoute()
|
||||
const siteInfo = storage.get('siteInfo') || false
|
||||
const siteInfo = userStore.siteInfo
|
||||
const menuActive = computed(() => String(route.name))
|
||||
|
||||
let currAppData = ref([]);
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<el-header class="logo-wrap w-100 h-auto mb-[30px]">
|
||||
<div class="logo flex items-center m-auto max-w-[230px] h-[60px] justify-center"
|
||||
v-if="!systemStore.menuIsCollapse">
|
||||
<img class="max-h-full max-w-full" v-if="storage.get('siteInfo').logo" :src="img(siteInfo.logo)" alt="">
|
||||
<img class="max-h-full max-w-full" v-if="siteInfo.logo" :src="img(siteInfo.logo)" alt="">
|
||||
<img class="max-h-full max-w-full" v-else src="@/app/assets/images/login_logo.png" alt="">
|
||||
</div>
|
||||
<div class="logo flex items-center justify-center w-[64px] h-[30px]" v-else>
|
||||
@ -42,13 +42,13 @@ import storage from '@/utils/storage'
|
||||
|
||||
const userStore = useUserStore()
|
||||
const systemStore = useSystemStore()
|
||||
const siteInfo = userStore.siteInfo
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const menuActive = computed(() => {
|
||||
console.log("route.name", route.name);
|
||||
return String(route.name)
|
||||
})
|
||||
console.log("userStore.routers", userStore.routers, menuActive)
|
||||
|
||||
watch(route, () => {
|
||||
systemStore.$patch(state => {
|
||||
state.menuDrawer = false
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<el-container class="w-100 h-screen" :class="[{ 'sidebar-dark-mode': systemStore.sidebar == 'twoType' }, { 'sidebar-brightness-mode': systemStore.sidebar == 'oneType' }]">
|
||||
<el-header class="logo-wrap w-100">
|
||||
<div class="logo flex items-center m-auto max-w-[210px] h-[30px]" v-if="!systemStore.menuIsCollapse">
|
||||
<img class="max-h-full max-w-full" v-if="storage.get('siteInfo').logo" :src="img(siteInfo.logo)" alt="">
|
||||
<img class="max-h-full max-w-full" v-if="siteInfo.logo" :src="img(siteInfo.logo)" alt="">
|
||||
<img class="max-h-full max-w-full" v-else src="@/app/assets/images/login_logo.png" alt="">
|
||||
</div>
|
||||
<div class="logo flex items-center justify-center w-[64px] h-[30px]" v-else>
|
||||
@ -34,7 +34,7 @@ const logo = ref('@/app/assets/images/login_logo.png')
|
||||
const systemStore = useSystemStore()
|
||||
const userStore = useUserStore()
|
||||
const route = useRoute()
|
||||
const siteInfo = storage.get('siteInfo') || false
|
||||
const siteInfo = userStore.siteInfo
|
||||
|
||||
const menuActive = computed(() => String(route.name))
|
||||
console.log("userStore.routers",userStore.routers)
|
||||
|
||||
@ -47,8 +47,13 @@ router.beforeEach(async (to, from, next) => {
|
||||
to.redirectedFrom && (to.query = to.redirectedFrom.query)
|
||||
|
||||
const userStore = useUserStore()
|
||||
const siteInfo = storage.get('siteInfo') || false
|
||||
let title = (to.meta.title ? (to.meta.title + ' - ') : '') + (siteInfo.site_name ? siteInfo.site_name : '')
|
||||
const siteInfo = userStore.siteInfo
|
||||
|
||||
if (!siteInfo && getAppType() != 'home') {
|
||||
await userStore.getSiteInfo()
|
||||
}
|
||||
|
||||
let title = (to.meta.title ? (to.meta.title + ' - ') : '') + (siteInfo ? siteInfo.site_name : '')
|
||||
|
||||
// 设置网站标题
|
||||
setWindowTitle(title)
|
||||
@ -79,7 +84,7 @@ router.beforeEach(async (to, from, next) => {
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
if (userStore.siteInfo.site_id == undefined) {
|
||||
if (!userStore.siteInfo || userStore.siteInfo.site_id == undefined) {
|
||||
if (to.path === '/home/index') {
|
||||
next()
|
||||
} else {
|
||||
@ -132,7 +137,8 @@ router.beforeEach(async (to, from, next) => {
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
userStore.logout()
|
||||
console.log(err)
|
||||
// userStore.logout()
|
||||
next({ path: loginPath, query: { redirect: to.fullPath } })
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,6 +80,10 @@ export const HOME_ROUTE: RouteRecordRaw = {
|
||||
{
|
||||
path: 'index',
|
||||
name: Symbol('homeIndex'),
|
||||
meta: {
|
||||
type: 1,
|
||||
title: '站点管理'
|
||||
},
|
||||
component: () => import('@/app/views/home/index.vue')
|
||||
}
|
||||
]
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { getToken, setToken, removeToken, getAppType } from '@/utils/common'
|
||||
import { login, getAuthMenus } from '@/app/api/auth'
|
||||
import { login, getAuthMenus, getSiteInfo } from '@/app/api/auth'
|
||||
import storage from '@/utils/storage'
|
||||
import router from '@/router'
|
||||
import { formatRouters } from '@/router/routers'
|
||||
@ -19,7 +19,7 @@ const useSystemStore = defineStore('user', {
|
||||
return {
|
||||
token: getToken() || '',
|
||||
userInfo: storage.get('userinfo') || {},
|
||||
siteInfo: storage.get('siteInfo') || {},
|
||||
siteInfo: null,
|
||||
routers: [],
|
||||
rules: [],
|
||||
routeGather: {
|
||||
@ -32,6 +32,16 @@ const useSystemStore = defineStore('user', {
|
||||
setRoute(type, data) {
|
||||
this.routeGather[type] = data;
|
||||
},
|
||||
async getSiteInfo() {
|
||||
await getSiteInfo().then(({ data }) => {
|
||||
this.siteInfo = data
|
||||
storage.set({ key: 'siteId', data: data.site_id || 0 })
|
||||
storage.set({ key: 'siteInfo', data: data })
|
||||
storage.set({ key: 'comparisonSiteIdStorage', data: data.site_id || 0 })
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
},
|
||||
login(form: object, app_type: any) {
|
||||
return new Promise((resolve, reject) => {
|
||||
login(form, app_type)
|
||||
@ -45,7 +55,6 @@ const useSystemStore = defineStore('user', {
|
||||
storage.set({ key: 'siteInfo', data: res.data.site_info || {} })
|
||||
storage.set({ key: 'comparisonSiteIdStorage', data: res.data.site_id || 0 })
|
||||
storage.set({ key: 'comparisonTokenStorage', data: res.data.token })
|
||||
storage.set({ key: 'layout', data: (res.data.layout || 'default') })
|
||||
resolve(res)
|
||||
})
|
||||
.catch((error) => {
|
||||
|
||||
@ -55,7 +55,7 @@ class Request {
|
||||
const res = response.data
|
||||
if (res.code != 1) {
|
||||
this.handleAuthError(res.code)
|
||||
if (res.code != 401 && response.config.showErrorMessage !== false) ElMessage({ message: res.msg, type: 'error' })
|
||||
if (res.code != 401 && response.config.showErrorMessage !== false) ElMessage({ message: res.msg, type: 'error', dangerouslyUseHTMLString: true, duration: 5000 })
|
||||
return Promise.reject(new Error(res.msg || 'Error'))
|
||||
} else {
|
||||
if (response.config.showSuccessMessage) ElMessage({ message: res.msg, type: 'success' })
|
||||
@ -168,7 +168,7 @@ class Request {
|
||||
const baseURL = isUrl(err.config.baseURL) ? err.config.baseURL : `${location.origin}${err.config.baseURL}`
|
||||
errMessage = baseURL + t('axios.baseUrlError')
|
||||
}
|
||||
errMessage && ElMessage({ message: errMessage, type: 'error' })
|
||||
errMessage && ElMessage({ dangerouslyUseHTMLString: true, duration: 5000, message: errMessage, type: 'error' })
|
||||
}
|
||||
|
||||
private handleAuthError(code: number) {
|
||||
@ -176,6 +176,9 @@ class Request {
|
||||
case 401:
|
||||
useUserStore().logout()
|
||||
break;
|
||||
case 400:
|
||||
useUserStore().logout()
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,16 +10,7 @@ return [
|
||||
// #endif
|
||||
"navigationBarTitleText": "%{{addon_name}}.pages.index%"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "{{addon_name}}/pages/info",
|
||||
"style": {
|
||||
// #ifdef H5
|
||||
"navigationStyle": "custom",
|
||||
// #endif
|
||||
"navigationBarTitleText": "%{{addon_name}}.pages.info%"
|
||||
}
|
||||
}
|
||||
// PAGE_END
|
||||
EOT
|
||||
];
|
||||
];
|
||||
|
||||
@ -1,43 +1,9 @@
|
||||
<template>
|
||||
<view class="bg-gray-100 min-h-[100vh]">
|
||||
<view class="fixed top-0 inset-x-0 z-10">
|
||||
<view
|
||||
class='p-[10px] bg-white border-solid border-t-0 border-l-0 border-r-0 border-b-[1px] border-gray-200'>
|
||||
<u-search :placeholder="t('searchPlaceholder')" actionText :actionStyle="{'width':0,'margin':0}"
|
||||
v-model="articleTitle" @clickIcon="searchFn"></u-search>
|
||||
</view>
|
||||
<scroll-view :scroll-x="true" :enable-flex="true"
|
||||
class="nav-list bg-white align-center px-[10px] box-border">
|
||||
<view class="flex scroll-view-wrap">
|
||||
<view
|
||||
:class="['nav-item text-[14px] mx-[5px] h-[30px] leading-[30px] my-[5px] border-t-0 border-l-0 border-r-0',{'border-solid border-b-[2px] active': currCategoryId==item.category_id}]"
|
||||
@click="loadCategory(item.category_id)" v-for="(item,index) in categoryList"
|
||||
:key="item.category_id">
|
||||
{{item.name}}
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
hello_world
|
||||
</view>
|
||||
|
||||
<mescroll-body ref="mescrollRef" @init="mescrollInit" top="220rpx" @down="downCallback" @up="getArticleListFn">
|
||||
<view v-for="(item,index) in articleList" :key="item.id"
|
||||
:class="['bg-white flex align-center p-[10px]',{'border-solid border-t-0 border-l-0 border-r-0 border-b-[1px] border-gray-200': articleList.length-1 !== index}] "
|
||||
@click="toLink(item.id)">
|
||||
<u--image width="260rpx" height="200rpx" :src="img(item.image)" v-if="item.image" model="aspectFill">
|
||||
<template #error>
|
||||
<u-icon name="photo" color="#999" size="50"></u-icon>
|
||||
</template>
|
||||
</u--image>
|
||||
<view class="flex-1 flex flex-col justify-between ml-[10px]">
|
||||
<view class="text-[16px] leading-[1.3] multi-hidden mt-[2px]">{{item.title}}</view>
|
||||
<view class="text-[14px] using-hidden mb-[auto] mt-[10px] text-gray-500">{{item.summary}}</view>
|
||||
<view class="text-[12px] text-gray-400 flex justify-between mb-[5px]">
|
||||
<text class="">{{item.create_time}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<mescroll-empty v-if="!articleList.length && loading"></mescroll-empty>
|
||||
</mescroll-body>
|
||||
<tabbar />
|
||||
</view>
|
||||
</template>
|
||||
@ -46,121 +12,14 @@
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { t } from '@/locale'
|
||||
import { redirect, img } from '@/utils/common';
|
||||
import { getArticleList, getArticleCategory } from '@/api/article';
|
||||
import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue';
|
||||
import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue';
|
||||
import useMescroll from '@/components/mescroll/hooks/useMescroll.js';
|
||||
import { onPageScroll, onReachBottom } from '@dcloudio/uni-app';
|
||||
const { mescrollInit, downCallback, getMescroll } = useMescroll(onPageScroll, onReachBottom);
|
||||
|
||||
import { useShare } from '@/hooks/useShare'
|
||||
|
||||
const { setShare, onShareAppMessage, onShareTimeline } = useShare()
|
||||
setShare()
|
||||
onShareAppMessage()
|
||||
onShareTimeline()
|
||||
|
||||
let categoryList = ref<Array<Object>>([]);
|
||||
let articleList = ref<Array<any>>([]);
|
||||
let currCategoryId = ref<number | string>('');
|
||||
let articleTitle = ref<string>('');
|
||||
let mescrollRef = ref(null);
|
||||
let loading = ref<boolean>(false);
|
||||
|
||||
interface acceptingDataStructure {
|
||||
data : acceptingDataItemStructure,
|
||||
msg : string,
|
||||
code : number
|
||||
}
|
||||
interface acceptingDataItemStructure {
|
||||
data : object,
|
||||
[propName : string] : number | string | object
|
||||
}
|
||||
onLoad(async () => {
|
||||
await getArticleCategory().then((res : acceptingDataStructure) => {
|
||||
const initData = { name: t("all"), category_id: '' };
|
||||
categoryList.value.push(initData);
|
||||
categoryList.value = categoryList.value.concat(res.data.data);
|
||||
});
|
||||
})
|
||||
|
||||
interface mescrollStructure {
|
||||
num : number,
|
||||
size : number,
|
||||
endSuccess : Function,
|
||||
[propName : string] : any
|
||||
}
|
||||
const getArticleListFn = (mescroll : mescrollStructure) => {
|
||||
loading.value = false;
|
||||
let data : object = {
|
||||
category_id: currCategoryId.value,
|
||||
title: articleTitle.value,
|
||||
page: mescroll.num,
|
||||
limit: mescroll.size
|
||||
};
|
||||
|
||||
getArticleList(data).then((res : acceptingDataStructure) => {
|
||||
let newArr = (res.data.data as Array<Object>);
|
||||
//设置列表数据
|
||||
if (mescroll.num == 1) {
|
||||
articleList.value = []; //如果是第一页需手动制空列表
|
||||
}
|
||||
articleList.value = articleList.value.concat(newArr);
|
||||
mescroll.endSuccess(newArr.length);
|
||||
loading.value = true;
|
||||
}).catch(() => {
|
||||
loading.value = true;
|
||||
mescroll.endErr(); // 请求失败, 结束加载
|
||||
})
|
||||
}
|
||||
|
||||
const loadCategory = (id : string) => {
|
||||
currCategoryId.value = id;
|
||||
getMescroll().resetUpScroll();
|
||||
}
|
||||
|
||||
const searchFn = () => {
|
||||
getMescroll().resetUpScroll();
|
||||
}
|
||||
|
||||
const toLink = (id : string) => {
|
||||
redirect({ url: '/pages/article/detail', param: { id } })
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
setTimeout(() => {
|
||||
getMescroll().optUp.textNoMore = t("end");
|
||||
}, 500)
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.nav-item.active {
|
||||
color: $u-primary;
|
||||
}
|
||||
|
||||
.scroll-view-wrap {
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
/* 单行超出隐藏 */
|
||||
.using-hidden {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
white-space: break-spaces;
|
||||
}
|
||||
|
||||
/* 多行超出隐藏 */
|
||||
.multi-hidden {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@ -1,166 +0,0 @@
|
||||
<template>
|
||||
<view class="bg-gray-100 min-h-[100vh]">
|
||||
<view class="fixed top-0 inset-x-0 z-10">
|
||||
<view
|
||||
class='p-[10px] bg-white border-solid border-t-0 border-l-0 border-r-0 border-b-[1px] border-gray-200'>
|
||||
<u-search :placeholder="t('searchPlaceholder')" actionText :actionStyle="{'width':0,'margin':0}"
|
||||
v-model="articleTitle" @clickIcon="searchFn"></u-search>
|
||||
</view>
|
||||
<scroll-view :scroll-x="true" :enable-flex="true"
|
||||
class="nav-list bg-white align-center px-[10px] box-border">
|
||||
<view class="flex scroll-view-wrap">
|
||||
<view
|
||||
:class="['nav-item text-[14px] mx-[5px] h-[30px] leading-[30px] my-[5px] border-t-0 border-l-0 border-r-0',{'border-solid border-b-[2px] active': currCategoryId==item.category_id}]"
|
||||
@click="loadCategory(item.category_id)" v-for="(item,index) in categoryList"
|
||||
:key="item.category_id">
|
||||
{{item.name}}
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
<mescroll-body ref="mescrollRef" @init="mescrollInit" top="220rpx" @down="downCallback" @up="getArticleListFn">
|
||||
<view v-for="(item,index) in articleList" :key="item.id"
|
||||
:class="['bg-white flex align-center p-[10px]',{'border-solid border-t-0 border-l-0 border-r-0 border-b-[1px] border-gray-200': articleList.length-1 !== index}] "
|
||||
@click="toLink(item.id)">
|
||||
<u--image width="260rpx" height="200rpx" :src="img(item.image)" v-if="item.image" model="aspectFill">
|
||||
<template #error>
|
||||
<u-icon name="photo" color="#999" size="50"></u-icon>
|
||||
</template>
|
||||
</u--image>
|
||||
<view class="flex-1 flex flex-col justify-between ml-[10px]">
|
||||
<view class="text-[16px] leading-[1.3] multi-hidden mt-[2px]">{{item.title}}</view>
|
||||
<view class="text-[14px] using-hidden mb-[auto] mt-[10px] text-gray-500">{{item.summary}}</view>
|
||||
<view class="text-[12px] text-gray-400 flex justify-between mb-[5px]">
|
||||
<text class="">{{item.create_time}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<mescroll-empty v-if="!articleList.length && loading"></mescroll-empty>
|
||||
</mescroll-body>
|
||||
<tabbar />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { t } from '@/locale'
|
||||
import { redirect, img } from '@/utils/common';
|
||||
import { getArticleList, getArticleCategory } from '@/api/article';
|
||||
import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue';
|
||||
import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue';
|
||||
import useMescroll from '@/components/mescroll/hooks/useMescroll.js';
|
||||
import { onPageScroll, onReachBottom } from '@dcloudio/uni-app';
|
||||
const { mescrollInit, downCallback, getMescroll } = useMescroll(onPageScroll, onReachBottom);
|
||||
import { useShare } from '@/hooks/useShare'
|
||||
|
||||
const { setShare, onShareAppMessage, onShareTimeline } = useShare()
|
||||
setShare()
|
||||
onShareAppMessage()
|
||||
onShareTimeline()
|
||||
|
||||
let categoryList = ref<Array<Object>>([]);
|
||||
let articleList = ref<Array<any>>([]);
|
||||
let currCategoryId = ref<number | string>('');
|
||||
let articleTitle = ref<string>('');
|
||||
let mescrollRef = ref(null);
|
||||
let loading = ref<boolean>(false);
|
||||
|
||||
interface acceptingDataStructure {
|
||||
data : acceptingDataItemStructure,
|
||||
msg : string,
|
||||
code : number
|
||||
}
|
||||
interface acceptingDataItemStructure {
|
||||
data : object,
|
||||
[propName : string] : number | string | object
|
||||
}
|
||||
onLoad(async () => {
|
||||
await getArticleCategory().then((res : acceptingDataStructure) => {
|
||||
const initData = { name: t("all"), category_id: '' };
|
||||
categoryList.value.push(initData);
|
||||
categoryList.value = categoryList.value.concat(res.data.data);
|
||||
});
|
||||
})
|
||||
|
||||
interface mescrollStructure {
|
||||
num : number,
|
||||
size : number,
|
||||
endSuccess : Function,
|
||||
[propName : string] : any
|
||||
}
|
||||
const getArticleListFn = (mescroll : mescrollStructure) => {
|
||||
loading.value = false;
|
||||
let data : object = {
|
||||
category_id: currCategoryId.value,
|
||||
title: articleTitle.value,
|
||||
page: mescroll.num,
|
||||
limit: mescroll.size
|
||||
};
|
||||
|
||||
getArticleList(data).then((res : acceptingDataStructure) => {
|
||||
let newArr = (res.data.data as Array<Object>);
|
||||
//设置列表数据
|
||||
if (mescroll.num == 1) {
|
||||
articleList.value = []; //如果是第一页需手动制空列表
|
||||
}
|
||||
articleList.value = articleList.value.concat(newArr);
|
||||
mescroll.endSuccess(newArr.length);
|
||||
loading.value = true;
|
||||
}).catch(() => {
|
||||
loading.value = true;
|
||||
mescroll.endErr(); // 请求失败, 结束加载
|
||||
})
|
||||
}
|
||||
|
||||
const loadCategory = (id : string) => {
|
||||
currCategoryId.value = id;
|
||||
getMescroll().resetUpScroll();
|
||||
}
|
||||
|
||||
const searchFn = () => {
|
||||
getMescroll().resetUpScroll();
|
||||
}
|
||||
|
||||
const toLink = (id : string) => {
|
||||
redirect({ url: '/pages/article/detail', param: { id } })
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
setTimeout(() => {
|
||||
getMescroll().optUp.textNoMore = t("end");
|
||||
}, 500)
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.nav-item.active {
|
||||
color: $u-primary;
|
||||
}
|
||||
|
||||
.scroll-view-wrap {
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
/* 单行超出隐藏 */
|
||||
.using-hidden {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
white-space: break-spaces;
|
||||
}
|
||||
|
||||
/* 多行超出隐藏 */
|
||||
.multi-hidden {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
</style>
|
||||
@ -1,166 +0,0 @@
|
||||
<template>
|
||||
<view class="bg-gray-100 min-h-[100vh]">
|
||||
<view class="fixed top-0 inset-x-0 z-10">
|
||||
<view
|
||||
class='p-[10px] bg-white border-solid border-t-0 border-l-0 border-r-0 border-b-[1px] border-gray-200'>
|
||||
<u-search :placeholder="t('searchPlaceholder')" actionText :actionStyle="{'width':0,'margin':0}"
|
||||
v-model="articleTitle" @clickIcon="searchFn"></u-search>
|
||||
</view>
|
||||
<scroll-view :scroll-x="true" :enable-flex="true"
|
||||
class="nav-list bg-white align-center px-[10px] box-border">
|
||||
<view class="flex scroll-view-wrap">
|
||||
<view
|
||||
:class="['nav-item text-[14px] mx-[5px] h-[30px] leading-[30px] my-[5px] border-t-0 border-l-0 border-r-0',{'border-solid border-b-[2px] active': currCategoryId==item.category_id}]"
|
||||
@click="loadCategory(item.category_id)" v-for="(item,index) in categoryList"
|
||||
:key="item.category_id">
|
||||
{{item.name}}
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
<mescroll-body ref="mescrollRef" @init="mescrollInit" top="220rpx" @down="downCallback" @up="getArticleListFn">
|
||||
<view v-for="(item,index) in articleList" :key="item.id"
|
||||
:class="['bg-white flex align-center p-[10px]',{'border-solid border-t-0 border-l-0 border-r-0 border-b-[1px] border-gray-200': articleList.length-1 !== index}] "
|
||||
@click="toLink(item.id)">
|
||||
<u--image width="260rpx" height="200rpx" :src="img(item.image)" v-if="item.image" model="aspectFill">
|
||||
<template #error>
|
||||
<u-icon name="photo" color="#999" size="50"></u-icon>
|
||||
</template>
|
||||
</u--image>
|
||||
<view class="flex-1 flex flex-col justify-between ml-[10px]">
|
||||
<view class="text-[16px] leading-[1.3] multi-hidden mt-[2px]">{{item.title}}</view>
|
||||
<view class="text-[14px] using-hidden mb-[auto] mt-[10px] text-gray-500">{{item.summary}}</view>
|
||||
<view class="text-[12px] text-gray-400 flex justify-between mb-[5px]">
|
||||
<text class="">{{item.create_time}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<mescroll-empty v-if="!articleList.length && loading"></mescroll-empty>
|
||||
</mescroll-body>
|
||||
<tabbar />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { t } from '@/locale'
|
||||
import { redirect, img } from '@/utils/common';
|
||||
import { getArticleList, getArticleCategory } from '@/cms/api/article';
|
||||
import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue';
|
||||
import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue';
|
||||
import useMescroll from '@/components/mescroll/hooks/useMescroll.js';
|
||||
import { onPageScroll, onReachBottom } from '@dcloudio/uni-app';
|
||||
const { mescrollInit, downCallback, getMescroll } = useMescroll(onPageScroll, onReachBottom);
|
||||
import { useShare } from '@/hooks/useShare'
|
||||
|
||||
const { setShare, onShareAppMessage, onShareTimeline } = useShare()
|
||||
setShare()
|
||||
onShareAppMessage()
|
||||
onShareTimeline()
|
||||
|
||||
let categoryList = ref<Array<Object>>([]);
|
||||
let articleList = ref<Array<any>>([]);
|
||||
let currCategoryId = ref<number | string>('');
|
||||
let articleTitle = ref<string>('');
|
||||
let mescrollRef = ref(null);
|
||||
let loading = ref<boolean>(false);
|
||||
|
||||
interface acceptingDataStructure {
|
||||
data : acceptingDataItemStructure,
|
||||
msg : string,
|
||||
code : number
|
||||
}
|
||||
interface acceptingDataItemStructure {
|
||||
data : object,
|
||||
[propName : string] : number | string | object
|
||||
}
|
||||
onLoad(async () => {
|
||||
await getArticleCategory().then((res : acceptingDataStructure) => {
|
||||
const initData = { name: t("all"), category_id: '' };
|
||||
categoryList.value.push(initData);
|
||||
categoryList.value = categoryList.value.concat(res.data.data);
|
||||
});
|
||||
})
|
||||
|
||||
interface mescrollStructure {
|
||||
num : number,
|
||||
size : number,
|
||||
endSuccess : Function,
|
||||
[propName : string] : any
|
||||
}
|
||||
const getArticleListFn = (mescroll : mescrollStructure) => {
|
||||
loading.value = false;
|
||||
let data : object = {
|
||||
category_id: currCategoryId.value,
|
||||
title: articleTitle.value,
|
||||
page: mescroll.num,
|
||||
limit: mescroll.size
|
||||
};
|
||||
|
||||
getArticleList(data).then((res : acceptingDataStructure) => {
|
||||
let newArr = (res.data.data as Array<Object>);
|
||||
//设置列表数据
|
||||
if (mescroll.num == 1) {
|
||||
articleList.value = []; //如果是第一页需手动制空列表
|
||||
}
|
||||
articleList.value = articleList.value.concat(newArr);
|
||||
mescroll.endSuccess(newArr.length);
|
||||
loading.value = true;
|
||||
}).catch(() => {
|
||||
loading.value = true;
|
||||
mescroll.endErr(); // 请求失败, 结束加载
|
||||
})
|
||||
}
|
||||
|
||||
const loadCategory = (id : string) => {
|
||||
currCategoryId.value = id;
|
||||
getMescroll().resetUpScroll();
|
||||
}
|
||||
|
||||
const searchFn = () => {
|
||||
getMescroll().resetUpScroll();
|
||||
}
|
||||
|
||||
const toLink = (id : string) => {
|
||||
redirect({ url: '/cms/pages/detail', param: { id } })
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
setTimeout(() => {
|
||||
getMescroll().optUp.textNoMore = t("end");
|
||||
}, 500)
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.nav-item.active {
|
||||
color: $u-primary;
|
||||
}
|
||||
|
||||
.scroll-view-wrap {
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
/* 单行超出隐藏 */
|
||||
.using-hidden {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
white-space: break-spaces;
|
||||
}
|
||||
|
||||
/* 多行超出隐藏 */
|
||||
.multi-hidden {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
</style>
|
||||
@ -1,166 +0,0 @@
|
||||
<template>
|
||||
<view class="bg-gray-100 min-h-[100vh]">
|
||||
<view class="fixed top-0 inset-x-0 z-10">
|
||||
<view
|
||||
class='p-[10px] bg-white border-solid border-t-0 border-l-0 border-r-0 border-b-[1px] border-gray-200'>
|
||||
<u-search :placeholder="t('searchPlaceholder')" actionText :actionStyle="{'width':0,'margin':0}"
|
||||
v-model="articleTitle" @clickIcon="searchFn"></u-search>
|
||||
</view>
|
||||
<scroll-view :scroll-x="true" :enable-flex="true"
|
||||
class="nav-list bg-white align-center px-[10px] box-border">
|
||||
<view class="flex scroll-view-wrap">
|
||||
<view
|
||||
:class="['nav-item text-[14px] mx-[5px] h-[30px] leading-[30px] my-[5px] border-t-0 border-l-0 border-r-0',{'border-solid border-b-[2px] active': currCategoryId==item.category_id}]"
|
||||
@click="loadCategory(item.category_id)" v-for="(item,index) in categoryList"
|
||||
:key="item.category_id">
|
||||
{{item.name}}
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
<mescroll-body ref="mescrollRef" @init="mescrollInit" top="220rpx" @down="downCallback" @up="getArticleListFn">
|
||||
<view v-for="(item,index) in articleList" :key="item.id"
|
||||
:class="['bg-white flex align-center p-[10px]',{'border-solid border-t-0 border-l-0 border-r-0 border-b-[1px] border-gray-200': articleList.length-1 !== index}] "
|
||||
@click="toLink(item.id)">
|
||||
<u--image width="260rpx" height="200rpx" :src="img(item.image)" v-if="item.image" model="aspectFill">
|
||||
<template #error>
|
||||
<u-icon name="photo" color="#999" size="50"></u-icon>
|
||||
</template>
|
||||
</u--image>
|
||||
<view class="flex-1 flex flex-col justify-between ml-[10px]">
|
||||
<view class="text-[16px] leading-[1.3] multi-hidden mt-[2px]">{{item.title}}</view>
|
||||
<view class="text-[14px] using-hidden mb-[auto] mt-[10px] text-gray-500">{{item.summary}}</view>
|
||||
<view class="text-[12px] text-gray-400 flex justify-between mb-[5px]">
|
||||
<text class="">{{item.create_time}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<mescroll-empty v-if="!articleList.length && loading"></mescroll-empty>
|
||||
</mescroll-body>
|
||||
<tabbar />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { t } from '@/locale'
|
||||
import { redirect, img } from '@/utils/common';
|
||||
import { getArticleList, getArticleCategory } from '@/cms/api/article';
|
||||
import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue';
|
||||
import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue';
|
||||
import useMescroll from '@/components/mescroll/hooks/useMescroll.js';
|
||||
import { onPageScroll, onReachBottom } from '@dcloudio/uni-app';
|
||||
const { mescrollInit, downCallback, getMescroll } = useMescroll(onPageScroll, onReachBottom);
|
||||
import { useShare } from '@/hooks/useShare'
|
||||
|
||||
const { setShare, onShareAppMessage, onShareTimeline } = useShare()
|
||||
setShare()
|
||||
onShareAppMessage()
|
||||
onShareTimeline()
|
||||
|
||||
let categoryList = ref<Array<Object>>([]);
|
||||
let articleList = ref<Array<any>>([]);
|
||||
let currCategoryId = ref<number | string>('');
|
||||
let articleTitle = ref<string>('');
|
||||
let mescrollRef = ref(null);
|
||||
let loading = ref<boolean>(false);
|
||||
|
||||
interface acceptingDataStructure {
|
||||
data : acceptingDataItemStructure,
|
||||
msg : string,
|
||||
code : number
|
||||
}
|
||||
interface acceptingDataItemStructure {
|
||||
data : object,
|
||||
[propName : string] : number | string | object
|
||||
}
|
||||
onLoad(async () => {
|
||||
await getArticleCategory().then((res : acceptingDataStructure) => {
|
||||
const initData = { name: t("all"), category_id: '' };
|
||||
categoryList.value.push(initData);
|
||||
categoryList.value = categoryList.value.concat(res.data.data);
|
||||
});
|
||||
})
|
||||
|
||||
interface mescrollStructure {
|
||||
num : number,
|
||||
size : number,
|
||||
endSuccess : Function,
|
||||
[propName : string] : any
|
||||
}
|
||||
const getArticleListFn = (mescroll : mescrollStructure) => {
|
||||
loading.value = false;
|
||||
let data : object = {
|
||||
category_id: currCategoryId.value,
|
||||
title: articleTitle.value,
|
||||
page: mescroll.num,
|
||||
limit: mescroll.size
|
||||
};
|
||||
|
||||
getArticleList(data).then((res : acceptingDataStructure) => {
|
||||
let newArr = (res.data.data as Array<Object>);
|
||||
//设置列表数据
|
||||
if (mescroll.num == 1) {
|
||||
articleList.value = []; //如果是第一页需手动制空列表
|
||||
}
|
||||
articleList.value = articleList.value.concat(newArr);
|
||||
mescroll.endSuccess(newArr.length);
|
||||
loading.value = true;
|
||||
}).catch(() => {
|
||||
loading.value = true;
|
||||
mescroll.endErr(); // 请求失败, 结束加载
|
||||
})
|
||||
}
|
||||
|
||||
const loadCategory = (id : string) => {
|
||||
currCategoryId.value = id;
|
||||
getMescroll().resetUpScroll();
|
||||
}
|
||||
|
||||
const searchFn = () => {
|
||||
getMescroll().resetUpScroll();
|
||||
}
|
||||
|
||||
const toLink = (id : string) => {
|
||||
redirect({ url: '/cms/pages/detail', param: { id } })
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
setTimeout(() => {
|
||||
getMescroll().optUp.textNoMore = t("end");
|
||||
}, 500)
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.nav-item.active {
|
||||
color: $u-primary;
|
||||
}
|
||||
|
||||
.scroll-view-wrap {
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
/* 单行超出隐藏 */
|
||||
.using-hidden {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
white-space: break-spaces;
|
||||
}
|
||||
|
||||
/* 多行超出隐藏 */
|
||||
.multi-hidden {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
</style>
|
||||
@ -151,16 +151,6 @@ class Addon extends BaseAdminController
|
||||
return success('DOWNLOAD_SUCCESS');
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新插件
|
||||
* @param $app_key
|
||||
* @return Response
|
||||
*/
|
||||
public function upgrade($addon){
|
||||
(new AddonService())->upgrade($addon);
|
||||
return success('DOWNLOAD_SUCCESS');
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已安装插件
|
||||
* @return Response
|
||||
@ -184,4 +174,13 @@ class Addon extends BaseAdminController
|
||||
public function getType(){
|
||||
return success(AddonDict::getType());
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新插件
|
||||
* @param $app_key
|
||||
* @return Response
|
||||
*/
|
||||
public function upgrade($addon = ''){
|
||||
return success('DOWNLOAD_SUCCESS', (new AddonService())->upgrade($addon));
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,8 +11,14 @@
|
||||
|
||||
namespace app\adminapi\controller\login;
|
||||
|
||||
use addon\cms\app\model\article\CmsArticle;
|
||||
use app\model\sys\SysUser;
|
||||
use app\service\admin\auth\ConfigService;
|
||||
use app\service\admin\auth\LoginService;
|
||||
use app\service\admin\site\SiteService;
|
||||
use app\service\core\upgrade\CoreBackupService;
|
||||
use app\service\core\upgrade\CoreRestoreService;
|
||||
use app\service\core\upgrade\CoreUpgradeService;
|
||||
use app\service\core\weapp\CoreWeappCloudService;
|
||||
use core\base\BaseAdminController;
|
||||
use think\Response;
|
||||
@ -62,10 +68,6 @@ class Login extends BaseAdminController
|
||||
}
|
||||
|
||||
public function test(){
|
||||
(new CoreWeappCloudService())->uploadWeapp([
|
||||
'site_id' => 43,
|
||||
'version' => '0.0.1',
|
||||
'desc' => ''
|
||||
]);
|
||||
(new CoreUpgradeService())->execute();
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,4 +43,13 @@ class Module extends BaseAdminController
|
||||
{
|
||||
return success((new NiucloudService())->getAuthorize());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取框架最新版本
|
||||
* @return Response
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function getFrameworkLastVersion() {
|
||||
return success(data:(new NiucloudService())->getFrameworkLastVersion());
|
||||
}
|
||||
}
|
||||
|
||||
@ -112,6 +112,16 @@ class Site extends BaseAdminController
|
||||
return success('MODIFY_SUCCESS');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除站点
|
||||
* @param $id
|
||||
* @return Response
|
||||
*/
|
||||
public function del($id) {
|
||||
(new SiteService())->del($id);
|
||||
return success('DELETE_SUCCESS');
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启站点
|
||||
*/
|
||||
|
||||
@ -147,4 +147,13 @@ class Menu extends BaseAdminController
|
||||
{
|
||||
return success( (new MenuService())->getAddonMenu($app_key,'all', 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询菜单类型为目录的菜单
|
||||
* @param $addon
|
||||
* @return Response
|
||||
*/
|
||||
public function getMenuByTypeDir($addon = 'system') {
|
||||
return success( (new MenuService())->getMenuByTypeDir($addon));
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,6 +53,8 @@ Route::group(function () {
|
||||
// 取消安装任务
|
||||
Route::put('addon/install/cancel/:addon', 'addon.Addon/cancleInstall');
|
||||
|
||||
Route::post('addon/upgrade/[:addon]', 'addon.Addon/upgrade');
|
||||
|
||||
/******************************************************************开发插件 *******************************************************/
|
||||
//开发插件列表
|
||||
Route::get('addon_develop', 'addon.AddonDevelop/lists');
|
||||
|
||||
@ -37,7 +37,8 @@ Route::group('niucloud', function () {
|
||||
Route::get('module/download/:version_id', 'addon.Addon/info');
|
||||
//更新
|
||||
Route::put('addon/status/:version_id', 'addon.Addon/setStatus');
|
||||
|
||||
// 获取框架最新版本
|
||||
Route::get('framework/newversion', 'niucloud.Module/getFrameworkLastVersion');
|
||||
|
||||
})->middleware([
|
||||
AdminCheckToken::class,
|
||||
|
||||
@ -29,6 +29,8 @@ Route::group('site', function () {
|
||||
Route::post('site', 'site.Site/add');
|
||||
//更新站点
|
||||
Route::put('site/:id', 'site.Site/edit');
|
||||
//删除站点
|
||||
Route::delete('site/:id', 'site.Site/del');
|
||||
//关闭站点
|
||||
Route::put('closesite/:id', 'site.Site/closeSite');
|
||||
//开启站点
|
||||
|
||||
@ -59,6 +59,8 @@ Route::group('sys', function () {
|
||||
Route::get('menu/system_menu', 'sys.Menu/getSystem');
|
||||
|
||||
Route::get('menu/addon_menu/:app_key', 'sys.Menu/getAddonMenu');
|
||||
|
||||
Route::get('menu/dir/:addon', 'sys.Menu/getMenuByTypeDir');
|
||||
/***************************************************** 设置 ****************************************************/
|
||||
//网站设置
|
||||
Route::get('config/website', 'sys.Config/getWebsite');
|
||||
|
||||
@ -59,6 +59,8 @@ class AddonDict
|
||||
];
|
||||
}
|
||||
|
||||
const FRAMEWORK_KEY = 'niucloud-admin';
|
||||
|
||||
const APP = 'app';
|
||||
const ADDON = 'addon';
|
||||
|
||||
|
||||
@ -93,6 +93,47 @@ return
|
||||
'sort' => 100,
|
||||
'status' => 1,
|
||||
'is_show' => 1,
|
||||
'children' => [
|
||||
[
|
||||
'menu_name' => '添加站点',
|
||||
'menu_key' => 'add_site',
|
||||
'menu_type' => 2,
|
||||
'icon' => '',
|
||||
'api_url' => 'site/site',
|
||||
'router_path' => '',
|
||||
'view_path' => '',
|
||||
'methods' => 'post',
|
||||
'sort' => 100,
|
||||
'status' => 1,
|
||||
'is_show' => 1,
|
||||
],
|
||||
[
|
||||
'menu_name' => '编辑站点',
|
||||
'menu_key' => 'edit_site',
|
||||
'menu_type' => 2,
|
||||
'icon' => '',
|
||||
'api_url' => 'site/site/<id>',
|
||||
'router_path' => '',
|
||||
'view_path' => '',
|
||||
'methods' => 'put',
|
||||
'sort' => 100,
|
||||
'status' => 1,
|
||||
'is_show' => 1,
|
||||
],
|
||||
[
|
||||
'menu_name' => '删除站点',
|
||||
'menu_key' => 'delete_site',
|
||||
'menu_type' => 2,
|
||||
'icon' => '',
|
||||
'api_url' => 'site/site/<id>',
|
||||
'router_path' => '',
|
||||
'view_path' => '',
|
||||
'methods' => 'delete',
|
||||
'sort' => 100,
|
||||
'status' => 1,
|
||||
'is_show' => 1,
|
||||
],
|
||||
]
|
||||
],
|
||||
[
|
||||
'menu_name' => '站点用户',
|
||||
|
||||
@ -45,8 +45,12 @@ return [
|
||||
'LAYOUT_NOT_EXIST' => '该布局不存在',
|
||||
'ZIP_FILE_NOT_FOUND' => '找不到可用的压缩文件',
|
||||
'DOWNLOAD_SUCCESS' => '下载成功',
|
||||
'APP_NOT_ALLOW_UNINSTALL' => '该应用下存在站点不允许卸载',
|
||||
'APP_NOT_ALLOW_UNINSTALL' => '该应用下存在站点卸载前请先删除相关站点',
|
||||
'ADDON_INSTALL_FAIL' => '插件安装失败',
|
||||
'ADMIN_DIR_NOT_EXIST' => '未找到admin源码所在目录, <a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3213544" target="blank">点击查看相关手册</a>',
|
||||
'WEB_DIR_NOT_EXIST' => '未找到web源码所在目录, <a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3213544" target="blank">点击查看相关手册</a>',
|
||||
'UNIAPP_DIR_NOT_EXIST' => '未找到uni-app源码所在目录, <a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3213544" target="blank">点击查看相关手册</a>',
|
||||
'OPEN_BASEDIR_ERROR' => '请关闭防跨站攻击, 具体操作方法<a style="text-decoration: underline;" href="https://www.kancloud.cn/niucloud/niucloud-admin-develop/3213393" target="blank">点击查看相关手册</a>',
|
||||
//登录注册重置账号....
|
||||
|
||||
'LOGIN_SUCCESS' => '登录成功',
|
||||
|
||||
@ -23,6 +23,7 @@ use app\service\core\addon\CoreAddonInstallService;
|
||||
use app\service\core\addon\CoreAddonService;
|
||||
use app\service\core\niucloud\CoreModuleService;
|
||||
use app\service\core\site\CoreSiteService;
|
||||
use app\service\core\upgrade\CoreUpgradeService;
|
||||
use core\base\BaseAdminService;
|
||||
use Exception;
|
||||
use think\db\exception\DbException;
|
||||
@ -175,8 +176,8 @@ class AddonService extends BaseAdminService
|
||||
* @param string $app_key
|
||||
* @return null
|
||||
*/
|
||||
public function upgrade(string $app_key){
|
||||
return (new CoreAddonDownloadService())->upgrade($app_key);
|
||||
public function upgrade(string $app_key = ''){
|
||||
return (new CoreUpgradeService())->upgrade($app_key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -13,6 +13,7 @@ namespace app\service\admin\niucloud;
|
||||
|
||||
use app\dict\sys\ConfigKeyDict;
|
||||
use app\service\core\niucloud\CoreAuthService;
|
||||
use app\service\core\niucloud\CoreModuleService;
|
||||
use app\service\core\sys\CoreConfigService;
|
||||
use core\base\BaseAdminService;
|
||||
use core\exception\CommonException;
|
||||
@ -42,8 +43,10 @@ class NiucloudService extends BaseAdminService
|
||||
'auth_code' => $data['auth_code'],
|
||||
'auth_secret' => $data['auth_secret']
|
||||
];
|
||||
$auth_info = (new CoreAuthService($data['auth_code'], $data['auth_secret']))->getAuthInfo()['data'] ?? [];
|
||||
$service = (new CoreAuthService($data['auth_code'], $data['auth_secret']));
|
||||
$auth_info = $service->getAuthInfo()['data'] ?? [];
|
||||
if (empty($auth_info)) throw new CommonException('AUTH_NOT_EXISTS');
|
||||
$service->clearAccessToken();
|
||||
return $this->core_config_service->setConfig(0,ConfigKeyDict::NIUCLOUD_CONFIG, $data);
|
||||
}
|
||||
|
||||
@ -64,4 +67,13 @@ class NiucloudService extends BaseAdminService
|
||||
return $info['value'];
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 获取框架最新版本
|
||||
* @return void
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function getFrameworkLastVersion() {
|
||||
return (new CoreModuleService())->getFrameworkLastVersion();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -18,12 +18,14 @@ use app\model\site\Site;
|
||||
use app\model\site\SiteGroup;
|
||||
use app\model\sys\SysUserRole;
|
||||
use app\service\admin\addon\AddonService;
|
||||
use app\service\admin\generator\GenerateService;
|
||||
use app\service\admin\sys\MenuService;
|
||||
use app\service\admin\user\UserRoleService;
|
||||
use app\service\admin\user\UserService;
|
||||
use app\service\core\site\CoreSiteService;
|
||||
use core\base\BaseAdminService;
|
||||
use core\exception\AdminException;
|
||||
use core\exception\CommonException;
|
||||
use Exception;
|
||||
use think\db\exception\DataNotFoundException;
|
||||
use think\db\exception\DbException;
|
||||
@ -158,6 +160,39 @@ class SiteService extends BaseAdminService
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除站点
|
||||
* @param int $site_id
|
||||
* @return void
|
||||
*/
|
||||
public function del(int $site_id) {
|
||||
Db::startTrans();
|
||||
try {
|
||||
$site = $this->model->where([ [ 'site_id', '=', $site_id ] ])->findOrEmpty()->toArray();
|
||||
|
||||
// 删除站点相关数据
|
||||
$sys_models = (new GenerateService())->getModels(['addon' => 'system']);
|
||||
$addon_models = (new GenerateService())->getModels(['addon' => $site['app'] ]);
|
||||
|
||||
$models = array_merge($sys_models, $addon_models);
|
||||
|
||||
foreach ($models as $model) {
|
||||
$name = "\\$model";
|
||||
$class = new $name();
|
||||
|
||||
if (in_array('site_id', $class->getTableFields())) {
|
||||
$class->where([ ['site_id', '=', $site['site_id'] ] ])->delete();
|
||||
}
|
||||
}
|
||||
|
||||
Cache::tag(self::$cache_tag_name . $site_id)->clear();
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
throw new CommonException($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 站点数量
|
||||
@ -176,18 +211,7 @@ class SiteService extends BaseAdminService
|
||||
*/
|
||||
public function getSiteCache(int $site_id)
|
||||
{
|
||||
$cache_name = 'site_info_cache';
|
||||
return cache_remember(
|
||||
$cache_name . $site_id,
|
||||
function() use ($site_id) {
|
||||
$where = [
|
||||
[ 'site_id', '=', $site_id ],
|
||||
];
|
||||
$site = $this->model->where($where)->field('site_id, app_type,site_name,front_end_name,front_end_logo,logo,icon,group_id, status, expire_time, app, addons')->append([ 'status_name' ])->findOrEmpty();
|
||||
return $site->toArray();
|
||||
},
|
||||
self::$cache_tag_name . $site_id
|
||||
);
|
||||
return (new CoreSiteService())->getSiteCache($site_id);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -596,4 +596,38 @@ class MenuService extends BaseAdminService
|
||||
$menu_list = (new SysMenu())->where($where)->select()->toArray();
|
||||
return $is_tree ? $this->menuToTree($menu_list, 'menu_key', 'parent_key', 'children', 'auth', '', $is_button) : $menu_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询菜单类型为目录的菜单
|
||||
* @param string $addon
|
||||
* @return void
|
||||
*/
|
||||
public function getMenuByTypeDir(string $addon = 'system') {
|
||||
$cache_name = 'menu_api_by_type_dir' . $addon;
|
||||
$menu_list = cache_remember(
|
||||
$cache_name,
|
||||
function () use ($addon) {
|
||||
$where = [
|
||||
['menu_type', '=', 0 ],
|
||||
['app_type', '=', 'site']
|
||||
];
|
||||
//查询应用
|
||||
$where[] = ['addon', '=', $addon == 'system' ? '' : $addon ];
|
||||
return (new SysMenu())->where($where)->order('sort desc')->select()->toArray();
|
||||
},
|
||||
self::$cache_tag_name
|
||||
);
|
||||
foreach ($menu_list as &$v)
|
||||
{
|
||||
$lang_menu_key = 'dict_menu_admin' . '.'. $v['menu_key'];
|
||||
$lang_menu_name = get_lang($lang_menu_key);
|
||||
//语言已定义
|
||||
if($lang_menu_key != $lang_menu_name)
|
||||
{
|
||||
$v['menu_name'] = $lang_menu_name;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->menuToTree($menu_list, 'menu_key', 'parent_key', 'children', 'auth', '', 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -259,4 +259,28 @@ class CoreAddonCloudService extends CoreCloudBaseService
|
||||
|
||||
return $zip_file;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件升级
|
||||
* @param $data
|
||||
* @return void
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function upgradeAddon(array $data = []) {
|
||||
$action_token = (new CoreModuleService())->getActionToken('upgrade', ['data' => $data ]);
|
||||
if (isset($action_token['code']) && $action_token['code'] != 1) {
|
||||
if ($action_token['code'] == 401) $action_token = (new CoreModuleService())->getActionToken('upgrade', ['data' => $data ]);
|
||||
if ($action_token['code'] != 1) throw new CommonException($action_token['msg']);
|
||||
}
|
||||
|
||||
$query = [
|
||||
'authorize_code' => $this->auth_code,
|
||||
'token' => $action_token['data']['token'] ?? ''
|
||||
];
|
||||
// 获取文件大小
|
||||
$response = (new CloudService())->request('HEAD','cloud/upgrade?' . http_build_query($query), [
|
||||
'headers' => ['Range' => 'bytes=0-']
|
||||
]);
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
||||
@ -437,7 +437,7 @@ class CoreAddonDevelopService extends CoreAddonBaseService
|
||||
'version' => $data['version'],
|
||||
'type' => $data['type'],
|
||||
'support_app' => $data['support_app'],
|
||||
'update_time' => $data['update_time'],
|
||||
'update_time' => time(),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@ -217,6 +217,9 @@ class CoreAddonInstallService extends CoreAddonBaseService
|
||||
} catch (\Exception $e) {
|
||||
Cache::set('install_task', $this->install_task);
|
||||
$this->installExceptionHandle();
|
||||
if (strpos($e->getMessage(), 'open basedir') !== false) {
|
||||
throw new CommonException('OPEN_BASEDIR_ERROR');
|
||||
}
|
||||
throw new CommonException($e->getMessage());
|
||||
}
|
||||
}
|
||||
@ -511,10 +514,8 @@ class CoreAddonInstallService extends CoreAddonBaseService
|
||||
*/
|
||||
public function uninstall()
|
||||
{
|
||||
if (!env('app_debug', true)) {
|
||||
$site_num = (new Site())->where([['app', '=', $this->addon]])->count('site_id');
|
||||
if ($site_num) throw new CommonException('APP_NOT_ALLOW_UNINSTALL');
|
||||
}
|
||||
$site_num = (new Site())->where([ ['app', '=', $this->addon] ])->count('site_id');
|
||||
if ($site_num) throw new CommonException('APP_NOT_ALLOW_UNINSTALL');
|
||||
|
||||
//执行插件卸载方法
|
||||
$class = "addon\\" . $this->addon . "\\" . 'Addon';
|
||||
|
||||
@ -165,4 +165,23 @@ class CoreMenuService extends BaseCoreService
|
||||
Cache::tag(MenuService::$cache_tag_name)->clear();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取path
|
||||
* @param $menu_key
|
||||
* @param $paths
|
||||
* @return string
|
||||
* @throws DbException
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function getRoutePathByMenuKey($menu_key, $paths = []) {
|
||||
$menu = $this->model->where([ ['menu_key', '=', $menu_key], ['app_type', '=', 'site'] ])->field('parent_key,router_path')->find();
|
||||
array_unshift($paths, $menu['router_path']);
|
||||
if (!empty($menu['parent_key'])) {
|
||||
return $this->getRoutePathByMenuKey($menu['parent_key'], $paths);
|
||||
} else {
|
||||
return implode('/', $paths);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,4 +95,13 @@ class CoreModuleService extends BaseNiucloudClient
|
||||
{
|
||||
return $this->httpGet('store/app_check/'.$key, ['product_key' => self::PRODUCT])['data'] ?? false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取框架最新版本
|
||||
* @return array|\core\util\niucloud\Response|object|ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function getFrameworkLastVersion() {
|
||||
return $this->httpGet('store/framework/lastversion', ['product_key' => self::PRODUCT])['data'] ?? false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ namespace app\service\core\site;
|
||||
|
||||
use app\dict\site\SiteDict;
|
||||
use app\dict\sys\AppTypeDict;
|
||||
use app\model\addon\Addon;
|
||||
use app\model\site\Site;
|
||||
use app\model\site\SiteGroup;
|
||||
use app\service\admin\site\SiteGroupService;
|
||||
@ -53,8 +54,12 @@ class CoreSiteService extends BaseCoreService
|
||||
$where = [
|
||||
[ 'site_id', '=', $site_id ],
|
||||
];
|
||||
$site = $this->model->where($where)->field('site_id, app_type,site_name,logo,front_end_name,front_end_logo,group_id, status, expire_time')->append([ 'status_name' ])->findOrEmpty();
|
||||
return $site->toArray();
|
||||
$info = $this->model->where($where)->field('site_id, site_name, front_end_name, front_end_logo, app_type, keywords, logo, icon, `desc`, status, latitude, longitude, province_id, city_id, district_id, address, full_address, phone, business_hours, create_time, expire_time, group_id, app, addons')->append([ 'status_name' ])->findOrEmpty()->toArray();
|
||||
if (!empty($info)) {
|
||||
$site_addons = (new CoreSiteService())->getAddonKeysBySiteId($site_id);
|
||||
$info['site_addons'] = (new Addon())->where([ ['key', 'in', $site_addons]])->field('key,title,desc,icon')->select()->toArray();
|
||||
}
|
||||
return $info;
|
||||
},
|
||||
self::$cache_tag_name . $site_id
|
||||
);
|
||||
|
||||
103
niucloud/app/service/core/upgrade/CoreBackupService.php
Normal file
103
niucloud/app/service/core/upgrade/CoreBackupService.php
Normal file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Niucloud-admin 企业快速开发的saas管理平台
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方网址:https://www.niucloud-admin.com
|
||||
// +----------------------------------------------------------------------
|
||||
// | niucloud团队 版权所有 开源版本可自由商用
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Niucloud Team
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\service\core\upgrade;
|
||||
|
||||
use app\dict\addon\AddonDict;
|
||||
use core\util\DbBackup;
|
||||
|
||||
/**
|
||||
* 框架及插件升级备份
|
||||
* @package app\service\core\upgrade
|
||||
*/
|
||||
class CoreBackupService extends CoreUpgradeService
|
||||
{
|
||||
/**
|
||||
* 备份代码
|
||||
* @return void
|
||||
*/
|
||||
public function backupCode() {
|
||||
$backup_dir = $this->upgrade_dir .$this->upgrade_task['key'] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'code' . DIRECTORY_SEPARATOR;
|
||||
|
||||
// 创建目录
|
||||
dir_mkdir($backup_dir);
|
||||
// 备份admin
|
||||
dir_copy($this->root_path . 'admin', $backup_dir . 'admin', exclude_dirs:[ '.vscode', 'node_modules', 'dist']);
|
||||
// 备份uni-app
|
||||
dir_copy($this->root_path . 'uni-app', $backup_dir . 'uni-app', exclude_dirs:['node_modules', 'dist']);
|
||||
// 备份web
|
||||
dir_copy($this->root_path . 'web', $backup_dir . 'web', exclude_dirs:['node_modules', '.nuxt', '.output']);
|
||||
|
||||
// 备份niucloud
|
||||
$niucloud_dir = $backup_dir . 'niucloud' . DIRECTORY_SEPARATOR;
|
||||
if ($this->upgrade_task['upgrade']['app_key'] == AddonDict::FRAMEWORK_KEY) {
|
||||
dir_copy($this->root_path . 'niucloud', $niucloud_dir, exclude_dirs:['addon', 'config', 'public', 'vendor', 'runtime']);
|
||||
// 备份版本文件
|
||||
$version_file = $this->root_path . 'niucloud' .DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'version.php';
|
||||
$to_version_file = $niucloud_dir . 'config' . DIRECTORY_SEPARATOR . 'version.php';
|
||||
file_copy($version_file, $to_version_file);
|
||||
} else {
|
||||
$addon = $this->upgrade_task['upgrade']['app_key'];
|
||||
$addon_dir = $this->root_path . 'niucloud' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $addon;
|
||||
$to_addon_dir = $niucloud_dir . 'addon' . DIRECTORY_SEPARATOR . $addon;
|
||||
dir_copy($addon_dir, $to_addon_dir);
|
||||
}
|
||||
// 备份前端文件
|
||||
if (is_dir(public_path() . 'admin')) {
|
||||
dir_copy(public_path() . 'admin', $niucloud_dir . 'public' . DIRECTORY_SEPARATOR . 'admin');
|
||||
}
|
||||
if (is_dir(public_path() . 'wap')) {
|
||||
dir_copy(public_path() . 'wap', $niucloud_dir . 'public' . DIRECTORY_SEPARATOR . 'wap');
|
||||
}
|
||||
if (is_dir(public_path() . 'web')) {
|
||||
dir_copy(public_path() . 'web', $niucloud_dir . 'public' . DIRECTORY_SEPARATOR . 'web');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份数据库
|
||||
* @return void
|
||||
*/
|
||||
public function backupSql() {
|
||||
$backup_dir = $this->upgrade_dir .$this->upgrade_task['key'] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'sql' . DIRECTORY_SEPARATOR;
|
||||
// 创建目录
|
||||
dir_mkdir($backup_dir);
|
||||
|
||||
$db = new DbBackup([
|
||||
'path' => $backup_dir,//数据库备份路径
|
||||
'part' => 1048576,//数据库备份卷大小
|
||||
'compress' => 0,//数据库备份文件是否启用压缩 0不压缩 1 压缩
|
||||
'level' => 9 //数据库备份文件压缩级别 1普通 4 一般 9最高
|
||||
]);
|
||||
|
||||
$prefix = config('database.connections.'.config('database.default'))['prefix'];
|
||||
if ($this->upgrade_task['upgrade']['app_key'] == AddonDict::FRAMEWORK_KEY) {
|
||||
// 不需要备份的表
|
||||
$noot_need_backup = ["{$prefix}sys_user_log", "{$prefix}jobs", "{$prefix}jobs_failed"];
|
||||
$tables = array_diff(array_column($db->dataList(), 'name'), $noot_need_backup);
|
||||
} else {
|
||||
$tables = [];
|
||||
$table_prefix = "{$prefix}{$this->upgrade_task['upgrade']['app_key']}";
|
||||
foreach ($db->dataList() as $table) {
|
||||
if (strpos($table['name'], $table_prefix) === 0) {
|
||||
$tables[] = $table['name'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($tables as $table) {
|
||||
$db->setFile()->backup($table);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
59
niucloud/app/service/core/upgrade/CoreRestoreService.php
Normal file
59
niucloud/app/service/core/upgrade/CoreRestoreService.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Niucloud-admin 企业快速开发的saas管理平台
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方网址:https://www.niucloud-admin.com
|
||||
// +----------------------------------------------------------------------
|
||||
// | niucloud团队 版权所有 开源版本可自由商用
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Niucloud Team
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\service\core\upgrade;
|
||||
|
||||
|
||||
use core\util\DbBackup;
|
||||
|
||||
/**
|
||||
* 框架及插件升级恢复备份
|
||||
* @package app\service\core\upgrade
|
||||
*/
|
||||
class CoreRestoreService extends CoreUpgradeService
|
||||
{
|
||||
/**
|
||||
* 恢复代码备份
|
||||
* @return true
|
||||
*/
|
||||
public function restoreCode() {
|
||||
$backup_dir = $this->upgrade_dir .$this->upgrade_task['key'] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'code' . DIRECTORY_SEPARATOR;
|
||||
if (is_dir($backup_dir)) {
|
||||
// 删除前端文件
|
||||
if (is_dir(public_path() . 'admin')) del_target_dir(public_path() . 'admin', true);
|
||||
if (is_dir(public_path() . 'wap')) del_target_dir(public_path() . 'wap', true);
|
||||
if (is_dir(public_path() . 'web')) del_target_dir(public_path() . 'web', true);
|
||||
|
||||
dir_copy($backup_dir, $this->root_path);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复数据库备份
|
||||
* @return true
|
||||
*/
|
||||
public function restoreSql() {
|
||||
$backup_dir = $this->upgrade_dir .$this->upgrade_task['key'] . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'sql' . DIRECTORY_SEPARATOR;
|
||||
if (is_dir($backup_dir)) {
|
||||
$db = new DbBackup([
|
||||
'path' => $backup_dir //数据库备份路径
|
||||
]);
|
||||
$file_list = $db->fileList();
|
||||
if (!empty($file_list)) {
|
||||
foreach ($file_list as $file) {
|
||||
$db->setFile($file)->import(0, $file['time']);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
164
niucloud/app/service/core/upgrade/CoreUpgradeService.php
Normal file
164
niucloud/app/service/core/upgrade/CoreUpgradeService.php
Normal file
@ -0,0 +1,164 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Niucloud-admin 企业快速开发的saas管理平台
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方网址:https://www.niucloud-admin.com
|
||||
// +----------------------------------------------------------------------
|
||||
// | niucloud团队 版权所有 开源版本可自由商用
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Niucloud Team
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\service\core\upgrade;
|
||||
|
||||
use app\dict\addon\AddonDict;
|
||||
use app\model\addon\Addon;
|
||||
use app\service\core\addon\CoreAddonCloudService;
|
||||
use core\base\BaseCoreService;
|
||||
use core\exception\CommonException;
|
||||
use core\util\niucloud\BaseNiucloudClient;
|
||||
use think\facade\Cache;
|
||||
|
||||
/**
|
||||
* 框架及插件升级
|
||||
* @package app\service\core\upgrade
|
||||
*/
|
||||
class CoreUpgradeService extends BaseCoreService
|
||||
{
|
||||
protected $upgrade_dir;
|
||||
|
||||
protected $root_path;
|
||||
protected $cache_key = 'upgrade';
|
||||
|
||||
protected $upgrade_task = null;
|
||||
|
||||
private $steps = [
|
||||
'downloadFile' => ['step' => 'downloadFile', 'title' => '下载更新文件'],
|
||||
'backupCode' => ['step' => 'backupCode', 'title' => '备份源码'],
|
||||
'backupSql' => ['step' => 'backupSql', 'title' => '备份数据库'],
|
||||
'coverCode' => ['step' => 'coverCode', 'title' => '合并更新文件'],
|
||||
'executeUpgrade' => ['step' => 'executeUpgrade', 'title' => '执行升级方法']
|
||||
];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->root_path = dirname(root_path()) . DIRECTORY_SEPARATOR;
|
||||
$this->upgrade_dir = $this->root_path . 'upgrade' . DIRECTORY_SEPARATOR;
|
||||
$this->upgrade_task = Cache::get($this->cache_key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 升级
|
||||
* @param $addon
|
||||
* @return array
|
||||
*/
|
||||
public function upgrade(string $addon = '') {
|
||||
// if ($this->upgrade_task) throw new CommonException('UPGRADE_TASK_EXIST');
|
||||
|
||||
$upgrade = [
|
||||
'product_key' => BaseNiucloudClient::PRODUCT
|
||||
];
|
||||
if (!$addon) {
|
||||
$upgrade['app_key'] = AddonDict::FRAMEWORK_KEY;
|
||||
$upgrade['version'] = config('version.version');
|
||||
} else {
|
||||
$upgrade['app_key'] = $addon;
|
||||
$upgrade['version'] = (new Addon())->where([ ['key', '=', $addon] ])->value('version');
|
||||
}
|
||||
|
||||
$response = (new CoreAddonCloudService())->upgradeAddon($upgrade);
|
||||
if (isset($response['code']) && $response['code'] == 0) throw new CommonException($response['msg']);
|
||||
|
||||
try {
|
||||
$key = uniqid();
|
||||
$upgrade_dir = $this->upgrade_dir . $key . DIRECTORY_SEPARATOR;
|
||||
|
||||
if (!is_dir($upgrade_dir)) {
|
||||
dir_mkdir($upgrade_dir);
|
||||
}
|
||||
|
||||
$upgrade_tsak = [
|
||||
'key' => $key,
|
||||
'upgrade' => $upgrade,
|
||||
'step' => 'downloadFile',
|
||||
'executed' => ['downloadFile'],
|
||||
'log' => [ $this->steps['downloadFile']['title'] ]
|
||||
];
|
||||
|
||||
Cache::set($this->cache_key, $upgrade_tsak);
|
||||
return $upgrade_tsak;
|
||||
} catch (\Exception $e) {
|
||||
if (strpos($e->getMessage(), 'open_basedir') !== false) {
|
||||
throw new CommonException('OPEN_BASEDIR_ERROR');
|
||||
}
|
||||
throw new CommonException($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行升级
|
||||
* @return true
|
||||
*/
|
||||
public function execute() {
|
||||
$steps = array_keys($this->steps);
|
||||
$index = array_search($this->upgrade_task['step'], $steps);
|
||||
$step = $steps[ $index + 1 ] ?? '';
|
||||
if ($step) {
|
||||
try {
|
||||
$this->$step();
|
||||
|
||||
$this->upgrade_task['step'] = $step;
|
||||
$this->upgrade_task['executed'][] = $step;
|
||||
} catch (\Exception $e) {
|
||||
$this->upgrade_task['error'] = $e->getMessage();
|
||||
}
|
||||
Cache::set($this->cache_key, $this->upgrade_task);
|
||||
return true;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份源码
|
||||
* @return true
|
||||
*/
|
||||
public function backupCode() {
|
||||
(new CoreBackupService())->backupCode();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份数据库
|
||||
* @return true
|
||||
*/
|
||||
public function backupSql() {
|
||||
(new CoreBackupService())->backupSql();
|
||||
return true;
|
||||
}
|
||||
|
||||
public function coverCode() {
|
||||
|
||||
}
|
||||
|
||||
public function executeUpgrade() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 升级出错之后的处理
|
||||
* @return true|void
|
||||
*/
|
||||
public function upgradeErrorHandle() {
|
||||
try {
|
||||
$restore_service = (new CoreRestoreService());
|
||||
$restore_service->restoreCode();
|
||||
$restore_service->restoreSql();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -42,7 +42,8 @@ return [
|
||||
'ext' => ['pem', 'key'],
|
||||
'mime' => [
|
||||
'application/x-x509-ca-cert',
|
||||
'application/octet-stream'
|
||||
'application/octet-stream',
|
||||
'application/x-iwork-keynote-sffkey'
|
||||
],
|
||||
'size' => 2097152
|
||||
],
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'version' => '0.0.5',
|
||||
'code' => '202312150001'
|
||||
'version' => '0.0.6',
|
||||
'code' => '202312220001'
|
||||
];
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
Options +FollowSymlinks -Multiviews
|
||||
RewriteEngine On
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
|
||||
RewriteEngine on RewriteCond % !^$
|
||||
</IfModule>
|
||||
<IfModule mod_rewrite.c>
|
||||
Options +FollowSymlinks -Multiviews
|
||||
RewriteEngine On
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
|
||||
RewriteEngine on RewriteCond % !^$
|
||||
</IfModule>
|
||||
|
||||
@ -1 +1 @@
|
||||
import{d,r as l,S as i,f as p,g as t,h as m,y as u,x,u as v,bl as f,bm as h,e as g,A as I,B as b}from"./base-9962c822.js";/* empty css */import{b as S}from"./vue-router-d7e63612.js";import{E as B}from"./index-7ab57426.js";import{_ as w}from"./_plugin-vue_export-helper-c27b6911.js";import"./index-57446bef.js";import"./index-1370ab44.js";import"./index-6b77b11a.js";import"./index-71b7d8f4.js";const y=""+new URL("error-da01d378.png",import.meta.url).href,s=e=>(f("data-v-d967cd15"),e=e(),h(),e),k={class:"error"},C={class:"flex items-center"},E=s(()=>t("div",null,[t("img",{class:"w-[300px]",src:y})],-1)),N={class:"text-left ml-[100px]"},R=s(()=>t("div",{class:"error-text text-[28px] font-bold"},"404错误!",-1)),U=s(()=>t("div",{class:"text-[#222] text-[20px] mt-[15px]"},"哎呀,出错了!您访问的页面不存在...",-1)),V=s(()=>t("div",{class:"text-[#c4c2c2] text-[12px] mt-[5px]"},"尝试检查URL的错误,然后点击浏览器刷新按钮。",-1)),L={class:"mt-[40px]"},$=d({__name:"404",setup(e){let o=null;const r=l(5),a=S();return o=setInterval(()=>{r.value===0?(clearInterval(o),a.go(-1)):r.value--},1e3),i(()=>{o&&clearInterval(o)}),(n,c)=>{const _=B;return g(),p("div",k,[t("div",C,[m(n.$slots,"content",{},()=>[E],!0),t("div",N,[R,U,V,t("div",L,[u(_,{class:"bottom",onClick:c[0]||(c[0]=A=>v(a).go(-1))},{default:x(()=>[I(b(r.value)+" 秒后返回上一页",1)]),_:1})])])])])}}});const K=w($,[["__scopeId","data-v-d967cd15"]]);export{K as default};
|
||||
import{d,r as l,S as i,f as p,g as t,h as m,y as u,x,u as v,b9 as f,ba as h,e as g,A as I,B as b}from"./base-d79f9f62.js";/* empty css */import{b as S}from"./vue-router-fc35ac55.js";import{E as B}from"./index-03649f16.js";import{_ as w}from"./_plugin-vue_export-helper-c27b6911.js";import"./index-2048a34f.js";import"./index-bdfee32a.js";import"./index-427f5a83.js";import"./index-71aec1df.js";const y=""+new URL("error-da01d378.png",import.meta.url).href,s=e=>(f("data-v-d967cd15"),e=e(),h(),e),k={class:"error"},C={class:"flex items-center"},E=s(()=>t("div",null,[t("img",{class:"w-[300px]",src:y})],-1)),N={class:"text-left ml-[100px]"},R=s(()=>t("div",{class:"error-text text-[28px] font-bold"},"404错误!",-1)),U=s(()=>t("div",{class:"text-[#222] text-[20px] mt-[15px]"},"哎呀,出错了!您访问的页面不存在...",-1)),V=s(()=>t("div",{class:"text-[#c4c2c2] text-[12px] mt-[5px]"},"尝试检查URL的错误,然后点击浏览器刷新按钮。",-1)),L={class:"mt-[40px]"},$=d({__name:"404",setup(e){let o=null;const r=l(5),a=S();return o=setInterval(()=>{r.value===0?(clearInterval(o),a.go(-1)):r.value--},1e3),i(()=>{o&&clearInterval(o)}),(n,c)=>{const _=B;return g(),p("div",k,[t("div",C,[m(n.$slots,"content",{},()=>[E],!0),t("div",N,[R,U,V,t("div",L,[u(_,{class:"bottom",onClick:c[0]||(c[0]=A=>v(a).go(-1))},{default:x(()=>[I(b(r.value)+" 秒后返回上一页",1)]),_:1})])])])])}}});const K=w($,[["__scopeId","data-v-d967cd15"]]);export{K as default};
|
||||
1
niucloud/public/admin/assets/_Uint8Array-bbbfd6ac.js
Normal file
1
niucloud/public/admin/assets/_Uint8Array-bbbfd6ac.js
Normal file
@ -0,0 +1 @@
|
||||
import{b4 as l,b1 as c,aZ as K,aK as _,aV as d,b5 as L,aE as k,aD as R,b6 as w,b7 as y,b2 as W,b8 as u}from"./base-d79f9f62.js";var q=l(c,"WeakMap");const j=q;var N=9007199254740991;function z(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=N}function Z(t){return t!=null&&z(t.length)&&!K(t)}var H=Object.prototype;function X(t){var r=t&&t.constructor,e=typeof r=="function"&&r.prototype||H;return t===e}function Y(t,r){for(var e=-1,n=Array(t);++e<t;)n[e]=r(e);return n}var J="[object Arguments]";function $(t){return _(t)&&d(t)==J}var V=Object.prototype,Q=V.hasOwnProperty,tt=V.propertyIsEnumerable,et=$(function(){return arguments}())?$:function(t){return _(t)&&Q.call(t,"callee")&&!tt.call(t,"callee")};const rt=et;function at(){return!1}var D=typeof exports=="object"&&exports&&!exports.nodeType&&exports,x=D&&typeof module=="object"&&module&&!module.nodeType&&module,nt=x&&x.exports===D,S=nt?c.Buffer:void 0,ot=S?S.isBuffer:void 0,st=ot||at;const it=st;var ct="[object Arguments]",ut="[object Array]",pt="[object Boolean]",ft="[object Date]",gt="[object Error]",bt="[object Function]",yt="[object Map]",lt="[object Number]",dt="[object Object]",ht="[object RegExp]",Tt="[object Set]",jt="[object String]",vt="[object WeakMap]",mt="[object ArrayBuffer]",At="[object DataView]",_t="[object Float32Array]",wt="[object Float64Array]",$t="[object Int8Array]",xt="[object Int16Array]",St="[object Int32Array]",Ot="[object Uint8Array]",Pt="[object Uint8ClampedArray]",Et="[object Uint16Array]",It="[object Uint32Array]",a={};a[_t]=a[wt]=a[$t]=a[xt]=a[St]=a[Ot]=a[Pt]=a[Et]=a[It]=!0;a[ct]=a[ut]=a[mt]=a[pt]=a[At]=a[ft]=a[gt]=a[bt]=a[yt]=a[lt]=a[dt]=a[ht]=a[Tt]=a[jt]=a[vt]=!1;function Mt(t){return _(t)&&z(t.length)&&!!a[d(t)]}function Ct(t){return function(r){return t(r)}}var F=typeof exports=="object"&&exports&&!exports.nodeType&&exports,g=F&&typeof module=="object"&&module&&!module.nodeType&&module,Bt=g&&g.exports===F,T=Bt&&L.process,Ut=function(){try{var t=g&&g.require&&g.require("util").types;return t||T&&T.binding&&T.binding("util")}catch{}}();const O=Ut;var P=O&&O.isTypedArray,kt=P?Ct(P):Mt;const zt=kt;var Vt=Object.prototype,Dt=Vt.hasOwnProperty;function Ft(t,r){var e=k(t),n=!e&&rt(t),s=!e&&!n&&it(t),p=!e&&!n&&!s&&zt(t),f=e||n||s||p,h=f?Y(t.length,String):[],G=h.length;for(var o in t)(r||Dt.call(t,o))&&!(f&&(o=="length"||s&&(o=="offset"||o=="parent")||p&&(o=="buffer"||o=="byteLength"||o=="byteOffset")||R(o,G)))&&h.push(o);return h}function Gt(t,r){return function(e){return t(r(e))}}var Kt=Gt(Object.keys,Object);const Lt=Kt;var Rt=Object.prototype,Wt=Rt.hasOwnProperty;function qt(t){if(!X(t))return Lt(t);var r=[];for(var e in Object(t))Wt.call(t,e)&&e!="constructor"&&r.push(e);return r}function Nt(t){return Z(t)?Ft(t):qt(t)}function Zt(t,r){for(var e=-1,n=r.length,s=t.length;++e<n;)t[s+e]=r[e];return t}function Ht(){this.__data__=new w,this.size=0}function Xt(t){var r=this.__data__,e=r.delete(t);return this.size=r.size,e}function Yt(t){return this.__data__.get(t)}function Jt(t){return this.__data__.has(t)}var Qt=200;function te(t,r){var e=this.__data__;if(e instanceof w){var n=e.__data__;if(!y||n.length<Qt-1)return n.push([t,r]),this.size=++e.size,this;e=this.__data__=new W(n)}return e.set(t,r),this.size=e.size,this}function b(t){var r=this.__data__=new w(t);this.size=r.size}b.prototype.clear=Ht;b.prototype.delete=Xt;b.prototype.get=Yt;b.prototype.has=Jt;b.prototype.set=te;function ee(t,r){for(var e=-1,n=t==null?0:t.length,s=0,p=[];++e<n;){var f=t[e];r(f,e,t)&&(p[s++]=f)}return p}function re(){return[]}var ae=Object.prototype,ne=ae.propertyIsEnumerable,E=Object.getOwnPropertySymbols,oe=E?function(t){return t==null?[]:(t=Object(t),ee(E(t),function(r){return ne.call(t,r)}))}:re;const se=oe;function ie(t,r,e){var n=r(t);return k(t)?n:Zt(n,e(t))}function je(t){return ie(t,Nt,se)}var ce=l(c,"DataView");const v=ce;var ue=l(c,"Promise");const m=ue;var pe=l(c,"Set");const A=pe;var I="[object Map]",fe="[object Object]",M="[object Promise]",C="[object Set]",B="[object WeakMap]",U="[object DataView]",ge=u(v),be=u(y),ye=u(m),le=u(A),de=u(j),i=d;(v&&i(new v(new ArrayBuffer(1)))!=U||y&&i(new y)!=I||m&&i(m.resolve())!=M||A&&i(new A)!=C||j&&i(new j)!=B)&&(i=function(t){var r=d(t),e=r==fe?t.constructor:void 0,n=e?u(e):"";if(n)switch(n){case ge:return U;case be:return I;case ye:return M;case le:return C;case de:return B}return r});const ve=i;var he=c.Uint8Array;const me=he;export{A as S,me as U,rt as a,Zt as b,ie as c,ve as d,Ct as e,it as f,se as g,b as h,z as i,je as j,Nt as k,Z as l,zt as m,O as n,X as o,Ft as p,Gt as q,re as s};
|
||||
@ -1 +0,0 @@
|
||||
import{bg as l,bd as c,ba as L,aX as _,b6 as d,bh as K,aR as U,aQ as R,bi as w,bj as y,be as W,bk as u}from"./base-9962c822.js";var q=l(c,"WeakMap");const j=q;var N=9007199254740991;function z(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=N}function X(t){return t!=null&&z(t.length)&&!L(t)}var H=Object.prototype;function Q(t){var r=t&&t.constructor,e=typeof r=="function"&&r.prototype||H;return t===e}function Y(t,r){for(var e=-1,n=Array(t);++e<t;)n[e]=r(e);return n}var Z="[object Arguments]";function $(t){return _(t)&&d(t)==Z}var V=Object.prototype,J=V.hasOwnProperty,tt=V.propertyIsEnumerable,et=$(function(){return arguments}())?$:function(t){return _(t)&&J.call(t,"callee")&&!tt.call(t,"callee")};const rt=et;function at(){return!1}var D=typeof exports=="object"&&exports&&!exports.nodeType&&exports,x=D&&typeof module=="object"&&module&&!module.nodeType&&module,nt=x&&x.exports===D,S=nt?c.Buffer:void 0,ot=S?S.isBuffer:void 0,st=ot||at;const it=st;var ct="[object Arguments]",ut="[object Array]",pt="[object Boolean]",ft="[object Date]",gt="[object Error]",bt="[object Function]",yt="[object Map]",lt="[object Number]",dt="[object Object]",ht="[object RegExp]",Tt="[object Set]",jt="[object String]",vt="[object WeakMap]",mt="[object ArrayBuffer]",At="[object DataView]",_t="[object Float32Array]",wt="[object Float64Array]",$t="[object Int8Array]",xt="[object Int16Array]",St="[object Int32Array]",Ot="[object Uint8Array]",Pt="[object Uint8ClampedArray]",It="[object Uint16Array]",Et="[object Uint32Array]",a={};a[_t]=a[wt]=a[$t]=a[xt]=a[St]=a[Ot]=a[Pt]=a[It]=a[Et]=!0;a[ct]=a[ut]=a[mt]=a[pt]=a[At]=a[ft]=a[gt]=a[bt]=a[yt]=a[lt]=a[dt]=a[ht]=a[Tt]=a[jt]=a[vt]=!1;function Mt(t){return _(t)&&z(t.length)&&!!a[d(t)]}function Ct(t){return function(r){return t(r)}}var F=typeof exports=="object"&&exports&&!exports.nodeType&&exports,g=F&&typeof module=="object"&&module&&!module.nodeType&&module,kt=g&&g.exports===F,T=kt&&K.process,Bt=function(){try{var t=g&&g.require&&g.require("util").types;return t||T&&T.binding&&T.binding("util")}catch{}}();const O=Bt;var P=O&&O.isTypedArray,Ut=P?Ct(P):Mt;const zt=Ut;var Vt=Object.prototype,Dt=Vt.hasOwnProperty;function Ft(t,r){var e=U(t),n=!e&&rt(t),s=!e&&!n&&it(t),p=!e&&!n&&!s&&zt(t),f=e||n||s||p,h=f?Y(t.length,String):[],G=h.length;for(var o in t)(r||Dt.call(t,o))&&!(f&&(o=="length"||s&&(o=="offset"||o=="parent")||p&&(o=="buffer"||o=="byteLength"||o=="byteOffset")||R(o,G)))&&h.push(o);return h}function Gt(t,r){return function(e){return t(r(e))}}var Lt=Gt(Object.keys,Object);const Kt=Lt;var Rt=Object.prototype,Wt=Rt.hasOwnProperty;function qt(t){if(!Q(t))return Kt(t);var r=[];for(var e in Object(t))Wt.call(t,e)&&e!="constructor"&&r.push(e);return r}function Nt(t){return X(t)?Ft(t):qt(t)}function Xt(t,r){for(var e=-1,n=r.length,s=t.length;++e<n;)t[s+e]=r[e];return t}function Ht(){this.__data__=new w,this.size=0}function Qt(t){var r=this.__data__,e=r.delete(t);return this.size=r.size,e}function Yt(t){return this.__data__.get(t)}function Zt(t){return this.__data__.has(t)}var Jt=200;function te(t,r){var e=this.__data__;if(e instanceof w){var n=e.__data__;if(!y||n.length<Jt-1)return n.push([t,r]),this.size=++e.size,this;e=this.__data__=new W(n)}return e.set(t,r),this.size=e.size,this}function b(t){var r=this.__data__=new w(t);this.size=r.size}b.prototype.clear=Ht;b.prototype.delete=Qt;b.prototype.get=Yt;b.prototype.has=Zt;b.prototype.set=te;function ee(t,r){for(var e=-1,n=t==null?0:t.length,s=0,p=[];++e<n;){var f=t[e];r(f,e,t)&&(p[s++]=f)}return p}function re(){return[]}var ae=Object.prototype,ne=ae.propertyIsEnumerable,I=Object.getOwnPropertySymbols,oe=I?function(t){return t==null?[]:(t=Object(t),ee(I(t),function(r){return ne.call(t,r)}))}:re;const se=oe;function ie(t,r,e){var n=r(t);return U(t)?n:Xt(n,e(t))}function je(t){return ie(t,Nt,se)}var ce=l(c,"DataView");const v=ce;var ue=l(c,"Promise");const m=ue;var pe=l(c,"Set");const A=pe;var E="[object Map]",fe="[object Object]",M="[object Promise]",C="[object Set]",k="[object WeakMap]",B="[object DataView]",ge=u(v),be=u(y),ye=u(m),le=u(A),de=u(j),i=d;(v&&i(new v(new ArrayBuffer(1)))!=B||y&&i(new y)!=E||m&&i(m.resolve())!=M||A&&i(new A)!=C||j&&i(new j)!=k)&&(i=function(t){var r=d(t),e=r==fe?t.constructor:void 0,n=e?u(e):"";if(n)switch(n){case ge:return B;case be:return E;case ye:return M;case le:return C;case de:return k}return r});const ve=i;var he=c.Uint8Array;const me=he;export{A as S,me as U,rt as a,Xt as b,ie as c,ve as d,Ct as e,it as f,se as g,b as h,z as i,je as j,Nt as k,X as l,zt as m,O as n,Q as o,Ft as p,Gt as q,re as s};
|
||||
@ -1 +0,0 @@
|
||||
import{aY as p,b9 as O,aZ as y,bd as x}from"./base-9962c822.js";import{o as v,l as m,p as w,q as P,U as u}from"./_Uint8Array-c92ffa25.js";var i=Object.create,b=function(){function e(){}return function(n){if(!p(n))return{};if(i)return i(n);e.prototype=n;var r=new e;return e.prototype=void 0,r}}();const A=b;function M(e,n){var r=-1,t=e.length;for(n||(n=Array(t));++r<t;)n[r]=e[r];return n}function N(e,n,r,t){var g=!r;r||(r={});for(var a=-1,h=n.length;++a<h;){var o=n[a],s=t?t(r[o],e[o],o,r,e):void 0;s===void 0&&(s=e[o]),g?O(r,o,s):y(r,o,s)}return r}function C(e){var n=[];if(e!=null)for(var r in Object(e))n.push(r);return n}var U=Object.prototype,I=U.hasOwnProperty;function K(e){if(!p(e))return C(e);var n=v(e),r=[];for(var t in e)t=="constructor"&&(n||!I.call(e,t))||r.push(t);return r}function Y(e){return m(e)?w(e,!0):K(e)}var L=P(Object.getPrototypeOf,Object);const T=L;var d=typeof exports=="object"&&exports&&!exports.nodeType&&exports,f=d&&typeof module=="object"&&module&&!module.nodeType&&module,B=f&&f.exports===d,l=B?x.Buffer:void 0,c=l?l.allocUnsafe:void 0;function Z(e,n){if(n)return e.slice();var r=e.length,t=c?c(r):new e.constructor(r);return e.copy(t),t}function E(e){var n=new e.constructor(e.byteLength);return new u(n).set(new u(e)),n}function D(e,n){var r=n?E(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function F(e){return typeof e.constructor=="function"&&!v(e)?A(T(e)):{}}export{E as a,D as b,N as c,M as d,Z as e,T as g,F as i,Y as k};
|
||||
@ -0,0 +1 @@
|
||||
import{aL as p,aY as O,aM as y,b1 as x}from"./base-d79f9f62.js";import{o as v,l as m,p as w,q as P,U as u}from"./_Uint8Array-bbbfd6ac.js";var i=Object.create,b=function(){function e(){}return function(n){if(!p(n))return{};if(i)return i(n);e.prototype=n;var r=new e;return e.prototype=void 0,r}}();const A=b;function q(e,n){var r=-1,t=e.length;for(n||(n=Array(t));++r<t;)n[r]=e[r];return n}function N(e,n,r,t){var g=!r;r||(r={});for(var a=-1,h=n.length;++a<h;){var o=n[a],s=t?t(r[o],e[o],o,r,e):void 0;s===void 0&&(s=e[o]),g?O(r,o,s):y(r,o,s)}return r}function C(e){var n=[];if(e!=null)for(var r in Object(e))n.push(r);return n}var L=Object.prototype,U=L.hasOwnProperty;function I(e){if(!p(e))return C(e);var n=v(e),r=[];for(var t in e)t=="constructor"&&(n||!U.call(e,t))||r.push(t);return r}function Y(e){return m(e)?w(e,!0):I(e)}var K=P(Object.getPrototypeOf,Object);const T=K;var d=typeof exports=="object"&&exports&&!exports.nodeType&&exports,f=d&&typeof module=="object"&&module&&!module.nodeType&&module,B=f&&f.exports===d,l=B?x.Buffer:void 0,c=l?l.allocUnsafe:void 0;function D(e,n){if(n)return e.slice();var r=e.length,t=c?c(r):new e.constructor(r);return e.copy(t),t}function E(e){var n=new e.constructor(e.byteLength);return new u(n).set(new u(e)),n}function F(e,n){var r=n?E(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function G(e){return typeof e.constructor=="function"&&!v(e)?A(T(e)):{}}export{E as a,F as b,N as c,q as d,D as e,T as g,G as i,Y as k};
|
||||
1
niucloud/public/admin/assets/_isIterateeCall-559d3e90.js
Normal file
1
niucloud/public/admin/assets/_isIterateeCall-559d3e90.js
Normal file
@ -0,0 +1 @@
|
||||
import{aL as i,aD as t,aX as f}from"./base-d79f9f62.js";import{l as n}from"./_Uint8Array-bbbfd6ac.js";function p(e,a,r){if(!i(r))return!1;var s=typeof a;return(s=="number"?n(r)&&t(a,r.length):s=="string"&&a in r)?f(r[a],e):!1}export{p as i};
|
||||
@ -1 +0,0 @@
|
||||
import{aY as i,aQ as t,b8 as f}from"./base-9962c822.js";import{l as n}from"./_Uint8Array-c92ffa25.js";function p(e,a,r){if(!i(r))return!1;var s=typeof a;return(s=="number"?n(r)&&t(a,r.length):s=="string"&&a in r)?f(r[a],e):!1}export{p as i};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
niucloud/public/admin/assets/add-member-014c5ff3.js
Normal file
1
niucloud/public/admin/assets/add-member-014c5ff3.js
Normal file
@ -0,0 +1 @@
|
||||
import{_ as o}from"./add-member.vue_vue_type_script_setup_true_lang-756e228c.js";import"./base-d79f9f62.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import"./index-9e0d1e6c.js";import"./pinia-55149fa9.js";import"./member-5b79e301.js";import"./index-6fcaf7b3.js";import"./vue-router-fc35ac55.js";import"./storage-5316d819.js";import"./index-2048a34f.js";import"./index-3fd412a3.js";import"./index-542aa78e.js";import"./typescript-defaf979.js";import"./index-34cd7f55.js";import"./system-d23898e7.js";import"./index-5dbb8f83.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-f249e665.js";import"./event-9519ab40.js";import"./index-b6ca69fd.js";import"./index-427f5a83.js";import"./index-71aec1df.js";import"./error-78e43d3e.js";import"./index-6befecc6.js";import"./_Uint8Array-bbbfd6ac.js";import"./_initCloneObject-a2c44136.js";import"./index-03649f16.js";import"./index-bdfee32a.js";import"./index-d0ada8fb.js";import"./index-cf3a42e3.js";import"./scroll-aa5f3aa0.js";import"./vnode-772b0c47.js";import"./index-6229e0fd.js";import"./focus-trap-50fa5770.js";import"./directive-13582d99.js";export{o as default};
|
||||
@ -1 +0,0 @@
|
||||
import{_ as o}from"./add-member.vue_vue_type_script_setup_true_lang-cade17ca.js";import"./base-9962c822.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import"./index-5516aed6.js";import"./pinia-a9fc3924.js";import"./member-8490bdef.js";import"./index-e026a545.js";import"./vue-router-d7e63612.js";import"./storage-0874d153.js";import"./index-57446bef.js";import"./index-5c4817f4.js";import"./index-2cabf788.js";import"./typescript-defaf979.js";import"./index-c98e204a.js";import"./system-1108e5c1.js";import"./index-c4e33d8d.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-19251c17.js";import"./event-9519ab40.js";import"./index-ec548bfb.js";import"./index-6b77b11a.js";import"./index-71b7d8f4.js";import"./error-78e43d3e.js";import"./index-7c833df7.js";import"./_Uint8Array-c92ffa25.js";import"./_initCloneObject-41dd9efb.js";import"./index-7ab57426.js";import"./index-1370ab44.js";import"./index-e2acd187.js";import"./index-91fda20f.js";import"./scroll-d85c8f38.js";import"./vnode-562dae50.js";import"./index-df16e899.js";import"./focus-trap-d0fc8554.js";import"./directive-f75d4a7d.js";export{o as default};
|
||||
@ -1 +1 @@
|
||||
import{d as F,r as b,R as M,c as R,e as v,v as h,x as d,g as $,y as s,A as V,B as y,u as r,Q as H}from"./base-9962c822.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{t as l}from"./index-5516aed6.js";import{p as I,q as j,r as A}from"./member-8490bdef.js";import{E as L}from"./index-19251c17.js";import{a as O,E as T}from"./index-7c833df7.js";import{E as z}from"./index-7ab57426.js";import{E as Q}from"./index-e2acd187.js";import{v as S}from"./directive-f75d4a7d.js";const Z={class:"dialog-footer"},ne=F({__name:"add-member",emits:["complete"],setup(G,{expose:N,emit:E}){const p=b(!1),i=b(!1);let u="",c="";const f={member_id:"",nickname:"",member_no:"",init_member_no:"",mobile:"",password:"",password_copy:""},a=M({...f}),_=b(),P=R(()=>({member_no:[{required:!0,message:l("memberNoPlaceholder"),trigger:"blur"},{validator:C,trigger:"blur"}],mobile:[{required:!0,message:l("mobilePlaceholder"),trigger:"blur"},{validator:x,trigger:"blur"}],password:[{required:!0,message:l("passwordPlaceholder"),trigger:"blur"}],password_copy:[{required:!0,message:l("passwordPlaceholder"),trigger:"blur"},{validator:D,trigger:"blur"}]})),x=(m,e,o)=>{e&&!/^1[3-9]\d{9}$/.test(e)?o(new Error(l("mobileHint"))):o()},D=(m,e,o)=>{e!=a.password?o(l("doubleCipherHint")):o()},C=(m,e,o)=>{e&&!/^[0-9a-zA-Z]*$/g.test(e)?o(new Error(l("memberNoHint"))):o()},k=async()=>{await j().then(m=>{c=m.data}).catch(()=>{})},U=async m=>{if(i.value||!m)return;const e=A;await m.validate(async o=>{o&&(i.value=!0,e(a).then(g=>{i.value=!1,p.value=!1,E("complete")}).catch(()=>{i.value=!1}))})};return N({showDialog:p,setFormData:async(m=null)=>{if(i.value=!0,Object.assign(a,f),u=l("addMember"),m){u=l("updateMember");const e=await(await I(m.member_id)).data;e&&Object.keys(a).forEach(o=>{e[o]!=null&&(a[o]=e[o])})}else await k(),a.member_no=c,a.init_member_no=c;i.value=!1}}),(m,e)=>{const o=L,n=O,g=T,w=z,q=Q,B=S;return v(),h(q,{modelValue:p.value,"onUpdate:modelValue":e[7]||(e[7]=t=>p.value=t),title:r(u),width:"500px","destroy-on-close":!0},{footer:d(()=>[$("span",Z,[s(w,{onClick:e[5]||(e[5]=t=>p.value=!1)},{default:d(()=>[V(y(r(l)("cancel")),1)]),_:1}),s(w,{type:"primary",loading:i.value,onClick:e[6]||(e[6]=t=>U(_.value))},{default:d(()=>[V(y(r(l)("confirm")),1)]),_:1},8,["loading"])])]),default:d(()=>[H((v(),h(g,{model:a,"label-width":"90px",ref_key:"formRef",ref:_,rules:r(P),class:"page-form"},{default:d(()=>[s(n,{label:r(l)("memberNo"),prop:"member_no"},{default:d(()=>[s(o,{modelValue:a.member_no,"onUpdate:modelValue":e[0]||(e[0]=t=>a.member_no=t),clearable:"",maxlength:"20",placeholder:r(l)("memberNoPlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("mobile"),prop:"mobile"},{default:d(()=>[s(o,{modelValue:a.mobile,"onUpdate:modelValue":e[1]||(e[1]=t=>a.mobile=t),clearable:"",placeholder:r(l)("mobilePlaceholder"),type:"number",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("nickname")},{default:d(()=>[s(o,{modelValue:a.nickname,"onUpdate:modelValue":e[2]||(e[2]=t=>a.nickname=t),clearable:"",placeholder:r(l)("nickNamePlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("password"),prop:"password"},{default:d(()=>[s(o,{modelValue:a.password,"onUpdate:modelValue":e[3]||(e[3]=t=>a.password=t),type:"password",placeholder:r(l)("passwordPlaceholder"),clearable:"",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("passwordCopy"),prop:"password_copy"},{default:d(()=>[s(o,{modelValue:a.password_copy,"onUpdate:modelValue":e[4]||(e[4]=t=>a.password_copy=t),type:"password",placeholder:r(l)("passwordPlaceholder"),clearable:"",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[B,i.value]])]),_:1},8,["modelValue","title"])}}});export{ne as _};
|
||||
import{d as F,r as b,R as M,c as R,e as v,v as h,x as d,g as $,y as s,A as V,B as y,u as r,Q as H}from"./base-d79f9f62.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{t as l}from"./index-9e0d1e6c.js";import{p as I,q as j,r as A}from"./member-5b79e301.js";import{E as L}from"./index-f249e665.js";import{a as O,E as T}from"./index-6befecc6.js";import{E as z}from"./index-03649f16.js";import{E as Q}from"./index-d0ada8fb.js";import{v as S}from"./directive-13582d99.js";const Z={class:"dialog-footer"},ne=F({__name:"add-member",emits:["complete"],setup(G,{expose:N,emit:E}){const p=b(!1),i=b(!1);let u="",c="";const f={member_id:"",nickname:"",member_no:"",init_member_no:"",mobile:"",password:"",password_copy:""},a=M({...f}),_=b(),P=R(()=>({member_no:[{required:!0,message:l("memberNoPlaceholder"),trigger:"blur"},{validator:C,trigger:"blur"}],mobile:[{required:!0,message:l("mobilePlaceholder"),trigger:"blur"},{validator:x,trigger:"blur"}],password:[{required:!0,message:l("passwordPlaceholder"),trigger:"blur"}],password_copy:[{required:!0,message:l("passwordPlaceholder"),trigger:"blur"},{validator:D,trigger:"blur"}]})),x=(m,e,o)=>{e&&!/^1[3-9]\d{9}$/.test(e)?o(new Error(l("mobileHint"))):o()},D=(m,e,o)=>{e!=a.password?o(l("doubleCipherHint")):o()},C=(m,e,o)=>{e&&!/^[0-9a-zA-Z]*$/g.test(e)?o(new Error(l("memberNoHint"))):o()},k=async()=>{await j().then(m=>{c=m.data}).catch(()=>{})},U=async m=>{if(i.value||!m)return;const e=A;await m.validate(async o=>{o&&(i.value=!0,e(a).then(g=>{i.value=!1,p.value=!1,E("complete")}).catch(()=>{i.value=!1}))})};return N({showDialog:p,setFormData:async(m=null)=>{if(i.value=!0,Object.assign(a,f),u=l("addMember"),m){u=l("updateMember");const e=await(await I(m.member_id)).data;e&&Object.keys(a).forEach(o=>{e[o]!=null&&(a[o]=e[o])})}else await k(),a.member_no=c,a.init_member_no=c;i.value=!1}}),(m,e)=>{const o=L,n=O,g=T,w=z,q=Q,B=S;return v(),h(q,{modelValue:p.value,"onUpdate:modelValue":e[7]||(e[7]=t=>p.value=t),title:r(u),width:"500px","destroy-on-close":!0},{footer:d(()=>[$("span",Z,[s(w,{onClick:e[5]||(e[5]=t=>p.value=!1)},{default:d(()=>[V(y(r(l)("cancel")),1)]),_:1}),s(w,{type:"primary",loading:i.value,onClick:e[6]||(e[6]=t=>U(_.value))},{default:d(()=>[V(y(r(l)("confirm")),1)]),_:1},8,["loading"])])]),default:d(()=>[H((v(),h(g,{model:a,"label-width":"90px",ref_key:"formRef",ref:_,rules:r(P),class:"page-form"},{default:d(()=>[s(n,{label:r(l)("memberNo"),prop:"member_no"},{default:d(()=>[s(o,{modelValue:a.member_no,"onUpdate:modelValue":e[0]||(e[0]=t=>a.member_no=t),clearable:"",maxlength:"20",placeholder:r(l)("memberNoPlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("mobile"),prop:"mobile"},{default:d(()=>[s(o,{modelValue:a.mobile,"onUpdate:modelValue":e[1]||(e[1]=t=>a.mobile=t),clearable:"",placeholder:r(l)("mobilePlaceholder"),type:"number",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("nickname")},{default:d(()=>[s(o,{modelValue:a.nickname,"onUpdate:modelValue":e[2]||(e[2]=t=>a.nickname=t),clearable:"",placeholder:r(l)("nickNamePlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("password"),prop:"password"},{default:d(()=>[s(o,{modelValue:a.password,"onUpdate:modelValue":e[3]||(e[3]=t=>a.password=t),type:"password",placeholder:r(l)("passwordPlaceholder"),clearable:"",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("passwordCopy"),prop:"password_copy"},{default:d(()=>[s(o,{modelValue:a.password_copy,"onUpdate:modelValue":e[4]||(e[4]=t=>a.password_copy=t),type:"password",placeholder:r(l)("passwordPlaceholder"),clearable:"",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[B,i.value]])]),_:1},8,["modelValue","title"])}}});export{ne as _};
|
||||
@ -1 +0,0 @@
|
||||
import{_ as o}from"./add-table.vue_vue_type_script_setup_true_lang-93a36f1b.js";import"./base-9962c822.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./index-5516aed6.js";import"./pinia-a9fc3924.js";import"./tools-db2d0aa0.js";import"./index-e026a545.js";import"./vue-router-d7e63612.js";import"./storage-0874d153.js";import"./index-57446bef.js";import"./index-5c4817f4.js";import"./index-2cabf788.js";import"./typescript-defaf979.js";import"./index-c98e204a.js";import"./system-1108e5c1.js";import"./index-c4e33d8d.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-4906bae6.js";import"./index-2ee99ba1.js";import"./error-78e43d3e.js";import"./index-ab38878f.js";import"./index-71b7d8f4.js";import"./focus-trap-d0fc8554.js";import"./_Uint8Array-c92ffa25.js";import"./_initCloneObject-41dd9efb.js";import"./index-65bc84a3.js";import"./event-9519ab40.js";import"./index-6b77b11a.js";import"./isEqual-240b5e0a.js";import"./flatten-940b9f2c.js";import"./_isIterateeCall-909b9c9e.js";import"./debounce-9674000c.js";import"./index-6edd46fb.js";import"./index-df16e899.js";import"./index-19251c17.js";import"./index-ec548bfb.js";import"./index-7ab57426.js";import"./index-1370ab44.js";import"./index-e2acd187.js";import"./index-91fda20f.js";import"./scroll-d85c8f38.js";import"./vnode-562dae50.js";import"./directive-f75d4a7d.js";export{o as default};
|
||||
1
niucloud/public/admin/assets/add-table-9047be4c.js
Normal file
1
niucloud/public/admin/assets/add-table-9047be4c.js
Normal file
@ -0,0 +1 @@
|
||||
import{_ as o}from"./add-table.vue_vue_type_script_setup_true_lang-5daccc86.js";import"./base-d79f9f62.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./index-9e0d1e6c.js";import"./pinia-55149fa9.js";import"./tools-6d0ea037.js";import"./index-6fcaf7b3.js";import"./vue-router-fc35ac55.js";import"./storage-5316d819.js";import"./index-2048a34f.js";import"./index-3fd412a3.js";import"./index-542aa78e.js";import"./typescript-defaf979.js";import"./index-34cd7f55.js";import"./system-d23898e7.js";import"./index-5dbb8f83.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-2b5d43b9.js";import"./index-2462875f.js";import"./error-78e43d3e.js";import"./index-54a839cc.js";import"./index-71aec1df.js";import"./focus-trap-50fa5770.js";import"./_Uint8Array-bbbfd6ac.js";import"./_initCloneObject-a2c44136.js";import"./index-d4057e2a.js";import"./event-9519ab40.js";import"./index-427f5a83.js";import"./isEqual-3f50b221.js";import"./flatten-0bbd547a.js";import"./_isIterateeCall-559d3e90.js";import"./debounce-6fd93949.js";import"./index-af085fbd.js";import"./index-6229e0fd.js";import"./index-f249e665.js";import"./index-b6ca69fd.js";import"./index-03649f16.js";import"./index-bdfee32a.js";import"./index-d0ada8fb.js";import"./index-cf3a42e3.js";import"./scroll-aa5f3aa0.js";import"./vnode-772b0c47.js";import"./directive-13582d99.js";export{o as default};
|
||||
@ -1 +1 @@
|
||||
import{d as T,r as c,R as N,c as x,e as u,v as _,x as s,g as f,Q as B,u as a,B as b,y as d,A as L,i as k}from"./base-9962c822.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{t as i}from"./index-5516aed6.js";import{j as z,k as R}from"./tools-db2d0aa0.js";import{b as F}from"./vue-router-d7e63612.js";import{a as P,E as U}from"./index-4906bae6.js";import{E as j}from"./index-19251c17.js";import{E as q}from"./index-7ab57426.js";import{E as A}from"./index-e2acd187.js";import{v as G}from"./directive-f75d4a7d.js";const I={class:""},pe=T({__name:"add-table",emits:["complete"],setup(Q,{expose:g,emit:S}){const h=F();let o=c(!1);const m=c("");let e=N({loading:!0,data:[],searchParam:{table_name:"",table_content:""}});const v=x(()=>e.data.filter(t=>!m.value||t.Name.toLowerCase().includes(m.value.toLowerCase())||t.Comment.toLowerCase().includes(m.value.toLowerCase()))),p=()=>{e.loading=!0,z().then(t=>{e.loading=!1,e.data=t.data}).catch(()=>{e.loading=!1})};p();const w=t=>{let l=t.Name;e.loading=!0,R({table_name:l}).then(n=>{e.loading=!1,o.value=!1,h.push({path:"/tools/code/edit",query:{id:n.data.id}})}).catch(n=>{e.loading=!1})};return g({showDialog:o,setFormData:async(t=null)=>{p()}}),(t,l)=>{const n=P,C=j,y=q,D=U,E=A,V=G;return u(),_(E,{modelValue:a(o),"onUpdate:modelValue":l[1]||(l[1]=r=>k(o)?o.value=r:o=r),title:a(i)("addCode"),width:"800px","destroy-on-close":!0},{default:s(()=>[f("div",I,[B((u(),_(D,{data:a(v),size:"large",height:"400"},{empty:s(()=>[f("span",null,b(a(e).loading?"":a(i)("emptyData")),1)]),default:s(()=>[d(n,{prop:"Name",label:a(i)("tableName"),"min-width":"150"},null,8,["label"]),d(n,{prop:"Comment",label:a(i)("tableComment"),"min-width":"120"},null,8,["label"]),d(n,{align:"right","min-width":"150"},{header:s(()=>[d(C,{modelValue:m.value,"onUpdate:modelValue":l[0]||(l[0]=r=>m.value=r),size:"small",placeholder:a(i)("searchPlaceholder")},null,8,["modelValue","placeholder"])]),default:s(r=>[d(y,{size:"small",type:"primary",onClick:J=>w(r.row)},{default:s(()=>[L(b(a(i)("addBtn")),1)]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])),[[V,a(e).loading]])])]),_:1},8,["modelValue","title"])}}});export{pe as _};
|
||||
import{d as T,r as c,R as N,c as x,e as u,v as _,x as s,g as f,Q as B,u as a,B as b,y as d,A as L,i as k}from"./base-d79f9f62.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{t as i}from"./index-9e0d1e6c.js";import{j as z,k as R}from"./tools-6d0ea037.js";import{b as F}from"./vue-router-fc35ac55.js";import{a as P,E as U}from"./index-2b5d43b9.js";import{E as j}from"./index-f249e665.js";import{E as q}from"./index-03649f16.js";import{E as A}from"./index-d0ada8fb.js";import{v as G}from"./directive-13582d99.js";const I={class:""},pe=T({__name:"add-table",emits:["complete"],setup(Q,{expose:g,emit:S}){const h=F();let o=c(!1);const m=c("");let e=N({loading:!0,data:[],searchParam:{table_name:"",table_content:""}});const v=x(()=>e.data.filter(t=>!m.value||t.Name.toLowerCase().includes(m.value.toLowerCase())||t.Comment.toLowerCase().includes(m.value.toLowerCase()))),p=()=>{e.loading=!0,z().then(t=>{e.loading=!1,e.data=t.data}).catch(()=>{e.loading=!1})};p();const w=t=>{let l=t.Name;e.loading=!0,R({table_name:l}).then(n=>{e.loading=!1,o.value=!1,h.push({path:"/tools/code/edit",query:{id:n.data.id}})}).catch(n=>{e.loading=!1})};return g({showDialog:o,setFormData:async(t=null)=>{p()}}),(t,l)=>{const n=P,C=j,y=q,D=U,E=A,V=G;return u(),_(E,{modelValue:a(o),"onUpdate:modelValue":l[1]||(l[1]=r=>k(o)?o.value=r:o=r),title:a(i)("addCode"),width:"800px","destroy-on-close":!0},{default:s(()=>[f("div",I,[B((u(),_(D,{data:a(v),size:"large",height:"400"},{empty:s(()=>[f("span",null,b(a(e).loading?"":a(i)("emptyData")),1)]),default:s(()=>[d(n,{prop:"Name",label:a(i)("tableName"),"min-width":"150"},null,8,["label"]),d(n,{prop:"Comment",label:a(i)("tableComment"),"min-width":"120"},null,8,["label"]),d(n,{align:"right","min-width":"150"},{header:s(()=>[d(C,{modelValue:m.value,"onUpdate:modelValue":l[0]||(l[0]=r=>m.value=r),size:"small",placeholder:a(i)("searchPlaceholder")},null,8,["modelValue","placeholder"])]),default:s(r=>[d(y,{size:"small",type:"primary",onClick:J=>w(r.row)},{default:s(()=>[L(b(a(i)("addBtn")),1)]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])),[[V,a(e).loading]])])]),_:1},8,["modelValue","title"])}}});export{pe as _};
|
||||
@ -1 +1 @@
|
||||
import{b as t}from"./index-e026a545.js";function o(n){return t.get("addon/local",n,{showSuccessMessage:!0})}function s(n){return t.post(`addon/install/${n.addon}`,n)}function a(n){return t.post(`addon/cloudinstall/${n.addon}`,n,{timeout:60*1e3})}function l(n){return t.post(`addon/uninstall/${n.addon}`,n,{showSuccessMessage:!0})}function d(n){return t.get(`addon/install/check/${n}`,{timeout:30*1e3})}function u(){return t.get("addon/installtask")}function c(n){return t.get(`addon/cloudinstall/${n}`)}function i(n){return t.get(`addon/uninstall/check/${n}`,{timeout:30*1e3})}function r(n){return t.put(`addon/install/cancel/${n}`,{},{showErrorMessage:!1})}function g(){return t.get("addon/list/install")}export{o as a,u as b,a as c,c as d,i as e,r as f,g,s as i,d as p,l as u};
|
||||
import{b as t}from"./index-6fcaf7b3.js";function o(n){return t.get("addon/local",n,{showSuccessMessage:!0})}function s(n){return t.post(`addon/install/${n.addon}`,n)}function a(n){return t.post(`addon/cloudinstall/${n.addon}`,n,{timeout:60*1e3})}function l(n){return t.post(`addon/uninstall/${n.addon}`,n,{showSuccessMessage:!0})}function d(n){return t.get(`addon/install/check/${n}`,{timeout:30*1e3})}function u(){return t.get("addon/installtask")}function c(n){return t.get(`addon/cloudinstall/${n}`)}function i(n){return t.get(`addon/uninstall/check/${n}`,{timeout:30*1e3})}function r(n){return t.put(`addon/install/cancel/${n}`,{},{showErrorMessage:!1})}function g(){return t.get("addon/list/install")}export{o as a,u as b,a as c,c as d,i as e,r as f,g,s as i,d as p,l as u};
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{d as w,R as y,e as c,f as x,y as o,x as a,g as n,B as l,u as t,Q as E,v as k,A as d}from"./base-9962c822.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css */import{t as i}from"./index-5516aed6.js";import{I as B}from"./sys-7988dced.js";import{u as C,b as N}from"./vue-router-d7e63612.js";import{a as T,E as A}from"./index-4906bae6.js";import{E as D}from"./index-7ab57426.js";import{E as L}from"./index-189f302e.js";import{v as R}from"./directive-f75d4a7d.js";import"./pinia-a9fc3924.js";import"./index-e026a545.js";import"./storage-0874d153.js";import"./index-57446bef.js";import"./index-5c4817f4.js";import"./index-2cabf788.js";import"./typescript-defaf979.js";import"./index-c98e204a.js";import"./system-1108e5c1.js";import"./index-c4e33d8d.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-2ee99ba1.js";import"./error-78e43d3e.js";import"./index-ab38878f.js";import"./index-71b7d8f4.js";import"./focus-trap-d0fc8554.js";import"./_Uint8Array-c92ffa25.js";import"./_initCloneObject-41dd9efb.js";import"./index-65bc84a3.js";import"./event-9519ab40.js";import"./index-6b77b11a.js";import"./isEqual-240b5e0a.js";import"./flatten-940b9f2c.js";import"./_isIterateeCall-909b9c9e.js";import"./debounce-9674000c.js";import"./index-6edd46fb.js";import"./index-df16e899.js";import"./index-1370ab44.js";const V={class:"main-container"},j={class:"flex justify-between items-center"},$={class:"text-[20px]"},z={class:"mt-[20px]"},Rt=w({__name:"agreement",setup(I){const _=C().meta.title;let e=y({loading:!0,data:[]});(()=>{e.loading=!0,e.data=[],B().then(r=>{Object.keys(r.data).forEach(s=>e.data.push(r.data[s])),e.loading=!1}).catch(()=>{e.loading=!1})})();const u=N(),f=r=>{u.push(`/setting/agreement/edit?key=${r.agreement_key}`)};return(r,s)=>{const m=T,g=D,h=A,b=L,v=R;return c(),x("div",V,[o(b,{class:"box-card !border-none",shadow:"never"},{default:a(()=>[n("div",j,[n("span",$,l(t(_)),1)]),n("div",z,[E((c(),k(h,{data:t(e).data,size:"large"},{empty:a(()=>[n("span",null,l(t(e).loading?"":t(i)("emptyData")),1)]),default:a(()=>[o(m,{prop:"type_name",label:t(i)("typeName"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),o(m,{prop:"title",label:t(i)("title"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),o(m,{label:t(i)("updateTime"),"min-width":"180",align:"center"},{default:a(({row:p})=>[d(l(p.update_time||""),1)]),_:1},8,["label"]),o(m,{label:t(i)("operation"),align:"right",fixed:"right",width:"100"},{default:a(({row:p})=>[o(g,{type:"primary",link:"",onClick:S=>f(p)},{default:a(()=>[d(l(t(i)("config")),1)]),_:2},1032,["onClick"])]),_:1},8,["label"])]),_:1},8,["data"])),[[v,t(e).loading]])])]),_:1})])}}});export{Rt as default};
|
||||
import{d as w,R as y,e as c,f as x,y as o,x as a,g as n,B as l,u as t,Q as E,v as k,A as d}from"./base-d79f9f62.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css */import{t as i}from"./index-9e0d1e6c.js";import{I as B}from"./sys-3d5b784a.js";import{u as C,b as N}from"./vue-router-fc35ac55.js";import{a as T,E as A}from"./index-2b5d43b9.js";import{E as D}from"./index-03649f16.js";import{E as L}from"./index-ba59a1dc.js";import{v as R}from"./directive-13582d99.js";import"./pinia-55149fa9.js";import"./index-6fcaf7b3.js";import"./storage-5316d819.js";import"./index-2048a34f.js";import"./index-3fd412a3.js";import"./index-542aa78e.js";import"./typescript-defaf979.js";import"./index-34cd7f55.js";import"./system-d23898e7.js";import"./index-5dbb8f83.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-2462875f.js";import"./error-78e43d3e.js";import"./index-54a839cc.js";import"./index-71aec1df.js";import"./focus-trap-50fa5770.js";import"./_Uint8Array-bbbfd6ac.js";import"./_initCloneObject-a2c44136.js";import"./index-d4057e2a.js";import"./event-9519ab40.js";import"./index-427f5a83.js";import"./isEqual-3f50b221.js";import"./flatten-0bbd547a.js";import"./_isIterateeCall-559d3e90.js";import"./debounce-6fd93949.js";import"./index-af085fbd.js";import"./index-6229e0fd.js";import"./index-bdfee32a.js";const V={class:"main-container"},j={class:"flex justify-between items-center"},$={class:"text-[20px]"},z={class:"mt-[20px]"},Rt=w({__name:"agreement",setup(I){const _=C().meta.title;let e=y({loading:!0,data:[]});(()=>{e.loading=!0,e.data=[],B().then(r=>{Object.keys(r.data).forEach(s=>e.data.push(r.data[s])),e.loading=!1}).catch(()=>{e.loading=!1})})();const u=N(),f=r=>{u.push(`/setting/agreement/edit?key=${r.agreement_key}`)};return(r,s)=>{const m=T,g=D,h=A,b=L,v=R;return c(),x("div",V,[o(b,{class:"box-card !border-none",shadow:"never"},{default:a(()=>[n("div",j,[n("span",$,l(t(_)),1)]),n("div",z,[E((c(),k(h,{data:t(e).data,size:"large"},{empty:a(()=>[n("span",null,l(t(e).loading?"":t(i)("emptyData")),1)]),default:a(()=>[o(m,{prop:"type_name",label:t(i)("typeName"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),o(m,{prop:"title",label:t(i)("title"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),o(m,{label:t(i)("updateTime"),"min-width":"180",align:"center"},{default:a(({row:p})=>[d(l(p.update_time||""),1)]),_:1},8,["label"]),o(m,{label:t(i)("operation"),align:"right",fixed:"right",width:"100"},{default:a(({row:p})=>[o(g,{type:"primary",link:"",onClick:S=>f(p)},{default:a(()=>[d(l(t(i)("config")),1)]),_:2},1032,["onClick"])]),_:1},8,["label"])]),_:1},8,["data"])),[[v,t(e).loading]])])]),_:1})])}}});export{Rt as default};
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{b as t}from"./index-e026a545.js";function e(){return t.get("aliapp/config")}function p(a){return t.put("aliapp/config",a,{showSuccessMessage:!0})}function n(){return t.get("aliapp/static")}export{n as a,e as g,p as s};
|
||||
import{b as t}from"./index-6fcaf7b3.js";function e(){return t.get("aliapp/config")}function p(a){return t.put("aliapp/config",a,{showSuccessMessage:!0})}function n(){return t.get("aliapp/static")}export{n as a,e as g,p as s};
|
||||
@ -1 +1 @@
|
||||
import{d as I,r as y,R as V,Q as R,e as l,f as _,g as t,B as o,u as s,y as x,x as i,F as M,z as N,v as D,A as T,H as b,bl as j,bm as z}from"./base-9962c822.js";/* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as U}from"./apply_empty-cdca3e85.js";import{t as p}from"./index-5516aed6.js";import{g as H}from"./addon-48b9aa5e.js";import{f as O,a as k}from"./storage-0874d153.js";import{b as P}from"./vue-router-d7e63612.js";import{u as Q,f as L}from"./index-e026a545.js";import{E as $}from"./index-7ab57426.js";import{E as q}from"./index-7332c216.js";import{E as G}from"./index-ab38878f.js";import{E as J}from"./index-d5900ec8.js";import{E as K}from"./index-967f94ef.js";import{v as W}from"./directive-f75d4a7d.js";import{_ as X}from"./_plugin-vue_export-helper-c27b6911.js";import"./pinia-a9fc3924.js";import"./index-57446bef.js";import"./index-5c4817f4.js";import"./index-2cabf788.js";import"./typescript-defaf979.js";import"./index-c98e204a.js";import"./system-1108e5c1.js";import"./index-c4e33d8d.js";import"./index-1370ab44.js";import"./index-6b77b11a.js";import"./index-71b7d8f4.js";import"./index-57e03d9e.js";import"./index-df16e899.js";import"./debounce-9674000c.js";import"./index-ec548bfb.js";import"./position-8e494ab3.js";import"./scroll-d85c8f38.js";import"./focus-trap-d0fc8554.js";const Y=""+new URL("app_store_default-c0531792.png",import.meta.url).href,h=m=>(j("data-v-726bb07d"),m=m(),z(),m),Z={class:"box-border pt-[68px] px-[76px] overview-top"},tt={key:0},et={class:"flex justify-between items-center"},ot={class:"font-[600] text-[26px] text-[#222] leading-[37px]"},st={class:"font-[500] text-[14px] text-[#222] leading-[20px] mt-[12px]"},pt=h(()=>t("div",{class:"mr-[9px] text-[#3F3F3F] iconfont iconxiazai01"},null,-1)),at={class:"font-[600] text-[14px] text-[#222] leading-[20px]"},nt={class:"flex flex-wrap mt-[40px]"},it=["onClick"],rt={class:"bg-[#F7FAFB] py-[18px] px-[24px] flex items-center app-item-head"},ct=h(()=>t("div",{class:"image-slot"},[t("img",{class:"w-[40px] h-[40px] rounded-[8px]",src:Y})],-1)),lt={class:"py-[18px] px-[24px]"},mt={class:"font-[600] leading-[1] text-[14px] text-[#222]"},dt={class:"text-[13px] text-[#6D7278] leading-[18px] mt-[6px] truncate"},_t=h(()=>t("div",{class:"w-[230px] mx-auto"},[t("img",{src:U,class:"max-w-full",alt:""})],-1)),xt={class:"flex items-center"},ut=I({__name:"app_manage",setup(m){const v=P(),u=Q(),a=y(!0),d=V({appList:[]}),f=y({});(()=>{a.value=!0,H().then(n=>{Object.values(n.data).forEach((e,r)=>{e.type=="app"&&d.appList.push(e)}),u.routers.forEach((e,r)=>{e.children&&e.children.length?(e.name=L(e.children),f.value[e.meta.app]=L(e.children)):f.value[e.meta.app]=e.name}),a.value=!1}).catch(()=>{a.value=!1})})();const w=n=>{k.set({key:"menuAppStorage",data:n.key}),k.set({key:"plugMenuTypeStorage",data:""});const e=u.appMenuList;e.push(n.key),u.setAppMenuList(e);let r=f.value[n.key];v.push({name:r})},g=()=>{v.push("/app_manage/app_store")};return(n,e)=>{const r=$,E=q,F=G,S=J,A=K,B=W;return R((l(),_("div",Z,[d.appList&&!a.value?(l(),_("div",tt,[t("div",et,[t("div",null,[t("div",ot,o(s(p)("app")),1),t("div",st,o(s(p)("versionInfo"))+" "+o(s(p)("currentVersion")),1)]),x(r,{onClick:g,class:"px-[15px]"},{default:i(()=>[pt,t("span",at,o(s(p)("appStore")),1)]),_:1})]),t("div",nt,[(l(!0),_(M,null,N(d.appList,(c,C)=>(l(),_("div",{key:C,class:"app-item w-[280px] box-border !bg-[#fff] rounded-[6px] cursor-pointer mr-[20px] mb-[20px] overflow-hidden",onClick:ht=>w(c)},[t("div",rt,[x(E,{class:"w-[44px] h-[44px] rounded-[8px]",src:s(O)(c.icon),fit:"contain"},{error:i(()=>[ct]),_:2},1032,["src"])]),t("div",lt,[t("div",mt,o(c.title),1),x(F,{class:"box-item",effect:"light",content:c.desc,placement:"bottom-start"},{default:i(()=>[t("div",dt,o(c.desc),1)]),_:2},1032,["content"])])],8,it))),128)),!d.appList.length&&!a.value?(l(),D(A,{key:0,class:"mx-auto overview-empty"},{image:i(()=>[_t]),description:i(()=>[t("p",xt,[t("span",null,o(s(p)("descriptionLeft")),1),x(S,{type:"primary",onClick:g,class:"mx-[5px]"},{default:i(()=>[T(o(s(p)("link")),1)]),_:1}),t("span",null,o(s(p)("descriptionRight")),1)])]),_:1})):b("",!0)])])):b("",!0)])),[[B,a.value]])}}});const pe=X(ut,[["__scopeId","data-v-726bb07d"]]);export{pe as default};
|
||||
import{d as I,r as y,R as V,Q as R,e as l,f as _,g as t,B as o,u as s,y as x,x as i,F as M,z as N,v as D,A as T,H as b,b9 as j,ba as z}from"./base-d79f9f62.js";/* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as U}from"./apply_empty-cdca3e85.js";import{t as p}from"./index-9e0d1e6c.js";import{g as H}from"./addon-3b05baad.js";import{f as O,a as k}from"./storage-5316d819.js";import{b as P}from"./vue-router-fc35ac55.js";import{u as Q,f as L}from"./index-6fcaf7b3.js";import{E as $}from"./index-03649f16.js";import{E as q}from"./index-8774d4a8.js";import{E as G}from"./index-54a839cc.js";import{E as J}from"./index-0b4254d8.js";import{E as K}from"./index-f7cbfd82.js";import{v as W}from"./directive-13582d99.js";import{_ as X}from"./_plugin-vue_export-helper-c27b6911.js";import"./pinia-55149fa9.js";import"./index-2048a34f.js";import"./index-3fd412a3.js";import"./index-542aa78e.js";import"./typescript-defaf979.js";import"./index-34cd7f55.js";import"./system-d23898e7.js";import"./index-5dbb8f83.js";import"./index-bdfee32a.js";import"./index-427f5a83.js";import"./index-71aec1df.js";import"./index-51305aa3.js";import"./index-6229e0fd.js";import"./debounce-6fd93949.js";import"./index-b6ca69fd.js";import"./position-4bcbb4c8.js";import"./scroll-aa5f3aa0.js";import"./focus-trap-50fa5770.js";const Y=""+new URL("app_store_default-c0531792.png",import.meta.url).href,h=m=>(j("data-v-726bb07d"),m=m(),z(),m),Z={class:"box-border pt-[68px] px-[76px] overview-top"},tt={key:0},et={class:"flex justify-between items-center"},ot={class:"font-[600] text-[26px] text-[#222] leading-[37px]"},st={class:"font-[500] text-[14px] text-[#222] leading-[20px] mt-[12px]"},pt=h(()=>t("div",{class:"mr-[9px] text-[#3F3F3F] iconfont iconxiazai01"},null,-1)),at={class:"font-[600] text-[14px] text-[#222] leading-[20px]"},nt={class:"flex flex-wrap mt-[40px]"},it=["onClick"],rt={class:"bg-[#F7FAFB] py-[18px] px-[24px] flex items-center app-item-head"},ct=h(()=>t("div",{class:"image-slot"},[t("img",{class:"w-[40px] h-[40px] rounded-[8px]",src:Y})],-1)),lt={class:"py-[18px] px-[24px]"},mt={class:"font-[600] leading-[1] text-[14px] text-[#222]"},dt={class:"text-[13px] text-[#6D7278] leading-[18px] mt-[6px] truncate"},_t=h(()=>t("div",{class:"w-[230px] mx-auto"},[t("img",{src:U,class:"max-w-full",alt:""})],-1)),xt={class:"flex items-center"},ut=I({__name:"app_manage",setup(m){const v=P(),u=Q(),a=y(!0),d=V({appList:[]}),f=y({});(()=>{a.value=!0,H().then(n=>{Object.values(n.data).forEach((e,r)=>{e.type=="app"&&d.appList.push(e)}),u.routers.forEach((e,r)=>{e.children&&e.children.length?(e.name=L(e.children),f.value[e.meta.app]=L(e.children)):f.value[e.meta.app]=e.name}),a.value=!1}).catch(()=>{a.value=!1})})();const w=n=>{k.set({key:"menuAppStorage",data:n.key}),k.set({key:"plugMenuTypeStorage",data:""});const e=u.appMenuList;e.push(n.key),u.setAppMenuList(e);let r=f.value[n.key];v.push({name:r})},g=()=>{v.push("/app_manage/app_store")};return(n,e)=>{const r=$,E=q,F=G,S=J,A=K,B=W;return R((l(),_("div",Z,[d.appList&&!a.value?(l(),_("div",tt,[t("div",et,[t("div",null,[t("div",ot,o(s(p)("app")),1),t("div",st,o(s(p)("versionInfo"))+" "+o(s(p)("currentVersion")),1)]),x(r,{onClick:g,class:"px-[15px]"},{default:i(()=>[pt,t("span",at,o(s(p)("appStore")),1)]),_:1})]),t("div",nt,[(l(!0),_(M,null,N(d.appList,(c,C)=>(l(),_("div",{key:C,class:"app-item w-[280px] box-border !bg-[#fff] rounded-[6px] cursor-pointer mr-[20px] mb-[20px] overflow-hidden",onClick:ht=>w(c)},[t("div",rt,[x(E,{class:"w-[44px] h-[44px] rounded-[8px]",src:s(O)(c.icon),fit:"contain"},{error:i(()=>[ct]),_:2},1032,["src"])]),t("div",lt,[t("div",mt,o(c.title),1),x(F,{class:"box-item",effect:"light",content:c.desc,placement:"bottom-start"},{default:i(()=>[t("div",dt,o(c.desc),1)]),_:2},1032,["content"])])],8,it))),128)),!d.appList.length&&!a.value?(l(),D(A,{key:0,class:"mx-auto overview-empty"},{image:i(()=>[_t]),description:i(()=>[t("p",xt,[t("span",null,o(s(p)("descriptionLeft")),1),x(S,{type:"primary",onClick:g,class:"mx-[5px]"},{default:i(()=>[T(o(s(p)("link")),1)]),_:1}),t("span",null,o(s(p)("descriptionRight")),1)])]),_:1})):b("",!0)])])):b("",!0)])),[[B,a.value]])}}});const pe=X(ut,[["__scopeId","data-v-726bb07d"]]);export{pe as default};
|
||||
@ -1 +0,0 @@
|
||||
import{d as _,r as d,e,f as a,y as o,x as r,F as u,z as f,u as h}from"./base-9962c822.js";/* empty css *//* empty css */import{t as y}from"./index-5516aed6.js";import{a as v}from"./attachment-75502009.js";import{a as b,E as x}from"./index-da093955.js";import{E}from"./index-189f302e.js";import"./pinia-a9fc3924.js";/* empty css */import"./index-5c4817f4.js";import"./index-57446bef.js";/* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index-2cabf788.js";import"./typescript-defaf979.js";import"./index-c98e204a.js";import"./index-19251c17.js";import"./event-9519ab40.js";import"./index-ec548bfb.js";import"./index-6b77b11a.js";import"./index-71b7d8f4.js";import"./error-78e43d3e.js";import"./index-7ab57426.js";import"./index-1370ab44.js";import"./index-e059001a.js";import"./index-ab38878f.js";import"./focus-trap-d0fc8554.js";import"./dropdown-ccb689be.js";import"./index.vue_vue_type_script_setup_true_lang-780dd221.js";/* empty css */import"./sys-7988dced.js";import"./index-e026a545.js";import"./vue-router-d7e63612.js";import"./storage-0874d153.js";import"./system-1108e5c1.js";import"./index-c4e33d8d.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-35c5a824.js";import"./index-91fda20f.js";import"./scroll-d85c8f38.js";import"./vnode-562dae50.js";import"./aria-adfa05c5.js";import"./validator-00f31ee7.js";import"./index-df16e899.js";import"./index-3427fe17.js";import"./index-2ee99ba1.js";import"./index-e2acd187.js";import"./index-4937003d.js";import"./index-20ef35a7.js";import"./index-7332c216.js";import"./index-57e03d9e.js";import"./debounce-9674000c.js";import"./position-8e494ab3.js";import"./index-967f94ef.js";import"./index-65bc84a3.js";import"./isEqual-240b5e0a.js";import"./_Uint8Array-c92ffa25.js";import"./flatten-940b9f2c.js";import"./index-26709bbd.js";import"./index-22970d5d.js";import"./index-fb8b7863.js";import"./strings-66191554.js";import"./index-6edd46fb.js";import"./index-7c833df7.js";import"./_initCloneObject-41dd9efb.js";import"./directive-f75d4a7d.js";const V={class:"main-container attachment-container"},oo=_({__name:"attachment",setup(g){const m=["image","video","icon"],p=d(m[0]);return(k,i)=>{const n=b,s=x,l=E;return e(),a("div",V,[o(l,{class:"box-card !border-none full-container",shadow:"never"},{default:r(()=>[o(s,{modelValue:p.value,"onUpdate:modelValue":i[0]||(i[0]=t=>p.value=t),class:""},{default:r(()=>[(e(),a(u,null,f(m,(t,c)=>o(n,{label:h(y)(t),name:t,key:c},{default:r(()=>[o(v,{scene:"attachment",type:t},null,8,["type"])]),_:2},1032,["label","name"])),64))]),_:1},8,["modelValue"])]),_:1})])}}});export{oo as default};
|
||||
File diff suppressed because one or more lines are too long
1
niucloud/public/admin/assets/attachment-c8633ff0.js
Normal file
1
niucloud/public/admin/assets/attachment-c8633ff0.js
Normal file
@ -0,0 +1 @@
|
||||
import{d as _,r as d,e,f as a,y as o,x as r,F as u,z as f,u as h}from"./base-d79f9f62.js";/* empty css *//* empty css */import{t as y}from"./index-9e0d1e6c.js";import{a as v}from"./attachment-b5785570.js";import{a as b,E as x}from"./index-3f47b227.js";import{E}from"./index-ba59a1dc.js";import"./pinia-55149fa9.js";/* empty css */import"./index-3fd412a3.js";import"./index-2048a34f.js";/* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index-542aa78e.js";import"./typescript-defaf979.js";import"./index-34cd7f55.js";import"./index-f249e665.js";import"./event-9519ab40.js";import"./index-b6ca69fd.js";import"./index-427f5a83.js";import"./index-71aec1df.js";import"./error-78e43d3e.js";import"./index-03649f16.js";import"./index-bdfee32a.js";import"./index-48558072.js";import"./index-54a839cc.js";import"./focus-trap-50fa5770.js";import"./dropdown-465e3407.js";import"./index.vue_vue_type_script_setup_true_lang-772fa486.js";/* empty css */import"./sys-3d5b784a.js";import"./index-6fcaf7b3.js";import"./vue-router-fc35ac55.js";import"./storage-5316d819.js";import"./system-d23898e7.js";import"./index-5dbb8f83.js";import"./_plugin-vue_export-helper-c27b6911.js";import"./index-d1262e7a.js";import"./index-cf3a42e3.js";import"./scroll-aa5f3aa0.js";import"./vnode-772b0c47.js";import"./aria-adfa05c5.js";import"./validator-8f1b170d.js";import"./index-6229e0fd.js";import"./index-e3c69a8e.js";import"./index-2462875f.js";import"./index-d0ada8fb.js";import"./index-50edbf04.js";import"./index-7d2f3ba9.js";import"./index-8774d4a8.js";import"./index-51305aa3.js";import"./debounce-6fd93949.js";import"./position-4bcbb4c8.js";import"./index-f7cbfd82.js";import"./index-d4057e2a.js";import"./isEqual-3f50b221.js";import"./_Uint8Array-bbbfd6ac.js";import"./flatten-0bbd547a.js";import"./index-014848fe.js";import"./index-f3bad52c.js";import"./index-3a5faaeb.js";import"./strings-d73e3c52.js";import"./index-af085fbd.js";import"./index-6befecc6.js";import"./_initCloneObject-a2c44136.js";import"./directive-13582d99.js";const V={class:"main-container attachment-container"},oo=_({__name:"attachment",setup(g){const m=["image","video","icon"],p=d(m[0]);return(k,i)=>{const n=b,s=x,l=E;return e(),a("div",V,[o(l,{class:"box-card !border-none full-container",shadow:"never"},{default:r(()=>[o(s,{modelValue:p.value,"onUpdate:modelValue":i[0]||(i[0]=t=>p.value=t),class:""},{default:r(()=>[(e(),a(u,null,f(m,(t,c)=>o(n,{label:h(y)(t),name:t,key:c},{default:r(()=>[o(v,{scene:"attachment",type:t},null,8,["type"])]),_:2},1032,["label","name"])),64))]),_:1},8,["modelValue"])]),_:1})])}}});export{oo as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
niucloud/public/admin/assets/base-d79f9f62.js
Normal file
1
niucloud/public/admin/assets/base-d79f9f62.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
import{b as o}from"./index-7c833df7.js";var r=1,n=4;function a(e){return o(e,r|n)}export{a as c};
|
||||
1
niucloud/public/admin/assets/cloneDeep-2aa6d741.js
Normal file
1
niucloud/public/admin/assets/cloneDeep-2aa6d741.js
Normal file
@ -0,0 +1 @@
|
||||
import{b as o}from"./index-6befecc6.js";var r=1,n=4;function a(e){return o(e,r|n)}export{a as c};
|
||||
1
niucloud/public/admin/assets/code-578a1fee.js
Normal file
1
niucloud/public/admin/assets/code-578a1fee.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{d as S,r as u,R as k,w as I,Q as R,e as q,f as B,g as a,B as n,u as t,y as s,x as r,bl as D,bm as N}from"./base-9962c822.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{t as e}from"./index-5516aed6.js";import{v as F}from"./sys-7988dced.js";import{E as V}from"./index-5c4817f4.js";import{u as L,b as U}from"./vue-router-d7e63612.js";import{a as d}from"./index-2cabf788.js";import{a as j,E as M}from"./index-7c833df7.js";import{E as P}from"./index-19251c17.js";import{E as Q}from"./index-189f302e.js";import{v as $}from"./directive-f75d4a7d.js";import{_ as z}from"./_plugin-vue_export-helper-c27b6911.js";import"./pinia-a9fc3924.js";import"./index-e026a545.js";import"./storage-0874d153.js";import"./index-57446bef.js";import"./system-1108e5c1.js";import"./index-c4e33d8d.js";import"./typescript-defaf979.js";import"./index-c98e204a.js";import"./error-78e43d3e.js";import"./index-71b7d8f4.js";import"./_Uint8Array-c92ffa25.js";import"./_initCloneObject-41dd9efb.js";import"./event-9519ab40.js";import"./index-ec548bfb.js";import"./index-6b77b11a.js";const A=""+new URL("preview-52aad803.png",import.meta.url).href,G=i=>(D("data-v-7a2a3fc4"),i=i(),N(),i),H={class:"main-container"},J={class:"flex ml-[18px] justify-between items-center mt-[20px]"},K={class:"text-[20px]"},O=G(()=>a("img",{class:"w-[500px]",src:A,alt:""},null,-1)),T=S({__name:"config",setup(i){const f=L().meta.title,m=u(!0),o=k({is_open:!1,request_url:""}),v=u();U(),F().then(p=>{o.request_url=p.data.web_url+"/",m.value=!1});const{copy:g,isSupported:w,copied:c}=V(),b=p=>{if(!w.value){d({message:e("notSupportCopy"),type:"warning"});return}g(p)};I(c,()=>{c.value&&d({message:e("copySuccess"),type:"success"})});const x=()=>{window.open(o.request_url)};return(p,l)=>{const _=j,y=P,h=Q,E=M,C=$;return R((q(),B("div",H,[a("div",J,[a("span",K,n(t(f)),1)]),s(E,{model:o,"label-width":"150px",ref_key:"formRef",ref:v,class:"page-form"},{default:r(()=>[s(h,{class:"box-card !border-none",shadow:"never"},{default:r(()=>[s(_,{label:t(e)("preview"),prop:"weapp_name"},{default:r(()=>[O]),_:1},8,["label"]),s(_,{label:t(e)("PCDomainName")},{default:r(()=>[s(y,{"model-value":o.request_url,class:"input-width",readonly:!0},{append:r(()=>[a("div",{class:"cursor-pointer",onClick:l[0]||(l[0]=X=>b(o.request_url))},n(t(e)("copy")),1)]),_:1},8,["model-value"]),a("span",{class:"ml-2 cursor-pointer visit-btn",onClick:x},n(t(e)("clickVisit")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])])),[[C,m.value]])}}});const qe=z(T,[["__scopeId","data-v-7a2a3fc4"]]);export{qe as default};
|
||||
import{d as S,r as u,R as k,w as I,Q as R,e as q,f as B,g as a,B as n,u as t,y as s,x as r,b9 as D,ba as N}from"./base-d79f9f62.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{t as e}from"./index-9e0d1e6c.js";import{v as F}from"./sys-3d5b784a.js";import{E as V}from"./index-3fd412a3.js";import{u as L,b as U}from"./vue-router-fc35ac55.js";import{a as d}from"./index-542aa78e.js";import{a as j,E as M}from"./index-6befecc6.js";import{E as P}from"./index-f249e665.js";import{E as Q}from"./index-ba59a1dc.js";import{v as $}from"./directive-13582d99.js";import{_ as z}from"./_plugin-vue_export-helper-c27b6911.js";import"./pinia-55149fa9.js";import"./index-6fcaf7b3.js";import"./storage-5316d819.js";import"./index-2048a34f.js";import"./system-d23898e7.js";import"./index-5dbb8f83.js";import"./typescript-defaf979.js";import"./index-34cd7f55.js";import"./error-78e43d3e.js";import"./index-71aec1df.js";import"./_Uint8Array-bbbfd6ac.js";import"./_initCloneObject-a2c44136.js";import"./event-9519ab40.js";import"./index-b6ca69fd.js";import"./index-427f5a83.js";const A=""+new URL("preview-52aad803.png",import.meta.url).href,G=i=>(D("data-v-7a2a3fc4"),i=i(),N(),i),H={class:"main-container"},J={class:"flex ml-[18px] justify-between items-center mt-[20px]"},K={class:"text-[20px]"},O=G(()=>a("img",{class:"w-[500px]",src:A,alt:""},null,-1)),T=S({__name:"config",setup(i){const f=L().meta.title,m=u(!0),o=k({is_open:!1,request_url:""}),v=u();U(),F().then(p=>{o.request_url=p.data.web_url+"/",m.value=!1});const{copy:g,isSupported:w,copied:c}=V(),b=p=>{if(!w.value){d({message:e("notSupportCopy"),type:"warning"});return}g(p)};I(c,()=>{c.value&&d({message:e("copySuccess"),type:"success"})});const x=()=>{window.open(o.request_url)};return(p,l)=>{const _=j,y=P,h=Q,E=M,C=$;return R((q(),B("div",H,[a("div",J,[a("span",K,n(t(f)),1)]),s(E,{model:o,"label-width":"150px",ref_key:"formRef",ref:v,class:"page-form"},{default:r(()=>[s(h,{class:"box-card !border-none",shadow:"never"},{default:r(()=>[s(_,{label:t(e)("preview"),prop:"weapp_name"},{default:r(()=>[O]),_:1},8,["label"]),s(_,{label:t(e)("PCDomainName")},{default:r(()=>[s(y,{"model-value":o.request_url,class:"input-width",readonly:!0},{append:r(()=>[a("div",{class:"cursor-pointer",onClick:l[0]||(l[0]=X=>b(o.request_url))},n(t(e)("copy")),1)]),_:1},8,["model-value"]),a("span",{class:"ml-2 cursor-pointer visit-btn",onClick:x},n(t(e)("clickVisit")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])])),[[C,m.value]])}}});const qe=z(T,[["__scopeId","data-v-7a2a3fc4"]]);export{qe as default};
|
||||
@ -1 +1 @@
|
||||
import{d as D,r as v,R,w as F,e as g,f as I,g as a,B as m,u as n,Q as j,v as H,x as i,y as l,A as M}from"./base-9962c822.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{t as r}from"./index-5516aed6.js";import{b as y}from"./index-e026a545.js";import{v as O}from"./sys-7988dced.js";import{E as U}from"./index-5c4817f4.js";import{u as $}from"./vue-router-d7e63612.js";import{a as h}from"./index-2cabf788.js";import{E as A}from"./index-83924071.js";import{a as L,E as Q}from"./index-7c833df7.js";import{E as T}from"./index-19251c17.js";import{E as z}from"./index-189f302e.js";import{E as G}from"./index-7ab57426.js";import{v as J}from"./directive-f75d4a7d.js";import{_ as K}from"./_plugin-vue_export-helper-c27b6911.js";import"./pinia-a9fc3924.js";import"./storage-0874d153.js";import"./index-57446bef.js";import"./system-1108e5c1.js";import"./index-c4e33d8d.js";import"./typescript-defaf979.js";import"./index-c98e204a.js";import"./validator-00f31ee7.js";import"./event-9519ab40.js";import"./index-6b77b11a.js";import"./index-71b7d8f4.js";import"./index-1370ab44.js";import"./error-78e43d3e.js";import"./_Uint8Array-c92ffa25.js";import"./_initCloneObject-41dd9efb.js";import"./index-ec548bfb.js";function P(){return y.get("channel/h5/config")}function W(u){return y.put("channel/h5/config",u,{showSuccessMessage:!0})}const X={class:"main-container"},Y={class:"flex ml-[18px] justify-between items-center mt-[20px]"},Z={class:"text-[20px]"},ee={class:"fixed-footer-wrap"},te={class:"fixed-footer"},oe=D({__name:"config",setup(u){const w=$().meta.title,s=v(!0),e=R({is_open:!1,request_url:""}),_=v();P().then(t=>{Object.assign(e,t.data),e.is_open=Boolean(Number(e.is_open)),s.value=!1}),O().then(t=>{e.request_url=t.data.wap_url+"/"});const{copy:x,isSupported:b,copied:d}=U(),E=t=>{if(!b.value){h({message:r("notSupportCopy"),type:"warning"});return}x(t)};F(d,()=>{d.value&&h({message:r("copySuccess"),type:"success"})});const C=()=>{window.open(e.request_url)},k=async t=>{s.value||!t||await t.validate(async o=>{if(o){s.value=!0;let p={...e};p.is_open=Number(p.is_open),W(p).then(()=>{s.value=!1}).catch(()=>{s.value=!1})}})};return(t,o)=>{const p=A,f=L,B=T,N=z,V=Q,q=G,S=J;return g(),I("div",X,[a("div",Y,[a("span",Z,m(n(w)),1)]),j((g(),H(V,{model:e,"label-width":"150px",ref_key:"formRef",ref:_,class:"page-form"},{default:i(()=>[l(N,{class:"box-card !border-none",shadow:"never"},{default:i(()=>[l(f,{label:n(r)("isOpen")},{default:i(()=>[l(p,{modelValue:e.is_open,"onUpdate:modelValue":o[0]||(o[0]=c=>e.is_open=c)},null,8,["modelValue"])]),_:1},8,["label"]),l(f,{label:n(r)("h5DomainName")},{default:i(()=>[l(B,{"model-value":e.request_url,class:"input-width",readonly:!0},{append:i(()=>[a("div",{class:"cursor-pointer",onClick:o[1]||(o[1]=c=>E(e.request_url))},m(n(r)("copy")),1)]),_:1},8,["model-value"]),a("span",{class:"ml-2 cursor-pointer visit-btn",onClick:C},m(n(r)("clickVisit")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])),[[S,s.value]]),a("div",ee,[a("div",te,[l(q,{type:"primary",loading:s.value,onClick:o[2]||(o[2]=c=>k(_.value))},{default:i(()=>[M(m(n(r)("save")),1)]),_:1},8,["loading"])])])])}}});const Ae=K(oe,[["__scopeId","data-v-6c14296d"]]);export{Ae as default};
|
||||
import{d as D,r as v,R,w as F,e as g,f as I,g as a,B as m,u as n,Q as j,v as H,x as i,y as l,A as M}from"./base-d79f9f62.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{t as r}from"./index-9e0d1e6c.js";import{b as y}from"./index-6fcaf7b3.js";import{v as O}from"./sys-3d5b784a.js";import{E as U}from"./index-3fd412a3.js";import{u as $}from"./vue-router-fc35ac55.js";import{a as h}from"./index-542aa78e.js";import{E as A}from"./index-797616f3.js";import{a as L,E as Q}from"./index-6befecc6.js";import{E as T}from"./index-f249e665.js";import{E as z}from"./index-ba59a1dc.js";import{E as G}from"./index-03649f16.js";import{v as J}from"./directive-13582d99.js";import{_ as K}from"./_plugin-vue_export-helper-c27b6911.js";import"./pinia-55149fa9.js";import"./storage-5316d819.js";import"./index-2048a34f.js";import"./system-d23898e7.js";import"./index-5dbb8f83.js";import"./typescript-defaf979.js";import"./index-34cd7f55.js";import"./validator-8f1b170d.js";import"./event-9519ab40.js";import"./index-427f5a83.js";import"./index-71aec1df.js";import"./index-bdfee32a.js";import"./error-78e43d3e.js";import"./_Uint8Array-bbbfd6ac.js";import"./_initCloneObject-a2c44136.js";import"./index-b6ca69fd.js";function P(){return y.get("channel/h5/config")}function W(u){return y.put("channel/h5/config",u,{showSuccessMessage:!0})}const X={class:"main-container"},Y={class:"flex ml-[18px] justify-between items-center mt-[20px]"},Z={class:"text-[20px]"},ee={class:"fixed-footer-wrap"},te={class:"fixed-footer"},oe=D({__name:"config",setup(u){const w=$().meta.title,s=v(!0),e=R({is_open:!1,request_url:""}),_=v();P().then(t=>{Object.assign(e,t.data),e.is_open=Boolean(Number(e.is_open)),s.value=!1}),O().then(t=>{e.request_url=t.data.wap_url+"/"});const{copy:x,isSupported:b,copied:d}=U(),E=t=>{if(!b.value){h({message:r("notSupportCopy"),type:"warning"});return}x(t)};F(d,()=>{d.value&&h({message:r("copySuccess"),type:"success"})});const C=()=>{window.open(e.request_url)},k=async t=>{s.value||!t||await t.validate(async o=>{if(o){s.value=!0;let p={...e};p.is_open=Number(p.is_open),W(p).then(()=>{s.value=!1}).catch(()=>{s.value=!1})}})};return(t,o)=>{const p=A,f=L,B=T,N=z,V=Q,q=G,S=J;return g(),I("div",X,[a("div",Y,[a("span",Z,m(n(w)),1)]),j((g(),H(V,{model:e,"label-width":"150px",ref_key:"formRef",ref:_,class:"page-form"},{default:i(()=>[l(N,{class:"box-card !border-none",shadow:"never"},{default:i(()=>[l(f,{label:n(r)("isOpen")},{default:i(()=>[l(p,{modelValue:e.is_open,"onUpdate:modelValue":o[0]||(o[0]=c=>e.is_open=c)},null,8,["modelValue"])]),_:1},8,["label"]),l(f,{label:n(r)("h5DomainName")},{default:i(()=>[l(B,{"model-value":e.request_url,class:"input-width",readonly:!0},{append:i(()=>[a("div",{class:"cursor-pointer",onClick:o[1]||(o[1]=c=>E(e.request_url))},m(n(r)("copy")),1)]),_:1},8,["model-value"]),a("span",{class:"ml-2 cursor-pointer visit-btn",onClick:C},m(n(r)("clickVisit")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])),[[S,s.value]]),a("div",ee,[a("div",te,[l(q,{type:"primary",loading:s.value,onClick:o[2]||(o[2]=c=>k(_.value))},{default:i(()=>[M(m(n(r)("save")),1)]),_:1},8,["loading"])])])])}}});const Ae=K(oe,[["__scopeId","data-v-6c14296d"]]);export{Ae as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user