Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
evm-store
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanli
evm-store
Commits
735d39eb
You need to sign in or sign up before continuing.
Commit
735d39eb
authored
Jun 19, 2021
by
wanli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update tools/frontend
parent
90d35e4c
Changes
28
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
1863 additions
and
475 deletions
+1863
-475
tools/frontend/package.json
tools/frontend/package.json
+4
-2
tools/frontend/public/index.html
tools/frontend/public/index.html
+1
-0
tools/frontend/src/locales/zh_CN.js
tools/frontend/src/locales/zh_CN.js
+1
-0
tools/frontend/src/store/file-manager/actions.js
tools/frontend/src/store/file-manager/actions.js
+2
-2
tools/frontend/src/store/file-manager/manager/actions.js
tools/frontend/src/store/file-manager/manager/actions.js
+1
-1
tools/frontend/src/store/file-manager/settings/store.js
tools/frontend/src/store/file-manager/settings/store.js
+17
-17
tools/frontend/src/store/file-manager/tree/actions.js
tools/frontend/src/store/file-manager/tree/actions.js
+1
-1
tools/frontend/src/store/index.js
tools/frontend/src/store/index.js
+1
-1
tools/frontend/src/styles/_breadcrumb.scss
tools/frontend/src/styles/_breadcrumb.scss
+42
-0
tools/frontend/src/styles/tableList.less
tools/frontend/src/styles/tableList.less
+0
-0
tools/frontend/src/styles/utils.less
tools/frontend/src/styles/utils.less
+0
-0
tools/frontend/src/utils/axios.js
tools/frontend/src/utils/axios.js
+2
-0
tools/frontend/src/utils/get.js
tools/frontend/src/utils/get.js
+13
-13
tools/frontend/src/utils/helper.js
tools/frontend/src/utils/helper.js
+1
-1
tools/frontend/src/utils/post.js
tools/frontend/src/utils/post.js
+10
-11
tools/frontend/src/utils/translate.js
tools/frontend/src/utils/translate.js
+8
-0
tools/frontend/src/views/Dashboard/Analysis.less
tools/frontend/src/views/Dashboard/Analysis.less
+1
-1
tools/frontend/src/views/Dashboard/Workplace.less
tools/frontend/src/views/Dashboard/Workplace.less
+1
-1
tools/frontend/src/views/FileManager/FileManager.vue
tools/frontend/src/views/FileManager/FileManager.vue
+22
-17
tools/frontend/src/views/FileManager/components/blocks/Navbar.vue
...ontend/src/views/FileManager/components/blocks/Navbar.vue
+0
-1
tools/frontend/src/views/FileManager/components/manager/Breadcrumb.vue
...d/src/views/FileManager/components/manager/Breadcrumb.vue
+89
-38
tools/frontend/src/views/FileManager/components/manager/TableView.vue
...nd/src/views/FileManager/components/manager/TableView.vue
+157
-129
tools/frontend/src/views/FileManager/components/modals/Modal.vue
...rontend/src/views/FileManager/components/modals/Modal.vue
+67
-56
tools/frontend/src/views/FileManager/components/modals/views/Preview.vue
...src/views/FileManager/components/modals/views/Preview.vue
+95
-69
tools/frontend/src/views/FileManager/components/tree/Branch.vue
...frontend/src/views/FileManager/components/tree/Branch.vue
+74
-60
tools/frontend/src/views/FileManager/components/tree/FolderTree.vue
...tend/src/views/FileManager/components/tree/FolderTree.vue
+32
-24
tools/frontend/src/views/System/Role.vue
tools/frontend/src/views/System/Role.vue
+1
-1
tools/frontend/yarn.lock
tools/frontend/yarn.lock
+1220
-29
No files found.
tools/frontend/package.json
View file @
735d39eb
...
@@ -11,16 +11,18 @@
...
@@ -11,16 +11,18 @@
"@antv/g2"
:
"^3.2.7"
,
"@antv/g2"
:
"^3.2.7"
,
"ant-design-vue"
:
"^1.7.5"
,
"ant-design-vue"
:
"^1.7.5"
,
"axios"
:
"^0.18.0"
,
"axios"
:
"^0.18.0"
,
"bootstrap"
:
"4.6.0"
,
"codemirror"
:
"^5.59.2"
,
"codemirror"
:
"^5.59.2"
,
"core-js"
:
"^3.9.0"
,
"core-js"
:
"^3.9.0"
,
"cropperjs"
:
"^1.5.11"
,
"cropperjs"
:
"^1.5.11"
,
"
plyr"
:
"^3.6.4
"
,
"
npm-check-updates"
:
"^11.7.1
"
,
"numeral"
:
"^2.0.6"
,
"numeral"
:
"^2.0.6"
,
"plyr"
:
"^3.6.4"
,
"vue"
:
"^2.5.17"
,
"vue"
:
"^2.5.17"
,
"vue-codemirror"
:
"^4.0.6"
,
"vue-i18n"
:
"^8.1.0"
,
"vue-i18n"
:
"^8.1.0"
,
"vue-router"
:
"^3.0.1"
,
"vue-router"
:
"^3.0.1"
,
"vuex"
:
"^3.0.1"
,
"vuex"
:
"^3.0.1"
,
"vue-codemirror"
:
"^4.0.6"
,
"vuex-router-sync"
:
"^5.0.0"
"vuex-router-sync"
:
"^5.0.0"
},
},
"devDependencies"
:
{
"devDependencies"
:
{
...
...
tools/frontend/public/index.html
View file @
735d39eb
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
<meta
name=
"viewport"
content=
"width=device-width,initial-scale=1.0"
>
<meta
name=
"viewport"
content=
"width=device-width,initial-scale=1.0"
>
<link
rel=
"icon"
href=
"<%= BASE_URL %>favicon.ico"
>
<link
rel=
"icon"
href=
"<%= BASE_URL %>favicon.ico"
>
<title>
EVM 应用商店
</title>
<title>
EVM 应用商店
</title>
<link
rel=
"stylesheet"
href=
"https://use.fontawesome.com/releases/v5.15.2/css/all.css"
>
<style>
<style>
html
,
html
,
body
{
body
{
...
...
tools/frontend/src/locales/zh_CN.js
View file @
735d39eb
...
@@ -46,6 +46,7 @@ export default {
...
@@ -46,6 +46,7 @@ export default {
'
menu.system.setting.config
'
:
'
配置管理
'
,
'
menu.system.setting.config
'
:
'
配置管理
'
,
'
menu.system.setting.dict
'
:
'
字典管理
'
,
'
menu.system.setting.dict
'
:
'
字典管理
'
,
'
menu.system.setting.area
'
:
'
行政区划
'
,
'
menu.system.setting.area
'
:
'
行政区划
'
,
'
menu.system.setting.file-manager
'
:
'
文件管理
'
,
'
menu.system.role
'
:
'
权限管理
'
,
'
menu.system.role
'
:
'
权限管理
'
,
'
menu.system.admin
'
:
'
系统管理员
'
,
'
menu.system.admin
'
:
'
系统管理员
'
,
//---
//---
...
...
tools/frontend/src/store/file-manager/actions.js
View file @
735d39eb
/* eslint-disable max-len,prefer-destructuring,object-curly-newline */
/* eslint-disable max-len,prefer-destructuring,object-curly-newline */
import
GET
from
'
../..
/utils/get
'
;
import
GET
from
'
@
/utils/get
'
;
import
POST
from
'
../..
/utils/post
'
;
import
POST
from
'
@
/utils/post
'
;
export
default
{
export
default
{
/**
/**
...
...
tools/frontend/src/store/file-manager/manager/actions.js
View file @
735d39eb
/* eslint-disable object-curly-newline */
/* eslint-disable object-curly-newline */
import
GET
from
'
../../..
/utils/get
'
;
import
GET
from
'
@
/utils/get
'
;
export
default
{
export
default
{
/**
/**
...
...
tools/frontend/src/store/file-manager/settings/store.js
View file @
735d39eb
...
@@ -2,23 +2,23 @@ import mutations from './mutations';
...
@@ -2,23 +2,23 @@ import mutations from './mutations';
import
getters
from
'
./getters
'
;
import
getters
from
'
./getters
'
;
// languages
// languages
import
ru
from
'
../../..
/locales/lang/ru
'
;
import
ru
from
'
@
/locales/lang/ru
'
;
import
en
from
'
../../..
/locales/lang/en
'
;
import
en
from
'
@
/locales/lang/en
'
;
import
ar
from
'
../../..
/locales/lang/ar
'
;
import
ar
from
'
@
/locales/lang/ar
'
;
import
sr
from
'
../../..
/locales/lang/sr
'
;
import
sr
from
'
@
/locales/lang/sr
'
;
import
cs
from
'
../../..
/locales/lang/cs
'
;
import
cs
from
'
@
/locales/lang/cs
'
;
import
de
from
'
../../..
/locales/lang/de
'
;
import
de
from
'
@
/locales/lang/de
'
;
import
es
from
'
../../..
/locales/lang/es
'
;
import
es
from
'
@
/locales/lang/es
'
;
import
nl
from
'
../../..
/locales/lang/nl
'
;
import
nl
from
'
@
/locales/lang/nl
'
;
/* eslint camelcase: 0 */
/* eslint camelcase: 0 */
import
zh_CN
from
'
../../../locales/lang/zh_CN
'
;
import
fa
from
'
@/locales/lang/fa
'
;
import
fa
from
'
../../../locales/lang/fa
'
;
import
it
from
'
@/locales/lang/it
'
;
import
it
from
'
../../../locales/lang/it
'
;
import
tr
from
'
@/locales/lang/tr
'
;
import
tr
from
'
../../../locales/lang/t
r
'
;
import
fr
from
'
@/locales/lang/f
r
'
;
import
fr
from
'
../../../locales/lang/fr
'
;
import
pt_BR
from
'
@/locales/lang/pt_BR
'
;
import
pt_BR
from
'
../../../locales/lang/pt_BR
'
;
import
zh_CN
from
'
@/locales/lang/zh_CN
'
;
import
zh_TW
from
'
../../..
/locales/lang/zh_TW
'
;
import
zh_TW
from
'
@
/locales/lang/zh_TW
'
;
import
pl
from
'
../../..
/locales/lang/pl
'
;
import
pl
from
'
@
/locales/lang/pl
'
;
export
default
{
export
default
{
namespaced
:
true
,
namespaced
:
true
,
...
@@ -57,12 +57,12 @@ export default {
...
@@ -57,12 +57,12 @@ export default {
de
:
Object
.
freeze
(
de
),
de
:
Object
.
freeze
(
de
),
es
:
Object
.
freeze
(
es
),
es
:
Object
.
freeze
(
es
),
nl
:
Object
.
freeze
(
nl
),
nl
:
Object
.
freeze
(
nl
),
'
zh-CN
'
:
Object
.
freeze
(
zh_CN
),
fa
:
Object
.
freeze
(
fa
),
fa
:
Object
.
freeze
(
fa
),
it
:
Object
.
freeze
(
it
),
it
:
Object
.
freeze
(
it
),
tr
:
Object
.
freeze
(
tr
),
tr
:
Object
.
freeze
(
tr
),
fr
:
Object
.
freeze
(
fr
),
fr
:
Object
.
freeze
(
fr
),
'
pt-BR
'
:
Object
.
freeze
(
pt_BR
),
'
pt-BR
'
:
Object
.
freeze
(
pt_BR
),
'
zh-CN
'
:
Object
.
freeze
(
zh_CN
),
'
zh-TW
'
:
Object
.
freeze
(
zh_TW
),
'
zh-TW
'
:
Object
.
freeze
(
zh_TW
),
pl
:
Object
.
freeze
(
pl
),
pl
:
Object
.
freeze
(
pl
),
},
},
...
...
tools/frontend/src/store/file-manager/tree/actions.js
View file @
735d39eb
import
GET
from
'
../../..
/utils/get
'
;
import
GET
from
'
@
/utils/get
'
;
export
default
{
export
default
{
/**
/**
...
...
tools/frontend/src/store/index.js
View file @
735d39eb
...
@@ -10,13 +10,13 @@ Vue.use(Vuex)
...
@@ -10,13 +10,13 @@ Vue.use(Vuex)
export
default
new
Vuex
.
Store
({
export
default
new
Vuex
.
Store
({
modules
:
{
modules
:
{
fm
,
frontend
:
{
frontend
:
{
namespaced
:
true
,
namespaced
:
true
,
modules
:
{
modules
:
{
openapi
:
frontendOpenapi
openapi
:
frontendOpenapi
}
}
},
},
fm
:
fm
,
global
:
{
global
:
{
namespaced
:
true
,
namespaced
:
true
,
...
global
,
...
global
,
...
...
tools/frontend/src/styles/_breadcrumb.scss
0 → 100644
View file @
735d39eb
.breadcrumb
{
display
:
flex
;
flex-wrap
:
wrap
;
padding
:
$breadcrumb-padding-y
$breadcrumb-padding-x
;
margin-bottom
:
$breadcrumb-margin-bottom
;
@include
font-size
(
$breadcrumb-font-size
);
list-style
:
none
;
background-color
:
$breadcrumb-bg
;
@include
border-radius
(
$breadcrumb-border-radius
);
}
.breadcrumb-item
{
// The separator between breadcrumbs (by default, a forward-slash: "/")
+
.breadcrumb-item
{
padding-left
:
$breadcrumb-item-padding
;
&
:
:
before
{
float
:
left
;
// Suppress inline spacings and underlining of the separator
padding-right
:
$breadcrumb-item-padding
;
color
:
$breadcrumb-divider-color
;
content
:
escape-svg
(
$breadcrumb-divider
);
}
}
// IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
// without `<ul>`s. The `::before` pseudo-element generates an element
// *within* the .breadcrumb-item and thereby inherits the `text-decoration`.
//
// To trick IE into suppressing the underline, we give the pseudo-element an
// underline and then immediately remove it.
+
.breadcrumb-item
:hover::before
{
text-decoration
:
underline
;
}
// stylelint-disable-next-line no-duplicate-selectors
+
.breadcrumb-item
:hover::before
{
text-decoration
:
none
;
}
&
.active
{
color
:
$breadcrumb-active-color
;
}
}
tools/frontend/src/
asset
s/tableList.less
→
tools/frontend/src/
style
s/tableList.less
View file @
735d39eb
File moved
tools/frontend/src/
asset
s/utils.less
→
tools/frontend/src/
style
s/utils.less
View file @
735d39eb
File moved
tools/frontend/src/utils/axios.js
0 → 100644
View file @
735d39eb
import
axios
from
'
axios
'
;
export
default
axios
.
create
();
\ No newline at end of file
tools/frontend/src/utils/get.js
View file @
735d39eb
import
axios
from
'
axios
'
;
import
request
from
'
./axios
'
;
const
HTTP
=
axios
.
create
();
export
default
{
export
default
{
/**
/**
...
@@ -7,7 +6,7 @@ export default {
...
@@ -7,7 +6,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
initialize
()
{
initialize
()
{
return
HTTP
.
get
(
'
initialize
'
);
return
request
.
get
(
'
initialize
'
);
},
},
/**
/**
...
@@ -17,7 +16,7 @@ export default {
...
@@ -17,7 +16,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
tree
(
disk
,
path
)
{
tree
(
disk
,
path
)
{
return
HTTP
.
get
(
'
tree
'
,
{
params
:
{
disk
,
path
}
});
return
request
.
get
(
'
tree
'
,
{
params
:
{
disk
,
path
}
});
},
},
/**
/**
...
@@ -26,7 +25,7 @@ export default {
...
@@ -26,7 +25,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
selectDisk
(
disk
)
{
selectDisk
(
disk
)
{
return
HTTP
.
get
(
'
select-disk
'
,
{
params
:
{
disk
}
});
return
request
.
get
(
'
select-disk
'
,
{
params
:
{
disk
}
});
},
},
/**
/**
...
@@ -36,14 +35,14 @@ export default {
...
@@ -36,14 +35,14 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
content
(
disk
,
path
)
{
content
(
disk
,
path
)
{
return
HTTP
.
get
(
'
content
'
,
{
params
:
{
disk
,
path
}
});
return
request
.
get
(
'
content
'
,
{
params
:
{
disk
,
path
}
});
},
},
/**
/**
* Item properties
* Item properties
*/
*/
/* properties(disk, path) {
/* properties(disk, path) {
return
HTTP
.get('properties', { params: { disk, path } });
return
request
.get('properties', { params: { disk, path } });
}, */
}, */
/**
/**
...
@@ -53,7 +52,7 @@ export default {
...
@@ -53,7 +52,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
url
(
disk
,
path
)
{
url
(
disk
,
path
)
{
return
HTTP
.
get
(
'
url
'
,
{
params
:
{
disk
,
path
}
});
return
request
.
get
(
'
url
'
,
{
params
:
{
disk
,
path
}
});
},
},
/**
/**
...
@@ -63,7 +62,7 @@ export default {
...
@@ -63,7 +62,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
getFile
(
disk
,
path
)
{
getFile
(
disk
,
path
)
{
return
HTTP
.
get
(
'
download
'
,
{
params
:
{
disk
,
path
}
});
return
request
.
get
(
'
download
'
,
{
params
:
{
disk
,
path
}
});
},
},
/**
/**
...
@@ -73,7 +72,7 @@ export default {
...
@@ -73,7 +72,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
getFileArrayBuffer
(
disk
,
path
)
{
getFileArrayBuffer
(
disk
,
path
)
{
return
HTTP
.
get
(
'
download
'
,
{
return
request
.
get
(
'
download
'
,
{
responseType
:
'
arraybuffer
'
,
responseType
:
'
arraybuffer
'
,
params
:
{
disk
,
path
},
params
:
{
disk
,
path
},
});
});
...
@@ -86,7 +85,7 @@ export default {
...
@@ -86,7 +85,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
thumbnail
(
disk
,
path
)
{
thumbnail
(
disk
,
path
)
{
return
HTTP
.
get
(
'
thumbnails
'
,
{
return
request
.
get
(
'
thumbnails
'
,
{
responseType
:
'
arraybuffer
'
,
responseType
:
'
arraybuffer
'
,
params
:
{
disk
,
path
},
params
:
{
disk
,
path
},
});
});
...
@@ -99,7 +98,8 @@ export default {
...
@@ -99,7 +98,8 @@ export default {
* @return {*}
* @return {*}
*/
*/
preview
(
disk
,
path
)
{
preview
(
disk
,
path
)
{
return
HTTP
.
get
(
'
preview
'
,
{
window
.
console
.
log
(
"
###############===========>
"
,
disk
)
return
request
.
get
(
'
preview
'
,
{
responseType
:
'
arraybuffer
'
,
responseType
:
'
arraybuffer
'
,
params
:
{
disk
,
path
},
params
:
{
disk
,
path
},
});
});
...
@@ -112,7 +112,7 @@ export default {
...
@@ -112,7 +112,7 @@ export default {
* @return {*}
* @return {*}
*/
*/
download
(
disk
,
path
)
{
download
(
disk
,
path
)
{
return
HTTP
.
get
(
'
download
'
,
{
return
request
.
get
(
'
download
'
,
{
responseType
:
'
arraybuffer
'
,
responseType
:
'
arraybuffer
'
,
params
:
{
disk
,
path
},
params
:
{
disk
,
path
},
});
});
...
...
tools/frontend/src/utils/helper.js
View file @
735d39eb
...
@@ -28,7 +28,7 @@ export default {
...
@@ -28,7 +28,7 @@ export default {
const
date
=
new
Date
(
timestamp
*
1000
);
const
date
=
new
Date
(
timestamp
*
1000
);
return
date
.
toLocaleString
(
this
.
$store
.
state
.
fm
.
settings
.
lang
);
return
date
.
toLocaleString
();
},
},
/**
/**
...
...
tools/frontend/src/utils/post.js
View file @
735d39eb
import
axios
from
'
axios
'
;
import
request
from
'
./axios
'
;
const
HTTP
=
axios
.
create
();
export
default
{
export
default
{
/**
/**
...
@@ -10,7 +9,7 @@ export default {
...
@@ -10,7 +9,7 @@ export default {
* @returns {AxiosPromise<any>}
* @returns {AxiosPromise<any>}
*/
*/
createFile
(
disk
,
path
,
name
)
{
createFile
(
disk
,
path
,
name
)
{
return
HTTP
.
post
(
'
create-file
'
,
{
disk
,
path
,
name
});
return
request
.
post
(
'
create-file
'
,
{
disk
,
path
,
name
});
},
},
/**
/**
...
@@ -19,7 +18,7 @@ export default {
...
@@ -19,7 +18,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
updateFile
(
formData
)
{
updateFile
(
formData
)
{
return
HTTP
.
post
(
'
update-file
'
,
formData
);
return
request
.
post
(
'
update-file
'
,
formData
);
},
},
/**
/**
...
@@ -28,7 +27,7 @@ export default {
...
@@ -28,7 +27,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
createDirectory
(
data
)
{
createDirectory
(
data
)
{
return
HTTP
.
post
(
'
create-directory
'
,
data
);
return
request
.
post
(
'
create-directory
'
,
data
);
},
},
/**
/**
...
@@ -38,7 +37,7 @@ export default {
...
@@ -38,7 +37,7 @@ export default {
* @returns {AxiosPromise<any>}
* @returns {AxiosPromise<any>}
*/
*/
upload
(
data
,
config
)
{
upload
(
data
,
config
)
{
return
HTTP
.
post
(
'
upload
'
,
data
,
config
);
return
request
.
post
(
'
upload
'
,
data
,
config
);
},
},
/**
/**
...
@@ -47,7 +46,7 @@ export default {
...
@@ -47,7 +46,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
delete
(
data
)
{
delete
(
data
)
{
return
HTTP
.
post
(
'
delete
'
,
data
);
return
request
.
post
(
'
delete
'
,
data
);
},
},
/**
/**
...
@@ -56,7 +55,7 @@ export default {
...
@@ -56,7 +55,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
rename
(
data
)
{
rename
(
data
)
{
return
HTTP
.
post
(
'
rename
'
,
data
);
return
request
.
post
(
'
rename
'
,
data
);
},
},
/**
/**
...
@@ -65,7 +64,7 @@ export default {
...
@@ -65,7 +64,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
paste
(
data
)
{
paste
(
data
)
{
return
HTTP
.
post
(
'
paste
'
,
data
);
return
request
.
post
(
'
paste
'
,
data
);
},
},
/**
/**
...
@@ -74,7 +73,7 @@ export default {
...
@@ -74,7 +73,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
zip
(
data
)
{
zip
(
data
)
{
return
HTTP
.
post
(
'
zip
'
,
data
);
return
request
.
post
(
'
zip
'
,
data
);
},
},
/**
/**
...
@@ -83,6 +82,6 @@ export default {
...
@@ -83,6 +82,6 @@ export default {
* @param data
* @param data
*/
*/
unzip
(
data
)
{
unzip
(
data
)
{
return
HTTP
.
post
(
'
unzip
'
,
data
);
return
request
.
post
(
'
unzip
'
,
data
);
},
},
};
};
tools/frontend/src/utils/translate.js
View file @
735d39eb
/*
* @Author: your name
* @Date: 2021-06-18 10:43:12
* @LastEditTime: 2021-06-19 17:00:27
* @LastEditors: your name
* @Description: In User Settings Edit
* @FilePath: \evm-store\tools\frontend\src\utils\translate.js
*/
export
default
{
export
default
{
computed
:
{
computed
:
{
/**
/**
...
...
tools/frontend/src/views/Dashboard/Analysis.less
View file @
735d39eb
@import 'ant-design-vue/lib/style/themes/default.less';
@import 'ant-design-vue/lib/style/themes/default.less';
@import '
asset
s/utils.less';
@import '
style
s/utils.less';
.iconGroup {
.iconGroup {
i {
i {
...
...
tools/frontend/src/views/Dashboard/Workplace.less
View file @
735d39eb
@import 'ant-design-vue/lib/style/themes/default.less';
@import 'ant-design-vue/lib/style/themes/default.less';
@import '
asset
s/utils.less';
@import '
style
s/utils.less';
.activitiesList {
.activitiesList {
padding: 0 24px 8px 24px;
padding: 0 24px 8px 24px;
...
...
tools/frontend/src/views/FileManager/FileManager.vue
View file @
735d39eb
...
@@ -40,8 +40,7 @@
...
@@ -40,8 +40,7 @@
/* eslint-disable import/no-duplicates, no-param-reassign */
/* eslint-disable import/no-duplicates, no-param-reassign */
import
{
mapState
}
from
"
vuex
"
;
import
{
mapState
}
from
"
vuex
"
;
// Axios
// Axios
import
axios
from
"
axios
"
;
import
request
from
"
@/utils/axios
"
;
const
HTTP
=
axios
.
create
();
import
EventBus
from
"
@/utils/eventBus
"
;
import
EventBus
from
"
@/utils/eventBus
"
;
// Components
// Components
import
Navbar
from
"
./components/blocks/Navbar.vue
"
;
import
Navbar
from
"
./components/blocks/Navbar.vue
"
;
...
@@ -77,19 +76,11 @@ export default {
...
@@ -77,19 +76,11 @@ export default {
settings
:
{
settings
:
{
headers
:
{
// axios headers
headers
:
{
// axios headers
"
X-Requested-With
"
:
"
XMLHttpRequest
"
,
"
X-Requested-With
"
:
"
XMLHttpRequest
"
,
Authorization
:
`Bearer
${
window
.
localStorage
.
getItem
(
"
user-token
"
)}
`
,
//
Authorization: `Bearer ${window.localStorage.getItem("user-token")}`,
},
},
baseUrl
:
"
http://test.loc
/file-manager/
"
,
// overwrite base url Axios
baseUrl
:
"
/file-manager/
"
,
// overwrite base url Axios
windowsConfig
:
2
,
// overwrite config
windowsConfig
:
2
,
// overwrite config
lang
:
"
zh_CN
"
,
// set language
lang
:
"
zh_CN
"
,
// set language
// translation: {
// // add new translation
// name: "zh_CN",
// content: {
// about: "Über",
// back: "Zurück",
// },
// },
},
},
};
};
},
},
...
@@ -125,8 +116,8 @@ export default {
...
@@ -125,8 +116,8 @@ export default {
EventBus
.
$off
([
"
contextMenu
"
,
"
addNotification
"
]);
EventBus
.
$off
([
"
contextMenu
"
,
"
addNotification
"
]);
// eject interceptors
// eject interceptors
HTTP
.
interceptors
.
request
.
eject
(
this
.
interceptorIndex
.
request
);
request
.
interceptors
.
request
.
eject
(
this
.
interceptorIndex
.
request
);
HTTP
.
interceptors
.
response
.
eject
(
this
.
interceptorIndex
.
response
);
request
.
interceptors
.
response
.
eject
(
this
.
interceptorIndex
.
response
);
},
},
computed
:
{
computed
:
{
...
mapState
(
"
fm
"
,
{
...
mapState
(
"
fm
"
,
{
...
@@ -141,7 +132,7 @@ export default {
...
@@ -141,7 +132,7 @@ export default {
* Add axios request interceptor
* Add axios request interceptor
*/
*/
requestInterceptor
()
{
requestInterceptor
()
{
this
.
interceptorIndex
.
request
=
HTTP
.
interceptors
.
request
.
use
(
this
.
interceptorIndex
.
request
=
request
.
interceptors
.
request
.
use
(
(
config
)
=>
{
(
config
)
=>
{
// overwrite base url and headers
// overwrite base url and headers
config
.
baseURL
=
this
.
$store
.
getters
[
"
fm/settings/baseUrl
"
];
config
.
baseURL
=
this
.
$store
.
getters
[
"
fm/settings/baseUrl
"
];
...
@@ -164,7 +155,7 @@ export default {
...
@@ -164,7 +155,7 @@ export default {
* Add axios response interceptor
* Add axios response interceptor
*/
*/
responseInterceptor
()
{
responseInterceptor
()
{
this
.
interceptorIndex
.
response
=
HTTP
.
interceptors
.
response
.
use
(
this
.
interceptorIndex
.
response
=
request
.
interceptors
.
response
.
use
(
(
response
)
=>
{
(
response
)
=>
{
// loading spinner -
// loading spinner -
this
.
$store
.
commit
(
"
fm/messages/subtractLoading
"
);
this
.
$store
.
commit
(
"
fm/messages/subtractLoading
"
);
...
@@ -258,7 +249,21 @@ export default {
...
@@ -258,7 +249,21 @@ export default {
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
scope
lang=
"scss"
>
// https://stackpath.bootstrapcdn.com/bootstrap/scss/mixins/_text-truncate.scss
@import
"~bootstrap/scss/mixins"
;
@import
"~bootstrap/scss/functions"
;
@import
"~bootstrap/scss/variables"
;
@import
"~bootstrap/scss/utilities/sizing.scss"
;
@import
"~bootstrap/scss/utilities/text.scss"
;
@import
"~bootstrap/scss/bootstrap-grid"
;
@import
"~bootstrap/scss/close"
;
@import
"~bootstrap/scss/buttons"
;
@import
"~bootstrap/scss/button-group"
;
@import
"~bootstrap/scss/badge"
;
@import
"~bootstrap/scss/modal"
;
@import
"~bootstrap/scss/tables"
;
@import
"~bootstrap/scss/type"
;
@import
"~plyr/src/sass/plyr.scss"
;
@import
"~plyr/src/sass/plyr.scss"
;
.fm
{
.fm
{
position
:
relative
;
position
:
relative
;
...
...
tools/frontend/src/views/FileManager/components/blocks/Navbar.vue
View file @
735d39eb
...
@@ -306,7 +306,6 @@ export default {
...
@@ -306,7 +306,6 @@ export default {
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.fm-navbar
{
.fm-navbar
{
.btn-group
{
.btn-group
{
margin-right
:
0
.4rem
;
margin-right
:
0
.4rem
;
}
}
...
...
tools/frontend/src/views/FileManager/components/manager/Breadcrumb.vue
View file @
735d39eb
<
template
>
<
template
>
<div
class=
"fm-breadcrumb"
>
<div
class=
"fm-breadcrumb"
>
<nav
aria-label=
"breadcrumb"
>
<nav
aria-label=
"breadcrumb"
>
<ol
class=
"breadcrumb"
<ol
v-bind:class=
"[manager === activeManager ? 'active-manager' : 'bg-light']"
>
class=
"breadcrumb"
<li
class=
"breadcrumb-item"
v-on:click=
"selectMainDirectory"
>
v-bind:class=
"[
<span
class=
"badge badge-secondary"
>
manager === activeManager ? 'active-manager' : 'bg-light',
<i
class=
"far fa-hdd"
/>
]"
</span>
>
</li>
<li
class=
"breadcrumb-item"
v-on:click=
"selectMainDirectory"
>
<li
class=
"breadcrumb-item text-truncate"
<span
class=
"badge badge-secondary"
>
v-for=
"(item, index) in breadcrumb"
<i
class=
"far fa-hdd"
/>
v-bind:key=
"index"
</span>
v-bind:class=
"[breadcrumb.length === index + 1 ? 'active' : '']"
</li>
v-on:click=
"selectDirectory(index)"
>
<li
<span>
{{
item
}}
</span>
class=
"breadcrumb-item text-truncate"
</li>
v-for=
"(item, index) in breadcrumb"
</ol>
v-bind:key=
"index"
</nav>
v-bind:class=
"[breadcrumb.length === index + 1 ? 'active' : '']"
</div>
v-on:click=
"selectDirectory(index)"
>
<span>
{{
item
}}
</span>
</li>
</ol>
</nav>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
name
:
'
Breadcrumb
'
,
name
:
"
Breadcrumb
"
,
props
:
{
props
:
{
manager
:
{
type
:
String
,
required
:
true
},
manager
:
{
type
:
String
,
required
:
true
},
},
},
...
@@ -65,12 +71,15 @@ export default {
...
@@ -65,12 +71,15 @@ export default {
* @param index
* @param index
*/
*/
selectDirectory
(
index
)
{
selectDirectory
(
index
)
{
const
path
=
this
.
breadcrumb
.
slice
(
0
,
index
+
1
).
join
(
'
/
'
);
const
path
=
this
.
breadcrumb
.
slice
(
0
,
index
+
1
).
join
(
"
/
"
);
// only if this path not selected
// only if this path not selected
if
(
path
!==
this
.
selectedDirectory
)
{
if
(
path
!==
this
.
selectedDirectory
)
{
// load directory
// load directory
this
.
$store
.
dispatch
(
`fm/
${
this
.
manager
}
/selectDirectory`
,
{
path
,
history
:
true
});
this
.
$store
.
dispatch
(
`fm/
${
this
.
manager
}
/selectDirectory`
,
{
path
,
history
:
true
,
});
}
}
},
},
...
@@ -79,30 +88,72 @@ export default {
...
@@ -79,30 +88,72 @@ export default {
*/
*/
selectMainDirectory
()
{
selectMainDirectory
()
{
if
(
this
.
selectedDirectory
)
{
if
(
this
.
selectedDirectory
)
{
this
.
$store
.
dispatch
(
`fm/
${
this
.
manager
}
/selectDirectory`
,
{
path
:
null
,
history
:
true
});
this
.
$store
.
dispatch
(
`fm/
${
this
.
manager
}
/selectDirectory`
,
{
path
:
null
,
history
:
true
,
});
}
}
},
},
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
.fm-breadcrumb
{
@import
"~bootstrap/scss/mixins"
;
@import
"~bootstrap/scss/functions"
;
@import
"~bootstrap/scss/variables"
;
.fm-breadcrumb
{
.breadcrumb
{
display
:
flex
;
flex-wrap
:
nowrap
;
padding
:
0
.2rem
0
.3rem
;
margin-bottom
:
0
.5rem
;
@include
font-size
(
$breadcrumb-font-size
);
list-style
:
none
;
background-color
:
$breadcrumb-bg
;
@include
border-radius
(
$breadcrumb-border-radius
);
.breadcrumb
{
.breadcrumb-item
{
flex-wrap
:
nowrap
;
// The separator between breadcrumbs (by default, a forward-slash: "/")
padding
:
0
.2rem
0
.3rem
;
+
.breadcrumb-item
{
margin-bottom
:
0
.5rem
;
padding-left
:
$breadcrumb-item-padding
;
&
.active-manager
{
&
:
:
before
{
background-color
:
#c2e5eb
;
float
:
left
;
// Suppress inline spacings and underlining of the separator
}
padding-right
:
$breadcrumb-item-padding
;
color
:
$breadcrumb-divider-color
;
.breadcrumb-item
:not
(
.active
)
:hover
{
content
:
escape-svg
(
$breadcrumb-divider
);
cursor
:
pointer
;
font-weight
:
normal
;
color
:
#6d757d
;
}
}
}
}
// IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
// without `
<
ul
>`
s
.
The
`
:
:
before
`
pseudo-element
generates
an
element
//
*
within
*
the
.
breadcrumb-item
and
thereby
inherits
the
`
text-decoration
`
.
//
//
To
trick
IE
into
suppressing
the
underline
,
we
give
the
pseudo-element
an
//
underline
and
then
immediately
remove
it
.
+
.
breadcrumb-item
:
hover
::
before
{
text-decoration
:
underline
;
}
// stylelint-disable-next-line no-duplicate-selectors
+
.breadcrumb-item
:hover::before
{
text-decoration
:
none
;
}
&
.active
{
color
:
$breadcrumb-active-color
;
}
}
&
.active-manager
{
background-color
:
#c2e5eb
;
}
.breadcrumb-item
:not
(
.active
)
:hover
{
cursor
:
pointer
;
font-weight
:
normal
;
color
:
#6d757d
;
}
}
}
}
</
style
>
</
style
>
tools/frontend/src/views/FileManager/components/manager/TableView.vue
View file @
735d39eb
This diff is collapsed.
Click to expand it.
tools/frontend/src/views/FileManager/components/modals/Modal.vue
View file @
735d39eb
<
template
>
<
template
>
<transition
name=
"fm-modal"
>
<transition
name=
"fm-modal"
>
<div
class=
"fm-modal"
ref=
"fmModal"
v-on:click=
"hideModal"
>
<div
class=
"fm-modal"
ref=
"fmModal"
v-on:click=
"hideModal"
>
<div
class=
"modal-dialog"
<div
role=
"document"
class=
"modal-dialog"
v-bind:class=
"modalSize"
role=
"document"
v-on:click
.
stop
>
v-bind:class=
"modalSize"
<component
v-bind:is=
"modalName"
/>
v-on:click
.
stop
</div>
>
</div>
<component
v-bind:is=
"modalName"
/>
</transition>
</div>
</div>
</transition>
</
template
>
</
template
>
<
script
>
<
script
>
import
NewFile
from
'
./views/NewFile.vue
'
;
import
NewFile
from
"
./views/NewFile.vue
"
;
import
NewFolder
from
'
./views/NewFolder.vue
'
;
import
NewFolder
from
"
./views/NewFolder.vue
"
;
import
Upload
from
'
./views/Upload.vue
'
;
import
Upload
from
"
./views/Upload.vue
"
;
import
Delete
from
'
./views/Delete.vue
'
;
import
Delete
from
"
./views/Delete.vue
"
;
import
Clipboard
from
'
./views/Clipboard.vue
'
;
import
Clipboard
from
"
./views/Clipboard.vue
"
;
import
Status
from
'
./views/Status.vue
'
;
import
Status
from
"
./views/Status.vue
"
;
import
Rename
from
'
./views/Rename.vue
'
;
import
Rename
from
"
./views/Rename.vue
"
;
import
Properties
from
'
./views/Properties.vue
'
;
import
Properties
from
"
./views/Properties.vue
"
;
import
Preview
from
'
./views/Preview.vue
'
;
import
Preview
from
"
./views/Preview.vue
"
;
import
TextEdit
from
'
./views/TextEdit.vue
'
;
import
TextEdit
from
"
./views/TextEdit.vue
"
;
import
AudioPlayer
from
'
./views/AudioPlayer.vue
'
;
import
AudioPlayer
from
"
./views/AudioPlayer.vue
"
;
import
VideoPlayer
from
'
./views/VideoPlayer.vue
'
;
import
VideoPlayer
from
"
./views/VideoPlayer.vue
"
;
import
Zip
from
'
./views/Zip.vue
'
;
import
Zip
from
"
./views/Zip.vue
"
;
import
Unzip
from
'
./views/Unzip.vue
'
;
import
Unzip
from
"
./views/Unzip.vue
"
;
import
About
from
'
./views/About.vue
'
;
import
About
from
"
./views/About.vue
"
;
export
default
{
export
default
{
name
:
'
Modal
'
,
name
:
"
Modal
"
,
components
:
{
components
:
{
NewFile
,
NewFile
,
NewFolder
,
NewFolder
,
...
@@ -49,7 +51,10 @@ export default {
...
@@ -49,7 +51,10 @@ export default {
},
},
mounted
()
{
mounted
()
{
// set height
// set height
this
.
$store
.
commit
(
'
fm/modal/setModalBlockHeight
'
,
this
.
$refs
.
fmModal
.
offsetHeight
);
this
.
$store
.
commit
(
"
fm/modal/setModalBlockHeight
"
,
this
.
$refs
.
fmModal
.
offsetHeight
);
},
},
computed
:
{
computed
:
{
/**
/**
...
@@ -66,9 +71,10 @@ export default {
...
@@ -66,9 +71,10 @@ export default {
*/
*/
modalSize
()
{
modalSize
()
{
return
{
return
{
'
modal-xl
'
:
this
.
modalName
===
'
Preview
'
||
this
.
modalName
===
'
TextEdit
'
,
"
modal-xl
"
:
'
modal-lg
'
:
this
.
modalName
===
'
VideoPlayer
'
,
this
.
modalName
===
"
Preview
"
||
this
.
modalName
===
"
TextEdit
"
,
'
modal-sm
'
:
false
,
"
modal-lg
"
:
this
.
modalName
===
"
VideoPlayer
"
,
"
modal-sm
"
:
false
,
};
};
},
},
},
},
...
@@ -77,37 +83,42 @@ export default {
...
@@ -77,37 +83,42 @@ export default {
* Hide modal window
* Hide modal window
*/
*/
hideModal
()
{
hideModal
()
{
this
.
$store
.
commit
(
'
fm/modal/clearModal
'
);
this
.
$store
.
commit
(
"
fm/modal/clearModal
"
);
},
},
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
// @import "~bootstrap/scss/mixins";
// @import "~bootstrap/scss/functions";
// @import "~bootstrap/scss/variables";
// @import "~bootstrap/scss/modal";
.fm-modal
{
position
:
absolute
;
z-index
:
9998
;
top
:
0
;
bottom
:
0
;
left
:
0
;
right
:
0
;
width
:
100%
;
height
:
100%
;
background-color
:
rgba
(
0
,
0
,
0
,
0
.35
);
display
:
block
;
transition
:
opacity
0
.4s
ease
;
overflow
:
auto
;
.fm-modal
{
.modal-xl
{
position
:
absolute
;
max-width
:
96%
;
z-index
:
9998
;
}
top
:
0
;
}
bottom
:
0
;
left
:
0
;
right
:
0
;
width
:
100%
;
height
:
100%
;
background-color
:
rgba
(
0
,
0
,
0
,
.35
);
display
:
block
;
transition
:
opacity
.4s
ease
;
overflow
:
auto
;
.modal-xl
{
.fm-modal-enter-active
,
max-width
:
96%
;
.fm-modal-leave-active
{
}
transition
:
opacity
0
.5s
;
}
}
.fm-modal-enter
,
.fm-modal-enter-active
,
.fm-modal-leave-active
{
.fm-modal-leave-to
{
transition
:
opacity
.5s
;
opacity
:
0
;
}
}
.fm-modal-enter
,
.fm-modal-leave-to
{
opacity
:
0
;
}
</
style
>
</
style
>
tools/frontend/src/views/FileManager/components/modals/views/Preview.vue
View file @
735d39eb
<
template
>
<
template
>
<div
class=
"modal-content fm-modal-preview"
>
<div
class=
"modal-content fm-modal-preview"
>
<div
class=
"modal-header"
>
<div
class=
"modal-header"
>
<h5
class=
"modal-title w-75 text-truncate"
>
<h5
class=
"modal-title w-75 text-truncate"
>
{{
showCropperModule
?
lang
.
modal
.
cropper
.
title
:
lang
.
modal
.
preview
.
title
}}
{{
<small
class=
"text-muted pl-3"
>
{{
selectedItem
.
basename
}}
</small>
showCropperModule
</h5>
?
lang
.
modal
.
cropper
.
title
<button
type=
"button"
class=
"close"
aria-label=
"Close"
v-on:click=
"hideModal"
>
:
lang
.
modal
.
preview
.
title
<span
aria-hidden=
"true"
>
×
</span>
}}
</button>
<small
class=
"text-muted pl-3"
>
{{
selectedItem
.
basename
}}
</small>
</div>
</h5>
<div
class=
"modal-body text-center"
>
<button
<template
v-if=
"showCropperModule"
>
type=
"button"
<cropper-module
v-bind:imgSrc=
"imgSrc"
class=
"close"
v-bind:maxHeight=
"maxHeight"
aria-label=
"Close"
v-on:closeCropper=
"closeCropper"
/>
v-on:click=
"hideModal"
</
template
>
>
<transition
v-else
name=
"fade"
mode=
"out-in"
>
<span
aria-hidden=
"true"
>
×
</span>
<i
v-if=
"!imgSrc"
class=
"fas fa-spinner fa-spin fa-5x p-5 text-muted"
/>
</button>
<img
v-else
v-bind:src=
"imgSrc"
v-bind:alt=
"selectedItem.basename"
v-bind:style=
"{'max-height': maxHeight+'px'}"
>
</transition>
</div>
<div
v-if=
"showFooter"
class=
"d-flex justify-content-between"
>
<span
class=
"d-block"
>
<button
class=
"btn btn-info"
v-bind:title=
"lang.modal.cropper.title"
v-on:click=
"showCropperModule = true"
>
<i
class=
"fas fa-crop-alt"
/>
</button>
</span>
<span
class=
"d-block"
>
<button
class=
"btn btn-light"
v-on:click=
"hideModal"
>
{{ lang.btn.cancel }}
</button>
</span>
</div>
</div>
</div>
<div
class=
"modal-body text-center"
>
<template
v-if=
"showCropperModule"
>
<cropper-module
v-bind:imgSrc=
"imgSrc"
v-bind:maxHeight=
"maxHeight"
v-on:closeCropper=
"closeCropper"
/>
</
template
>
<transition
v-else
name=
"fade"
mode=
"out-in"
>
<i
v-if=
"!imgSrc"
class=
"fas fa-spinner fa-spin fa-5x p-5 text-muted"
/>
<img
v-else
v-bind:src=
"imgSrc"
v-bind:alt=
"selectedItem.basename"
v-bind:style=
"{ 'max-height': maxHeight + 'px' }"
/>
</transition>
</div>
<div
v-if=
"showFooter"
class=
"d-flex justify-content-between"
>
<span
class=
"d-block"
>
<button
class=
"btn btn-info"
v-bind:title=
"lang.modal.cropper.title"
v-on:click=
"showCropperModule = true"
>
<i
class=
"fas fa-crop-alt"
/>
</button>
</span>
<span
class=
"d-block"
>
<button
class=
"btn btn-light"
v-on:click=
"hideModal"
>
{{ lang.btn.cancel }}
</button>
</span>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
CropperModule
from
'
../additions/Cropper.vue
'
;
import
CropperModule
from
"
../additions/Cropper.vue
"
;
import
modal
from
'
../mixins/modal
'
;
import
modal
from
"
../mixins/modal
"
;
import
translate
from
'
@/utils/translate
'
;
import
translate
from
"
@/utils/translate
"
;
import
helper
from
'
@/utils/helper
'
;
import
helper
from
"
@/utils/helper
"
;
import
GET
from
'
@/utils/get
'
;
import
GET
from
"
@/utils/get
"
;
export
default
{
export
default
{
name
:
'
Preview
'
,
name
:
"
Preview
"
,
mixins
:
[
modal
,
translate
,
helper
],
mixins
:
[
modal
,
translate
,
helper
],
components
:
{
CropperModule
},
components
:
{
CropperModule
},
data
()
{
data
()
{
return
{
return
{
showCropperModule
:
false
,
showCropperModule
:
false
,
imgSrc
:
''
,
imgSrc
:
""
,
};
};
},
},
created
()
{
created
()
{
...
@@ -63,7 +81,7 @@ export default {
...
@@ -63,7 +81,7 @@ export default {
* @return {*}
* @return {*}
*/
*/
auth
()
{
auth
()
{
return
this
.
$store
.
getters
[
'
fm/settings/authHeader
'
];
return
this
.
$store
.
getters
[
"
fm/settings/authHeader
"
];
},
},
/**
/**
...
@@ -71,7 +89,7 @@ export default {
...
@@ -71,7 +89,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
selectedDisk
()
{
selectedDisk
()
{
return
this
.
$store
.
getters
[
'
fm/selectedDisk
'
];
return
this
.
$store
.
getters
[
"
fm/selectedDisk
"
];
},
},
/**
/**
...
@@ -79,7 +97,7 @@ export default {
...
@@ -79,7 +97,7 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
selectedItem
()
{
selectedItem
()
{
return
this
.
$store
.
getters
[
'
fm/selectedItems
'
][
0
];
return
this
.
$store
.
getters
[
"
fm/selectedItems
"
][
0
];
},
},
/**
/**
...
@@ -87,7 +105,9 @@ export default {
...
@@ -87,7 +105,9 @@ export default {
* @return boolean
* @return boolean
*/
*/
showFooter
()
{
showFooter
()
{
return
this
.
canCrop
(
this
.
selectedItem
.
extension
)
&&
!
this
.
showCropperModule
;
return
(
this
.
canCrop
(
this
.
selectedItem
.
extension
)
&&
!
this
.
showCropperModule
);
},
},
/**
/**
...
@@ -109,7 +129,9 @@ export default {
...
@@ -109,7 +129,9 @@ export default {
* @returns {boolean}
* @returns {boolean}
*/
*/
canCrop
(
extension
)
{
canCrop
(
extension
)
{
return
this
.
$store
.
state
.
fm
.
settings
.
cropExtensions
.
includes
(
extension
.
toLowerCase
());
return
this
.
$store
.
state
.
fm
.
settings
.
cropExtensions
.
includes
(
extension
.
toLowerCase
()
);
},
},
/**
/**
...
@@ -126,17 +148,22 @@ export default {
...
@@ -126,17 +148,22 @@ export default {
loadImage
()
{
loadImage
()
{
// if authorization required
// if authorization required
if
(
this
.
auth
)
{
if
(
this
.
auth
)
{
GET
.
preview
(
GET
.
preview
(
this
.
selectedDisk
,
this
.
selectedItem
.
path
).
then
(
this
.
selectedDisk
,
(
response
)
=>
{
this
.
selectedItem
.
path
,
const
mimeType
=
response
.
headers
[
"
content-type
"
].
toLowerCase
();
).
then
((
response
)
=>
{
const
imgBase64
=
Buffer
.
from
(
response
.
data
,
"
binary
"
).
toString
(
const
mimeType
=
response
.
headers
[
'
content-type
'
].
toLowerCase
();
"
base64
"
const
imgBase64
=
Buffer
.
from
(
response
.
data
,
'
binary
'
).
toString
(
'
base64
'
);
);
this
.
imgSrc
=
`data:
${
mimeType
}
;base64,
${
imgBase64
}
`
;
this
.
imgSrc
=
`data:
${
mimeType
}
;base64,
${
imgBase64
}
`
;
});
}
);
}
else
{
}
else
{
this
.
imgSrc
=
`
${
this
.
$store
.
getters
[
'
fm/settings/baseUrl
'
]}
preview?disk=
${
this
.
selectedDisk
}
&path=
${
encodeURIComponent
(
this
.
selectedItem
.
path
)}
&v=
${
this
.
selectedItem
.
timestamp
}
`
;
this
.
imgSrc
=
`
${
this
.
$store
.
getters
[
"
fm/settings/baseUrl
"
]
}
preview?disk=
${
this
.
selectedDisk
}
&path=
${
encodeURIComponent
(
this
.
selectedItem
.
path
)}
&v=
${
this
.
selectedItem
.
timestamp
}
`
;
}
}
},
},
},
},
...
@@ -144,19 +171,18 @@ export default {
...
@@ -144,19 +171,18 @@ export default {
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.fm-modal-preview
{
.fm-modal-preview
{
.modal-body
{
.modal-body
{
padding
:
0
;
padding
:
0
;
img
{
img
{
max-width
:
100%
;
max-width
:
100%
;
}
}
&
>
.d-flex
{
padding
:
1rem
;
border-top
:
1px
solid
#e9ecef
;
}
}
}
}
&
>
.d-flex
{
padding
:
1rem
;
border-top
:
1px
solid
#e9ecef
;
}
}
</
style
>
</
style
>
tools/frontend/src/views/FileManager/components/tree/Branch.vue
View file @
735d39eb
<
template
>
<
template
>
<ul
class=
"list-unstyled fm-tree-branch"
>
<ul
class=
"list-unstyled fm-tree-branch"
>
<li
v-for=
"(directory, index) in subDirectories"
v-bind:key=
"index"
>
<li
v-for=
"(directory, index) in subDirectories"
v-bind:key=
"index"
>
<p
class=
"unselectable"
<p
v-bind:class=
"
{'selected': isDirectorySelected(directory.path)}"
class=
"unselectable"
v-on:click="selectDirectory(directory.path)">
v-bind:class=
"
{ selected: isDirectorySelected(directory.path) }"
<i
class=
"far"
v-on:click="selectDirectory(directory.path)"
v-if=
"directory.props.hasSubdirectories"
>
v-on:click.stop=
"showSubdirectories(
<i
directory.path,
class=
"far"
directory.props.showSubdirectories
v-if=
"directory.props.hasSubdirectories"
)"
v-on:click.stop=
"
v-bind:class=
"[arrowState(index)
showSubdirectories(
? 'fa-minus-square'
directory.path,
: 'fa-plus-square'
directory.props.showSubdirectories
]"
/>
)
<i
class=
"fas fa-minus fa-xs"
v-else
/>
"
{{
directory
.
basename
}}
v-bind:class=
"[
</p>
arrowState(index) ? 'fa-minus-square' : 'fa-plus-square',
]"
/>
<i
class=
"fas fa-minus fa-xs"
v-else
/>
{{
directory
.
basename
}}
</p>
<transition
name=
"fade-tree"
>
<transition
name=
"fade-tree"
>
<branch
v-show=
"arrowState(index)"
<branch
v-if=
"directory.props.hasSubdirectories"
v-show=
"arrowState(index)"
v-bind:parent-id=
"directory.id"
>
v-if=
"directory.props.hasSubdirectories"
</branch>
v-bind:parent-id=
"directory.id"
</transition>
>
</li>
</branch>
</ul>
</transition>
</li>
</ul>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
name
:
'
Branch
'
,
name
:
"
Branch
"
,
props
:
{
props
:
{
parentId
:
{
type
:
Number
,
required
:
true
},
parentId
:
{
type
:
Number
,
required
:
true
},
},
},
...
@@ -40,7 +47,9 @@ export default {
...
@@ -40,7 +47,9 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
subDirectories
()
{
subDirectories
()
{
return
this
.
$store
.
getters
[
'
fm/tree/directories
'
].
filter
((
item
)
=>
item
.
parentId
===
this
.
parentId
);
return
this
.
$store
.
getters
[
"
fm/tree/directories
"
].
filter
(
(
item
)
=>
item
.
parentId
===
this
.
parentId
);
},
},
},
},
methods
:
{
methods
:
{
...
@@ -70,10 +79,10 @@ export default {
...
@@ -70,10 +79,10 @@ export default {
showSubdirectories
(
path
,
showState
)
{
showSubdirectories
(
path
,
showState
)
{
if
(
showState
)
{
if
(
showState
)
{
// hide
// hide
this
.
$store
.
dispatch
(
'
fm/tree/hideSubdirectories
'
,
path
);
this
.
$store
.
dispatch
(
"
fm/tree/hideSubdirectories
"
,
path
);
}
else
{
}
else
{
// show
// show
this
.
$store
.
dispatch
(
'
fm/tree/showSubdirectories
'
,
path
);
this
.
$store
.
dispatch
(
"
fm/tree/showSubdirectories
"
,
path
);
}
}
},
},
...
@@ -84,7 +93,10 @@ export default {
...
@@ -84,7 +93,10 @@ export default {
selectDirectory
(
path
)
{
selectDirectory
(
path
)
{
// only if this path not selected
// only if this path not selected
if
(
!
this
.
isDirectorySelected
(
path
))
{
if
(
!
this
.
isDirectorySelected
(
path
))
{
this
.
$store
.
dispatch
(
'
fm/left/selectDirectory
'
,
{
path
,
history
:
true
});
this
.
$store
.
dispatch
(
"
fm/left/selectDirectory
"
,
{
path
,
history
:
true
,
});
}
}
},
},
},
},
...
@@ -92,38 +104,40 @@ export default {
...
@@ -92,38 +104,40 @@ export default {
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.fm-tree-branch
{
.fm-tree-branch
{
display
:
table
;
display
:
table
;
width
:
100%
;
width
:
100%
;
padding-left
:
1
.4rem
;
padding-left
:
1
.4rem
!
important
;
li
>
p
{
li
>
p
{
margin-bottom
:
0
.1rem
;
margin-bottom
:
0
.1rem
;
padding
:
0
.4rem
0
.4rem
;
padding
:
0
.4rem
0
.4rem
;
white-space
:
nowrap
;
white-space
:
nowrap
;
cursor
:
pointer
;
cursor
:
pointer
;
&
:hover
,
&
:hover
,
&
.selected
{
&
.selected
{
background-color
:
#f8f9fa
;
background-color
:
#f8f9fa
;
}
}
}
}
.fas.fa-minus
{
.fas.fa-minus
{
padding-left
:
0
.1rem
;
padding-left
:
0
.1rem
;
padding-right
:
0
.6rem
;
padding-right
:
0
.6rem
;
}
}
.far
{
.far
{
padding-right
:
0
.5rem
;
padding-right
:
0
.5rem
;
}
}
}
}
.fade-tree-enter-active
,
.fade-tree-leave-active
{
.fade-tree-enter-active
,
transition
:
all
.3s
ease
;
.fade-tree-leave-active
{
}
transition
:
all
0
.3s
ease
;
.fade-tree-enter
,
.fade-tree-leave-to
{
}
transform
:
translateX
(
20px
);
.fade-tree-enter
,
opacity
:
0
;
.fade-tree-leave-to
{
}
transform
:
translateX
(
20px
);
opacity
:
0
;
}
</
style
>
</
style
>
tools/frontend/src/views/FileManager/components/tree/FolderTree.vue
View file @
735d39eb
<!--
* @Author: your name
* @Date: 2021-06-18 10:39:31
* @LastEditTime: 2021-06-19 16:35:22
* @LastEditors: your name
* @Description: In User Settings Edit
* @FilePath: \evm-store\tools\frontend\src\views\FileManager\components\tree\FolderTree.vue
-->
<
template
>
<
template
>
<div
class=
"fm-tree"
>
<div
class=
"fm-tree"
>
<div
class=
"fm-tree-disk sticky-top"
>
<div
class=
"fm-tree-disk sticky-top"
>
<i
class=
"far fa-hdd"
/>
{{
selectedDisk
}}
<i
class=
"far fa-hdd"
/>
{{
selectedDisk
}}
</div>
<branch
v-bind:parent-id=
"0"
/>
</div>
</div>
<branch
v-bind:parent-id=
"0"
/>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
Branch
from
'
./Branch.vue
'
;
import
Branch
from
"
./Branch.vue
"
;
export
default
{
export
default
{
name
:
'
FolderTree
'
,
name
:
"
FolderTree
"
,
components
:
{
components
:
{
branch
:
Branch
,
branch
:
Branch
,
},
},
...
@@ -21,30 +29,30 @@ export default {
...
@@ -21,30 +29,30 @@ export default {
* @returns {*}
* @returns {*}
*/
*/
selectedDisk
()
{
selectedDisk
()
{
return
this
.
$store
.
getters
[
'
fm/selectedDisk
'
];
return
this
.
$store
.
getters
[
"
fm/selectedDisk
"
];
},
},
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.fm-tree
{
.fm-tree
{
overflow
:
auto
;
overflow
:
auto
;
border-right
:
1px
solid
#6d757d
;
border-right
:
1px
solid
#6d757d
;
&
>
.fm-folders-tree
{
&
>
.fm-folders-tree
{
padding-left
:
0
.2rem
;
padding-left
:
0
.2rem
;
}
}
.fm-tree-disk
{
.fm-tree-disk
{
padding
:
0
.2rem
0
.3rem
;
padding
:
0
.2rem
0
.3rem
;
margin-bottom
:
0
.3rem
;
margin-bottom
:
0
.3rem
;
background-color
:
white
;
background-color
:
white
;
}
}
.fm-tree-disk
>
i
{
.fm-tree-disk
>
i
{
padding-left
:
0
.2rem
;
padding-left
:
0
.2rem
;
padding-right
:
0
.5rem
;
padding-right
:
0
.5rem
;
}
}
}
}
</
style
>
</
style
>
tools/frontend/src/views/System/Role.vue
View file @
735d39eb
...
@@ -365,5 +365,5 @@ export default {
...
@@ -365,5 +365,5 @@ export default {
};
};
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
@import url("
asset
s/tableList.less");
@import url("
style
s/tableList.less");
</
style
>
</
style
>
\ No newline at end of file
tools/frontend/yarn.lock
View file @
735d39eb
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment