Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
zhu
dataease
Commits
2d749d76
提交
2d749d76
authored
6月 24, 2021
作者:
taojinlong
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'main' of github.com:dataease/dataease into main
上级
21b98098
fe13a2e5
显示空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
226 行增加
和
184 行删除
+226
-184
AuthUserServiceImpl.java
...va/io/dataease/auth/service/impl/AuthUserServiceImpl.java
+2
-14
DynamicMenuServiceImpl.java
...io/dataease/auth/service/impl/DynamicMenuServiceImpl.java
+16
-0
DorisQueryProvider.java
...n/java/io/dataease/provider/doris/DorisQueryProvider.java
+4
-0
MysqlQueryProvider.java
...n/java/io/dataease/provider/mysql/MysqlQueryProvider.java
+4
-0
messages_zh_TW.properties
backend/src/main/resources/i18n/messages_zh_TW.properties
+1
-1
dataset.js
frontend/src/api/dataset/dataset.js
+3
-2
Toolbar.vue
frontend/src/components/canvas/components/Toolbar.vue
+4
-4
en.js
frontend/src/lang/en.js
+1
-0
tw.js
frontend/src/lang/tw.js
+153
-152
zh.js
frontend/src/lang/zh.js
+2
-1
permission.js
frontend/src/store/modules/permission.js
+9
-0
ViewTable.vue
frontend/src/views/dataset/data/ViewTable.vue
+10
-1
Group.vue
frontend/src/views/dataset/group/Group.vue
+4
-4
index.vue
frontend/src/views/panel/SubjectSetting/index.vue
+4
-4
DsTree.vue
frontend/src/views/system/datasource/DsTree.vue
+9
-1
没有找到文件。
backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java
浏览文件 @
2d749d76
package
io
.
dataease
.
auth
.
service
.
impl
;
import
com.google.gson.Gson
;
import
io.dataease.auth.api.dto.CurrentRoleDto
;
import
io.dataease.auth.entity.SysUserEntity
;
import
io.dataease.base.domain.SysUser
;
...
...
@@ -34,7 +33,7 @@ public class AuthUserServiceImpl implements AuthUserService {
@Resource
private
SysUserMapper
sysUserMapper
;
@Resource
private
ExtPluginSysMenuMapper
extPluginSysMenuMapper
;
private
DynamicMenuServiceImpl
dynamicMenuService
;
/**
* 此处需被F2CRealm登录认证调用 也就是说每次请求都会被调用 所以最好加上缓存
...
...
@@ -66,7 +65,7 @@ public class AuthUserServiceImpl implements AuthUserService {
@Override
public
List
<
String
>
permissions
(
Long
userId
){
// 用户登录获取菜单权限时同时更新插件菜单表
this
.
syncPluginMenu
();
dynamicMenuService
.
syncPluginMenu
();
List
<
String
>
permissions
;
SysUser
sysUser
=
sysUserMapper
.
selectByPrimaryKey
(
userId
);
if
(
sysUser
.
getIsAdmin
()!=
null
&&
sysUser
.
getIsAdmin
()){
...
...
@@ -103,15 +102,4 @@ public class AuthUserServiceImpl implements AuthUserService {
LogUtil
.
info
(
"正在清除用户缓存【{}】"
,
userId
);
}
@Transactional
public
void
syncPluginMenu
()
{
List
<
PluginSysMenu
>
pluginSysMenuList
=
PluginUtils
.
pluginMenus
();
int
i
=
extPluginSysMenuMapper
.
deletePluginMenu
();
LogUtil
.
info
(
"删除插件菜单记录数{}"
,
i
);
if
(
CollectionUtils
.
isNotEmpty
(
pluginSysMenuList
)){
LogUtil
.
info
(
"待插入插件菜单记录是"
+
new
Gson
().
toJson
(
pluginSysMenuList
));
extPluginSysMenuMapper
.
savePluginMenu
(
pluginSysMenuList
);
}
}
}
backend/src/main/java/io/dataease/auth/service/impl/DynamicMenuServiceImpl.java
浏览文件 @
2d749d76
...
...
@@ -6,11 +6,15 @@ import io.dataease.auth.service.DynamicMenuService;
import
io.dataease.base.domain.SysMenu
;
import
io.dataease.base.domain.SysMenuExample
;
import
io.dataease.base.mapper.SysMenuMapper
;
import
io.dataease.base.mapper.ext.ExtPluginSysMenuMapper
;
import
io.dataease.plugins.common.dto.PluginSysMenu
;
import
io.dataease.plugins.util.PluginUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -22,6 +26,9 @@ public class DynamicMenuServiceImpl implements DynamicMenuService {
@Autowired
(
required
=
false
)
private
SysMenuMapper
sysMenuMapper
;
@Resource
private
ExtPluginSysMenuMapper
extPluginSysMenuMapper
;
@Override
public
List
<
DynamicMenuDto
>
load
(
String
userId
)
{
SysMenuExample
sysMenuExample
=
new
SysMenuExample
();
...
...
@@ -109,4 +116,13 @@ public class DynamicMenuServiceImpl implements DynamicMenuService {
private
Boolean
isParent
(
Long
pid
){
return
null
==
pid
||
pid
==
0L
;
}
@Transactional
public
void
syncPluginMenu
()
{
List
<
PluginSysMenu
>
pluginSysMenuList
=
PluginUtils
.
pluginMenus
();
extPluginSysMenuMapper
.
deletePluginMenu
();
if
(
CollectionUtils
.
isNotEmpty
(
pluginSysMenuList
)){
extPluginSysMenuMapper
.
savePluginMenu
(
pluginSysMenuList
);
}
}
}
backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java
浏览文件 @
2d749d76
...
...
@@ -6,6 +6,7 @@ import io.dataease.dto.chart.ChartCustomFilterDTO;
import
io.dataease.dto.chart.ChartViewFieldDTO
;
import
io.dataease.provider.QueryProvider
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
...
...
@@ -366,6 +367,9 @@ public class DorisQueryProvider extends QueryProvider {
for
(
ChartCustomFilterDTO
request
:
requestList
)
{
String
value
=
request
.
getValue
();
DatasetTableField
field
=
request
.
getField
();
if
(
ObjectUtils
.
isEmpty
(
field
))
{
continue
;
}
if
(
field
.
getDeType
()
==
1
&&
field
.
getDeExtractType
()
!=
1
)
{
filter
.
append
(
" AND FROM_UNIXTIME(cast("
)
.
append
(
field
.
getDataeaseName
())
...
...
backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java
浏览文件 @
2d749d76
...
...
@@ -6,6 +6,7 @@ import io.dataease.dto.chart.ChartCustomFilterDTO;
import
io.dataease.dto.chart.ChartViewFieldDTO
;
import
io.dataease.provider.QueryProvider
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
...
...
@@ -374,6 +375,9 @@ public class MysqlQueryProvider extends QueryProvider {
for
(
ChartCustomFilterDTO
request
:
requestList
)
{
String
value
=
request
.
getValue
();
DatasetTableField
field
=
request
.
getField
();
if
(
ObjectUtils
.
isEmpty
(
field
))
{
continue
;
}
if
(
field
.
getDeType
()
==
1
&&
field
.
getDeExtractType
()
!=
1
)
{
filter
.
append
(
" AND FROM_UNIXTIME(cast("
)
.
append
(
field
.
getOriginName
())
...
...
backend/src/main/resources/i18n/messages_zh_TW.properties
浏览文件 @
2d749d76
...
...
@@ -261,4 +261,4 @@ i18n_custom_ds_delete=自定義數據集所關聯數據被刪除,無法正常
i18n_sql_add_not_matching
=
增量添加 sql 的數據列與數據集不匹配,
i18n_sql_delete_not_matching
=
增量刪除 sql 的數據列與數據集不匹配,
i18n_cst_ds_tb_or_field_deleted
=
自定義數據集所關聯數據被刪除或字段發生變化,無法正常顯示
i18n_no_all_delete_privilege_folder
=
该目录下存在没有管理权限或查看权限的资源,无法删
除
i18n_no_all_delete_privilege_folder
=
該目錄下存在沒有管理權限或查看權限的資源,無法刪
除
frontend/src/api/dataset/dataset.js
浏览文件 @
2d749d76
...
...
@@ -68,11 +68,12 @@ export function listDatasource() {
})
}
export
function
getTable
(
id
)
{
export
function
getTable
(
id
,
hideMsg
=
false
)
{
return
request
({
url
:
'/dataset/table/get/'
+
id
,
loading
:
true
,
method
:
'post'
method
:
'post'
,
hideMsg
:
hideMsg
})
}
...
...
frontend/src/components/canvas/components/Toolbar.vue
浏览文件 @
2d749d76
...
...
@@ -3,13 +3,13 @@
<div
class=
"toolbar"
>
<div
class=
"canvas-config"
style=
"margin-right: 10px"
>
<el-switch
v-model=
"canvasStyleData.auxiliaryMatrix"
:width=
"35"
label=
"矩阵设计"
name=
"auxiliaryMatrix"
/>
<span>
矩阵设计
</span>
<el-switch
v-model=
"canvasStyleData.auxiliaryMatrix"
:width=
"35"
name=
"auxiliaryMatrix"
/>
<span>
{{
$t
(
'panel.matrix_design'
)
}}
</span>
</div>
<div
class=
"canvas-config"
style=
"margin-right: 10px"
>
<el-switch
v-model=
"canvasStyleData.selfAdaption"
:width=
"35"
label=
"自适应画布区域"
name=
"selfAdaption"
/>
<span>
自适应画布区域
</span>
<el-switch
v-model=
"canvasStyleData.selfAdaption"
:width=
"35"
name=
"selfAdaption"
/>
<span>
{{
$t
(
'panel.canvas_self_adaption'
)
}}
</span>
</div>
<div
class=
"canvas-config"
style=
"margin-right: 55px"
>
...
...
frontend/src/lang/en.js
浏览文件 @
2d749d76
...
...
@@ -999,6 +999,7 @@ export default {
default_panel_name
:
'Default Dashboard Name'
,
source_panel_name
:
'Source Dashboard Name'
,
content_style
:
'Content Style'
,
canvas_self_adaption
:
'Canvas Self Adaption'
},
plugin
:
{
local_install
:
'Local installation'
,
...
...
frontend/src/lang/tw.js
浏览文件 @
2d749d76
...
...
@@ -37,31 +37,31 @@ export default {
'menu1-3'
:
'菜單 1-3'
,
menu2
:
'菜單 2'
,
Table
:
'Table'
,
dynamicTable
:
'
动态
Table'
,
dynamicTable
:
'
動態
Table'
,
dragTable
:
'拖拽 Table'
,
inlineEditTable
:
'Table
内
編輯'
,
complexTable
:
'
综
合 Table'
,
inlineEditTable
:
'Table
內
編輯'
,
complexTable
:
'
綜
合 Table'
,
tab
:
'Tab'
,
form
:
'表
单
'
,
createArticle
:
'
创
建文章'
,
form
:
'表
單
'
,
createArticle
:
'
創
建文章'
,
editArticle
:
'編輯文章'
,
articleList
:
'文章列表'
,
errorPages
:
'
错误页
面'
,
errorPages
:
'
錯誤頁
面'
,
page401
:
'401'
,
page404
:
'404'
,
errorLog
:
'
错误日志
'
,
errorLog
:
'
錯誤日誌
'
,
excel
:
'Excel'
,
exportExcel
:
'
导
出 Excel'
,
selectExcel
:
'
导出 已選擇项
'
,
mergeHeader
:
'
导出 多级表头
'
,
uploadExcel
:
'上
传
Excel'
,
exportExcel
:
'
導
出 Excel'
,
selectExcel
:
'
導出 已選擇項
'
,
mergeHeader
:
'
導出 多級表頭
'
,
uploadExcel
:
'上
傳
Excel'
,
zip
:
'Zip'
,
pdf
:
'PDF'
,
exportZip
:
'Export Zip'
,
theme
:
'
换
膚'
,
theme
:
'
換
膚'
,
clipboardDemo
:
'Clipboard'
,
i18n
:
'國際化'
,
externalLink
:
'外
链
'
,
externalLink
:
'外
鏈
'
,
profile
:
'個人中心'
},
navbar
:
{
...
...
@@ -69,7 +69,7 @@ export default {
github
:
'項目地址'
,
logOut
:
'退出登陸'
,
profile
:
'個人中心'
,
theme
:
'
换
膚'
,
theme
:
'
換
膚'
,
size
:
'佈局大小'
},
login
:
{
...
...
@@ -80,15 +80,15 @@ export default {
password
:
'密碼'
,
any
:
'任意字符'
,
thirdparty
:
'第三方登陸'
,
thirdpartyTips
:
'本地不能模
拟,请结合自己业务进行模拟
!!!'
,
expires
:
'登陸信息
过期,请
重新登陸'
,
tokenError
:
'信息
错误,请
重新登陸'
,
thirdpartyTips
:
'本地不能模
擬,請結合自己業務進行模擬
!!!'
,
expires
:
'登陸信息
過期,請
重新登陸'
,
tokenError
:
'信息
錯誤,請
重新登陸'
,
username_error
:
'請輸入正確的 ID'
,
password_error
:
'密碼不小於 8 位'
},
commons
:
{
switch_lang
:
'切換語言成功'
,
close
:
'
关闭
'
,
close
:
'
關閉
'
,
icon
:
'圖標'
,
all
:
'全部'
,
enable
:
'啟用'
,
...
...
@@ -115,7 +115,7 @@ export default {
examples
:
'示例'
,
help_documentation
:
'幫助文檔'
,
api_help_documentation
:
'API文檔'
,
delete_cancelled
:
'已取消
删
除'
,
delete_cancelled
:
'已取消
刪
除'
,
workspace
:
'工作空開你'
,
organization
:
'組織'
,
menu
:
'菜單'
,
...
...
@@ -130,23 +130,23 @@ export default {
save
:
'保存'
,
update
:
'更新'
,
save_success
:
'保存成功'
,
delete_success
:
'
删
除成功'
,
delete_success
:
'
刪
除成功'
,
copy_success
:
'複製成功'
,
modify_success
:
'修改成功'
,
delete_cancel
:
'已取消
删
除'
,
delete_cancel
:
'已取消
刪
除'
,
confirm
:
'確定'
,
cancel
:
'取消'
,
prompt
:
'提示'
,
operating
:
'操作'
,
input_limit
:
'長度在 {0} 到 {1} 個字符'
,
login
:
'登陸'
,
welcome
:
'一站式開源數據分析平
台
'
,
welcome
:
'一站式開源數據分析平
臺
'
,
username
:
'姓名'
,
password
:
'密碼'
,
input_username
:
'請輸入用戶姓名'
,
input_password
:
'請輸入密碼'
,
test
:
'測試'
,
create_time
:
'
创
建時間'
,
create_time
:
'
創
建時間'
,
update_time
:
'更新時間'
,
add
:
'添加'
,
member
:
'成員'
,
...
...
@@ -164,18 +164,18 @@ export default {
system
:
'系統'
,
personal_setting
:
'個人設置'
,
test_resource_pool
:
'測試資源池'
,
system_setting
:
'系
统
設置'
,
system_setting
:
'系
統
設置'
,
input_content
:
'請輸入內容'
,
create
:
'新建'
,
edit
:
'編輯'
,
copy
:
'複製'
,
refresh
:
'刷新'
,
remark
:
'備註'
,
delete
:
'
删
除'
,
delete
:
'
刪
除'
,
reduction
:
'恢復'
,
not_filled
:
'未填寫'
,
please_select
:
'
请
選擇'
,
search_by_name
:
'根
据
名稱搜索'
,
please_select
:
'
請
選擇'
,
search_by_name
:
'根
據
名稱搜索'
,
personal_information
:
'個人信息'
,
exit_system
:
'退出系統'
,
verification
:
'驗證'
,
...
...
@@ -205,24 +205,24 @@ export default {
connection_successful
:
'連接成功'
,
connection_failed
:
'連接失敗'
,
save_failed
:
'保存失敗'
,
host_cannot_be_empty
:
'主
机
不能為空'
,
port_cannot_be_empty
:
'端口
号
不能為空'
,
account_cannot_be_empty
:
'
帐户
不能為空'
,
host_cannot_be_empty
:
'主
機
不能為空'
,
port_cannot_be_empty
:
'端口
號
不能為空'
,
account_cannot_be_empty
:
'
帳戶
不能為空'
,
remove
:
'移除'
,
remove_cancel
:
'移除取消'
,
remove_success
:
'移除成功'
,
tips
:
'認證信息已過期,請重新登陸'
,
not_performed_yet
:
'尚未執行'
,
incorrect_input
:
'輸入內容不正確'
,
delete_confirm
:
'請輸入以下內容,確認
删
除:'
,
delete_confirm
:
'請輸入以下內容,確認
刪
除:'
,
login_username
:
'ID 或 郵箱'
,
input_login_username
:
'請輸入用戶 ID 或 郵箱'
,
input_name
:
'請輸入名稱'
,
please_upload
:
'
请
上傳文件'
,
please_fill_path
:
'
请
填寫url 路徑'
,
please_upload
:
'
請
上傳文件'
,
please_fill_path
:
'
請
填寫url 路徑'
,
formatErr
:
'格式錯誤'
,
please_save
:
'
请
先保存'
,
reference_documentation
:
'
参
考文檔'
,
please_save
:
'
請
先保存'
,
reference_documentation
:
'
參
考文檔'
,
id
:
'ID'
,
millisecond
:
'毫秒'
,
cannot_be_null
:
'不能為空'
,
...
...
@@ -231,56 +231,56 @@ export default {
modifier
:
'修改人'
,
validate
:
'校驗'
,
batch_add
:
'批量添加'
,
tag_tip
:
'
输入回车添加标签
'
,
tag_tip
:
'
輸入回車添加標簽
'
,
table
:
{
select_tip
:
'已
选中 {0} 条數据
'
select_tip
:
'已
選中 {0} 條數據
'
},
date
:
{
select_date
:
'選擇日期'
,
start_date
:
'
开
始日期'
,
end_date
:
'
结
束日期'
,
start_date
:
'
開
始日期'
,
end_date
:
'
結
束日期'
,
select_date_time
:
'選擇日期時間'
,
start_date_time
:
'
开
始日期時間'
,
end_date_time
:
'
结
束日期時間'
,
start_date_time
:
'
開
始日期時間'
,
end_date_time
:
'
結
束日期時間'
,
range_separator
:
'至'
,
data_time_error
:
'
开始日期不能大與结
束日期'
data_time_error
:
'
開始日期不能大與結
束日期'
},
adv_search
:
{
title
:
'高
级
搜索'
,
combine
:
'
组合查询
'
,
test
:
'所
属测试
'
,
project
:
'所
属项
目'
,
search
:
'查
询
'
,
title
:
'高
級
搜索'
,
combine
:
'
組合查詢
'
,
test
:
'所
屬測試
'
,
project
:
'所
屬項
目'
,
search
:
'查
詢
'
,
reset
:
'重置'
,
and
:
'所有'
,
or
:
'任意一
个
'
,
or
:
'任意一
個
'
,
operators
:
{
is_empty
:
'空'
,
is_not_empty
:
'非空'
,
like
:
'包含'
,
not_like
:
'不包含'
,
in
:
'
属
與'
,
not_in
:
'不
属
與'
,
in
:
'
屬
與'
,
not_in
:
'不
屬
與'
,
gt
:
'大與'
,
ge
:
'大與等與'
,
lt
:
'小與'
,
le
:
'小與等與'
,
equals
:
'等與'
,
not_equals
:
'不等與'
,
between
:
'之
间
'
,
current_user
:
'是
当
前用戶'
between
:
'之
間
'
,
current_user
:
'是
當
前用戶'
},
message_box
:
{
alert
:
'警告'
,
confirm
:
'確認'
}
},
monitor
:
'
监
控'
,
image
:
'
镜
像'
,
tag
:
'
标签
'
,
monitor
:
'
監
控'
,
image
:
'
鏡
像'
,
tag
:
'
標簽
'
,
module
:
{
select_module
:
'選擇模
块
'
,
default_module
:
'默
认模块
'
select_module
:
'選擇模
塊
'
,
default_module
:
'默
認模塊
'
},
datasource
:
'數據源'
,
char_can_not_more_50
:
'不能超過50字符'
,
...
...
@@ -301,23 +301,23 @@ export default {
editPermission
:
'編輯權限'
,
roles
:
'你的權限'
,
switchRoles
:
'切換權限'
,
tips
:
'在某些情
况下,不适合使用 v-permission。例如:Element-UI 的 el-tab 或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现
。'
,
delete
:
'
删
除'
,
tips
:
'在某些情
況下,不適合使用 v-permission。例如:Element-UI 的 el-tab 或 el-table-column 以及其它動態渲染 dom 的場景。你只能通過手動設置 v-if 來實現
。'
,
delete
:
'
刪
除'
,
confirm
:
'確定'
,
cancel
:
'取消'
},
guide
:
{
description
:
'引
导页对與一些第一次进入项目的人很有用,你可以简单介绍下项
目的功能。本 Demo 是基與'
,
button
:
'打
开引导
'
description
:
'引
導頁對與一些第一次進入項目的人很有用,你可以簡單介紹下項
目的功能。本 Demo 是基與'
,
button
:
'打
開引導
'
},
components
:
{
documentation
:
'文檔'
,
tinymceTips
:
'富文本是管理
后台一个核心的功能,但同时又是一个有很多坑的地方。在選擇富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下選擇了Tinymce。更详细的富文本比较和介绍见
'
,
dropzoneTips
:
'由與我司
业务有特殊需求,而且要传七牛 所以没用第三方,選擇了自己封装。代码非常的简单,具体代码你可以在这里
看到 @/components/Dropzone'
,
stickyTips
:
'
当页面滚动到预设的位置会吸附在顶
部'
,
backToTopTips1
:
'
页面滚动到指定位置会在右下角出现返回顶部按钮
'
,
backToTopTips2
:
'可自定
义按钮的样式、show/hide、出现
的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素'
,
imageUploadTips
:
'由與我在使用
时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还
是使用官方版本。'
tinymceTips
:
'富文本是管理
後臺一個核心的功能,但同時又是一個有很多坑的地方。在選擇富文本的過程中我也走了不少的彎路,市面上常見的富文本都基本用過了,最終權衡了一下選擇了Tinymce。更詳細的富文本比較和介紹見
'
,
dropzoneTips
:
'由與我司
業務有特殊需求,而且要傳七牛 所以沒用第三方,選擇了自己封裝。代碼非常的簡單,具體代碼你可以在這裏
看到 @/components/Dropzone'
,
stickyTips
:
'
當頁面滾動到預設的位置會吸附在頂
部'
,
backToTopTips1
:
'
頁面滾動到指定位置會在右下角出現返回頂部按鈕
'
,
backToTopTips2
:
'可自定
義按鈕的樣式、show/hide、出現
的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素'
,
imageUploadTips
:
'由與我在使用
時它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的話,優先還
是使用官方版本。'
},
table
:
{
dynamicTips1
:
'固定標頭,按照表頭順序排序'
,
...
...
@@ -346,28 +346,28 @@ export default {
confirm
:
'確定'
},
example
:
{
warning
:
'
创建和編輯页面是不能被 keep-alive 缓存的,因为keep-alive 的 include 目前不支持根据路由来缓存,所以目前都是基與 component name 来进行缓存的。如果你想类似的实现缓存效果,可以使用 localStorage 等浏览器缓存方案。或者不要使用 keep-alive 的 include,直接缓存所有页面。详情见
'
warning
:
'
創建和編輯頁面是不能被 keep-alive 緩存的,因為keep-alive 的 include 目前不支持根據路由來緩存,所以目前都是基與 component name 來進行緩存的。如果你想類似的實現緩存效果,可以使用 localStorage 等瀏覽器緩存方案。或者不要使用 keep-alive 的 include,直接緩存所有頁面。詳情見
'
},
errorLog
:
{
tips
:
'
请点击右上角bug小图标
'
,
description
:
'
现在的管理后台基本都是spa的形式了,它增强了用戶体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报
。'
,
documentation
:
'文檔介
绍
'
tips
:
'
請點擊右上角bug小圖標
'
,
description
:
'
現在的管理後臺基本都是spa的形式了,它增強了用戶體驗,但同時也會增加頁面出問題的可能性,可能一個小小的疏忽就導致整個頁面的死鎖。好在 Vue 官網提供了一個方法來捕獲處理異常,你可以在其中進行錯誤處理或者異常上報
。'
,
documentation
:
'文檔介
紹
'
},
excel
:
{
export
:
'導出'
,
selectedExport
:
'導出已選擇
项
'
,
placeholder
:
'請輸入文件名(默
认
excel-list)'
selectedExport
:
'導出已選擇
項
'
,
placeholder
:
'請輸入文件名(默
認
excel-list)'
},
zip
:
{
export
:
'導出'
,
placeholder
:
'請輸入文件名(默
认
file)'
placeholder
:
'請輸入文件名(默
認
file)'
},
pdf
:
{
tips
:
'這裏使用 window.print() 來實現下載pdf的功能'
},
theme
:
{
change
:
'換膚'
,
documentation
:
'
换
膚文檔'
,
documentation
:
'
換
膚文檔'
,
tips
:
'Tips: 它區別於 navbar 上的 theme-pick, 是兩種不同的換膚方法,各自有不同的應用場景,具體請參考文檔。'
},
tagsView
:
{
...
...
@@ -387,7 +387,7 @@ export default {
i18n_no_license_record
:
'沒有 License 紀錄'
,
i18n_license_is_empty
:
'License 為空'
,
title
:
'授權管理'
,
corporation
:
'客
户
名稱'
,
corporation
:
'客
戶
名稱'
,
time
:
'授權時間'
,
product
:
'產品名稱'
,
edition
:
'產品版本'
,
...
...
@@ -404,9 +404,9 @@ export default {
member
:
{
create
:
'添加成員'
,
modify
:
'修改成員'
,
delete_confirm
:
'
这个用戶確定要删除吗
?'
,
please_choose_member
:
'
请
選擇成員'
,
search_by_name
:
'根
据
名稱搜索'
,
delete_confirm
:
'
這個用戶確定要刪除嗎
?'
,
please_choose_member
:
'
請
選擇成員'
,
search_by_name
:
'根
據
名稱搜索'
,
modify_personal_info
:
'修改個人信息'
,
edit_password
:
'修改密碼'
,
edit_information
:
'編輯信息'
,
...
...
@@ -415,15 +415,15 @@ export default {
special_characters_are_not_supported
:
'不支持特殊字符'
,
mobile_number_format_is_incorrect
:
'手機號碼格式不正確'
,
email_format_is_incorrect
:
'郵箱格式不正確'
,
password_format_is_incorrect
:
'有效密碼:8-30位,英文大小寫字母+數字+特殊字符(可
选
)'
,
old_password
:
'
旧
密碼'
,
password_format_is_incorrect
:
'有效密碼:8-30位,英文大小寫字母+數字+特殊字符(可
選
)'
,
old_password
:
'
舊
密碼'
,
new_password
:
'新密碼'
,
repeat_password
:
'確認密碼'
,
inconsistent_passwords
:
'
两次输
入的密碼不一致'
,
remove_member
:
'確定要移除
该成員吗
'
,
org_remove_member
:
'確定要移除
该成員吗
?'
,
inconsistent_passwords
:
'
兩次輸
入的密碼不一致'
,
remove_member
:
'確定要移除
該成員嗎
'
,
org_remove_member
:
'確定要移除
該成員嗎
?'
,
input_id_or_email
:
'請輸入用戶 ID, 或者 用戶郵箱'
,
no_such_user
:
'
无此用戶信息, 請輸入正确
的用戶 ID 或者 用戶郵箱!'
no_such_user
:
'
無此用戶信息, 請輸入正確
的用戶 ID 或者 用戶郵箱!'
},
user
:
{
create
:
'新建用戶'
,
...
...
@@ -433,12 +433,12 @@ export default {
input_email
:
'請輸入郵箱'
,
input_password
:
'請輸入密碼'
,
input_phone
:
'請輸入電話號碼'
,
input_roles
:
'
请
選擇角色'
,
input_roles
:
'
請
選擇角色'
,
special_characters_are_not_supported
:
'不支持特殊字符'
,
mobile_number_format_is_incorrect
:
'手機號碼格式不正確'
,
email_format_is_incorrect
:
'郵箱格式不正確'
,
delete_confirm
:
'
这个用戶確定要删除吗
?'
,
apikey_delete_confirm
:
'
这个 API Key 確定要删除吗
?'
,
delete_confirm
:
'
這個用戶確定要刪除嗎
?'
,
apikey_delete_confirm
:
'
這個 API Key 確定要刪除嗎
?'
,
input_id_placeholder
:
'請輸入ID (不支持中文)'
,
source
:
'用戶來源'
,
choose_org
:
'選擇組織'
,
...
...
@@ -452,16 +452,16 @@ export default {
},
role
:
{
menu_authorization
:
'菜單授權'
,
data_authorization
:
'數
据
授權'
,
please_choose_role
:
'
请
選擇角色'
,
data_authorization
:
'數
據
授權'
,
please_choose_role
:
'
請
選擇角色'
,
admin
:
'系統管理員'
,
org_admin
:
'組織管理
员
'
,
org_admin
:
'組織管理
員
'
,
org_member
:
'組織成員'
,
add
:
'新建角色'
,
delete
:
'
删
除角色'
,
delete
:
'
刪
除角色'
,
modify
:
'修改角色'
,
tips
:
'提示'
,
confirm_delete
:
'確認
删
除角色 '
,
confirm_delete
:
'確認
刪
除角色 '
,
role_name
:
'角色名稱'
,
search_by_name
:
'按名稱搜索'
,
pls_input_name
:
'請輸入名稱'
...
...
@@ -469,7 +469,7 @@ export default {
menu
:
{
parent_category
:
'上級目錄'
,
module_name
:
'組件名稱'
,
module_path
:
'組件路
径
'
,
module_path
:
'組件路
徑
'
,
route_addr
:
'路由地址'
,
menu_sort
:
'菜單排序'
,
authority_identification
:
'權限標識'
,
...
...
@@ -479,8 +479,8 @@ export default {
tile
:
'菜單標題'
,
create
:
'創建菜單'
,
modify
:
'修改菜單'
,
delete
:
'
删
除菜單'
,
delete_confirm
:
'確定
删除菜單吗
?'
,
delete
:
'
刪
除菜單'
,
delete_confirm
:
'確定
刪除菜單嗎
?'
,
menu_type
:
'菜單類型'
},
organization
:
{
...
...
@@ -493,11 +493,11 @@ export default {
create_time
:
'創建日期'
,
create
:
'新建組織'
,
modify
:
'修改組織'
,
delete
:
'
删
除組織'
,
delete_confirm
:
'
删除該組織會關聯刪除該組織的下屬組織,確定要删除吗
?'
,
delete
:
'
刪
除組織'
,
delete_confirm
:
'
刪除該組織會關聯刪除該組織的下屬組織,確定要刪除嗎
?'
,
input_name
:
'請輸入組織名稱'
,
select_organization
:
'
请
選擇組織'
,
search_by_name
:
'根
据
名稱搜索'
,
select_organization
:
'
請
選擇組織'
,
search_by_name
:
'根
據
名稱搜索'
,
special_characters_are_not_supported
:
'格式錯誤(不支持特殊字符,且不能以
\'
-
\'
開頭結尾)'
,
select
:
'選擇組織'
},
...
...
@@ -518,7 +518,7 @@ export default {
tip
:
' 提示: 僅用來作為測試郵件收件人'
},
chart
:
{
save_snapshot
:
'保存
缩略图
'
,
save_snapshot
:
'保存
縮略圖
'
,
datalist
:
'視圖'
,
add_group
:
'添加分組'
,
add_scene
:
'添加場景'
,
...
...
@@ -667,7 +667,7 @@ export default {
rose_radius
:
'園角'
,
view_name
:
'視圖標題'
,
name_can_not_empty
:
'名稱不能為空'
,
template_can_not_empty
:
'
请选择仪
表板'
,
template_can_not_empty
:
'
請選擇儀
表板'
,
custom_count
:
'記錄數'
,
table_title_fontsize
:
'表頭字體大小'
,
table_item_fontsize
:
'表格字體大小'
,
...
...
@@ -781,7 +781,7 @@ export default {
execute_rate
:
'執行頻率'
,
execute_once
:
'立即執行'
,
cron_config
:
'表達時設定'
,
no_limit
:
'無限
制
'
,
no_limit
:
'無限
製
'
,
set_end_time
:
'設定結束時間'
,
operate
:
'操作'
,
save_success
:
'保存成功'
,
...
...
@@ -892,7 +892,7 @@ export default {
delete
:
'刪除'
,
move_to
:
'移動到'
,
rename
:
'重命名'
,
import
:
'
导
入模板'
,
import
:
'
導
入模板'
,
tips
:
'提示'
,
confirm_delete
:
'確認刪除'
,
delete_success
:
'刪除成功'
,
...
...
@@ -917,14 +917,14 @@ export default {
photo
:
'圖片'
,
default_panel
:
'默認儀表板'
,
create_public_links
:
'創建公共鏈接'
,
to_default
:
'另存
为默认
'
,
to_default_panel
:
'另存
为默认
儀表板'
,
to_default
:
'另存
為默認
'
,
to_default_panel
:
'另存
為默認
儀表板'
,
store
:
'收藏'
,
save_to_panel
:
'保存為模板'
,
export_to_panel
:
'導出為模板'
,
preview
:
'預覽'
,
fullscreen_preview
:
'全屏
预览
'
,
new_tab_preview
:
'新Tab
页预览
'
,
fullscreen_preview
:
'全屏
預覽
'
,
new_tab_preview
:
'新Tab
頁預覽
'
,
select_panel_from_left
:
'請從左側選擇儀表板'
,
template_nale
:
'模板名稱'
,
template
:
'模板'
,
...
...
@@ -940,7 +940,7 @@ export default {
select_by_table
:
'列表選擇'
,
data_list
:
'數據列表'
,
component_list
:
'組件列表'
,
custom_scope
:
'自定義控
制
範圍'
,
custom_scope
:
'自定義控
製
範圍'
,
multiple_choice
:
'多選'
,
single_choice
:
'單選'
,
field
:
'字段'
,
...
...
@@ -954,51 +954,52 @@ export default {
insert_picture
:
'插入圖片'
,
redo
:
'重做'
,
undo
:
'撤銷'
,
panelNull
:
'
这是个空的儀表板,可以通过编辑来丰富内
容'
,
copy
:
'
复制
'
,
paste
:
'粘
贴
'
,
panelNull
:
'
這是個空的儀表板,可以通過編輯來豐富內
容'
,
copy
:
'
復製
'
,
paste
:
'粘
貼
'
,
cut
:
'剪切'
,
lock
:
'
锁
定'
,
topComponent
:
'置
于顶层
'
,
bottomComponent
:
'置
于底层
'
,
upComponent
:
'上移一
层
'
,
downComponent
:
'下移一
层
'
,
open_aided_design
:
'打
开组件辅助设计
'
,
close_aided_design
:
'
关闭组件辅助设计
'
,
open_style_design
:
'打
开样式设计
'
,
close_style_design
:
'
关闭样式设计
'
,
matrix_design
:
'矩
阵设计
'
,
left
:
'x 坐
标
'
,
top
:
'y 坐
标
'
,
lock
:
'
鎖
定'
,
topComponent
:
'置
於頂層
'
,
bottomComponent
:
'置
於底層
'
,
upComponent
:
'上移一
層
'
,
downComponent
:
'下移一
層
'
,
open_aided_design
:
'打
開組件輔助設計
'
,
close_aided_design
:
'
關閉組件輔助設計
'
,
open_style_design
:
'打
開樣式設計
'
,
close_style_design
:
'
關閉樣式設計
'
,
matrix_design
:
'矩
陣設計
'
,
left
:
'x 坐
標
'
,
top
:
'y 坐
標
'
,
height
:
'高'
,
width
:
'
宽
'
,
color
:
'
颜
色'
,
width
:
'
寬
'
,
color
:
'
顏
色'
,
backgroundColor
:
'背景色'
,
borderStyle
:
'
边框风
格'
,
borderWidth
:
'
边框宽
度'
,
borderColor
:
'
边框颜
色'
,
borderRadius
:
'
边框半径
'
,
fontSize
:
'字
体
大小'
,
fontWeight
:
'字
体粗细
'
,
borderStyle
:
'
邊框風
格'
,
borderWidth
:
'
邊框寬
度'
,
borderColor
:
'
邊框顏
色'
,
borderRadius
:
'
邊框半徑
'
,
fontSize
:
'字
體
大小'
,
fontWeight
:
'字
體粗細
'
,
lineHeight
:
'行高'
,
letterSpacing
:
'字
间
距'
,
textAlign
:
'左右
对齐
'
,
letterSpacing
:
'字
間
距'
,
textAlign
:
'左右
對齊
'
,
opacity
:
'透明度'
,
verticalAlign
:
'上下
对齐
'
,
text_align_left
:
'左
对齐
'
,
verticalAlign
:
'上下
對齊
'
,
text_align_left
:
'左
對齊
'
,
text_align_center
:
'左右居中'
,
text_align_right
:
'右
对齐
'
,
vertical_align_top
:
'上
对齐
'
,
vertical_align_middle
:
'居中
对齐
'
,
vertical_align_bottom
:
'下
对齐
'
,
border_style_solid
:
'
实线
'
,
border_style_dashed
:
'
虚线
'
,
select_component
:
'
请选择组
件'
,
text_align_right
:
'右
對齊
'
,
vertical_align_top
:
'上
對齊
'
,
vertical_align_middle
:
'居中
對齊
'
,
vertical_align_bottom
:
'下
對齊
'
,
border_style_solid
:
'
實線
'
,
border_style_dashed
:
'
虛線
'
,
select_component
:
'
請選擇組
件'
,
other_module
:
'其他'
,
content
:
'内容'
,
default_panel_name
:
'默认仪表板名称'
,
source_panel_name
:
'原仪表板名称'
,
content_style
:
'内容样式'
content
:
'內容'
,
default_panel_name
:
'默認儀表板名稱'
,
source_panel_name
:
'原儀表板名稱'
,
content_style
:
'內容樣式'
,
canvas_self_adaption
:
'自適應畫布區域'
},
plugin
:
{
local_install
:
'本地安裝'
,
...
...
@@ -1026,7 +1027,7 @@ export default {
auth
:
{
authConfig
:
'權限配置'
,
authQuickConfig
:
'權限快捷配置'
,
dept
:
'
组织
'
,
dept
:
'
組織
'
,
role
:
'角色'
,
user
:
'用戶'
,
linkAuth
:
'數據源權限'
,
...
...
@@ -1034,7 +1035,7 @@ export default {
chartAuth
:
'視圖權限'
,
panelAuth
:
'儀表板權限'
,
menuAuth
:
'菜單和操作權限'
,
deptHead
:
'所有
组织
'
,
deptHead
:
'所有
組織
'
,
roleHead
:
'所有角色'
,
userHead
:
'所有用戶'
,
linkAuthHead
:
'所有數據源'
,
...
...
@@ -1061,10 +1062,10 @@ export default {
update_success
:
'更新成功'
},
template
:
{
exit_same_template_check
:
'
当前存在相同名称模板,是否覆盖
?'
,
override
:
'覆
盖
'
,
exit_same_template_check
:
'
當前存在相同名稱模板,是否覆蓋
?'
,
override
:
'覆
蓋
'
,
cancel
:
'取消'
,
confirm_upload
:
'上
传确认
'
confirm_upload
:
'上
傳確認
'
},
cron
:
{
second
:
'秒'
,
...
...
frontend/src/lang/zh.js
浏览文件 @
2d749d76
...
...
@@ -998,7 +998,8 @@ export default {
content
:
'内容'
,
default_panel_name
:
'默认仪表板名称'
,
source_panel_name
:
'原仪表板名称'
,
content_style
:
'内容样式'
content_style
:
'内容样式'
,
canvas_self_adaption
:
'自适应画布区域'
},
plugin
:
{
local_install
:
'本地安装'
,
...
...
frontend/src/store/modules/permission.js
浏览文件 @
2d749d76
...
...
@@ -53,6 +53,7 @@ export const filterAsyncRouter = (routers) => { // 遍历后台传来的路由
router
.
component
=
loadView
(
component
)
}
}
router
.
name
&&
fillMeta
(
router
)
if
(
router
.
children
&&
router
.
children
.
length
)
{
router
.
children
=
filterAsyncRouter
(
router
.
children
)
}
...
...
@@ -66,6 +67,14 @@ export const filterAsyncRouter = (routers) => { // 遍历后台传来的路由
})
}
// 后台设计时未考虑activeMenu字段 这里先前端处理一下
export
const
fillMeta
=
(
router
)
=>
{
router
.
name
.
includes
(
'system-user-form'
)
&&
(
router
.
meta
.
activeMenu
=
'/system/user'
)
router
.
name
.
includes
(
'system-role-form'
)
&&
(
router
.
meta
.
activeMenu
=
'/system/role'
)
router
.
name
.
includes
(
'system-dept-form'
)
&&
(
router
.
meta
.
activeMenu
=
'/system/dept'
)
// return router
}
// 包装一层父级目录
export
const
decorate
=
(
router
)
=>
{
const
parent
=
{
...
...
frontend/src/views/dataset/data/ViewTable.vue
浏览文件 @
2d749d76
<
template
>
<el-row
style=
"height: 100%;overflow-y: hidden;width: 100%;"
>
<span
v-show=
"false"
>
{{
tableRefresh
}}
</span>
<el-row
style=
"height: 26px;"
>
<el-popover
placement=
"right-start"
...
...
@@ -92,6 +93,12 @@ export default {
tabStatus
:
false
}
},
computed
:
{
tableRefresh
()
{
this
.
initTable
(
this
.
param
)
return
this
.
$store
.
state
.
dataset
.
table
}
},
watch
:
{
'param'
:
function
()
{
this
.
initTable
(
this
.
param
)
...
...
@@ -107,9 +114,11 @@ export default {
if
(
id
!==
null
)
{
this
.
fields
=
[]
this
.
data
=
[]
getTable
(
id
).
then
(
response
=>
{
getTable
(
id
,
true
).
then
(
response
=>
{
this
.
table
=
response
.
data
this
.
initPreviewData
(
this
.
page
)
}).
catch
(
res
=>
{
this
.
$emit
(
'switchComponent'
,
{
name
:
''
})
})
}
},
...
...
frontend/src/views/dataset/group/Group.vue
浏览文件 @
2d749d76
...
...
@@ -561,8 +561,8 @@ export default {
// this.tableTree()
this
.
refreshNodeBy
(
table
.
sceneId
)
// this.$router.push('/dataset/home')
this
.
$emit
(
'switchComponent'
,
{
name
:
''
})
this
.
$store
.
dispatch
(
'dataset/setTable'
,
n
ull
)
// this.$emit('switchComponent', { name: 'ViewTable', param: table.id
})
this
.
$store
.
dispatch
(
'dataset/setTable'
,
n
ew
Date
().
getTime
()
)
})
}
else
{
// this.$message({
...
...
@@ -609,8 +609,8 @@ export default {
// this.tableTree()
this
.
refreshNodeBy
(
data
.
sceneId
)
// this.$router.push('/dataset/home')
this
.
$emit
(
'switchComponent'
,
{
name
:
''
})
this
.
$store
.
dispatch
(
'dataset/setTable'
,
n
ull
)
//
this.$emit('switchComponent', { name: '' })
this
.
$store
.
dispatch
(
'dataset/setTable'
,
n
ew
Date
().
getTime
()
)
})
}).
catch
(()
=>
{
})
...
...
frontend/src/views/panel/SubjectSetting/index.vue
浏览文件 @
2d749d76
...
...
@@ -20,14 +20,14 @@
<background-color-selector
v-if=
"chart"
class=
"attr-selector"
:chart=
"chart"
@
onChangeBackgroundForm=
"onChangeBackgroundForm"
/>
</el-row>
</el-collapse-item>
<el-collapse-item
:title=
"$t('
chart.shape_attr')"
name=
"graphical
"
>
<el-collapse-item
:title=
"$t('
panel.table')"
name=
"table
"
>
<el-row
style=
"background-color: #f7f8fa; margin: 5px"
>
<color-selector
:source-type=
"'panelEchart'"
class=
"attr-selector"
:chart=
"chart"
@
onColorChange=
"on
ColorChange"
/>
<color-selector
index=
"10002"
:source-type=
"'panelTable'"
class=
"attr-selector"
:chart=
"tableChart"
@
onColorChange=
"onTable
ColorChange"
/>
</el-row>
</el-collapse-item>
<el-collapse-item
:title=
"$t('
panel.table')"
name=
"table
"
>
<el-collapse-item
:title=
"$t('
chart.shape_attr')"
name=
"graphical
"
>
<el-row
style=
"background-color: #f7f8fa; margin: 5px"
>
<color-selector
index=
"10002"
:source-type=
"'panelTable'"
class=
"attr-selector"
:chart=
"tableChart"
@
onColorChange=
"onTable
ColorChange"
/>
<color-selector
:source-type=
"'panelEchart'"
class=
"attr-selector"
:chart=
"chart"
@
onColorChange=
"on
ColorChange"
/>
</el-row>
</el-collapse-item>
</el-collapse>
...
...
frontend/src/views/system/datasource/DsTree.vue
浏览文件 @
2d749d76
...
...
@@ -141,7 +141,7 @@ export default {
if
(
!
(
element
.
type
in
types
))
{
types
[
element
.
type
]
=
[]
// newArr.push(...element, ...{ children: types[element.type] })
newArr
.
push
({
id
:
element
.
type
,
name
:
element
.
type
,
type
:
'folder'
,
children
:
types
[
element
.
type
]
})
newArr
.
push
({
id
:
element
.
type
,
name
:
this
.
transTypeToName
(
element
.
type
)
,
type
:
'folder'
,
children
:
types
[
element
.
type
]
})
}
types
[
element
.
type
].
push
(
element
)
// newArr.children.push({ id: element.id, label: element.name })
...
...
@@ -149,6 +149,14 @@ export default {
return
newArr
},
transTypeToName
(
type
)
{
if
(
type
===
'mysql'
)
{
return
'MySQL'
}
else
if
(
type
===
'sqlServer'
)
{
return
'SQL Server'
}
},
addFolder
()
{
this
.
switchMain
(
'DsForm'
)
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论