Compare commits
23 Commits
v0.2.0-alp
...
master
Author | SHA1 | Date |
---|---|---|
Sky_ID | 2aa3ba9dd5 | |
p71924506 | ed68db3b42 | |
p71924506 | 5a3a661034 | |
unknown | 51f7799d3b | |
unknown | e04c5a6440 | |
unknown | 3ab246e20e | |
unknown | fd0bab1801 | |
unknown | 614405bb6f | |
p71924506 | 0a0bf30deb | |
p71924506 | 946a229f8c | |
p71924506 | f216fd8bdd | |
p71924506 | d0abd44fe9 | |
p71924506 | 28f1cfc226 | |
p71924506 | 74c55a05d9 | |
p71924506 | b9323bc1ad | |
p71924506 | 401d5ef394 | |
p71924506 | 9b77466bfe | |
p71924506 | 28f9b06b3d | |
p71924506 | 813bc0d2e4 | |
p71924506 | 6dfbfb127b | |
p71924506 | 43fc4de386 | |
p71924506 | 956b4c4351 | |
p71924506 | cf60266832 |
111
README-zh.md
|
@ -1,111 +0,0 @@
|
||||||
# vue-admin-template
|
|
||||||
|
|
||||||
> 这是一个极简的 vue admin 管理后台。它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。
|
|
||||||
|
|
||||||
[线上地址](http://panjiachen.github.io/vue-admin-template)
|
|
||||||
|
|
||||||
[国内访问](https://panjiachen.gitee.io/vue-admin-template)
|
|
||||||
|
|
||||||
目前版本为 `v4.0+` 基于 `vue-cli` 进行构建,若你想使用旧版本,可以切换分支到[tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0),它不依赖 `vue-cli`。
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<b>SPONSORED BY</b>
|
|
||||||
</p>
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://finclip.com?from=vue_element" title="FinClip" target="_blank">
|
|
||||||
<img height="200px" src="https://gitee.com/panjiachen/gitee-cdn/raw/master/vue%E8%B5%9E%E5%8A%A9.png" title="FinClip">
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## Extra
|
|
||||||
|
|
||||||
如果你想要根据用户角色来动态生成侧边栏和 router,你可以使用该分支[permission-control](https://github.com/PanJiaChen/vue-admin-template/tree/permission-control)
|
|
||||||
|
|
||||||
## 相关项目
|
|
||||||
|
|
||||||
- [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
|
|
||||||
|
|
||||||
- [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
|
|
||||||
|
|
||||||
- [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template)
|
|
||||||
|
|
||||||
- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312)
|
|
||||||
|
|
||||||
写了一个系列的教程配套文章,如何从零构建后一个完整的后台项目:
|
|
||||||
|
|
||||||
- [手摸手,带你用 vue 撸后台 系列一(基础篇)](https://juejin.im/post/59097cd7a22b9d0065fb61d2)
|
|
||||||
- [手摸手,带你用 vue 撸后台 系列二(登录权限篇)](https://juejin.im/post/591aa14f570c35006961acac)
|
|
||||||
- [手摸手,带你用 vue 撸后台 系列三 (实战篇)](https://juejin.im/post/593121aa0ce4630057f70d35)
|
|
||||||
- [手摸手,带你用 vue 撸后台 系列四(vueAdmin 一个极简的后台基础模板,专门针对本项目的文章,算作是一篇文档)](https://juejin.im/post/595b4d776fb9a06bbe7dba56)
|
|
||||||
- [手摸手,带你封装一个 vue component](https://segmentfault.com/a/1190000009090836)
|
|
||||||
|
|
||||||
## Build Setup
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 克隆项目
|
|
||||||
git clone https://github.com/PanJiaChen/vue-admin-template.git
|
|
||||||
|
|
||||||
# 进入项目目录
|
|
||||||
cd vue-admin-template
|
|
||||||
|
|
||||||
# 安装依赖
|
|
||||||
npm install
|
|
||||||
|
|
||||||
# 建议不要直接使用 cnpm 安装以来,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
|
|
||||||
npm install --registry=https://registry.npm.taobao.org
|
|
||||||
|
|
||||||
# 启动服务
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
浏览器访问 [http://localhost:9528](http://localhost:9528)
|
|
||||||
|
|
||||||
## 发布
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 构建测试环境
|
|
||||||
npm run build:stage
|
|
||||||
|
|
||||||
# 构建生产环境
|
|
||||||
npm run build:prod
|
|
||||||
```
|
|
||||||
|
|
||||||
## 其它
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 预览发布环境效果
|
|
||||||
npm run preview
|
|
||||||
|
|
||||||
# 预览发布环境效果 + 静态资源分析
|
|
||||||
npm run preview -- --report
|
|
||||||
|
|
||||||
# 代码格式检查
|
|
||||||
npm run lint
|
|
||||||
|
|
||||||
# 代码格式检查并自动修复
|
|
||||||
npm run lint -- --fix
|
|
||||||
```
|
|
||||||
|
|
||||||
更多信息请参考 [使用文档](https://panjiachen.github.io/vue-element-admin-site/zh/)
|
|
||||||
|
|
||||||
## 购买贴纸
|
|
||||||
|
|
||||||
你也可以通过 购买[官方授权的贴纸](https://smallsticker.com/product/vue-element-admin) 的方式来支持 vue-element-admin - 每售出一张贴纸,我们将获得 2 元的捐赠。
|
|
||||||
|
|
||||||
## Demo
|
|
||||||
|
|
||||||
![demo](https://github.com/PanJiaChen/PanJiaChen.github.io/blob/master/images/demo.gif)
|
|
||||||
|
|
||||||
## Browsers support
|
|
||||||
|
|
||||||
Modern browsers and Internet Explorer 10+.
|
|
||||||
|
|
||||||
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
|
|
||||||
| --------- | --------- | --------- | --------- |
|
|
||||||
| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
|
|
||||||
|
|
||||||
Copyright (c) 2017-present PanJiaChen
|
|
29
README.md
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
> 针对于日常办公时需要对相关文件进行共享、记录、查询、学习而开发的文件管理系统,整体服务采用VUE+SPRINGBOOT技术框架开发。此为前端仓库,后端仓库暂不开源
|
> 针对于日常办公时需要对相关文件进行共享、记录、查询、学习而开发的文件管理系统,整体服务采用VUE+SPRINGBOOT技术框架开发。此为前端仓库,后端仓库暂不开源
|
||||||
|
|
||||||
|
> The file management system developed for daily office needs to share, record, query and learn related files, and the overall service is developed using VUE+SPRINGBOOT technology framework. This is the front-end warehouse, the back-end warehouse is not open source
|
||||||
|
|
||||||
|
|
||||||
## Build Setup
|
## Build Setup
|
||||||
|
@ -22,7 +23,7 @@ npm install
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
This will automatically open http://localhost:9528
|
This will automatically open http://localhost:8043
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
|
@ -50,35 +51,13 @@ npm run lint
|
||||||
npm run lint -- --fix
|
npm run lint -- --fix
|
||||||
```
|
```
|
||||||
|
|
||||||
Refer to [Documentation](https://panjiachen.github.io/vue-element-admin-site/guide/essentials/deploy.html) for more information
|
|
||||||
|
|
||||||
## Demo
|
|
||||||
待更新
|
|
||||||
|
|
||||||
|
|
||||||
## Extra
|
|
||||||
|
|
||||||
|
|
||||||
## Related Project
|
|
||||||
|
|
||||||
- [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
|
|
||||||
|
|
||||||
- [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
|
|
||||||
|
|
||||||
- [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template)
|
|
||||||
|
|
||||||
- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312)
|
|
||||||
|
|
||||||
## Browsers support
|
## Browsers support
|
||||||
|
|
||||||
Modern browsers and Internet Explorer 10+.
|
Testing and development was performed under chromium kernel versions 177.0.2045.31 and 116.0.5845.189
|
||||||
|
|
||||||
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
|
|
||||||
| --------- | --------- | --------- | --------- |
|
|
||||||
| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
|
[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
|
||||||
|
|
||||||
Copyright (c) 2022 WeiHao
|
Copyright (c) 2022-2023 OSREDM WeiHao
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||||
|
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDkckoFIz
|
||||||
|
FqM7Ru1H4iQvfKAAAAEAAAAAEAAAIXAAAAB3NzaC1yc2EAAAADAQABAAACAQDDIEnb1XKI
|
||||||
|
xd7mmMka+YhYX87U5BIXTpOY4+u0idEJMagP1IpD5etfsAjU+oWKSag+oaQ4ACJBeqqJLE
|
||||||
|
7gHmMlW6s71XLr8h9Z076CbEYtUF1/UICbI+mRVpadme8UhNHuiHn8BvKKx1nCls3XamMP
|
||||||
|
g5Vk58Axjj6vJDUyJ6DeM9MuKxbe3yrKxKNEeqksAQjlp4qPHybRrGj4yt0M9S8X3UPLNV
|
||||||
|
vaHbLZEV3nYs9Wib7VVQS4TH9isFe2x23cRqsbguXGrWW449WacBcIHD5/gMPbPOVCSjXa
|
||||||
|
6Jo6sb/oA9J10joBZRgBxezASbuZndkH3+kfvCeBVdLntdLMvJTHm1UOEgnsuM8xnJLHbC
|
||||||
|
NXro7zBwffSWAl5P96HfWSr1yNIfKk0J6IvqbxFZzfLLucg9V9lQAbFkEeMTqnxOHzApUG
|
||||||
|
uw0JraDEBmbiI5QjqSxKf9/plExq+xU4w5HC288zeLdnBpFySaSY1fzdPZRSy0+93YJeOD
|
||||||
|
27AIDJjrtjh6nKDlEatSjP05GKPfCnDahwwB/OyfPgVJN5tyHD/yso6uRnt4Ch6S3cJImk
|
||||||
|
TN0Txl/3MkoZ2LW4RsFv36Mvf/47AYMtYIi2uHRA+il/T1XKtvL9m8BgX3nzFaxcnw9hmJ
|
||||||
|
Xk5y5WGXeH6EKe/EUVeTQigdSV89YqCuAETW/vxwcBwwAAB0CB/EsWkut0D7zVXLDZOxcQ
|
||||||
|
81yBNJdk/oNcLGfbX6eb/I3QAnkAgMaV82MfdBR2Y9ny+xoLFatNr+9ofEHv0ECeDhsxrq
|
||||||
|
/BlnAoIgVmfJlYUFPurl06JcpnJhU17064GxDta49ALmZ/TjpLp9vIpRu0m2G0SY0FiA6u
|
||||||
|
cgYi8Hj/sjLa3coLR4LCZdwTv08M6JrWGhW5whyT5jKGS8tIgxQOKbDwci6V66FyAgYn5D
|
||||||
|
11vjXKI9n9sqTCTY6yVr5DMI5KcxU5MI1Qoui1b3q4paYlqtTfl2rfLoDSv8nNwR8L5b39
|
||||||
|
K6sYCRzajROS2mQm5iTZQnuhEUTDvLLZaVlXBLLKggG7JkPPsqKB2uQ18mY4wfDe8F3hGx
|
||||||
|
KEMJQLsbjRS0uBI789LOaUmV+IbycjAZ00R+6mbQUO6WHnxwL9tyJsSK4nZ+y5AerefE42
|
||||||
|
3duvWjSUva2RGP2tHdWlcfxDoWkoO49mPQvUkrvjZRpn2E5LFRELZaYSoFBXgkuFAz252H
|
||||||
|
wlPfhsEHfg0HHvkPd+6jRAxjKCgb6SQqFm1+tXgDUsielMQ3yh/OD34r0d6UeRYx4PIJBu
|
||||||
|
+FPDDL7T3bdUzAhKQ2iEGMVACWRpNefalYwVyM8GyQT2Ve+ykskqDcLmz2mYX6G8QvN0va
|
||||||
|
cKUlxnNWAMdiH21mJSEKs1Nh1TLE057lVNkWvpPUtQS/fzMJ5++Kfj0zm5TMpLEgqo2sob
|
||||||
|
uoJnC5q9tZzv8H3SVU4MK9F/iITnoTtTzvGCoMMwZEPImWVzMHWJgx8867/AUWbg7CnCHE
|
||||||
|
BP2LDSJeJosHjQQf54gjUYYYd11PT/5jY4qW2AvdW3YTT8sgDtD7Kios9THoyrrHKdg2Lk
|
||||||
|
NvMxgFIWgXlkOy432oPjtWq1G7unT484AhTh7n4FmN8UA1THOqlWMIGjBGhX/twrUFvQn9
|
||||||
|
zCAx+12gObN+zk2YJDSLxlEGf/4t/PF/eUZNsp61Dgy6ENo8v4cN2vzqq+CnzM09MO0pD2
|
||||||
|
IO77qrwN7avOIxAbf/HJQCljpgfW+TIcALNz0F8YxKuyv5fWnaFA++VQ3gSOgJnZdOw2PW
|
||||||
|
SudG7TGD2KvxBotcPPmi8VKrVaZ4f4DU0awPxG1LcxZOZZU/udVuALeMqV4LBwgsKB88f8
|
||||||
|
J/lDwZnB4SDHoJHVdXXpHK9thBIR5f2EttKbbrYLe2yEc1FAoeMasAc1bW/G57XEPavhEU
|
||||||
|
BtAqcFfkcegfew0XCt/ZmSdTxJk7onql9PDYtdbOf8I90dq6PNABotevEe9L24fKh1kYir
|
||||||
|
gyAlDKsk1Ls9tIJ28xPrOt1KM+iQ0UxogOvKqknupAzsixqTJ97y3eEgyUEJqOuE+GSGl7
|
||||||
|
rUHpW4By97KOLfyoVG6ABAA9e6nI+AxaEG/B1Hf1C9Hnvnk3REXDDbuCdS+GuyteG7k337
|
||||||
|
JjCE6BzKrvjjvN0EFNdgZUl4azzY0jk7pnpERmrr71DJMG/F9o2lc4dMBJ/V8FZoakJDWQ
|
||||||
|
zCxxFYN8bkvDLKlkrGraEBoVeJq++44G16M1XvHl/3WJ6UE+ZsM+5m+dlljy2MLB6lXXV3
|
||||||
|
lumezmnaQL5kYYJkOzzNQiiCXnuqc41/siS7Lz2ThbOx/EqCs+qKDvtwXBPmNLsWjTjuR+
|
||||||
|
0aRcgx1t1bnZUbJ93Zjey45aiFM0h0hIM0XATheTWfMUZS1zN0MitZ8kQrFut0iuW8t0UI
|
||||||
|
KWXMSkSBiizCxvYjNNTAcGGD1KnQQQxvArjMNG7l93T6VfW919NQiqOtPSBcPPaDVM3H4t
|
||||||
|
wHRrZBldXFaMsh2cn9PrHbX2QXrGx13h69JWW7YRZXBQC4zJ29BvNgUU3wdvW/bc3jUdtW
|
||||||
|
t23pVrnDPjHGZF6oG3pURLD8BKyQLMI5l1HDS2BUbVp3K9HtfIfl/7DUEhzIaXwgEUFUjY
|
||||||
|
Adh3mbS4UeW+Bre2FcWHihX5o2gMY5Y6hzqupxrvLT7PkufLuu7++GNHbM590SHffRNjzC
|
||||||
|
1eWyn8jRSNSORfYNz0afiS5UVtfkd9Prf0g6lW0b+uC8mzxXCjP775j+5WcXFW7s9ShIF8
|
||||||
|
Pk2R+lV73mWyTjRX8xeDGxNdzC/OmNbAbGhAJEWDtHRPvPvrwqhp91XbBMrlSsMgVvWt1B
|
||||||
|
LHDfihWuMdRYLiPVhJ32ngmqxf3wh9hunfN0+ULWaSPWpQ72QxorGh5WZTSLmpzEnmsVXH
|
||||||
|
ulOfvGJq0jaAFE/aYweSrWS2qB4kkCrTBJA6c/U7evPE3UUuo6tC4Qby9YNeh1zPKbxXY7
|
||||||
|
Hlt6l8xvM/l/aqnPnwpKz1ztdDhIpa8P9mmGjsRqLupsMHRXvEHDPmyi+NAVxmIO1kkPei
|
||||||
|
PDh8OSQbisKz/WXJG4RZ//1rzE/AnrsZeL5DVk2+2JlagV/IkhPGvgtJjJ/ML59FsqC9rj
|
||||||
|
M8gH8Q5L6Wk6mt65+YAraRqx7WoL4uHzpHh2tahlaoEKhBlEoKPIaZWpf7KyrTslX368b2
|
||||||
|
gNBQ==
|
||||||
|
-----END OPENSSH PRIVATE KEY-----
|
|
@ -0,0 +1 @@
|
||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDDIEnb1XKIxd7mmMka+YhYX87U5BIXTpOY4+u0idEJMagP1IpD5etfsAjU+oWKSag+oaQ4ACJBeqqJLE7gHmMlW6s71XLr8h9Z076CbEYtUF1/UICbI+mRVpadme8UhNHuiHn8BvKKx1nCls3XamMPg5Vk58Axjj6vJDUyJ6DeM9MuKxbe3yrKxKNEeqksAQjlp4qPHybRrGj4yt0M9S8X3UPLNVvaHbLZEV3nYs9Wib7VVQS4TH9isFe2x23cRqsbguXGrWW449WacBcIHD5/gMPbPOVCSjXa6Jo6sb/oA9J10joBZRgBxezASbuZndkH3+kfvCeBVdLntdLMvJTHm1UOEgnsuM8xnJLHbCNXro7zBwffSWAl5P96HfWSr1yNIfKk0J6IvqbxFZzfLLucg9V9lQAbFkEeMTqnxOHzApUGuw0JraDEBmbiI5QjqSxKf9/plExq+xU4w5HC288zeLdnBpFySaSY1fzdPZRSy0+93YJeOD27AIDJjrtjh6nKDlEatSjP05GKPfCnDahwwB/OyfPgVJN5tyHD/yso6uRnt4Ch6S3cJImkTN0Txl/3MkoZ2LW4RsFv36Mvf/47AYMtYIi2uHRA+il/T1XKtvL9m8BgX3nzFaxcnw9hmJXk5y5WGXeH6EKe/EUVeTQigdSV89YqCuAETW/vxwcBww== 222@qq.com
|
10
package.json
|
@ -14,18 +14,28 @@
|
||||||
"test:ci": "npm run lint && npm run test:unit"
|
"test:ci": "npm run lint && npm run test:unit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@onlyoffice/document-editor-vue": "^1.1.1",
|
||||||
|
"@vue-office/docx": "^1.0.0",
|
||||||
|
"@vue-office/excel": "^1.0.0",
|
||||||
|
"@vue-office/pdf": "^1.0.0",
|
||||||
|
"@vue/composition-api": "^1.7.1",
|
||||||
"axios": "0.18.1",
|
"axios": "0.18.1",
|
||||||
|
"canvas-tablet": "^2.0.6",
|
||||||
"core-js": "^3.26.1",
|
"core-js": "^3.26.1",
|
||||||
"docx-preview": "^0.1.14",
|
"docx-preview": "^0.1.14",
|
||||||
"element-ui": "2.13.2",
|
"element-ui": "2.13.2",
|
||||||
|
"file-saver": "^2.0.5",
|
||||||
"js-base64": "^3.7.3",
|
"js-base64": "^3.7.3",
|
||||||
"js-cookie": "2.2.0",
|
"js-cookie": "2.2.0",
|
||||||
"js-md5": "^0.7.3",
|
"js-md5": "^0.7.3",
|
||||||
|
"mavon-editor": "^2.10.4",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"normalize.css": "7.0.0",
|
"normalize.css": "7.0.0",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
"path-to-regexp": "2.4.0",
|
"path-to-regexp": "2.4.0",
|
||||||
|
"sweetalert": "^2.1.2",
|
||||||
"vue": "2.6.10",
|
"vue": "2.6.10",
|
||||||
|
"vue-demi": "^0.14.6",
|
||||||
"vue-router": "3.0.6",
|
"vue-router": "3.0.6",
|
||||||
"vuex": "3.1.0"
|
"vuex": "3.1.0"
|
||||||
},
|
},
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||||
|
<!-- <script type='text/javascript' src='http://114.116.228.69:8044/web-apps/apps/api/documents/api.js'></script>-->
|
||||||
<title><%= webpackConfig.name %></title>
|
<title><%= webpackConfig.name %></title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1681880316864" class="icon" viewBox="0 0 1181 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7488" xmlns:xlink="http://www.w3.org/1999/xlink" width="230.6640625" height="200"><path d="M624.492308 336.738462a46.523077 46.523077 0 0 0-67.446154 0l-227.938462 219.323076a41.107692 41.107692 0 0 0 0 59.076924 40.615385 40.615385 0 0 0 59.076923 0l160.492308-143.507693v248.861539a42.092308 42.092308 0 1 0 84.184615 0V471.630769L793.353846 615.384615c16.738462 16.984615 50.707692 16.984615 59.076923 0a41.107692 41.107692 0 0 0 0-59.076923z" fill="#040000" p-id="7489"></path><path d="M1063.384615 118.153846h-393.846153a118.646154 118.646154 0 0 1-70.892308-24.615384L504.123077 24.615385a118.646154 118.646154 0 0 0-70.892308-24.615385H118.153846A118.153846 118.153846 0 0 0 0 118.153846v787.692308a118.153846 118.153846 0 0 0 118.153846 118.153846h945.230769a118.153846 118.153846 0 0 0 118.153847-118.153846V236.307692a118.153846 118.153846 0 0 0-118.153847-118.153846z m39.384616 787.692308a39.384615 39.384615 0 0 1-39.384616 39.384615H118.153846a39.384615 39.384615 0 0 1-39.384615-39.384615v-787.692308a39.384615 39.384615 0 0 1 39.384615-39.384615h315.076923a38.892308 38.892308 0 0 1 24.615385 7.876923l93.538461 70.892308A196.923077 196.923077 0 0 0 669.538462 196.923077h393.846153a39.384615 39.384615 0 0 1 39.384616 39.384615z" fill="#040000" p-id="7490"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 595 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1681356640637" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2390" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M179 64h468.5l223 225.5V935c0 13.807-11.193 25-25 25H179c-13.807 0-25-11.193-25-25V89c0-13.807 11.193-25 25-25z" fill="#00C090" p-id="2391"></path><path d="M647.5 64v200.5c0 13.807 11.193 25 25 25h198L647.5 64z" fill="#68DBBF" p-id="2392"></path><path d="M677.007 388.282L297.22 769.07c-13.65 13.685-13.623 35.846 0.062 49.497 13.685 13.652 35.846 13.624 49.498-0.061l379.786-380.787c13.652-13.685 13.624-35.846-0.061-49.498-13.686-13.65-35.846-13.623-49.498 0.062z" fill="#FFFFFF" p-id="2393"></path><path d="M297.22 436.718l379.787 380.787c13.652 13.685 35.812 13.713 49.498 0.061 13.685-13.651 13.713-35.812 0.061-49.497L346.78 387.282c-13.652-13.685-35.813-13.713-49.498-0.062-13.685 13.652-13.713 35.813-0.062 49.498z" fill="#FFFFFF" p-id="2394"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1682212757128" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5016" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M862 902c0 16.569-13.431 30-30 30H192c-16.569 0-30-13.431-30-30V122c0-16.569 13.431-30 30-30h476l194 194v616z" fill="#7DB4FF" p-id="5017"></path><path d="M862 286H698c-16.569 0-30-13.431-30-30V92" fill="#FFFFFF" fill-opacity=".296" p-id="5018"></path><path d="M403.76 540.84c0-44.48-13.76-75.84-73.92-75.84-54.08 0-85.44 19.52-85.44 89.6s31.36 89.6 84.16 89.6c30.08 0 56-6.08 66.24-12.16v-36.48c-11.2 6.08-36.16 12.16-57.28 12.16-30.72 0-45.12-11.2-46.72-35.84l111.36-7.04c0.96-4.8 1.6-14.08 1.6-24z m-112.96-1.28c0.96-27.2 10.56-39.68 39.04-39.68 27.2 0 31.68 15.36 31.68 34.24l-70.72 5.44zM420.4 641h54.72l36.48-59.52h1.92L549.36 641h55.04l-59.2-88.64 56-84.16h-53.76l-33.6 56.32h-1.92l-33.6-56.32h-54.4l56.32 84.48zM781.04 540.84c0-44.48-13.76-75.84-73.92-75.84-54.08 0-85.44 19.52-85.44 89.6s31.36 89.6 84.16 89.6c30.08 0 56-6.08 66.24-12.16v-36.48c-11.2 6.08-36.16 12.16-57.28 12.16-30.72 0-45.12-11.2-46.72-35.84l111.36-7.04c0.96-4.8 1.6-14.08 1.6-24z m-112.96-1.28c0.96-27.2 10.56-39.68 39.04-39.68 27.2 0 31.68 15.36 31.68 34.24l-70.72 5.44z" fill="#FFFFFF" p-id="5019"></path></svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1681356612320" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1778" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M918.673 883H104.327C82.578 883 65 867.368 65 848.027V276.973C65 257.632 82.578 242 104.327 242h814.346C940.422 242 958 257.632 958 276.973v571.054C958 867.28 940.323 883 918.673 883z" fill="#FFE9B4" p-id="1779"></path><path d="M512 411H65V210.37C65 188.597 82.598 171 104.371 171h305.92c17.4 0 32.71 11.334 37.681 28.036L512 411z" fill="#FFB02C" p-id="1780"></path><path d="M918.673 883H104.327C82.578 883 65 865.42 65 843.668V335.332C65 313.58 82.578 296 104.327 296h814.346C940.422 296 958 313.58 958 335.332v508.336C958 865.32 940.323 883 918.673 883z" fill="#FFCA28" p-id="1781"></path></svg>
|
After Width: | Height: | Size: 930 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1681356646324" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2691" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M179 64h468.5l223 225.5V935c0 13.807-11.193 25-25 25H179c-13.807 0-25-11.193-25-25V89c0-13.807 11.193-25 25-25z" fill="#FF4867" p-id="2692"></path><path d="M647.5 64v200.5c0 13.807 11.193 25 25 25h198L647.5 64z" fill="#FF97A9" p-id="2693"></path><path d="M691.919 812c-44.4 0-84.22-76.189-105.17-125.732-35.243-14.71-74.092-28.45-111.831-37.331-33.022 21.788-89.214 54.4-132.365 54.4-26.778 0-46.064-13.461-53.14-36.914-5.411-19.29-0.832-32.613 4.995-39.83 11.377-15.543 34.825-23.453 69.929-23.453 28.443 0 64.517 4.996 104.754 14.71 25.945-18.457 52.307-39.829 75.756-62.45-10.406-49.404-21.784-129.479 7.076-166.393 14.29-17.625 36.074-23.454 62.436-15.543 28.86 8.326 39.82 25.951 43.15 39.829 12.21 48.155-43.15 113.103-80.473 151.267 8.325 33.029 19.286 67.862 32.606 99.78 53.556 23.87 117.24 59.536 124.456 98.394 2.913 13.461-1.249 25.951-12.21 36.915-9.435 7.771-19.425 12.351-29.97 12.351zM652 728c9.768 21.74 19.081 32 23.99 32 0.76 0 1.823-0.333 3.341-1.664 1.822-1.996 1.822-3.327 1.518-4.547-1.012-5.713-9.262-15.085-28.849-25.789z m-281.922-88c-15.62 0-19.913 3.774-21.22 5.535-0.373 0.566-1.493 2.264-0.373 6.666 0.933 3.774 3.547 7.799 11.636 7.799 10.143 0 24.829-5.723 41.879-15.975-12.196-2.704-22.962-4.025-31.922-4.025zM523 620.582c9.333 2.6 19.01 5.951 28 9.418-3.264-8.551-5.898-17.449-8.13-26A629.121 629.121 0 0 1 523 620.582zM588.966 433c-3.32 0-5.649 1.229-7.745 3.511-6.173 7.783-6.872 27.386-2.097 52.489 18.111-19.427 27.953-37.275 25.507-46.813-0.35-1.404-1.398-5.676-9.842-8.134-2.33-0.702-4.076-1.053-5.823-1.053z" fill="#FFFFFF" p-id="2694"></path></svg>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1681356643005" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2541" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M179 64h468.5l223 225.5V935c0 13.807-11.193 25-25 25H179c-13.807 0-25-11.193-25-25V89c0-13.807 11.193-25 25-25z" fill="#FF7861" p-id="2542"></path><path d="M647.5 64v200.5c0 13.807 11.193 25 25 25h198L647.5 64z" fill="#FFB0A4" p-id="2543"></path><path d="M670.098 478.093C677.884 486.056 682 497.51 682 514.5c0 16.989-4.116 28.444-11.902 36.407-8.313 8.504-22.397 14.822-43.202 18.093H318c-19.33 0-35 15.67-35 35v157c0 19.33 15.67 35 35 35s35-15.67 35-35V639h276.5a35 35 0 0 0 4.95-0.352C709.214 627.968 752 584.203 752 514.5s-42.786-113.468-117.55-124.148a35 35 0 0 0-4.95-0.352H318c-19.33 0-35 15.67-35 35s15.67 35 35 35h308.896c20.805 3.271 34.889 9.589 43.202 18.093z" fill="#FFFFFF" p-id="2544"></path></svg>
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1681356629613" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2084" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M179 64h468.5l223 225.5V935c0 13.807-11.193 25-25 25H179c-13.807 0-25-11.193-25-25V89c0-13.807 11.193-25 25-25z" fill="#CCCCCC" p-id="2085"></path><path d="M647.5 64v200.5c0 13.807 11.193 25 25 25h198L647.5 64z" fill="#EAEAEA" p-id="2086"></path><path d="M512 364.5c34.139 0 68.5 11.192 94.771 31.69 30.137 23.513 47.729 57.54 47.729 97.31 0 51.725-35.564 99.023-102.662 143.99l-0.338 0.225V696c0 17.77-14.261 32.209-31.963 32.496l-0.537 0.004c-17.95 0-32.5-14.55-32.5-32.5v-76a32.5 32.5 0 0 1 15.347-27.605c60.106-37.347 87.653-71.18 87.653-98.895 0-19.168-7.95-34.545-22.714-46.064C552.248 436.093 532.007 429.5 512 429.5c-19.92 0-39.856 6.54-54.137 17.819-14.519 11.465-22.363 26.87-22.363 46.181 0 17.95-14.55 32.5-32.5 32.5s-32.5-14.55-32.5-32.5c0-39.693 17.307-73.683 47.08-97.194C443.657 375.714 477.833 364.5 512 364.5z m8.5 477.5c20.71 0 37.5-16.79 37.5-37.5S541.21 767 520.5 767 483 783.79 483 804.5s16.79 37.5 37.5 37.5z" fill="#FFFFFF" p-id="2087"></path></svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1681356637453" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2240" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M179 64h468.5l223 225.5V935c0 13.807-11.193 25-25 25H179c-13.807 0-25-11.193-25-25V89c0-13.807 11.193-25 25-25z" fill="#4A8DFF" p-id="2241"></path><path d="M647.5 64v200.5c0 13.807 11.193 25 25 25h198L647.5 64z" fill="#E5F0FF" p-id="2242"></path><path d="M693.153 784.6C714.698 808.196 754 792.953 754 761V389h-70v281.758L544.847 518.35c-13.879-15.201-37.815-15.201-51.694 0L354 670.758V389h-70v372c0 31.954 39.302 47.197 60.847 23.6L519 593.857 693.153 784.6z" fill="#FFFFFF" p-id="2243"></path></svg>
|
After Width: | Height: | Size: 835 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1681356625053" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1928" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M179 64h468.5l223 225.5V935c0 13.807-11.193 25-25 25H179c-13.807 0-25-11.193-25-25V89c0-13.807 11.193-25 25-25z" fill="#576A95" p-id="1929"></path><path d="M647.5 64v200.5c0 13.807 11.193 25 25 25h198L647.5 64z" fill="#BBC3D4" p-id="1930"></path><path d="M573.2 614.597v121.678a30.391 30.391 0 0 1-8.932 21.509 30.508 30.508 0 0 1-21.549 8.91h-62.238a30.52 30.52 0 0 1-21.549-8.905A30.392 30.392 0 0 1 450 736.27V614.597h123.2z m-30.48 69.71h-62.24v61.096h62.24v-61.096z m29.46-191.386v61.096h-61.213V492.92h61.214zM511.73 64v61.6H573.2v61.6h-61.478v57.036H573.2v61.6h-61.471v60.844H573.2v60.844h-61.471v60.839H450v-60.844h61.471v-60.844H450v-60.839h61.471v-61.6H450v-61.6h61.471V125.6H450V64h61.729z" fill="#FFFFFF" p-id="1931"></path></svg>
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 151.43 115.36"><defs><style>.cls-1{fill:#ed4b00;}.cls-2,.cls-3{fill:none;stroke-miterlimit:10;}.cls-2{stroke:#ed4b00;stroke-linecap:round;stroke-width:0.39px;}.cls-3{stroke:#bf3e00;stroke-width:0.1px;}.cls-4{fill:#ffdb00;}.cls-5{fill:#ffa900;}</style></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><path class="cls-1" d="M145.07,107.21a48.59,48.59,0,0,0,5.83,7.47c-45.71-3.32-57.34-3.57-60.23-3.51,3.28-.66-1.22-6.72,1.06-10.56,4.21-7.08,6.82-14.88,10.11-22.38,3-7,6.8-13.83,12.49-19a16.69,16.69,0,0,1,6.33,2.7,20.07,20.07,0,0,1,2.26,1.83c3.78,3.63,6,8.4,8.15,13.07C135.74,86.93,138.74,97.17,145.07,107.21Z"/><path class="cls-1" d="M108.27,59.45a12.33,12.33,0,0,1,6.06-.25c-5.69,5.2-9.45,12.08-12.49,19-3.29,7.5-5.9,15.3-10.11,22.38-2.28,3.84,2.22,9.9-1.06,10.56a5.24,5.24,0,0,0-.94,0c-8-.43-13.24-.17-21.43-.51-8.48-.35-37.1.85-46.63,1.27h0c3.43-.3,2.53-2.54,3.88-4.8,2.28-3.85,3.7-8.09,5.49-12.18s4.12-8.16,7.65-11.06l.07-.21h0c.91.31,5.28,2.14,8.39,9.56,3.45,8.22,9.78,17.7,35-6.35a.6.6,0,0,0,.08-.08c6-6.22,11.22-13.26,16.66-20C101.51,63.83,104.35,60.67,108.27,59.45Z"/><path class="cls-1" d="M90.67,111.17a4,4,0,0,1-.94,0A5.24,5.24,0,0,1,90.67,111.17Z"/><path class="cls-1" d="M38.8,83.73l-.07.21c-3.53,2.9-5.86,7-7.65,11.06s-3.21,8.33-5.49,12.18c-1.35,2.26-.45,4.5-3.88,4.8h-.09c-2.05.19-3.8.33-9.22.94-4,.45-12.34,2.25-12.34,2.25,6.31-3.09,8.84-7.55,12.7-11.45,2.94-3,7.7-9.85,11.85-14.53.45-.5.9-1,1.36-1.49,2.1-2.23,4.59-4.43,7.72-4.86a8.91,8.91,0,0,1,5.15.9Z"/><path class="cls-2" d="M.19,115.17c.18-.06,39.71-13.58,151.05-.17"/><path class="cls-3" d="M151.31,114.94a.76.76,0,0,0-.18-.09l-.12-.07-.07,0-.08-.06-.12-.08"/><path class="cls-4" d="M91.86,66h0c-3.6,5-7.23,9.94-11.26,14.49l-.07.08c-23.79,24.79-29.8,15.08-33.09,6.65-3-7.6-7.11-9.47-8-9.79a7.87,7.87,0,0,0-4.87-.9c-2.95.45-5.3,2.72-7.28,5-.43.51-.86,1-1.28,1.54A52.53,52.53,0,0,1,15.73,51.7,51.44,51.44,0,0,1,66.9.21V.28C55.4,2.38,49.8,15.52,49.18,24.21,48.34,36,57.86,51.07,72.61,52.29,80.91,53.84,87.91,56.24,91.86,66Z"/><path class="cls-5" d="M78.67,0h0c26,3.16,45.57,26.41,44.45,53.68,0,.56,0,1.86-.05,3.08,0,.56,0,1.12,0,1.56h0a19.74,19.74,0,0,0-7.35-4.16,14,14,0,0,0-4.25-.45c-3.9.16-10,4.48-13.1,8.14-.66.79-1.3,1.52-1.9,2.19A24.74,24.74,0,0,0,76,50.73h0C62.6,49.79,52.31,38.07,52.88,24.24A25,25,0,0,1,78.67,0Z"/></g></g></svg>
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -100,6 +100,7 @@ export default {
|
||||||
this.userAvatar = res.data.userDetails.profilePhoto;
|
this.userAvatar = res.data.userDetails.profilePhoto;
|
||||||
this.userName = res.data.user.name;
|
this.userName = res.data.user.name;
|
||||||
this.isLogin = true;
|
this.isLogin = true;
|
||||||
|
localStorage.setItem("dep",res.data.user.dep)
|
||||||
}else {
|
}else {
|
||||||
Message.warning("登录失败,请重新登录");
|
Message.warning("登录失败,请重新登录");
|
||||||
this.toLogin()
|
this.toLogin()
|
||||||
|
|
|
@ -16,19 +16,26 @@
|
||||||
<sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path" />
|
<sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path" />
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <i class="el-icon-document"/>-->
|
||||||
|
<!-- <el-submenu index="4" >-->
|
||||||
|
<!-- <template slot="title">-->
|
||||||
|
<!-- <i class="el-icon-document sub-el-icon"></i>-->
|
||||||
|
<!-- <span>文件管理2.0</span>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!--<!– <item title="文件管理2.0"/>–>-->
|
||||||
|
<!-- <el-menu-item-group>-->
|
||||||
|
|
||||||
<el-submenu index="4">
|
<!-- <el-menu-item v-for="item in filesTypeList" :index="item.filesTypeId">-->
|
||||||
<item title="文件管理2.0" />
|
<!-- <item icon="el-icon-folder-opened" :title="item.name" />-->
|
||||||
<el-menu-item-group>
|
<!-- </el-menu-item>-->
|
||||||
|
|
||||||
<el-menu-item v-for="item in filesTypeList" :index="item.filesTypeId">
|
<!-- </el-menu-item-group>-->
|
||||||
<item icon="el-icon-folder-opened" :title="item.name" />
|
<!-- </el-submenu>-->
|
||||||
</el-menu-item>
|
<!-- <el-menu-item index="/platformData" >-->
|
||||||
|
<!-- <item icon="el-icon-data-analysis" title="平台信息记录板"/>-->
|
||||||
</el-menu-item-group>
|
<!-- </el-menu-item>-->
|
||||||
</el-submenu>
|
<el-menu-item index="/OSD" >
|
||||||
<el-menu-item index="/platformData" >
|
<item icon="el-icon-s-comment" title="开源资料分享"/>
|
||||||
<item icon="el-icon-data-analysis" title="平台信息记录板"/>
|
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/userManage" v-if="isRoot">
|
<el-menu-item index="/userManage" v-if="isRoot">
|
||||||
<item icon="el-icon-setting" title="用户管理"/>
|
<item icon="el-icon-setting" title="用户管理"/>
|
||||||
|
@ -87,11 +94,11 @@ export default {
|
||||||
// 导航栏页面更改
|
// 导航栏页面更改
|
||||||
handleSelect(key, keyPath) {
|
handleSelect(key, keyPath) {
|
||||||
|
|
||||||
if (key!=="/userManage" && key!=="/fileList" && key !== "/platformData"){
|
if (key!=="/userManage" && key!=="/fileList" && key !== "/OSD" && key !== "/expert/form" && key !== "/expert/add" && key !== "/meetingSys/Add" && key !== "/meetingSys/List"){
|
||||||
console.log(key)
|
console.log(key)
|
||||||
pageUtils.openPage(this.$router,"/fileListV2/"+ key)
|
pageUtils.openPage(this.$router,"/fileListV2/"+ key)
|
||||||
|
|
||||||
}else if (key =="/userManage" || key == "/platformData"){
|
}else if (key =="/userManage" || key=="/OSD"){
|
||||||
pageUtils.openPage(this.$router,key)
|
pageUtils.openPage(this.$router,key)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -118,3 +125,16 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.sub-el-icon {
|
||||||
|
color: currentColor;
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*侧边栏圆角 阴影*/
|
||||||
|
.sidebar-container{
|
||||||
|
border-radius: 0px 15px 15px 0px;
|
||||||
|
box-shadow: 5px 0px 15px 0px rgba(0, 0, 0, 0.27);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -18,6 +18,9 @@ import api from './utils/http/index'
|
||||||
import '@/icons' // icon
|
import '@/icons' // icon
|
||||||
// 时间
|
// 时间
|
||||||
import moment from "moment"
|
import moment from "moment"
|
||||||
|
|
||||||
|
//swal
|
||||||
|
import swal from 'sweetalert'
|
||||||
//关闭自带vuex权限管理
|
//关闭自带vuex权限管理
|
||||||
// import '@/permission' // permission control
|
// import '@/permission' // permission control
|
||||||
|
|
||||||
|
@ -37,6 +40,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||||
Vue.prototype.$md5 = md5;
|
Vue.prototype.$md5 = md5;
|
||||||
Vue.use(api)
|
Vue.use(api)
|
||||||
Vue.prototype.$axios = Axios
|
Vue.prototype.$axios = Axios
|
||||||
|
|
||||||
// set ElementUI lang to EN
|
// set ElementUI lang to EN
|
||||||
// Vue.use(ElementUI, { locale })
|
// Vue.use(ElementUI, { locale })
|
||||||
// 如果想要中文版 element-ui,按如下方式声明
|
// 如果想要中文版 element-ui,按如下方式声明
|
||||||
|
|
|
@ -47,7 +47,7 @@ export const constantRoutes = [
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
redirect: '/fileListV2/1',
|
redirect: '/fileListV3',
|
||||||
hidden: true,
|
hidden: true,
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -74,6 +74,7 @@ export const constantRoutes = [
|
||||||
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
path:'/',
|
path:'/',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
|
@ -87,16 +88,128 @@ export const constantRoutes = [
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
path:'/',
|
path:'/',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "OSD",
|
||||||
|
name: 'OSD',
|
||||||
|
component:() => import("@/views/openSourceDiscuss/OSD"),
|
||||||
|
meta: {title: '开源资料分享',icon: 'el-icon-s-comment'}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path:'/',
|
||||||
|
component: Layout,
|
||||||
|
hidden: true,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "OnlyOfficeTest",
|
||||||
|
name: 'OnlyOfficeTest',
|
||||||
|
component:() => import("@/views/onlyOfficeTest/OnlyOfficeTest"),
|
||||||
|
meta: {title: 'OnlyOfficeTest',icon: 'el-icon-setting'}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path:'/',
|
||||||
|
component: Layout,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "FileListV3",
|
||||||
|
name: 'FileListV3',
|
||||||
|
component:() => import("@/views/fileList/FileListV3"),
|
||||||
|
meta: {title: '文件列表3.0',icon: 'el-icon-folder-opened'}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path:'/',
|
||||||
|
component: Layout,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "GetFile",
|
||||||
|
name: 'GetFile',
|
||||||
|
component:() => import("@/views/fileList/GetFile"),
|
||||||
|
meta: {title: '文件提取',icon: 'el-icon-folder-opened'}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path:'/expert',
|
||||||
|
redirect: '/expert/form',
|
||||||
|
component: Layout,
|
||||||
|
meta: {title: '专家库',icon: 'el-icon-s-data'},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "add",
|
||||||
|
name: 'AddExpert',
|
||||||
|
component:() => import("@/views/expertSystem/AddExpert"),
|
||||||
|
meta: {title: '添加专家',icon: 'el-icon-s-data'},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "form",
|
||||||
|
name: 'expertForm',
|
||||||
|
component:() => import("@/views/expertSystem/expertForm"),
|
||||||
|
meta: {title: '专家库列表',icon: 'el-icon-s-data'},
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path:'/meetingSys',
|
||||||
|
redirect: '/meeting/Add',
|
||||||
|
component: Layout,
|
||||||
|
meta: {title: '会议系统',icon: 'el-icon-s-data'},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "Add",
|
||||||
|
name: 'AddMeeting',
|
||||||
|
component:() => import("@/views/meetingSys/AddMeeting"),
|
||||||
|
meta: {title: '添加会议',icon: 'el-icon-s-data'},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "List",
|
||||||
|
name: 'MeetingList',
|
||||||
|
component:() => import("@/views/meetingSys/MeetingList"),
|
||||||
|
meta: {title: '会议列表',icon: 'el-icon-s-data'},
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path:'/',
|
||||||
|
component: Layout,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "UserCenter",
|
||||||
|
name: 'UserCenter',
|
||||||
|
component:() => import("@/views/userCenter/UserCenter"),
|
||||||
|
meta: {title: '用户中心',icon: 'el-icon-user'}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path:'/',
|
||||||
|
component: Layout,
|
||||||
|
// hidden: true,
|
||||||
|
meta: {title: '采购相关',icon: 'el-icon-setting'},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "platformData",
|
path: "platformData",
|
||||||
name: 'PlatformData',
|
name: 'PlatformData',
|
||||||
component:() => import("@/views/platformData/PlatformData"),
|
component:() => import("@/views/platformData/PlatformData"),
|
||||||
meta: {title: '平台信息记录板',icon: 'el-icon-setting'}
|
meta: {title: '平台信息记录板',icon: 'el-icon-setting'}
|
||||||
|
},{
|
||||||
|
path: "PurchasingManage",
|
||||||
|
name: 'PurchasingManage',
|
||||||
|
component:() => import("@/views/platformData/PurchasingManage"),
|
||||||
|
meta: {title: '采购管理',icon: 'el-icon-setting'}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -62,4 +62,11 @@ div:focus {
|
||||||
// main-container global css
|
// main-container global css
|
||||||
.app-container {
|
.app-container {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
height: 100vh;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-table-container{
|
||||||
|
padding: 20px;
|
||||||
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,6 +150,147 @@ export const updatePassword = data =>{
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getAllPlatformData = () =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/plat/getAllPlatformData',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export const getAllExpertInfo = () =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/expert/getAllExpertInfo',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getExpertInfoByName = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/expert/getExpertInfoByName',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getAllRankInfo = () =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/rank/getAllRankInfo',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const insertRankInfo = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/rank/insertRankInfo',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const insertExpertInfo = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/expert/insertExpertInfo',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getFilesDirMeta = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/file/getFilesDirMeta',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export const mkdir = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/file/mkdir',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const shareByCode = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/file/shareByCode',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getByCode = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/file/getByCode',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getAllMessage = () =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/message/getAll',
|
||||||
|
method: 'post',
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const insertMessage = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/message/insert',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export const exportExpertInfoToExcel = data =>{
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/expert/exportExpertInfoToExcel',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 默认全部倒出
|
// 默认全部倒出
|
||||||
// 根据需要进行
|
// 根据需要进行
|
||||||
export default {
|
export default {
|
||||||
|
@ -166,5 +307,18 @@ export default {
|
||||||
getFilesInfoByName,
|
getFilesInfoByName,
|
||||||
getAllUser,
|
getAllUser,
|
||||||
getFileTypeById,
|
getFileTypeById,
|
||||||
updatePassword
|
updatePassword,
|
||||||
|
getAllPlatformData,
|
||||||
|
getAllExpertInfo,
|
||||||
|
getExpertInfoByName,
|
||||||
|
getAllRankInfo,
|
||||||
|
insertRankInfo,
|
||||||
|
insertExpertInfo,
|
||||||
|
getFilesDirMeta,
|
||||||
|
mkdir,
|
||||||
|
shareByCode,
|
||||||
|
getByCode,
|
||||||
|
getAllMessage,
|
||||||
|
insertMessage,
|
||||||
|
exportExpertInfoToExcel
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,157 @@
|
||||||
|
<template>
|
||||||
|
|
||||||
|
<div class="app-container">
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>添加专家</span>
|
||||||
|
</div>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form label-position="left" ref="form" :model="form" label-width="80px" >
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="专家姓名:" >
|
||||||
|
<el-input v-model="form.expertName" style="width: 300px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="专家职称:" >
|
||||||
|
<el-select ref="optionRef" v-model="form.expertRankId" placeholder="请选择职称" style="width: 300px">
|
||||||
|
<el-option v-for="item in rankList"
|
||||||
|
:key="item.rankId"
|
||||||
|
:label="item.rankName"
|
||||||
|
:value="String(item.rankId)"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="专家单位:" >
|
||||||
|
<el-input v-model="form.expertUnit" style="width: 300px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="银行卡号:" >
|
||||||
|
<el-input v-model="form.expertCardNum" style="width: 300px"></el-input>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="开户行:" >
|
||||||
|
<el-input v-model="form.expertBankName" style="width: 300px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="身份证:" >
|
||||||
|
<el-input v-model="form.expertIdCard" style="width: 300px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item label="开支标准">
|
||||||
|
<el-input v-model="form.expertStandard" placeholder="开支标注说明:高级职称2400,中级职称1600"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="onSubmit">立即添加</el-button>
|
||||||
|
<el-button>取消</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Message } from 'element-ui'
|
||||||
|
import { insertExpertInfo } from '@/utils/http/interface'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AddExpert',
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
form: {
|
||||||
|
expertId:'',
|
||||||
|
expertName:'',
|
||||||
|
expertRankId:'',
|
||||||
|
expertRankName:'',
|
||||||
|
expertUnit:'',
|
||||||
|
expertCardNum:'',
|
||||||
|
expertBankName:'',
|
||||||
|
expertIdCard:'',
|
||||||
|
expertStandard:'',
|
||||||
|
},
|
||||||
|
//职称列表
|
||||||
|
rankList:null
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
insertRankInfo(){
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
getAllRankInfo(){
|
||||||
|
this.$api.getAllRankInfo().then((res)=>{
|
||||||
|
if (res.status === 0) {
|
||||||
|
this.rankList = res.data
|
||||||
|
}else {
|
||||||
|
Message.warning("服务错误")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onSubmit() {
|
||||||
|
console.log(this.form);
|
||||||
|
console.log(this.$refs.optionRef.selected.label)
|
||||||
|
this.form.expertRankName = this.$refs.optionRef.selected.label
|
||||||
|
this.$api.insertExpertInfo(this.form).then((res)=>{
|
||||||
|
if (res.status === 0) {
|
||||||
|
Message.success("添加成功")
|
||||||
|
//滞空
|
||||||
|
|
||||||
|
}else {
|
||||||
|
Message.warning("服务错误")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getAllRankInfo()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:before,
|
||||||
|
.clearfix:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-card {
|
||||||
|
|
||||||
|
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,341 @@
|
||||||
|
<template>
|
||||||
|
|
||||||
|
<div class="app-table-container">
|
||||||
|
<!--搜索框-->
|
||||||
|
<div class="manageList-header-input">
|
||||||
|
<!-- 输入框 双向绑定数据 自带清空 -->
|
||||||
|
<el-input v-model="searchInfo.keyWords" suffix-icon="el-icon-edit" clearable placeholder="请输入专家姓名">
|
||||||
|
<el-button slot="append" icon="el-icon-search" @click="nameSearch"></el-button>
|
||||||
|
</el-input>
|
||||||
|
<el-button type="primary" @click="dialogVisible = true" style="margin-left: 10px" plain>一键导入专家信息</el-button>
|
||||||
|
<el-button type="primary" style="margin-left: 10px" @click="exportFile" plain>生成专家咨询费发放表</el-button>
|
||||||
|
<el-button type="danger" @click="clearList" plain>清除导出列表</el-button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display: flex; justify-content: space-between; width: 100%;">
|
||||||
|
<div style="width: 49%;">
|
||||||
|
<h2>专家列表</h2>
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
ref="table"
|
||||||
|
:row-class-name="rowClassName"
|
||||||
|
stripe
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="55">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertId"
|
||||||
|
label="ID"
|
||||||
|
width="100">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertName"
|
||||||
|
label="专家姓名"
|
||||||
|
width="100">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertRankName"
|
||||||
|
label="专家职称"
|
||||||
|
width="130">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertUnit"
|
||||||
|
label="专家单位">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertCardNum"
|
||||||
|
label="银行卡号">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertBankName"
|
||||||
|
label="开户行">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertIdCard"
|
||||||
|
label="身份证">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertStandard"
|
||||||
|
label="开支标准">
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="width: 49%;">
|
||||||
|
<h2>待导出列表</h2>
|
||||||
|
<el-table
|
||||||
|
:data="exportList"
|
||||||
|
ref="exportTable"
|
||||||
|
stripe
|
||||||
|
style="width: 100%">
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
prop="expertId"
|
||||||
|
label="ID"
|
||||||
|
width="100">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertName"
|
||||||
|
label="专家姓名"
|
||||||
|
width="100">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertRankName"
|
||||||
|
label="专家职称"
|
||||||
|
width="130">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertUnit"
|
||||||
|
label="专家单位">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertCardNum"
|
||||||
|
label="银行卡号">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertBankName"
|
||||||
|
label="开户行">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertIdCard"
|
||||||
|
label="身份证">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expertStandard"
|
||||||
|
label="开支标准">
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="专家导入"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
width="50%"
|
||||||
|
custom-class="mkdirDialog"
|
||||||
|
:before-close="handleClose">
|
||||||
|
<el-form label-position="top" label-width="80px" :model="filesInfo" :rules="rules" style="text-align: left">
|
||||||
|
<el-form-item label="请上传专家信息模板进行导入(模板请脱水印,否则导入失败)" prop="upload">
|
||||||
|
<p style="cursor: pointer" @click="downloadImportTemplate">点击下载导入模板</p>
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
drag
|
||||||
|
ref="fileUpload"
|
||||||
|
:headers="headers"
|
||||||
|
action="/api/expert/importExpertInfo"
|
||||||
|
:on-success="uploadSuccess"
|
||||||
|
:limit="1">
|
||||||
|
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Message } from 'element-ui'
|
||||||
|
import { exportExpertInfoToExcel, getExpertInfoByName } from '@/utils/http/interface'
|
||||||
|
import { saveAs } from 'file-saver'
|
||||||
|
export default {
|
||||||
|
name: 'expertForm',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 搜索数据
|
||||||
|
searchInfo:{
|
||||||
|
keyWords: "",
|
||||||
|
division: "",
|
||||||
|
type:'',
|
||||||
|
kind: "",
|
||||||
|
},
|
||||||
|
tableData: [
|
||||||
|
],
|
||||||
|
|
||||||
|
//token
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
|
||||||
|
// 上传文件弹窗状态
|
||||||
|
dialogVisible: false,
|
||||||
|
|
||||||
|
//重复人员id数组
|
||||||
|
highlightedExpertIds: [],
|
||||||
|
|
||||||
|
|
||||||
|
//导出列表
|
||||||
|
exportList : []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
|
||||||
|
//清除导出列表
|
||||||
|
clearList(){
|
||||||
|
this.exportList = []
|
||||||
|
|
||||||
|
//选择器的状态也需要清空
|
||||||
|
this.$refs.table.clearSelection();
|
||||||
|
},
|
||||||
|
|
||||||
|
//下载导入模板
|
||||||
|
downloadImportTemplate(){
|
||||||
|
saveAs("http://"+ window.location.host +"/api/sys/专家信息导入模板.xls","专家信息导入模板.xls")
|
||||||
|
},
|
||||||
|
//标红重复人员
|
||||||
|
rowClassName({ row, rowIndex }){
|
||||||
|
|
||||||
|
if (this.highlightedExpertIds.includes(row.expertId)) {
|
||||||
|
return 'red-row';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
//导入专家调用接口返回
|
||||||
|
uploadSuccess(response){
|
||||||
|
if (response.status == 1) {
|
||||||
|
Message.success(response.msg)
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.$refs.fileUpload.clearFiles()
|
||||||
|
this.highlightedExpertIds = []
|
||||||
|
this.getAllExpertInfo()
|
||||||
|
}else if (response.status == 0){
|
||||||
|
//有重复信息
|
||||||
|
Message.warning(response.msg)
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.$refs.fileUpload.clearFiles()
|
||||||
|
//重复专家标红
|
||||||
|
|
||||||
|
//取出data中的expertId并添加到highlightedExpertIds数组
|
||||||
|
let data = response.data
|
||||||
|
this.highlightedExpertIds = data.map(item => item.expertId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
console.log(this.highlightedExpertIds)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//多选
|
||||||
|
handleSelectionChange(val) {
|
||||||
|
// 最大选择数量
|
||||||
|
const maxSelect = 9
|
||||||
|
|
||||||
|
if (val.length > maxSelect) {
|
||||||
|
this.$message({
|
||||||
|
type: 'warning',
|
||||||
|
message: `您选择的专家数量超过 ${maxSelect} 个,将生成多个表格`
|
||||||
|
})
|
||||||
|
|
||||||
|
// 由于 selection 是一个数组,我们需要创建一个新的数组,这样 Vue 才能检测到数组的变化。
|
||||||
|
// 我们取前 maxSelect 项作为新的选择
|
||||||
|
// const newSelections = val.slice(0, maxSelect)
|
||||||
|
//
|
||||||
|
// // 使用 nextTick 确保在 DOM 更新后再更改选择,防止出现无法预期的行为
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
// this.$refs.table.clearSelection()
|
||||||
|
// newSelections.forEach(row => {
|
||||||
|
// this.$refs.table.toggleRowSelection(row, true)
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
val.forEach(item => {
|
||||||
|
// 如果exportList中还没有这个项,就添加它
|
||||||
|
if (!this.exportList.find(i => i.expertId === item.expertId)) {
|
||||||
|
this.exportList.push(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// this.exportList = val
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
exportFile(){
|
||||||
|
|
||||||
|
this.$api.exportExpertInfoToExcel(this.exportList).then((res) => {
|
||||||
|
if (res.status == 1){
|
||||||
|
Message.success(res.msg)
|
||||||
|
// console.log("http://"+ window.location.host +"/api/sys/"+ res.data)
|
||||||
|
saveAs("http://"+ window.location.host +"/api/sys/"+ res.data,res.data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
nameSearch(){
|
||||||
|
if (this.searchInfo.keyWords != null && this.searchInfo.keyWords != '' && this.searchInfo.keyWords != undefined){
|
||||||
|
//have search content
|
||||||
|
let expertInfo = {
|
||||||
|
expertName : this.searchInfo.keyWords
|
||||||
|
}
|
||||||
|
this.$api.getExpertInfoByName(expertInfo).then((res)=>{
|
||||||
|
if (res.status == 0) {
|
||||||
|
this.tableData = res.data
|
||||||
|
}else {
|
||||||
|
Message.warning("服务错误")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}else {
|
||||||
|
// no content 但不会出现 一般 想重置目前只能刷新页面
|
||||||
|
this.getAllExpertInfo()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//获取所有专家库
|
||||||
|
getAllExpertInfo(){
|
||||||
|
this.$api.getAllExpertInfo().then((res)=>{
|
||||||
|
if (res.status == 0) {
|
||||||
|
this.tableData = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getAllExpertInfo()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.manageList-header-input {
|
||||||
|
float: left;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.manageList-header-input .el-input {
|
||||||
|
width: 17rem;
|
||||||
|
}
|
||||||
|
.manageList-header-input .el-select {
|
||||||
|
width: 8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/deep/ .el-dialog.mkdirDialog{
|
||||||
|
background: rgba(255, 255, 255, 0.62);
|
||||||
|
border-radius: 5px;
|
||||||
|
backdrop-filter: saturate(50%) blur(8px);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/deep/ .red-row {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -424,6 +424,13 @@ export default {
|
||||||
if (res.status == 0) {
|
if (res.status == 0) {
|
||||||
this.list = res.data
|
this.list = res.data
|
||||||
this.filesInfo.filesTypeId = this.$route.params.typeId
|
this.filesInfo.filesTypeId = this.$route.params.typeId
|
||||||
|
//用于时间格式转换遍历
|
||||||
|
for (let i = 0; i < this.list.length; i++) {
|
||||||
|
//暂无判空
|
||||||
|
this.list[i].uploadTime = this.$moment(this.list[i].uploadTime).format('YYYY年MM月DD日')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
this.listLoading = false
|
this.listLoading = false
|
||||||
}else {
|
}else {
|
||||||
Message.warning("分类显示失败,已显示全部数据")
|
Message.warning("分类显示失败,已显示全部数据")
|
||||||
|
|
|
@ -0,0 +1,902 @@
|
||||||
|
<template>
|
||||||
|
<div v-loading="loading" @contextmenu.prevent="openMenu($event)" class="app-container">
|
||||||
|
|
||||||
|
|
||||||
|
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
|
||||||
|
<li v-show="fileLevel!==0" @click="mkdirDialogVisible=true">新建目录</li>
|
||||||
|
<li v-show="fileLevel!==0 && fileLevel !==1" @click="dialogVisible = true">上传</li>
|
||||||
|
<li v-show="fileLevel!==0 && fileLevel !==1" @click="onlineView">浏览</li>
|
||||||
|
<li v-show="fileLevel!==0 && fileLevel !==1" @click="share">分享</li>
|
||||||
|
<!-- <li v-show="fileLevel!==0 && fileLevel !==1">下载</li>-->
|
||||||
|
<!-- <li v-show="fileLevel!==0 && fileLevel !==1">删除</li>-->
|
||||||
|
<li >属性</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<marquee style="margin-bottom: 5px;font-size: 15px">
|
||||||
|
欢迎使用文件共享管理系统,在线浏览文件请点击右键选择浏览,双击左键下载文件,系统尚未完善,如遇问题欢迎<a @click="addMessage" style="font-weight: bold">留言反馈</a>,谢谢!
|
||||||
|
</marquee>
|
||||||
|
|
||||||
|
<!--搜索框-->
|
||||||
|
<div class="manageList-header-input">
|
||||||
|
<!-- <div style="display: inline; ">-->
|
||||||
|
<!-- <img src="@/assets/back.svg" style="height: 15px; vertical-align:middle;" />-->
|
||||||
|
<!-- <p style="display: inline; vertical-align: middle; font-size: 12px; line-height: 15px;">上一层级</p>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<el-button icon="el-icon-arrow-up" @click="back2Up" style="margin-right: 10px" plain ></el-button>
|
||||||
|
|
||||||
|
<el-input :placeholder=path style="height: 40px;width: 600px" disabled></el-input>
|
||||||
|
<!-- 输入框 双向绑定数据 自带清空 -->
|
||||||
|
<el-button style="margin-left: 10px" key=1 type="primary" @click="dialogVisible = true" :disabled="!(fileLevel>1)">上传文件</el-button>
|
||||||
|
<!-- <el-button style="margin-left: 10px" type="primary" @click="typeDialogVisible = true" plain>添加分类</el-button>-->
|
||||||
|
|
||||||
|
<!-- <span style="margin-left: 10px">当前文件分类:{{ activeFileType }}</span>-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<el-alert
|
||||||
|
title="注意"
|
||||||
|
type="warning"
|
||||||
|
description="局域网支持在线浏览pdf和docx格式文档(在线浏览文件请预先脱水印),doc及其他文件请下载查看。一级二级目录暂不开放文件上传权限,如有需要,请联系管理员:李维昊"
|
||||||
|
style="margin-bottom: 10px;font-size: 20px">
|
||||||
|
</el-alert>
|
||||||
|
|
||||||
|
<!--上传文件-->
|
||||||
|
<el-dialog
|
||||||
|
title="上传文件"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
width="50%"
|
||||||
|
custom-class="mkdirDialog"
|
||||||
|
:before-close="handleClose">
|
||||||
|
<el-form label-position="top" label-width="80px" :model="filesInfo" :rules="rules" style="text-align: left">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item label="文件上传" prop="upload">
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
drag
|
||||||
|
ref="fileUpload"
|
||||||
|
:headers="headers"
|
||||||
|
:data="data={
|
||||||
|
'path':path
|
||||||
|
}"
|
||||||
|
action="/api/file/uploadFileV2"
|
||||||
|
:on-success="uploadSuccess"
|
||||||
|
:limit="1">
|
||||||
|
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!--新建文件夹-->
|
||||||
|
<el-dialog
|
||||||
|
title="新建文件夹"
|
||||||
|
:visible.sync="mkdirDialogVisible"
|
||||||
|
custom-class="mkdirDialog"
|
||||||
|
|
||||||
|
width="30%"
|
||||||
|
:before-close="typeHandleClose">
|
||||||
|
<el-form label-position="top" label-width="80px" :model="fileType" :rules="rules" style="text-align: left">
|
||||||
|
<el-form-item label="文件夹名称" prop="typeName">
|
||||||
|
<el-input placeholder="请输入文件夹名称" v-model="mkdirName"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="mkdir">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!--阅览-->
|
||||||
|
<el-dialog
|
||||||
|
title="浏览"
|
||||||
|
:visible.sync="viewDialogVisible"
|
||||||
|
width="90%"
|
||||||
|
:before-close="viewHandleClose">
|
||||||
|
<el-alert
|
||||||
|
title="注意"
|
||||||
|
type="success"
|
||||||
|
description="如果出现文件内容乱码问题,请检查所上传的文档中西文字体是否匹配(中文文字对应中文字体)"
|
||||||
|
style="margin-bottom: 10px;font-size: 20px"/>
|
||||||
|
<!--render 对应渲染后的方法 src是文件的url链接-->
|
||||||
|
<vue-office-docx v-if="isWord" :src="viewUrl" @rendered="rendered"/>
|
||||||
|
<vue-office-pdf v-if="isPdf" :src="viewUrl" @rendered="rendered"/>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!--小网盘-->
|
||||||
|
<div style="display:inline !important; -webkit-user-select: none; user-select: none; height: 100%">
|
||||||
|
<div v-show="!loading" class="file" v-for="file in fileList" :key="file.name" @dblclick="clickFileIcon(file)" @contextmenu.prevent="saveFileData(file)">
|
||||||
|
<div>
|
||||||
|
<img class="file-svg" :src="getFileTypeIcon(file.directory,file.file,file.name)"/>
|
||||||
|
</div>
|
||||||
|
<div style="display: inline-block">{{ file.name }}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="floating-div" >
|
||||||
|
|
||||||
|
<div class="box-card" style="width: 80px;height: 30px;border-radius: 10px 10px 0 0;display: flex; justify-content: center; align-items: center; cursor: pointer">关闭</div>
|
||||||
|
<el-card class="box-card" shadow="hover">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>留言信息版</span>
|
||||||
|
<el-button style="float: right; padding: 3px 0" type="text" @click="addMessage()">发布留言</el-button>
|
||||||
|
</div>
|
||||||
|
<div ref="messageItem" class="message-item">
|
||||||
|
<div v-for="message in messageBoardList" :key="message.messageBoardId" class="text item">
|
||||||
|
<div>
|
||||||
|
<h5 :style="{color:message.level==='重要'?'#e54d4d':message.level==='一般'?'#d09a35':message.level==='不重要'?'#4cb95a':'black'}">{{message.message}}</h5>
|
||||||
|
{{message.time}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!--发布留言-->
|
||||||
|
<el-dialog
|
||||||
|
title="新建文件夹"
|
||||||
|
:visible.sync="messageVisible"
|
||||||
|
custom-class="mkdirDialog"
|
||||||
|
|
||||||
|
width="30%"
|
||||||
|
:before-close="messageClose">
|
||||||
|
<el-form label-position="top" label-width="80px" :model="messageBoard" :rules="rules" style="text-align: left">
|
||||||
|
<el-form-item label="发布留言" prop="message">
|
||||||
|
<el-input placeholder="请填写留言信息" v-model="messageBoard.message"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-select v-model="messageBoard.level" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in levelOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="insertMessage">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!--<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>-->
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { saveAs } from 'file-saver'
|
||||||
|
import { getList } from '@/api/table'
|
||||||
|
import pageUtils from '@/utils/pageUtils'
|
||||||
|
import { Message } from 'element-ui'
|
||||||
|
import { getFilesInfoByName, getFilesInfoByType, shareByCode } from '@/utils/http/interface'
|
||||||
|
import { toBase64 } from 'js-base64'
|
||||||
|
import VueOfficeDocx from '@vue-office/docx'
|
||||||
|
import VueOfficePdf from '@vue-office/pdf'
|
||||||
|
import swal from 'sweetalert'
|
||||||
|
export default {
|
||||||
|
name: 'FileList',
|
||||||
|
components:{
|
||||||
|
VueOfficeDocx,
|
||||||
|
VueOfficePdf
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
statusFilter(status) {
|
||||||
|
const statusMap = {
|
||||||
|
'已更新': 'success',
|
||||||
|
'待更新': 'gray',
|
||||||
|
'已废弃': 'danger'
|
||||||
|
}
|
||||||
|
return statusMap[status]
|
||||||
|
},
|
||||||
|
|
||||||
|
typeFilter(type) {
|
||||||
|
const typeMap = {
|
||||||
|
'会议材料': 'success',
|
||||||
|
'管理办法': 'success',
|
||||||
|
'采购材料': 'success'
|
||||||
|
}
|
||||||
|
return typeMap[status]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
//留言板列表
|
||||||
|
messageBoardList:null,
|
||||||
|
|
||||||
|
visible: false,
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
|
||||||
|
|
||||||
|
//文件loading
|
||||||
|
loading:true,
|
||||||
|
// 文件目录
|
||||||
|
path:'/',
|
||||||
|
|
||||||
|
// 文件层级
|
||||||
|
fileLevel:0,
|
||||||
|
//文件列表
|
||||||
|
fileList:[
|
||||||
|
],
|
||||||
|
//新建文件夹名称
|
||||||
|
mkdirName:'新建文件夹',
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//判断是否已经有showInfo
|
||||||
|
showInfoStatus:false,
|
||||||
|
|
||||||
|
//当前文件类型
|
||||||
|
activeFileType:null,
|
||||||
|
|
||||||
|
|
||||||
|
list: null,
|
||||||
|
listLoading: true,
|
||||||
|
// 搜索数据
|
||||||
|
searchInfo:{
|
||||||
|
keyWords: "",
|
||||||
|
division: "",
|
||||||
|
type:'',
|
||||||
|
kind: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
//token
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
|
||||||
|
//dialog规则
|
||||||
|
rules: {
|
||||||
|
name: [
|
||||||
|
{ required: true, message: '请填写文件名', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
fileTypeId: [
|
||||||
|
{ required: true, message: '请选择文件分类', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
status: [
|
||||||
|
{ required: true, message: '请选择文件状态', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
upload: [
|
||||||
|
{ required: true, message: '请上传文件', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
typeName:[
|
||||||
|
{required: true, message: '请输入文件夹名称', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
//messagedialog规则
|
||||||
|
messageRules: {
|
||||||
|
message: [
|
||||||
|
{ required: true, message: '请填写留言信息', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
//上传文件
|
||||||
|
filesInfo:{
|
||||||
|
filesInfoId:null,
|
||||||
|
filesTypeId:null,
|
||||||
|
location:"",
|
||||||
|
name:"",
|
||||||
|
uploadUserId:"",
|
||||||
|
status:"已更新"
|
||||||
|
},
|
||||||
|
|
||||||
|
//添加分类
|
||||||
|
fileType:{
|
||||||
|
name:""
|
||||||
|
},
|
||||||
|
//留言
|
||||||
|
messageBoard:{
|
||||||
|
message:null,
|
||||||
|
level:null,
|
||||||
|
time:null
|
||||||
|
},
|
||||||
|
levelOptions: [{
|
||||||
|
value: '重要',
|
||||||
|
label: '重要'
|
||||||
|
}, {
|
||||||
|
value: '一般',
|
||||||
|
label: '一般'
|
||||||
|
}, {
|
||||||
|
value: '不重要',
|
||||||
|
label: '不重要'
|
||||||
|
}],
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 上传文件弹窗状态
|
||||||
|
dialogVisible: false,
|
||||||
|
//分类弹窗
|
||||||
|
mkdirDialogVisible: false,
|
||||||
|
|
||||||
|
//文件类型列表
|
||||||
|
filesTypeList: null,
|
||||||
|
// 暂时不需要
|
||||||
|
// filesData:{
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// 浏览查看
|
||||||
|
viewDialogVisible:false,
|
||||||
|
viewUrl:null,
|
||||||
|
|
||||||
|
//在线浏览的文件信息
|
||||||
|
viewFileData:null,
|
||||||
|
|
||||||
|
//在线浏览文件类型
|
||||||
|
isWord:false,
|
||||||
|
isPdf:false,
|
||||||
|
//用户IP
|
||||||
|
ip:null,
|
||||||
|
messageVisible:false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.fetchData()
|
||||||
|
},
|
||||||
|
|
||||||
|
computed:{
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
//发布留言
|
||||||
|
addMessage(){
|
||||||
|
this.messageVisible = true
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
openMenu(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var x = e.pageX;
|
||||||
|
var y = e.pageY;
|
||||||
|
this.top = y -20;
|
||||||
|
this.left = x -200;
|
||||||
|
this.visible = true;//在这里控制右键菜单的打开
|
||||||
|
},
|
||||||
|
//close
|
||||||
|
closeMenu() {
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//提示
|
||||||
|
showInfo(){
|
||||||
|
if (this.showInfoStatus == false) {
|
||||||
|
this.$notify.warning({
|
||||||
|
title:"注意",
|
||||||
|
message:"在线浏览功能支持office办公文档、PDF文档、txt、java、md等纯文本、图片、mp3、mp4多媒体格式,其他格式请点击下载进行浏览",
|
||||||
|
position: 'bottom-right'
|
||||||
|
})
|
||||||
|
this.showInfoStatus = true
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
getAllType(){
|
||||||
|
this.$api.getAllType().then((res)=>{
|
||||||
|
if (res.status === 0) {
|
||||||
|
this.filesTypeList =res.data
|
||||||
|
}
|
||||||
|
console.log(res)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getAllFiles(){
|
||||||
|
this.$api.getAllFilesInfo().then((res)=>{
|
||||||
|
console.log(res)
|
||||||
|
if (res.status === 0) {
|
||||||
|
this.list = res.data
|
||||||
|
|
||||||
|
console.log(this.list)
|
||||||
|
this.listLoading = false
|
||||||
|
}else {
|
||||||
|
Message.warning("加载失败")
|
||||||
|
}
|
||||||
|
}).catch(function (res) {
|
||||||
|
alert(res);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 获取数据
|
||||||
|
fetchData() {
|
||||||
|
this.listLoading = true
|
||||||
|
this.selectByType()
|
||||||
|
this.getAllType()
|
||||||
|
|
||||||
|
},
|
||||||
|
downloadFile(link) {
|
||||||
|
window.location.href = '/api/' + link
|
||||||
|
// console.log('/api' + link)
|
||||||
|
// pageUtils.openPage(this.$router, '/api' + link)
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//关闭在线浏览
|
||||||
|
viewHandleClose(){
|
||||||
|
this.viewDialogVisible = false
|
||||||
|
this.viewUrl = null
|
||||||
|
this.isPdf = false
|
||||||
|
this.isWord = false
|
||||||
|
},
|
||||||
|
|
||||||
|
//关闭上传弹窗
|
||||||
|
handleClose() {
|
||||||
|
this.dialogVisible = false;
|
||||||
|
this.filesInfo.filesInfoId = null;
|
||||||
|
this.filesInfo.location = "";
|
||||||
|
this.filesInfo.name = "";
|
||||||
|
this.filesInfo.uploadUserId = "";
|
||||||
|
this.filesInfo.status = "已更新";
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
//关闭添加分类弹窗
|
||||||
|
typeHandleClose(){
|
||||||
|
this.mkdirDialogVisible = false;
|
||||||
|
this.fileType.name = ""
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
//关闭留言弹窗
|
||||||
|
messageClose(){
|
||||||
|
this.messageVisible = false;
|
||||||
|
// this.fileType.name = ""
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
resetForm(formName) {
|
||||||
|
this.$refs[formName].resetFields();
|
||||||
|
},
|
||||||
|
|
||||||
|
//上传已生效
|
||||||
|
uploadSuccess(response, file, fileList){
|
||||||
|
if (response.status == 0) {
|
||||||
|
Message.success("上传成功")
|
||||||
|
|
||||||
|
// this.filesInfo.location = response.url
|
||||||
|
// this.filesInfo.name = file.name
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.$refs.fileUpload.clearFiles()
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
//添加fileinfo
|
||||||
|
fileInfoSubmit(){
|
||||||
|
//检查是否有url
|
||||||
|
if (this.filesInfo.location != null && this.filesInfo.location != '') {
|
||||||
|
//提交
|
||||||
|
console.log(localStorage.getItem("userId"))
|
||||||
|
this.filesInfo.uploadUserId = localStorage.getItem("userId")
|
||||||
|
this.$api.addFileInfo(this.filesInfo).then((res)=>{
|
||||||
|
console.log(res)
|
||||||
|
if (res.status == 0) {
|
||||||
|
Message.success("上传成功")
|
||||||
|
this.handleClose()
|
||||||
|
this.selectByType()
|
||||||
|
this.$refs.fileUpload.clearFiles()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
Message.warning("请上传文件完善信息")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//判断文件类型并返回文件类型图片
|
||||||
|
getFileTypeIcon(directory,file,name){
|
||||||
|
//先判断是否是文件夹
|
||||||
|
if (directory) {
|
||||||
|
return require('@/assets/file_icon/folder.svg')
|
||||||
|
}else if (file){
|
||||||
|
//判断是什么文件
|
||||||
|
let nameN = name.split('.')
|
||||||
|
let fileType = nameN[1]
|
||||||
|
|
||||||
|
switch(fileType){
|
||||||
|
case 'doc':
|
||||||
|
case 'docx':
|
||||||
|
return require('@/assets/file_icon/word3.svg')
|
||||||
|
case 'ppt':
|
||||||
|
case 'pptx':
|
||||||
|
return require('@/assets/file_icon/ppt3.svg')
|
||||||
|
case 'xls':
|
||||||
|
case 'xlsx':
|
||||||
|
return require('@/assets/file_icon/excel3.svg')
|
||||||
|
case 'pdf':
|
||||||
|
return require('@/assets/file_icon/pdf3.svg')
|
||||||
|
case 'zip':
|
||||||
|
case 'rar':
|
||||||
|
return require('@/assets/file_icon/zip.svg')
|
||||||
|
case 'exe':
|
||||||
|
return require('@/assets/file_icon/exe.svg')
|
||||||
|
default:
|
||||||
|
return require("@/assets/file_icon/unu.svg")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
//获取目录下文件
|
||||||
|
getFilesDirMeta(){
|
||||||
|
this.loading = true
|
||||||
|
let path = {
|
||||||
|
path : this.path
|
||||||
|
}
|
||||||
|
this.$api.getFilesDirMeta(path).then((res)=>{
|
||||||
|
|
||||||
|
if (res.status == 0) {
|
||||||
|
this.fileList = res.data
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
//点击文件图表 进入下一层目录或打开文件
|
||||||
|
clickFileIcon(file){
|
||||||
|
// 判断是否为文件夹
|
||||||
|
if (file.directory){
|
||||||
|
//是 进入
|
||||||
|
//检测用户信息 这块逻辑放到后端更好
|
||||||
|
var dep = localStorage.getItem('dep')
|
||||||
|
if (file.name === '一室') {
|
||||||
|
console.log(file.name)
|
||||||
|
|
||||||
|
if (dep ==='一室' || dep === '管理员'){
|
||||||
|
//继续访问下一层
|
||||||
|
this.path = this.path + file.name + "/"
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
this.fileLevel = this.fileLevel + 1
|
||||||
|
}else{
|
||||||
|
//无权访问 提示信息 后续可做成输入密码授权访问
|
||||||
|
Message.warning("抱歉,您无权限访问,您的部门是:"+ dep)
|
||||||
|
}
|
||||||
|
}else if (file.name === '二室') {
|
||||||
|
if (dep === '二室'|| dep === '管理员'){
|
||||||
|
//继续访问下一层
|
||||||
|
this.path = this.path + file.name + "/"
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
this.fileLevel = this.fileLevel + 1
|
||||||
|
}else {
|
||||||
|
//无权访问 提示信息 后续可做成输入密码授权访问
|
||||||
|
Message.warning("抱歉,您无权限访问,您的部门是:"+ dep)
|
||||||
|
}
|
||||||
|
}else if (file.name === '四室') {
|
||||||
|
if (dep === '四室'|| dep === '管理员'){
|
||||||
|
//继续访问下一层
|
||||||
|
this.path = this.path + file.name + "/"
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
this.fileLevel = this.fileLevel + 1
|
||||||
|
}else {
|
||||||
|
//无权访问 提示信息 后续可做成输入密码授权访问
|
||||||
|
Message.warning("抱歉,您无权限访问,您的部门是:"+ dep)
|
||||||
|
}
|
||||||
|
}else if (file.name === '传达文件') {
|
||||||
|
if (dep === '管理员'){
|
||||||
|
//继续访问下一层
|
||||||
|
this.path = this.path + file.name + "/"
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
this.fileLevel = this.fileLevel + 1
|
||||||
|
}else {
|
||||||
|
//无权访问 提示信息 后续可做成输入密码授权访问
|
||||||
|
Message.warning("抱歉,您无权限访问,您的部门是:"+ dep)
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
//不做限制
|
||||||
|
this.path = this.path + file.name + "/"
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
this.fileLevel = this.fileLevel + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}else {
|
||||||
|
//不是 直接下载
|
||||||
|
|
||||||
|
//第一个是:Blob、File、Url 可以是二进制流、文件、URL的地址。
|
||||||
|
//第二个是:文件的名字
|
||||||
|
//第三个是:可选的object对象
|
||||||
|
|
||||||
|
saveAs("http://"+ window.location.host + "/api/files"+this.path + file.name,file.name)
|
||||||
|
}
|
||||||
|
console.log(file.name)
|
||||||
|
console.log(file.directory)
|
||||||
|
},
|
||||||
|
saveFileData(file){
|
||||||
|
//目前只用于在线浏览 保存文件url信息、判断文件是什么类型
|
||||||
|
//保存文件信息 用于判断文件类型
|
||||||
|
this.viewFileData = file
|
||||||
|
|
||||||
|
this.viewUrl ="http://"+ window.location.host + "/api/files"+this.path + file.name,file.name
|
||||||
|
},
|
||||||
|
//返回上一层
|
||||||
|
back2Up(){
|
||||||
|
//先判断是否处于根目录
|
||||||
|
if (this.fileLevel == 0){
|
||||||
|
Message.success("已经是根目录啦")
|
||||||
|
}else {
|
||||||
|
//去除最后一层
|
||||||
|
let str = this.path;
|
||||||
|
let arr = str.split("/");
|
||||||
|
arr.pop();
|
||||||
|
arr.pop();
|
||||||
|
str = arr.join("/") + "/";
|
||||||
|
console.log(str);
|
||||||
|
this.path = str;
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
this.fileLevel = this.fileLevel - 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 新建文件夹
|
||||||
|
mkdir(){
|
||||||
|
let path = {
|
||||||
|
path : this.path + this.mkdirName
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$api.mkdir(path).then((res) =>{
|
||||||
|
if (res.status == 0) {
|
||||||
|
//添加成功
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
this.mkdirDialogVisible = false
|
||||||
|
}else {
|
||||||
|
//添加失败
|
||||||
|
Message.warning("添加文件夹失败,该文件夹可能已经存在~")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 在线浏览
|
||||||
|
onlineView(){
|
||||||
|
if (this.viewFileData.directory){
|
||||||
|
// 是文件夹 提示无法展示
|
||||||
|
Message.warning("您选择的是文件夹 无法在线浏览")
|
||||||
|
}else {
|
||||||
|
//文件 判断文件类型
|
||||||
|
if (this.viewFileData.name.endsWith('.docx')) {
|
||||||
|
//word文档
|
||||||
|
this.isWord = true
|
||||||
|
this.viewDialogVisible = true
|
||||||
|
}else if (this.viewFileData.name.endsWith('.pdf')){
|
||||||
|
this.isPdf = true
|
||||||
|
this.viewDialogVisible = true
|
||||||
|
}else {
|
||||||
|
Message.warning("您的文件暂不支持在线浏览 请下载查看")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
//分享
|
||||||
|
share(){
|
||||||
|
if (this.viewFileData.directory){
|
||||||
|
// 是文件夹 提示无法分享
|
||||||
|
Message.warning("您选择的是文件夹 无法分享")
|
||||||
|
}else {
|
||||||
|
//生成分享码
|
||||||
|
let code2Url ={
|
||||||
|
url : this.viewUrl
|
||||||
|
}
|
||||||
|
this.$api.shareByCode(code2Url).then((res)=>{
|
||||||
|
if (res.status == 0) {
|
||||||
|
//成功
|
||||||
|
swal("分享成功","分享码:" + res.code + " (区分大小写,24小时有效)")
|
||||||
|
}else{
|
||||||
|
Message.warning("失败")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
//留言板
|
||||||
|
getMessage(){
|
||||||
|
this.$api.getAllMessage().then((res)=>{{
|
||||||
|
if (res.status == 0) {
|
||||||
|
this.messageBoardList = res.data
|
||||||
|
|
||||||
|
for(let i = 0; i < this.messageBoardList.length; i++){
|
||||||
|
|
||||||
|
this.messageBoardList[i].time = this.$moment(this.messageBoardList[i].time).format('YYYY-MM-DD HH:mm')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(this.messageBoardList.toString())
|
||||||
|
}else {
|
||||||
|
Message.warning("留言板获取失败")
|
||||||
|
}
|
||||||
|
|
||||||
|
this.messageBoardList.reverse()
|
||||||
|
|
||||||
|
}})
|
||||||
|
},
|
||||||
|
|
||||||
|
insertMessage(){
|
||||||
|
|
||||||
|
this.messageBoard.time = this.$moment().format();
|
||||||
|
|
||||||
|
|
||||||
|
if (this.messageBoard.level != null && this.messageBoard.message != null){
|
||||||
|
|
||||||
|
|
||||||
|
this.$api.insertMessage(this.messageBoard).then((res)=>{
|
||||||
|
if (res.status == 0) {
|
||||||
|
Message.success("添加成功")
|
||||||
|
this.messageVisible = false
|
||||||
|
this.messageBoard.message = null
|
||||||
|
this.messageBoard.level = null
|
||||||
|
this.messageBoard.time = null
|
||||||
|
|
||||||
|
this.getMessage()
|
||||||
|
}else{
|
||||||
|
Message.warning("添加失败")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getMessage()
|
||||||
|
this.getFilesDirMeta()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
visible(value) {
|
||||||
|
if (value) {
|
||||||
|
document.body.addEventListener('click', this.closeMenu)
|
||||||
|
} else {
|
||||||
|
document.body.removeEventListener('click', this.closeMenu)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.message-item{
|
||||||
|
overflow: auto;
|
||||||
|
height: 300px;
|
||||||
|
max-height: 300px; /* 设置最大高度,超过该高度将出现滚动条 */
|
||||||
|
}
|
||||||
|
.message-item:hover{
|
||||||
|
overflow-y: scroll; /* 鼠标悬停时启用纵向滚动条 */
|
||||||
|
}
|
||||||
|
/*留言板样式*/
|
||||||
|
.floating-div {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
padding: 18px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-card {
|
||||||
|
width: 480px;
|
||||||
|
|
||||||
|
|
||||||
|
background: rgba(240, 240, 240, 0.52);
|
||||||
|
border-radius: 0 10px 10px 10px;
|
||||||
|
backdrop-filter: saturate(50%) blur(8px);
|
||||||
|
}
|
||||||
|
.clearfix:before,
|
||||||
|
.clearfix:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both
|
||||||
|
}
|
||||||
|
|
||||||
|
.manageList-header-input {
|
||||||
|
float: left;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.manageList-header-input .el-input {
|
||||||
|
width: 17rem;
|
||||||
|
}
|
||||||
|
.manageList-header-input .el-select {
|
||||||
|
width: 8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .el-dialog.mkdirDialog{
|
||||||
|
background: rgba(255, 255, 255, 0.62);
|
||||||
|
border-radius: 5px;
|
||||||
|
backdrop-filter: saturate(50%) blur(8px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contextmenu {
|
||||||
|
margin: 0;
|
||||||
|
background: rgba(255, 255, 255, 0.62);
|
||||||
|
z-index: 3000;
|
||||||
|
position: absolute;
|
||||||
|
list-style-type: none;
|
||||||
|
padding: 5px 0;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #333;
|
||||||
|
box-shadow: 2px 2px 3px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
width: 200px;
|
||||||
|
|
||||||
|
backdrop-filter: saturate(50%) blur(8px);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.contextmenu li {
|
||||||
|
margin: 0;
|
||||||
|
padding: 7px 16px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.contextmenu li:hover {
|
||||||
|
background: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*文件svg*/
|
||||||
|
.file-svg{
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
user-drag: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
width: 100px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*文件总体样式*/
|
||||||
|
.file{
|
||||||
|
width: 150px;
|
||||||
|
text-align: center;
|
||||||
|
float: left;
|
||||||
|
margin-top: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,90 @@
|
||||||
|
<template>
|
||||||
|
|
||||||
|
<div class="app-table-container" style=" display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;">
|
||||||
|
<div class="input-bg">
|
||||||
|
<div style=" display: flex; flex-direction: column;align-items: center;">
|
||||||
|
<p>文件:{{name}}</p>
|
||||||
|
<el-input placeholder="请输入提取码" v-model="code"></el-input>
|
||||||
|
<el-button type="primary" style="margin-top: 10px" @click="getByCode">提取文件</el-button>
|
||||||
|
<p v-if="status">提取成功,请选择</p>
|
||||||
|
<div v-if="status">
|
||||||
|
<el-button type="primary" @click="save">下载</el-button>
|
||||||
|
<el-button @click="onlineView">在线浏览</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getByCode } from '@/utils/http/interface'
|
||||||
|
import { Message } from 'element-ui'
|
||||||
|
import { saveAs } from 'file-saver'
|
||||||
|
export default {
|
||||||
|
name: 'GetFile',
|
||||||
|
data() {
|
||||||
|
return{
|
||||||
|
code: null,
|
||||||
|
url: null,
|
||||||
|
name: "*****",
|
||||||
|
status:false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
getByCode(){
|
||||||
|
let code2Url = {
|
||||||
|
code : this.code
|
||||||
|
}
|
||||||
|
this.$api.getByCode(code2Url).then((res)=>{
|
||||||
|
if (res.status == 0) {
|
||||||
|
//成功
|
||||||
|
this.url = res.url
|
||||||
|
this.status = true
|
||||||
|
this.name = this.url.split("/").pop()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//下载
|
||||||
|
save(){
|
||||||
|
console.log(this.url)
|
||||||
|
saveAs(this.url,this.url.split("/").pop())
|
||||||
|
},
|
||||||
|
// 在线浏览
|
||||||
|
onlineView(){
|
||||||
|
|
||||||
|
//文件 判断文件类型
|
||||||
|
if (this.url.split("/").pop().endsWith('.docx')) {
|
||||||
|
//word文档
|
||||||
|
this.isWord = true
|
||||||
|
this.viewDialogVisible = true
|
||||||
|
}else if (this.url.split("/").pop().endsWith('.pdf')){
|
||||||
|
this.isPdf = true
|
||||||
|
this.viewDialogVisible = true
|
||||||
|
}else {
|
||||||
|
Message.warning("您的文件暂不支持在线浏览 请下载查看")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.input-bg{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center; /* 垂直居中 */
|
||||||
|
width: 800px;
|
||||||
|
height: 500px;
|
||||||
|
background: #FFF;
|
||||||
|
border: solid #c7c7c7 2px;
|
||||||
|
|
||||||
|
border-radius: 15px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,54 +1,59 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="login-container">
|
<div class="login-container" :style="{backgroundImage:'url('+require('@/assets/background.png')+')'}" style="background-size: cover;">
|
||||||
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left">
|
|
||||||
|
|
||||||
<div class="title-container">
|
<div class="login-card">
|
||||||
<h3 class="title">文件共享管理系统</h3>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<el-form-item prop="phone">
|
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left">
|
||||||
|
|
||||||
|
<div class="title-container">
|
||||||
|
<h3 class="title">综合协同办公系统</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-form-item prop="phone">
|
||||||
<span class="svg-container">
|
<span class="svg-container">
|
||||||
<svg-icon icon-class="user" />
|
<svg-icon icon-class="user" />
|
||||||
</span>
|
</span>
|
||||||
<el-input
|
<el-input
|
||||||
ref="phone"
|
ref="phone"
|
||||||
v-model="loginForm.phone"
|
v-model="loginForm.phone"
|
||||||
placeholder="手机号"
|
placeholder="手机号"
|
||||||
name="phone"
|
name="phone"
|
||||||
type="text"
|
type="text"
|
||||||
tabindex="1"
|
tabindex="1"
|
||||||
auto-complete="on"
|
auto-complete="on"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item prop="password">
|
<el-form-item prop="password">
|
||||||
<span class="svg-container">
|
<span class="svg-container">
|
||||||
<svg-icon icon-class="password" />
|
<svg-icon icon-class="password" />
|
||||||
</span>
|
</span>
|
||||||
<el-input
|
<el-input
|
||||||
:key="passwordType"
|
:key="passwordType"
|
||||||
ref="password"
|
ref="password"
|
||||||
v-model="loginForm.password"
|
v-model="loginForm.password"
|
||||||
:type="passwordType"
|
:type="passwordType"
|
||||||
placeholder="密码"
|
placeholder="密码"
|
||||||
name="password"
|
name="password"
|
||||||
tabindex="2"
|
tabindex="2"
|
||||||
auto-complete="on"
|
auto-complete="on"
|
||||||
@keyup.enter.native="login"
|
@keyup.enter.native="login"
|
||||||
/>
|
/>
|
||||||
<span class="show-pwd" @click="showPwd">
|
<span class="show-pwd" @click="showPwd">
|
||||||
<svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
|
<svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
|
||||||
</span>
|
</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" @click.native.prevent="login">登录</el-button>
|
<el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px; background-color: #5f76ec" @click.native.prevent="login">登录</el-button>
|
||||||
|
|
||||||
<!-- <div class="tips">-->
|
<!-- <div class="tips">-->
|
||||||
<!-- <span style="margin-right:20px;">phone: admin</span>-->
|
<!-- <span style="margin-right:20px;">phone: admin</span>-->
|
||||||
<!-- <span> password: any</span>-->
|
<!-- <span> password: any</span>-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -146,7 +151,7 @@ export default {
|
||||||
localStorage.setItem("role", res.auth[0].authority);
|
localStorage.setItem("role", res.auth[0].authority);
|
||||||
this.loading = true
|
this.loading = true
|
||||||
Message.success("登录成功")
|
Message.success("登录成功")
|
||||||
pageUtils.openPage(this.$router,"/fileListV2/1"); //跳转至主页
|
pageUtils.openPage(this.$router,"/fileListV3"); //跳转至主页
|
||||||
}
|
}
|
||||||
// Cookies.set("token", res.data.token); // 放置token到Cookie
|
// Cookies.set("token", res.data.token); // 放置token到Cookie
|
||||||
|
|
||||||
|
@ -162,10 +167,10 @@ export default {
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
/* 修复input 背景不协调 和光标变色 */
|
/* 修复input 背景不协调 和光标变色 */
|
||||||
/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
|
/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
|
||||||
|
$bg: rgba(218, 218, 218, 0.49);
|
||||||
|
|
||||||
$bg:#283443;
|
$light_gray: #252525;
|
||||||
$light_gray:#fff;
|
$cursor: #252525;
|
||||||
$cursor: #fff;
|
|
||||||
|
|
||||||
@supports (-webkit-mask: none) and (not (cater-color: $cursor)) {
|
@supports (-webkit-mask: none) and (not (cater-color: $cursor)) {
|
||||||
.login-container .el-input input {
|
.login-container .el-input input {
|
||||||
|
@ -195,10 +200,13 @@ $cursor: #fff;
|
||||||
-webkit-text-fill-color: $cursor !important;
|
-webkit-text-fill-color: $cursor !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
input::placeholder{
|
||||||
|
color: #8a8a8a;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-form-item {
|
.el-form-item {
|
||||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
border: 1px solid rgba(13, 106, 227, 0.1);
|
||||||
background: rgba(0, 0, 0, 0.1);
|
background: rgba(0, 0, 0, 0.1);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
color: #454545;
|
color: #454545;
|
||||||
|
@ -207,13 +215,40 @@ $cursor: #fff;
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
$bg:#2d3a4b;
|
$bg: #c5e0ff;
|
||||||
$dark_gray:#889aa4;
|
$dark_gray: #72828a;
|
||||||
$light_gray:#eee;
|
$light_gray: #424242;
|
||||||
|
|
||||||
|
.login-card{
|
||||||
|
background-color: rgba(255, 255, 255, 0.7); // 设置半透明背景颜色
|
||||||
|
border-radius: 10px; // 圆角
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); // 卡片的阴影效果
|
||||||
|
backdrop-filter: blur(10px); // 背景高斯模糊效果
|
||||||
|
padding: 30px; // 内边距
|
||||||
|
width: 600px; // 卡片宽度
|
||||||
|
max-width: 100%;
|
||||||
|
margin: 50px auto; // 居中对齐,顶部和底部有一定间距
|
||||||
|
position: relative;
|
||||||
|
z-index: 10; // 保持卡片在最上层
|
||||||
|
}
|
||||||
|
|
||||||
.login-container {
|
.login-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 100vh; // 垂直居中
|
||||||
|
width: 100%;
|
||||||
|
//background-color: #f0f2f5; // 更淡的背景颜色
|
||||||
|
padding: 20px; // 为小屏幕添加一些内边距
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
//background-image: require('@/assets/file_icon/excel3.svg');
|
||||||
background-color: $bg;
|
background-color: $bg;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
|
@ -228,7 +263,7 @@ $light_gray:#eee;
|
||||||
|
|
||||||
.tips {
|
.tips {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #fff;
|
color: #606060;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
|
|
|
@ -0,0 +1,147 @@
|
||||||
|
<template>
|
||||||
|
|
||||||
|
<div class="app-container">
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>添加会议</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form label-position="left" ref="form" :model="form" label-width="80px" >
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="会议名称:" >
|
||||||
|
<el-input v-model="form.expertName" style="width: 300px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="课题名称:" >
|
||||||
|
<el-input v-model="form.expertName" style="width: 300px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="会议地点:" >
|
||||||
|
<el-input v-model="form.expertUnit" style="width: 300px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="课题科目:" >
|
||||||
|
<el-input v-model="form.expertCardNum" style="width: 300px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<h4 style="margin-bottom: 30px">请选择参会专家</h4>
|
||||||
|
<div class="transfer">
|
||||||
|
<el-transfer
|
||||||
|
filterable
|
||||||
|
:titles="['专家库', '已选专家']"
|
||||||
|
:filter-method="filterMethod"
|
||||||
|
filter-placeholder="请输入专家姓名"
|
||||||
|
v-model="value"
|
||||||
|
:data="data">
|
||||||
|
</el-transfer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h4 style=" margin-bottom: 30px">请选择项目组成员</h4>
|
||||||
|
<div class="transfer">
|
||||||
|
<el-transfer
|
||||||
|
filterable
|
||||||
|
:titles="['项目组成员', '已选名单']"
|
||||||
|
:filter-method="filterMethod"
|
||||||
|
filter-placeholder="请输入姓名"
|
||||||
|
v-model="value"
|
||||||
|
:data="data">
|
||||||
|
</el-transfer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-button type="primary" @click="onSubmit">立即添加</el-button>
|
||||||
|
<el-button>取消</el-button>
|
||||||
|
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'AddMeeting',
|
||||||
|
data() {
|
||||||
|
const generateData = _ => {
|
||||||
|
const data = [];
|
||||||
|
const cities = ['李光杰', '李明军', '李维昊', '张启磊', '张丁介', '赵鸿儒', '林雪儿'];
|
||||||
|
const pinyin = ['李光杰', '李明军', '李维昊', '张启磊', '张丁介', '赵鸿儒', '林雪儿'];
|
||||||
|
cities.forEach((city, index) => {
|
||||||
|
data.push({
|
||||||
|
label: city,
|
||||||
|
key: index,
|
||||||
|
pinyin: pinyin[index]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
data: generateData(),
|
||||||
|
value: [],
|
||||||
|
filterMethod(query, item) {
|
||||||
|
return item.pinyin.indexOf(query) > -1;
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
expertId:'',
|
||||||
|
expertName:'',
|
||||||
|
expertRankId:'',
|
||||||
|
expertRankName:'',
|
||||||
|
expertUnit:'',
|
||||||
|
expertCardNum:'',
|
||||||
|
expertBankName:'',
|
||||||
|
expertIdCard:'',
|
||||||
|
expertStandard:'',
|
||||||
|
},
|
||||||
|
//职称列表
|
||||||
|
rankList:null
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.transfer{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center; /* 水平居中 */
|
||||||
|
}
|
||||||
|
::v-deep .el-transfer-panel {
|
||||||
|
width: 500px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:before,
|
||||||
|
.clearfix:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-card {
|
||||||
|
|
||||||
|
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<template>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'MeetingList'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,122 @@
|
||||||
|
<template>
|
||||||
|
<div id='vabOnlyOffice'></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'OnlyOfficeEditor',
|
||||||
|
props: {
|
||||||
|
option: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
doctype: '',
|
||||||
|
docEditor: null,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
if (this.docEditor !== null) {
|
||||||
|
this.docEditor.destroyEditor();
|
||||||
|
this.docEditor = null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
option: {
|
||||||
|
handler: function(n) {
|
||||||
|
this.setEditor(n)
|
||||||
|
this.doctype = this.getFileType(n.fileType)
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
if (this.option.url) {
|
||||||
|
this.setEditor(this.option)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async setEditor(option) {
|
||||||
|
if (this.docEditor !== null) {
|
||||||
|
this.docEditor.destroyEditor();
|
||||||
|
this.docEditor = null;
|
||||||
|
}
|
||||||
|
this.doctype = this.getFileType(option.fileType)
|
||||||
|
let config = {
|
||||||
|
document: {
|
||||||
|
//后缀
|
||||||
|
fileType: option.fileType,
|
||||||
|
key: option.key ||'',
|
||||||
|
title: option.title,
|
||||||
|
permissions: {
|
||||||
|
edit: option.isEdit,//是否可以编辑: 只能查看,传false
|
||||||
|
print: option.isPrint,
|
||||||
|
download: false,
|
||||||
|
// "fillForms": true,//是否可以填写表格,如果将mode参数设置为edit,则填写表单仅对文档编辑器可用。 默认值与edit或review参数的值一致。
|
||||||
|
// "review": true //跟踪变化
|
||||||
|
},
|
||||||
|
url: option.url,
|
||||||
|
},
|
||||||
|
documentType: this.doctype,
|
||||||
|
editorConfig: {
|
||||||
|
callbackUrl: option.editUrl,//"编辑word后保存时回调的地址,这个api需要自己写了,将编辑后的文件通过这个api保存到自己想要的位置
|
||||||
|
lang: option.lang,//语言设置
|
||||||
|
//定制
|
||||||
|
customization: {
|
||||||
|
autosave: true,//是否自动保存
|
||||||
|
chat: true,
|
||||||
|
comments: false,
|
||||||
|
help: false,
|
||||||
|
// "hideRightMenu": false,//定义在第一次加载时是显示还是隐藏右侧菜单。 默认值为false
|
||||||
|
//是否显示插件
|
||||||
|
plugins: true,
|
||||||
|
},
|
||||||
|
user:{
|
||||||
|
id:option.user.id,
|
||||||
|
name:option.user.name
|
||||||
|
},
|
||||||
|
mode:option.model?option.model:'edit',
|
||||||
|
},
|
||||||
|
width: '100%',
|
||||||
|
height: '100%',
|
||||||
|
token:option.token||''
|
||||||
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-undef,no-unused-vars
|
||||||
|
this.docEditor = new DocsAPI.DocEditor('vabOnlyOffice', config)
|
||||||
|
|
||||||
|
},
|
||||||
|
getFileType(fileType) {
|
||||||
|
let docType = ''
|
||||||
|
let fileTypesDoc = [
|
||||||
|
'doc', 'docm', 'docx', 'dot', 'dotm', 'dotx', 'epub', 'fodt', 'htm', 'html', 'mht', 'odt', 'ott', 'pdf', 'rtf', 'txt', 'djvu', 'xps',
|
||||||
|
]
|
||||||
|
let fileTypesCsv = [
|
||||||
|
'csv', 'fods', 'ods', 'ots', 'xls', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx',
|
||||||
|
]
|
||||||
|
let fileTypesPPt = [
|
||||||
|
'fodp', 'odp', 'otp', 'pot', 'potm', 'potx', 'pps', 'ppsm', 'ppsx', 'ppt', 'pptm', 'pptx',
|
||||||
|
]
|
||||||
|
if (fileTypesDoc.includes(fileType)) {
|
||||||
|
docType = 'text'
|
||||||
|
}
|
||||||
|
if (fileTypesCsv.includes(fileType)) {
|
||||||
|
docType = 'spreadsheet'
|
||||||
|
}
|
||||||
|
if (fileTypesPPt.includes(fileType)) {
|
||||||
|
docType = 'presentation'
|
||||||
|
}
|
||||||
|
return docType
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,92 @@
|
||||||
|
<template>
|
||||||
|
<div id="app">
|
||||||
|
<div class='qualityManual-container'>
|
||||||
|
<div>
|
||||||
|
<button style='width: 120px;' type='primary' @click='getFile'>测试预览office文档</button>
|
||||||
|
<button style='width: 120px;' type='primary' @click='close'>关闭</button>
|
||||||
|
</div>
|
||||||
|
<div v-if='show' class='qualityManual-container-office'>
|
||||||
|
<only-office-editor :option='option' />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script >
|
||||||
|
import OnlyOfficeEditor from './OnlyOfficeEditor'
|
||||||
|
export default{
|
||||||
|
name: 'OnlyOfficeTest',
|
||||||
|
components: {
|
||||||
|
OnlyOfficeEditor
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
//参考vabOnlyOffice组件参数配置
|
||||||
|
option: {
|
||||||
|
url: '',
|
||||||
|
isEdit: '',
|
||||||
|
fileType: '',
|
||||||
|
title: '',
|
||||||
|
lang: '',
|
||||||
|
isPrint: '',
|
||||||
|
user: { id:null,name:''}
|
||||||
|
},
|
||||||
|
show: false,
|
||||||
|
config: {
|
||||||
|
document: {
|
||||||
|
fileType: "docx",
|
||||||
|
key: "Khirz6zTPdfd7",
|
||||||
|
title: "Example Document Title.docx",
|
||||||
|
url: "https://example.com/url-to-example-document.docx"
|
||||||
|
},
|
||||||
|
documentType: "word",
|
||||||
|
editorConfig: {
|
||||||
|
callbackUrl: "https://example.com/url-to-callback.ashx"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
getFile() {
|
||||||
|
this.show = true
|
||||||
|
// getAction('/file/selectById', { id: this.id }).then(res => {
|
||||||
|
this.option.isEdit = true
|
||||||
|
this.option.lang = 'zh-CN'
|
||||||
|
// this.option.url = 'http://114.116.228.69:8043/api/files/ZPABOZ-%E7%BA%A2%E5%B1%B1%E5%BC%80%E6%BA%90%E5%B9%B3%E5%8F%B0%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90%E5%88%86%E7%B1%BB%E7%BB%9F%E8%AE%A121.1.3.xlsx'
|
||||||
|
this.option.title = '123'
|
||||||
|
this.option.fileType = 'xlsx'
|
||||||
|
this.option.isPrint = false
|
||||||
|
this.option.user= { id:12,name:'张三'}
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
html,body{
|
||||||
|
height:100%;
|
||||||
|
}
|
||||||
|
#app {
|
||||||
|
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
text-align: center;
|
||||||
|
color: #2c3e50;
|
||||||
|
height:100%;
|
||||||
|
|
||||||
|
}
|
||||||
|
.qualityManual-container {
|
||||||
|
padding: 0 !important;
|
||||||
|
height:100%;
|
||||||
|
}
|
||||||
|
.qualityManual-container-office {
|
||||||
|
width: 100%;
|
||||||
|
/*height: calc(100% - 55px);*/
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,162 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
|
||||||
|
<div class="begin">
|
||||||
|
<h2>开始</h2>
|
||||||
|
<div style="display:inline-block">
|
||||||
|
<div class="newBase" style="margin-right: 30px">
|
||||||
|
<p class="baseWord">新建文档</p>
|
||||||
|
</div>
|
||||||
|
<div class="newBase">
|
||||||
|
<p class="baseWord">新建知识库</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display:inline-block">
|
||||||
|
<h2>知识库</h2>
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>我的知识库</span>
|
||||||
|
<el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
|
||||||
|
</div>
|
||||||
|
<div v-for="o in 4" :key="o" class="text item">
|
||||||
|
{{'列表内容 ' + o }}
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>我的知识库</span>
|
||||||
|
<el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
|
||||||
|
</div>
|
||||||
|
<div v-for="o in 4" :key="o" class="text item">
|
||||||
|
{{'列表内容 ' + o }}
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>我的知识库</span>
|
||||||
|
<el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
|
||||||
|
</div>
|
||||||
|
<div v-for="o in 4" :key="o" class="text item">
|
||||||
|
{{'列表内容 ' + o }}
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>我的知识库</span>
|
||||||
|
<el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
|
||||||
|
</div>
|
||||||
|
<div v-for="o in 4" :key="o" class="text item">
|
||||||
|
{{'列表内容 ' + o }}
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h2>文档</h2>
|
||||||
|
<el-collapse v-model="activeNames" @change="handleChange" class="collapse" style=" margin-top: 40px;">
|
||||||
|
<el-collapse-item title="code.mil介绍文档" name="1">
|
||||||
|
<div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
|
||||||
|
<div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
|
||||||
|
</el-collapse-item>
|
||||||
|
<el-collapse-item title="反馈 Feedback" name="2">
|
||||||
|
<div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
|
||||||
|
<div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
|
||||||
|
</el-collapse-item>
|
||||||
|
<el-collapse-item title="效率 Efficiency" name="3">
|
||||||
|
<div>简化流程:设计简洁直观的操作流程;</div>
|
||||||
|
<div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
|
||||||
|
<div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
|
||||||
|
</el-collapse-item>
|
||||||
|
<el-collapse-item title="可控 Controllability" name="4">
|
||||||
|
<div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
|
||||||
|
<div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'OSD',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeNames: ['1']
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleChange(val) {
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
::v-deep .el-collapse-item__header{
|
||||||
|
font-size: 16px!important;
|
||||||
|
height: 55px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.begin{
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
.newBase{
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 190px;
|
||||||
|
height: 55px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
font-size: 16px;
|
||||||
|
box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.08);
|
||||||
|
float: left;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.newBase:hover{
|
||||||
|
background: #fafafa;
|
||||||
|
}
|
||||||
|
.baseWord{
|
||||||
|
text-align: center;
|
||||||
|
user-select:none;
|
||||||
|
color: #3D3D3D;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//card
|
||||||
|
.text {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:before,
|
||||||
|
.clearfix:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-card {
|
||||||
|
width: 460px;
|
||||||
|
margin-right: 30px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,75 +1,109 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-table
|
<el-table
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
border
|
border
|
||||||
style="width: 100%">
|
style="width: 100%"
|
||||||
<el-table-column
|
>
|
||||||
prop="serviceName"
|
<el-table-column
|
||||||
label="服务/工具名称"
|
prop="serviceName"
|
||||||
width="180">
|
label="服务/工具名称"
|
||||||
</el-table-column>
|
width="180"
|
||||||
<el-table-column
|
>
|
||||||
prop="peopleName"
|
</el-table-column>
|
||||||
label="负责人/经办人"
|
<el-table-column
|
||||||
width="190">
|
prop="peopleName"
|
||||||
</el-table-column>
|
label="负责人/经办人"
|
||||||
<el-table-column
|
width="190"
|
||||||
prop="date"
|
>
|
||||||
label="购买时间/续费时间">
|
</el-table-column>
|
||||||
</el-table-column>
|
<el-table-column
|
||||||
</el-table>
|
prop="renewDate"
|
||||||
|
label="购买时间/续费时间"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="describe"
|
||||||
|
label="备注"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="expireTime"
|
||||||
|
label="一年节点(到期/用量检查)"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getAllPlatformData } from '@/utils/http/interface'
|
||||||
|
import { Message } from 'element-ui'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'PlatformData',
|
name: 'PlatformData',
|
||||||
data(){
|
data() {
|
||||||
return{
|
return {
|
||||||
tableData:[
|
tableData: []
|
||||||
{
|
|
||||||
serviceName: "敏感词敏感图过滤服务-百度云",
|
|
||||||
peopleName:"明军老师账号-启磊续费",
|
|
||||||
date:"2022年12月22日续费(1年 图片,敏感词各五十万次调用)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
serviceName: "实名认证服务-网易易盾",
|
|
||||||
peopleName:"启磊",
|
|
||||||
date:"2022年7月底购买"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
serviceName: "SSL证书",
|
|
||||||
peopleName:"明军老师",
|
|
||||||
date:"2022年6月29日颁发"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
serviceName: "短信服务-云片网",
|
|
||||||
peopleName:"公共邮箱账号-明军老师续费",
|
|
||||||
date:"2022年09月续费1000元"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
serviceName: "微信小程序认证",
|
|
||||||
peopleName:"维昊",
|
|
||||||
date:"2022年09月07日提交认证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
serviceName: "微信公众号",
|
|
||||||
peopleName:"苛萱账号-明军老师续费",
|
|
||||||
date:"2022年04月12日提交认证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
serviceName: "sca工具",
|
|
||||||
peopleName:"维昊",
|
|
||||||
date:"-"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
serviceName: "华为云服务器",
|
|
||||||
peopleName:"明军老师",
|
|
||||||
date:"-"
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
this.$api.getAllPlatformData().then((res) => {
|
||||||
|
if (res.status == 0) {
|
||||||
|
this.tableData = res.data
|
||||||
|
|
||||||
|
for (let i = 0; i < this.tableData.length; i++) {
|
||||||
|
if (this.tableData[i].renewDate != null) {
|
||||||
|
this.tableData[i].renewDate = this.$moment(this.tableData[i].renewDate).format('YYYY-MM-DD')
|
||||||
|
//计算到期时间
|
||||||
|
var expireTime = this.$moment(this.tableData[i].renewDate).add(1, 'years')
|
||||||
|
this.tableData[i].expireTime = this.$moment(expireTime, 'YYYY-MM-DD').fromNow(true)
|
||||||
|
} else {
|
||||||
|
this.tableData[i].renewDate = '未设置时间'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Message.warning('系统错误')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getData()
|
||||||
|
//moment计算时间 本地化
|
||||||
|
this.$moment.defineLocale('zh-cn', {
|
||||||
|
relativeTime: {
|
||||||
|
|
||||||
|
future: '%s内',
|
||||||
|
|
||||||
|
past: '%s前',
|
||||||
|
|
||||||
|
s: '几秒',
|
||||||
|
|
||||||
|
m: '1 分钟',
|
||||||
|
|
||||||
|
mm: '%d 分钟',
|
||||||
|
|
||||||
|
h: '1 小时',
|
||||||
|
|
||||||
|
hh: '%d 小时',
|
||||||
|
|
||||||
|
d: '1 天',
|
||||||
|
|
||||||
|
dd: '%d 天',
|
||||||
|
|
||||||
|
M: '1 个月',
|
||||||
|
|
||||||
|
MM: '%d 个月',
|
||||||
|
|
||||||
|
y: '1 年',
|
||||||
|
|
||||||
|
yy: '%d 年'
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
stripe
|
||||||
|
border
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
prop="name"
|
||||||
|
label="采购/外协项目名称"
|
||||||
|
width="180"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
prop="type"
|
||||||
|
label="类型"
|
||||||
|
width="180"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="year"
|
||||||
|
label="年份"
|
||||||
|
width="190"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="unitName"
|
||||||
|
label="归属研究室"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="levelName"
|
||||||
|
label="采购/外协级别"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="modeName"
|
||||||
|
label="采购/外协方式"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="status"
|
||||||
|
label="项目状态"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
prop="principal"
|
||||||
|
label="负责人"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="applicationNum"
|
||||||
|
label="申请编号"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="purchaseNum"
|
||||||
|
label="采购编号"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="contractNum"
|
||||||
|
label="合同编号"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getAllPlatformData } from '@/utils/http/interface'
|
||||||
|
import { Message } from 'element-ui'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'PlatformData',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
this.$api.getAllPlatformData().then((res) => {
|
||||||
|
if (res.status == 0) {
|
||||||
|
this.tableData = res.data
|
||||||
|
|
||||||
|
for (let i = 0; i < this.tableData.length; i++) {
|
||||||
|
if (this.tableData[i].renewDate != null) {
|
||||||
|
this.tableData[i].renewDate = this.$moment(this.tableData[i].renewDate).format('YYYY-MM-DD')
|
||||||
|
//计算到期时间
|
||||||
|
var expireTime = this.$moment(this.tableData[i].renewDate).add(1, 'years')
|
||||||
|
this.tableData[i].expireTime = this.$moment(expireTime, 'YYYY-MM-DD').fromNow(true)
|
||||||
|
} else {
|
||||||
|
this.tableData[i].renewDate = '未设置时间'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Message.warning('系统错误')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getData()
|
||||||
|
//moment计算时间 本地化
|
||||||
|
this.$moment.defineLocale('zh-cn', {
|
||||||
|
relativeTime: {
|
||||||
|
|
||||||
|
future: '%s内',
|
||||||
|
|
||||||
|
past: '%s前',
|
||||||
|
|
||||||
|
s: '几秒',
|
||||||
|
|
||||||
|
m: '1 分钟',
|
||||||
|
|
||||||
|
mm: '%d 分钟',
|
||||||
|
|
||||||
|
h: '1 小时',
|
||||||
|
|
||||||
|
hh: '%d 小时',
|
||||||
|
|
||||||
|
d: '1 天',
|
||||||
|
|
||||||
|
dd: '%d 天',
|
||||||
|
|
||||||
|
M: '1 个月',
|
||||||
|
|
||||||
|
MM: '%d 个月',
|
||||||
|
|
||||||
|
y: '1 年',
|
||||||
|
|
||||||
|
yy: '%d 年'
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,177 @@
|
||||||
|
<template>
|
||||||
|
<div class="user-center">
|
||||||
|
<el-card class="user-card">
|
||||||
|
<div class="user-avatar">
|
||||||
|
<img :src="user.avatar" alt="avatar" />
|
||||||
|
</div>
|
||||||
|
<div class="user-info">
|
||||||
|
<h2 class="user-name">{{ user.name }}</h2>
|
||||||
|
<p class="user-phone">手机号:{{ user.phone }}</p>
|
||||||
|
<p class="user-phone">部门:{{ user.dep }}</p>
|
||||||
|
<p class="user-phone">密码:*********</p>
|
||||||
|
<el-button type="primary" @click="openPassword">重置密码</el-button>
|
||||||
|
<el-button type="primary" @click="manageSignature" disabled>电子签名管理</el-button>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="重置密码"
|
||||||
|
:visible.sync="updateDialogVisible"
|
||||||
|
width="30%"
|
||||||
|
:before-close="updatePasswordClose">
|
||||||
|
<el-form label-position="top" label-width="80px" style="text-align: left">
|
||||||
|
<el-form-item label="用户ID" prop="userId">
|
||||||
|
<el-input placeholder="请填写用户名" v-model="updatePasswordUser.userId" disabled></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="密码" prop="password">
|
||||||
|
<el-input placeholder="请输入重置密码" v-model="updatePasswordUser.password"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="resetPassword">重置密码</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Message } from 'element-ui'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'UserCenter',
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
user: {
|
||||||
|
avatar: "https://picsum.photos/200",
|
||||||
|
name: "张三",
|
||||||
|
phone: "13888888888",
|
||||||
|
dep: "二室"
|
||||||
|
},
|
||||||
|
//重置密码
|
||||||
|
updatePasswordUser:{
|
||||||
|
userId:null,
|
||||||
|
password: null
|
||||||
|
},
|
||||||
|
|
||||||
|
//重置密码弹窗状态
|
||||||
|
updateDialogVisible:false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openPassword(){
|
||||||
|
this.updateDialogVisible = true
|
||||||
|
this.updatePasswordUser.userId = localStorage.getItem("userId");
|
||||||
|
|
||||||
|
},
|
||||||
|
resetPassword() {
|
||||||
|
// 调用重置密码的接口
|
||||||
|
//需要对应上this.updatePasswordUser
|
||||||
|
this.updatePasswordUser.password = this.$md5(this.updatePasswordUser.password)
|
||||||
|
this.updatePasswordUser.userId = localStorage.getItem("userId");
|
||||||
|
this.$api.updatePassword(this.updatePasswordUser).then((res)=>{
|
||||||
|
if (res.status == 0) {
|
||||||
|
Message.success("重置成功")
|
||||||
|
this.updatePasswordClose()
|
||||||
|
}else {
|
||||||
|
Message.warning("系统错误,重置失败")
|
||||||
|
this.updatePasswordClose()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
manageSignature() {
|
||||||
|
// 跳转到电子签名管理的页面
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// 用户登录状态判断
|
||||||
|
getUserData(){
|
||||||
|
/**
|
||||||
|
* 1. 有信息 拿到token userId 去获取用户信息
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
let token = localStorage.getItem("systemToken");
|
||||||
|
let userId = localStorage.getItem("userId");
|
||||||
|
// 获取用户信息
|
||||||
|
var user = {
|
||||||
|
userId,
|
||||||
|
}
|
||||||
|
this.$api.getUserDataByUserId(user).then((res) =>{
|
||||||
|
console.log(res);
|
||||||
|
if (res.status == 0) {
|
||||||
|
// 查询成功
|
||||||
|
this.user.avatar = res.data.userDetails.profilePhoto;
|
||||||
|
this.user.name = res.data.user.name;
|
||||||
|
this.user.dep = res.data.user.dep;
|
||||||
|
this.user.phone = res.data.user.phone
|
||||||
|
// localStorage.setItem("dep",res.data.user.dep)
|
||||||
|
}
|
||||||
|
}).catch(function (res){
|
||||||
|
console.log(res);
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
//关闭重置密码弹窗
|
||||||
|
updatePasswordClose(){
|
||||||
|
this.updateDialogVisible = false
|
||||||
|
this.updatePasswordUser.userId = null
|
||||||
|
this.updatePasswordUser.password = null
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getUserData()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.user-center {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.user-card {
|
||||||
|
width: 90%;
|
||||||
|
margin-top: 20px;
|
||||||
|
display: flex;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
.user-avatar {
|
||||||
|
width: 150px;
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
.user-avatar img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.user-info {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
.user-list {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-phone{
|
||||||
|
margin-top: 40px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-name{
|
||||||
|
margin-top: 40px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-table-container">
|
||||||
|
|
||||||
<!--搜索框-->
|
<!--搜索框-->
|
||||||
<div class="manageList-header-input">
|
<div class="manageList-header-input">
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="上传文件"
|
title="新增用户"
|
||||||
:visible.sync="userDialogVisible"
|
:visible.sync="userDialogVisible"
|
||||||
width="50%"
|
width="50%"
|
||||||
:before-close="handleClose">
|
:before-close="handleClose">
|
||||||
|
@ -26,6 +26,9 @@
|
||||||
<el-form-item label="密码" prop="password">
|
<el-form-item label="密码" prop="password">
|
||||||
<el-input placeholder="请输入密码" v-model="adminInfo.password"></el-input>
|
<el-input placeholder="请输入密码" v-model="adminInfo.password"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="部门" prop="password">
|
||||||
|
<el-input placeholder="请输入部门(一室、二室、四室、管理员)" v-model="adminInfo.dep"></el-input>
|
||||||
|
</el-form-item>
|
||||||
<!-- <el-form-item label="竞赛名称" prop="compName">-->
|
<!-- <el-form-item label="竞赛名称" prop="compName">-->
|
||||||
<!-- <el-input placeholder="竞赛名称" v-model="compInfo.compName"></el-input>-->
|
<!-- <el-input placeholder="竞赛名称" v-model="compInfo.compName"></el-input>-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
|
@ -91,6 +94,11 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="用户部门">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.dep }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column align="center" prop="created_at" label="操作" width="150">
|
<el-table-column align="center" prop="created_at" label="操作" width="150">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<i class="el-icon-files" style="cursor: pointer" @click="syncUpdatePasswordUser(scope.row.userId)">重置密码</i>
|
<i class="el-icon-files" style="cursor: pointer" @click="syncUpdatePasswordUser(scope.row.userId)">重置密码</i>
|
||||||
|
@ -124,7 +132,8 @@ export default {
|
||||||
adminInfo :{
|
adminInfo :{
|
||||||
name: null,
|
name: null,
|
||||||
phone:null,
|
phone:null,
|
||||||
password: null
|
password: null,
|
||||||
|
dep:null
|
||||||
},
|
},
|
||||||
|
|
||||||
//重置密码
|
//重置密码
|
||||||
|
@ -164,6 +173,7 @@ export default {
|
||||||
this.adminInfo.name = "";
|
this.adminInfo.name = "";
|
||||||
this.adminInfo.phone = null;
|
this.adminInfo.phone = null;
|
||||||
this.adminInfo.password = "";
|
this.adminInfo.password = "";
|
||||||
|
this.adminInfo.dep = "";
|
||||||
|
|
||||||
},
|
},
|
||||||
//关闭重置密码弹窗
|
//关闭重置密码弹窗
|
||||||
|
|
106
yarn.lock
|
@ -1203,6 +1203,11 @@
|
||||||
resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz"
|
resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz"
|
||||||
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
|
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
|
||||||
|
|
||||||
|
"@onlyoffice/document-editor-vue@^1.1.1":
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@onlyoffice/document-editor-vue/-/document-editor-vue-1.1.1.tgz"
|
||||||
|
integrity sha512-PCc56emC+UyKeyOAvLBeEkI2uqTpXMbN2b5Sumf1N+MDLzvyGTV6AFwxvvLRbUdHJFdNn7+7NwN2CE8wGt0gOQ==
|
||||||
|
|
||||||
"@soda/friendly-errors-webpack-plugin@^1.7.1":
|
"@soda/friendly-errors-webpack-plugin@^1.7.1":
|
||||||
version "1.8.1"
|
version "1.8.1"
|
||||||
resolved "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz"
|
resolved "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz"
|
||||||
|
@ -1338,6 +1343,21 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
|
"@vue-office/docx@^1.0.0":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.0.0.tgz"
|
||||||
|
integrity sha512-VqCW3yDqnWamuaXEAmpRillh9lfmw4TC8kWElV0utgmOrUINj3bFI3Pbx+6lUeAqBe+EwyJfaEFvpOLe0gILzg==
|
||||||
|
|
||||||
|
"@vue-office/excel@^1.0.0":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/@vue-office/excel/-/excel-1.0.0.tgz"
|
||||||
|
integrity sha512-b9N8fTcxM/4WO8Zx/uzMLWt9zA3pQCKCX1Tr4i/15c0syABqfdzX0oGkr89/w5wmKcNqprorwFpZgtzqU6xXHQ==
|
||||||
|
|
||||||
|
"@vue-office/pdf@^1.0.0":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/@vue-office/pdf/-/pdf-1.0.0.tgz"
|
||||||
|
integrity sha512-57w2ekjkg5NC3h40MJldjDe81mZi/TRy/Lee76O1gS6GYOkALk1zhwYx+yUrvVv3G5vfTsWuAYzflkV852UL2A==
|
||||||
|
|
||||||
"@vue/babel-helper-vue-jsx-merge-props@^1.4.0":
|
"@vue/babel-helper-vue-jsx-merge-props@^1.4.0":
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz"
|
resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz"
|
||||||
|
@ -1615,6 +1635,11 @@
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
prettier "^1.18.2 || ^2.0.0"
|
prettier "^1.18.2 || ^2.0.0"
|
||||||
|
|
||||||
|
"@vue/composition-api@^1.7.1":
|
||||||
|
version "1.7.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@vue/composition-api/-/composition-api-1.7.1.tgz"
|
||||||
|
integrity sha512-xDWoEtxGXhH9Ku3ROYX/rzhcpt4v31hpPU5zF3UeVC/qxA3dChmqU8zvTUYoKh3j7rzpNsoFOwqsWG7XPMlaFA==
|
||||||
|
|
||||||
"@vue/preload-webpack-plugin@^1.1.0":
|
"@vue/preload-webpack-plugin@^1.1.0":
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz"
|
resolved "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz"
|
||||||
|
@ -2869,6 +2894,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30001109, can
|
||||||
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz"
|
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz"
|
||||||
integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==
|
integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==
|
||||||
|
|
||||||
|
canvas-tablet@^2.0.6:
|
||||||
|
version "2.0.6"
|
||||||
|
resolved "https://registry.npmmirror.com/canvas-tablet/-/canvas-tablet-2.0.6.tgz"
|
||||||
|
integrity sha512-rkQo1xLAwhBBxOSzseSZREzM4/voI/hrJxYsDFKTeR1TqBXF4iw4eC+PJqdADAojjkkhF5u6ShNqYCJ9cSRPVg==
|
||||||
|
|
||||||
capture-exit@^2.0.0:
|
capture-exit@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmmirror.com/capture-exit/-/capture-exit-2.0.0.tgz"
|
resolved "https://registry.npmmirror.com/capture-exit/-/capture-exit-2.0.0.tgz"
|
||||||
|
@ -3195,7 +3225,7 @@ commander@2.17.x:
|
||||||
resolved "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz"
|
resolved "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz"
|
||||||
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
|
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
|
||||||
|
|
||||||
commander@^2.18.0, commander@^2.19.0, commander@^2.20.0:
|
commander@^2.18.0, commander@^2.19.0, commander@^2.20.0, commander@^2.20.3:
|
||||||
version "2.20.3"
|
version "2.20.3"
|
||||||
resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
|
resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
|
||||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
|
@ -3595,6 +3625,11 @@ cssesc@^3.0.0:
|
||||||
resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz"
|
resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz"
|
||||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||||
|
|
||||||
|
cssfilter@0.0.10:
|
||||||
|
version "0.0.10"
|
||||||
|
resolved "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz"
|
||||||
|
integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==
|
||||||
|
|
||||||
cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.8:
|
cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.8:
|
||||||
version "4.0.8"
|
version "4.0.8"
|
||||||
resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz"
|
resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz"
|
||||||
|
@ -3970,7 +4005,7 @@ doctrine@^3.0.0:
|
||||||
|
|
||||||
docx-preview@^0.1.14:
|
docx-preview@^0.1.14:
|
||||||
version "0.1.14"
|
version "0.1.14"
|
||||||
resolved "https://registry.npmmirror.com/docx-preview/-/docx-preview-0.1.14.tgz#1fd68b6bef8962fa5d01b4e9ba26dd3b2b7ee884"
|
resolved "https://registry.npmmirror.com/docx-preview/-/docx-preview-0.1.14.tgz"
|
||||||
integrity sha512-AoMAAEPG7JvI8g68Yti7v8QyzvfLBoQ9bcd/Hn0IkBqtj61kHWN983be5NGrw7m3LYNzW/NZbxv5KbVmyV018g==
|
integrity sha512-AoMAAEPG7JvI8g68Yti7v8QyzvfLBoQ9bcd/Hn0IkBqtj61kHWN983be5NGrw7m3LYNzW/NZbxv5KbVmyV018g==
|
||||||
dependencies:
|
dependencies:
|
||||||
jszip ">=3.0.0"
|
jszip ">=3.0.0"
|
||||||
|
@ -4273,6 +4308,11 @@ es-to-primitive@^1.2.1:
|
||||||
is-date-object "^1.0.1"
|
is-date-object "^1.0.1"
|
||||||
is-symbol "^1.0.2"
|
is-symbol "^1.0.2"
|
||||||
|
|
||||||
|
es6-object-assign@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz"
|
||||||
|
integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==
|
||||||
|
|
||||||
escalade@^3.1.1:
|
escalade@^3.1.1:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz"
|
resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz"
|
||||||
|
@ -4735,6 +4775,11 @@ file-loader@^4.2.0:
|
||||||
loader-utils "^1.2.3"
|
loader-utils "^1.2.3"
|
||||||
schema-utils "^2.5.0"
|
schema-utils "^2.5.0"
|
||||||
|
|
||||||
|
file-saver@^2.0.5:
|
||||||
|
version "2.0.5"
|
||||||
|
resolved "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz"
|
||||||
|
integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==
|
||||||
|
|
||||||
file-uri-to-path@1.0.0:
|
file-uri-to-path@1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
|
resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
|
||||||
|
@ -5001,9 +5046,9 @@ fsevents@^1.2.7:
|
||||||
nan "^2.12.1"
|
nan "^2.12.1"
|
||||||
|
|
||||||
fsevents@~2.3.2:
|
fsevents@~2.3.2:
|
||||||
version "2.3.2"
|
version "2.3.3"
|
||||||
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
||||||
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
||||||
|
|
||||||
function-bind@^1.1.1:
|
function-bind@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
|
@ -5591,7 +5636,7 @@ image-size@^0.5.1:
|
||||||
|
|
||||||
immediate@~3.0.5:
|
immediate@~3.0.5:
|
||||||
version "3.0.6"
|
version "3.0.6"
|
||||||
resolved "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
resolved "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz"
|
||||||
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
|
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
|
||||||
|
|
||||||
import-cwd@^2.0.0:
|
import-cwd@^2.0.0:
|
||||||
|
@ -6647,7 +6692,7 @@ js-base64@^2.1.9:
|
||||||
|
|
||||||
js-base64@^3.7.3:
|
js-base64@^3.7.3:
|
||||||
version "3.7.3"
|
version "3.7.3"
|
||||||
resolved "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.3.tgz#2e784bb0851636bf1e99ef12e4f3a8a8c9b7639f"
|
resolved "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.3.tgz"
|
||||||
integrity sha512-PAr6Xg2jvd7MCR6Ld9Jg3BmTcjYsHEBx1VlwEwULb/qowPf5VD9kEMagj23Gm7JRnSvE/Da/57nChZjnvL8v6A==
|
integrity sha512-PAr6Xg2jvd7MCR6Ld9Jg3BmTcjYsHEBx1VlwEwULb/qowPf5VD9kEMagj23Gm7JRnSvE/Da/57nChZjnvL8v6A==
|
||||||
|
|
||||||
js-beautify@^1.6.12, js-beautify@^1.6.14:
|
js-beautify@^1.6.12, js-beautify@^1.6.14:
|
||||||
|
@ -6667,7 +6712,7 @@ js-cookie@2.2.0:
|
||||||
|
|
||||||
js-md5@^0.7.3:
|
js-md5@^0.7.3:
|
||||||
version "0.7.3"
|
version "0.7.3"
|
||||||
resolved "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2"
|
resolved "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz"
|
||||||
integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==
|
integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==
|
||||||
|
|
||||||
js-message@1.0.7:
|
js-message@1.0.7:
|
||||||
|
@ -6843,7 +6888,7 @@ jsprim@^1.2.2:
|
||||||
|
|
||||||
jszip@>=3.0.0:
|
jszip@>=3.0.0:
|
||||||
version "3.10.1"
|
version "3.10.1"
|
||||||
resolved "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2"
|
resolved "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz"
|
||||||
integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
|
integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
|
||||||
dependencies:
|
dependencies:
|
||||||
lie "~3.3.0"
|
lie "~3.3.0"
|
||||||
|
@ -6920,7 +6965,7 @@ levn@^0.3.0, levn@~0.3.0:
|
||||||
|
|
||||||
lie@~3.3.0:
|
lie@~3.3.0:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
|
resolved "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz"
|
||||||
integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
|
integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
immediate "~3.0.5"
|
immediate "~3.0.5"
|
||||||
|
@ -7153,6 +7198,13 @@ math-random@^1.0.1:
|
||||||
resolved "https://registry.npmmirror.com/math-random/-/math-random-1.0.4.tgz"
|
resolved "https://registry.npmmirror.com/math-random/-/math-random-1.0.4.tgz"
|
||||||
integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==
|
integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==
|
||||||
|
|
||||||
|
mavon-editor@^2.10.4:
|
||||||
|
version "2.10.4"
|
||||||
|
resolved "https://registry.npmjs.org/mavon-editor/-/mavon-editor-2.10.4.tgz"
|
||||||
|
integrity sha512-CFsBLkgt/KZBDg+SJYe2fyYv4zClY149PiwpH0rDAiiP4ae1XNs0GC8nBsoTeipsHcebDLN1QMkt3bUsnMDjQw==
|
||||||
|
dependencies:
|
||||||
|
xss "^1.0.6"
|
||||||
|
|
||||||
md5.js@^1.3.4:
|
md5.js@^1.3.4:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz"
|
resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz"
|
||||||
|
@ -7459,7 +7511,7 @@ mockjs@1.0.1-beta3:
|
||||||
|
|
||||||
moment@^2.29.4:
|
moment@^2.29.4:
|
||||||
version "2.29.4"
|
version "2.29.4"
|
||||||
resolved "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
|
resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz"
|
||||||
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
|
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
|
||||||
|
|
||||||
move-concurrently@^1.0.1:
|
move-concurrently@^1.0.1:
|
||||||
|
@ -7517,9 +7569,9 @@ mz@^2.4.0:
|
||||||
thenify-all "^1.0.0"
|
thenify-all "^1.0.0"
|
||||||
|
|
||||||
nan@^2.12.1:
|
nan@^2.12.1:
|
||||||
version "2.17.0"
|
version "2.18.0"
|
||||||
resolved "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
|
resolved "https://registry.npmmirror.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554"
|
||||||
integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
|
integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==
|
||||||
|
|
||||||
nanomatch@^1.2.1, nanomatch@^1.2.9:
|
nanomatch@^1.2.1, nanomatch@^1.2.9:
|
||||||
version "1.2.13"
|
version "1.2.13"
|
||||||
|
@ -8773,6 +8825,11 @@ promise-inflight@^1.0.1:
|
||||||
resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz"
|
resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz"
|
||||||
integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
|
integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
|
||||||
|
|
||||||
|
promise-polyfill@^6.0.2:
|
||||||
|
version "6.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz"
|
||||||
|
integrity sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ==
|
||||||
|
|
||||||
prompts@^2.0.1:
|
prompts@^2.0.1:
|
||||||
version "2.4.2"
|
version "2.4.2"
|
||||||
resolved "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz"
|
resolved "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz"
|
||||||
|
@ -10230,6 +10287,14 @@ svgo@^1.0.0:
|
||||||
unquote "~1.1.1"
|
unquote "~1.1.1"
|
||||||
util.promisify "~1.0.0"
|
util.promisify "~1.0.0"
|
||||||
|
|
||||||
|
sweetalert@^2.1.2:
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.npmmirror.com/sweetalert/-/sweetalert-2.1.2.tgz"
|
||||||
|
integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==
|
||||||
|
dependencies:
|
||||||
|
es6-object-assign "^1.1.0"
|
||||||
|
promise-polyfill "^6.0.2"
|
||||||
|
|
||||||
symbol-tree@^3.2.2:
|
symbol-tree@^3.2.2:
|
||||||
version "3.2.4"
|
version "3.2.4"
|
||||||
resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz"
|
resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz"
|
||||||
|
@ -10849,6 +10914,11 @@ vm-browserify@^1.0.1:
|
||||||
resolved "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz"
|
resolved "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz"
|
||||||
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
|
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
|
||||||
|
|
||||||
|
vue-demi@^0.14.6:
|
||||||
|
version "0.14.6"
|
||||||
|
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92"
|
||||||
|
integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==
|
||||||
|
|
||||||
vue-eslint-parser@^7.0.0:
|
vue-eslint-parser@^7.0.0:
|
||||||
version "7.11.0"
|
version "7.11.0"
|
||||||
resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz"
|
resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz"
|
||||||
|
@ -11283,6 +11353,14 @@ xmlchars@^2.1.1:
|
||||||
resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz"
|
resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz"
|
||||||
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
||||||
|
|
||||||
|
xss@^1.0.6:
|
||||||
|
version "1.0.14"
|
||||||
|
resolved "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz"
|
||||||
|
integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==
|
||||||
|
dependencies:
|
||||||
|
commander "^2.20.3"
|
||||||
|
cssfilter "0.0.10"
|
||||||
|
|
||||||
xtend@^4.0.0, xtend@~4.0.1:
|
xtend@^4.0.0, xtend@~4.0.1:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz"
|
resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz"
|
||||||
|
|