diff --git a/backend/src/main/java/io/dataease/provider/datasource/ApiProvider.java b/backend/src/main/java/io/dataease/provider/datasource/ApiProvider.java index 401e79df28..da6d25f20c 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/ApiProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/ApiProvider.java @@ -374,7 +374,7 @@ public class ApiProvider extends Provider { for (int i = 0; i < jsonPaths.size(); i++) { List datas = new ArrayList<>(); Object object = JsonPath.read(result, jsonPaths.get(i)); - if (object instanceof List) { + if (object instanceof List && jsonPaths.get(i).contains("[*]")) { datas = (List) object; } else { if (object != null) { @@ -390,7 +390,7 @@ public class ApiProvider extends Provider { } for (int i = 0; i < columnDataList.size(); i++) { for (int j = 0; j < columnDataList.get(i).size(); j++) { - dataList.get(j)[i] = String.valueOf(columnDataList.get(i).get(j)); + dataList.get(j)[i] = Optional.ofNullable(columnDataList.get(i).get(j)).orElse("").replaceAll("\n", " ").replaceAll("\r", " "); } } } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 7b954e10f2..3322035bde 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1032,7 +1032,7 @@ public class DataSetTableService { } Expression expr = plainSelect.getWhere(); if (expr == null) { - return plainSelect.toString(); + return handleWith(plainSelect, select); } StringBuilder stringBuilder = new StringBuilder(); BinaryExpression binaryExpression = null; @@ -1046,7 +1046,10 @@ public class DataSetTableService { expr.accept(getExpressionDeParser(stringBuilder)); } plainSelect.setWhere(CCJSqlParserUtil.parseCondExpression(stringBuilder.toString())); + return handleWith(plainSelect, select); + } + private String handleWith(PlainSelect plainSelect, Select select)throws Exception{ StringBuilder builder = new StringBuilder(); if (CollectionUtils.isNotEmpty(select.getWithItemsList())) { builder.append("WITH"); @@ -1063,7 +1066,6 @@ public class DataSetTableService { builder.append(" " + plainSelect); return builder.toString(); } - public Map getSQLPreview(DataSetTableRequest dataSetTableRequest) throws Exception { Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); if (ds == null) { diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index 8472e6bfe6..2eba3b2e91 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -85,7 +85,7 @@ i18n_no_all_delete_privilege_folder=This folder have sources which have no manag i18n_excel_field_repeat=Duplicate fields exist, please modify and try again. i18n_schema_is_empty=Database schema is empty \u7AD9\u5185\u6D88\u606F=Internal Messages -\u6240\u6709\u6D88\u606F==All Messages +\u6240\u6709\u6D88\u606F=All Messages \u672A\u8BFB\u6D88\u606F=Unread Messages \u5DF2\u8BFB\u6D88\u606F==Read Messages \u63A5\u6536\u7BA1\u7406=Receive Manage diff --git a/frontend/src/components/canvas/components/Editor/CloseBar.vue b/frontend/src/components/canvas/components/Editor/CloseBar.vue index 497c7edd97..6d0c2066f9 100644 --- a/frontend/src/components/canvas/components/Editor/CloseBar.vue +++ b/frontend/src/components/canvas/components/Editor/CloseBar.vue @@ -48,7 +48,7 @@ export default { padding-left: 3px; padding-right: 0px; cursor:pointer!important; - background-color: #3370ff; + background-color: var(--primary,#3370ff); } .bar-main i{ color: white; diff --git a/frontend/src/components/canvas/components/Editor/EditBar.vue b/frontend/src/components/canvas/components/Editor/EditBar.vue index c1314fe9c3..ce6e4d4d2d 100644 --- a/frontend/src/components/canvas/components/Editor/EditBar.vue +++ b/frontend/src/components/canvas/components/Editor/EditBar.vue @@ -372,7 +372,7 @@ export default { padding-left: 3px; padding-right: 0px; cursor:pointer!important; - background-color: #3370ff; + background-color: var(--primary,#3370ff); } .bar-main i{ color: white; diff --git a/frontend/src/components/canvas/components/Editor/EditBarView.vue b/frontend/src/components/canvas/components/Editor/EditBarView.vue index b9526d9bde..8a9259c9f8 100644 --- a/frontend/src/components/canvas/components/Editor/EditBarView.vue +++ b/frontend/src/components/canvas/components/Editor/EditBarView.vue @@ -4,10 +4,10 @@ - + - + @@ -63,6 +63,12 @@ export default { } }, computed: { + detailsShow(){ + return this.element.propValue.innerType !== 'richTextView' + }, + enlargeShow(){ + return this.element.propValue.innerType !== 'richTextView' + }, // gapStyle() { // return { // 'right': this.curGap + 'px!important' @@ -149,7 +155,7 @@ export default { padding-left: 3px!important; padding-right: 0px!important; cursor:pointer!important; - background-color: #3370ff; + background-color: var(--primary,#3370ff); } .bar-main i{ color: white; diff --git a/frontend/src/components/canvas/components/Editor/MobileCheckBar.vue b/frontend/src/components/canvas/components/Editor/MobileCheckBar.vue index 974ed5a6d6..fa5b521a1b 100644 --- a/frontend/src/components/canvas/components/Editor/MobileCheckBar.vue +++ b/frontend/src/components/canvas/components/Editor/MobileCheckBar.vue @@ -76,7 +76,7 @@ export default { padding-right: 1px; cursor:pointer!important; text-align: center; - background-color: #3370ff; + background-color: var(--primary,#3370ff); } .bar-main i{ color: white; diff --git a/frontend/src/components/canvas/components/Toolbar.vue b/frontend/src/components/canvas/components/Toolbar.vue index ba47aeebba..44096977d0 100644 --- a/frontend/src/components/canvas/components/Toolbar.vue +++ b/frontend/src/components/canvas/components/Toolbar.vue @@ -74,7 +74,7 @@ {{ $t('panel.aided_grid') }} - + @@ -600,10 +600,14 @@ export default { ::v-deep .el-switch__core::after { width: 14px; height: 14px; - margin-top: -1px; + margin-top: -1.3px; margin-bottom: 2px; } +.grid-active ::v-deep .el-switch__core::after { + margin-left: -14.5px; +} + .iconfont-tb { font-family: "iconfont" !important; font-size: 12px; diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index dcd4cc7d8c..dfa08ce487 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -133,12 +133,12 @@ export default { commons: { no_result: 'No Result', manage_member: 'Managing members', - user_confirm_remove_cancel: 'Are you sure you want to remove the user from the role?', confirm_remove_cancel: 'Are you sure to delete the role?', + user_confirm_remove_cancel: 'Are you sure you want to remove the user from the role?', default_value: 'Default Value', params_value: 'Param Value', - publish: 'publish', input_role_name: 'Enter a role name', + publish: 'publish', unpublished: 'unpublished', default_pwd: 'Default Pwd', stop: 'Stop', @@ -159,9 +159,9 @@ export default { yes: 'Yes', no: 'No', reset: 'Reset', - gender: 'Gender', catalogue: 'Catalogue', button: 'Button', + gender: 'Gender', man: 'Man', woman: 'Woman', keep_secret: 'keep secret', @@ -192,6 +192,7 @@ export default { annotation: 'Annotation', clear: 'Clean', save: 'Save', + otherSave: 'Save as', update: 'Update', save_success: 'Saved successfully', delete_success: 'deleted successfully', @@ -400,6 +401,7 @@ export default { continue: 'continue', hour: 'hour', minute: 'minute', + day: 'day', by_task_name: 'Search by task name', message_receiving_management: 'Message receiving management', upload_failed: 'Upload failed', @@ -423,7 +425,6 @@ export default { uninstall: 'uninstall', relevant_content_found: 'No relevant content found', view_tasks: 'View tasks', - day: 'day', no_classification: 'No classification', no_template: 'No template', data_set_required: 'Data set (required)', @@ -602,6 +603,7 @@ export default { confirm_passwd: 'Confirm Password', change_password: 'Change Password', search_by_name: 'Search by name', + import_ldap: 'Import LDAP users', result_one: 'Results', clear_filter: 'Empty condition', recover_pwd: 'Restore to the original password?', @@ -1541,8 +1543,9 @@ export default { column_permission: { add: 'Add', edit: 'Edit', + please_select_field: 'Please select field', please_select_auth_type: 'Please select the authorization type', - please_select_auth_id: '请选择授权目标', + please_select_auth_id: 'Please select authorization obj', column_permission_not_empty: 'Please select authorization target', auth_type: 'Authorization type', auth_obj: 'Authorized object', @@ -1594,14 +1597,19 @@ export default { create: 'Create Data Source', type: 'Type', please_choose_type: 'Please select data source type', + please_choose_data_type: 'Please select the calculation mode', data_base: 'Database name', user_name: 'User Name', password: 'Password', host: 'Host name / IP address', + doris_host: 'Doris Addr', + query_port: 'Query Port', + http_port: 'Http Port', port: 'Port', datasource_url: 'URL address', please_input_datasource_url: 'Please enter Elasticsearch 地址,e.g: http://es_host:es_port', please_input_data_base: 'Please enter the database name', + please_select_oracle_type: 'Select connection type', please_input_user_name: 'Please enter user name', please_input_password: 'Please enter Password', please_input_host: 'Please enter host', @@ -1633,9 +1641,6 @@ export default { min_pool_size: 'Minimum of connections', max_pool_size: 'Maximum connection', max_idle_time: 'Maximum idle (seconds)', - doris_host: 'Doris Address', - query_port: 'Query Port', - http_port: 'Http Port', bucket_num: 'Bucket number', replication_num: 'Replication number', please_input_bucket_num: 'Please enter Bucket number', @@ -1648,10 +1653,15 @@ export default { please_input_max_pool_size: 'Please enter the maximum number of connections', please_input_max_idle_time: 'Please enter the maximum idle (seconds)', please_input_acquire_increment: 'Please enter the growth number', + please_input_query_timeout: 'Please enter query timeout', please_input_connect_timeout: 'Please enter the connection timeout (seconds)', no_less_then_0: 'Parameters in advanced settings cannot be less than zero', port_no_less_then_0: 'Port cannot be less than zero', priority: 'Advanced setting', + data_mode: 'Data mode', + direct: 'Direct Mode', + extract: 'Extraction mode', + all_compute_mode: 'Direct connection and extraction mode', extra_params: 'Extra JDBC connection string', please_input_dataPath: 'Please enter the JsonPath data path', warning: 'Contains invalid table', @@ -1909,6 +1919,8 @@ export default { fontWeight: 'FontWeight', lineHeight: 'LineHeight', letterSpacing: 'LetterSpacing', + padding: 'Internal spacing', + margin: 'Outer space', textAlign: 'TextAlign', opacity: 'Opacity', verticalAlign: 'Vertical Align', @@ -1997,6 +2009,9 @@ export default { default_settings: 'Default Settings', choose_background: 'Choose Component Background', choose_background_tips: 'The component`s own background settings will overwrite the current settings', + setting_background: 'Set background', + setting_jump: 'Jump settings', + select_view: 'Please select a view...', visual: 'Visual', prohibit_multiple: 'Prohibit multiple fields in the same dataset', be_empty_dir: 'is empty dir' @@ -2015,9 +2030,6 @@ export default { un_install: 'Uninstall', uninstall_confirm: 'Comfirm to uninstall the plugin?', uninstall_cancel: 'Cancel uninstall plugin', - setting_background: 'BackGround', - setting_jump: 'Jump Setting', - select_view: 'Select View', un_install_success: 'Uninstall is successful and restart takes effect', un_install_error: 'Uninstall failed, please contact the administrator' }, @@ -2029,6 +2041,11 @@ export default { loginTitle: 'Login page title', title: 'System name', advice_size: 'Advice picture size', + theme: 'Theme color', + topMenuColor: 'Head background', + topMenuActiveColor: 'Head selection background', + topMenuTextColor: 'Head font color', + topMenuTextActiveColor: 'Head font selected color', themeLight: 'Light', themeDark: 'Dark', themeCustom: 'Custom', @@ -2040,7 +2057,6 @@ export default { defaultHomeLink: 'Default is the system built-in home page', showFoot: 'Show login page footer', footContent: 'Foot content' - }, auth: { no_item_selected: 'Please select organization、user or role on the left', @@ -2056,6 +2072,7 @@ export default { role: 'Role', user: 'User', set_rules: 'Set rules', + sysParams: 'System variable', sysParams_type: { user_id: 'User ID', user_name: 'User Name', @@ -2076,6 +2093,7 @@ export default { datasetAuthHead: 'All Dataset', chartAuthHead: 'All Chart', panelAuthHead: 'All Chart', + menuAuthHead: 'All menus and actions', view: 'View', use: 'Use', export: 'Export', @@ -2083,14 +2101,14 @@ export default { row_column: 'Row and column permission settings', row_permission: 'Row permission rules', enable_row: 'Enable row permissions', - add_condition: 'Add condition', - add_relationship: 'Add relationship', white_list: 'White list', white_user_not: 'The above permission rules do not take effect for white list users', organization_or_role: 'Please select an organization or role', column_permission: 'Column permission rule', enable_column: 'Enable column permissions', search_by_field: 'Search by field name', + add_condition: 'Add condition', + add_relationship: 'Add relationship', filter_fields: 'Filter fields', selct_filter_fields: 'Please select a filter field', enter_keywords: 'Please enter keywords', @@ -2200,7 +2218,8 @@ export default { i18n_msg_type_dataset_sync_faild: 'Dataset synchronization failed', i18n_msg_type_all: 'All type', i18n_msg_type_ds_invalid: 'Datasource invalid', - channel_inner_msg: 'On site news' + channel_inner_msg: 'On site news', + channel_email_msg: 'Mail notification' }, denumberrange: { label: 'Number range', @@ -2356,8 +2375,7 @@ export default { cmonth: 'This Month', cquarter: 'This Quarter', lquarter: 'Last Quarter', - cyear: 'This Year', - openHomePage: 'Show Home Page' + cyear: 'This Year' }, dynamic_year: { fix: 'Fixed Year', @@ -2370,7 +2388,8 @@ export default { dynamic: 'Dynamic Month', current: 'This Month', last: 'Last Month', - firstOfYear: 'First month of this year' + firstOfYear: 'First month of this year', + sameMonthLastYear: 'Same month last year' }, wizard: { welcome_title: 'Welcome To Use DataEase', @@ -2419,7 +2438,9 @@ export default { plugin_style: { border: 'Border' }, - + sql_variable: { + variable_mgm: 'Parameter setting' + }, map_setting: { area_level: 'Area Level', area_code: 'Area Code', diff --git a/frontend/src/styles/index.scss b/frontend/src/styles/index.scss index 159a11cf2b..bec415c22f 100644 --- a/frontend/src/styles/index.scss +++ b/frontend/src/styles/index.scss @@ -1148,6 +1148,9 @@ div:focus { .el-input__prefix { display: none; } + .el-icon-circle-close { + margin-right: 20px; + } } .icon-calendar-outlined { @@ -1172,12 +1175,55 @@ div:focus { } } +.user-drawer, .user-drawer-task { + .el-drawer__body-cont { + height: 100%; + box-sizing: border-box; + overflow: auto; + width: 100%; + padding-bottom: 80px; + } + .el-drawer__header { + padding: 16px 24px; + margin: 0; + font-family: PingFang SC; + font-size: 16px; + font-weight: 500; + line-height: 24px; + color: var(--deTextPrimary, #1f2329); + position: relative; + box-sizing: border-box; + height: 57px; + mix-blend-mode: normal; + border-bottom: 1px solid var(--deComBorderColor50, rgba(187, 191, 196, 0.5)); + + .el-drawer__close-btn { + position: absolute; + right: 24px; + top: 16px; + padding: 4px; + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center + } + + .el-drawer__close-btn:hover { + background: #e9e9ea; + } + } + + .el-drawer__body { + padding: 12px 24px 24px 24px; + position: relative; + } + .filter { display: flex; min-height: 46px; > :nth-child(1) { - color: #1f2329; + color: var(--deTextSecondary, #1f2329); font-family: "PingFang SC"; font-style: normal; font-weight: 400; @@ -1187,23 +1233,87 @@ div:focus { width: 116px; } .filter-item { + flex: 1; .item, .more { - background: #f5f6f7; + font-family: PingFang SC; + white-space: nowrap; + font-size: 14px; + font-weight: 400; + line-height: 24px; + margin-right: 12px; + text-align: center; + padding: 1px 6px; + background: var(--deTextPrimary5, #f5f6f7); + color: var(--deTextPrimary, #1f2329); + border-radius: 2px; + cursor: pointer; + display: inline-block; + margin-bottom: 12px; } .active, - .more:hover { - background: rgba(51, 112, 255, 0.1); - color: #0c296e; + .more:hover{ + background: var(--primary10, rgba(51, 112, 255, 0.1)); + color: var(--primaryselect, #0c296e); } .more { white-space: nowrap; } } } + + .btn { + border-radius: 4px; + padding: 5px 26px 5px 26px; + font-family: PingFang SC; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: 0px; + text-align: center; + border: none; + box-sizing: border-box; + } + + .normal { + color: #1f2329; + border: 1px solid #bbbfc4; + margin-left: 12px; + } + + .foot { + position: absolute; + height: 80px; + width: 100%; + padding: 24px; + right: 0; + bottom: 0; + text-align: right; + background-color: #fff; + box-shadow: 0px -1px 4px rgba(0, 0, 0, 0.05); + } +} +.user-popper { + padding: 0; + background: #fff; + .popper__arrow { + display: none; + } +} +.tree-select { + .el-select-dropdown__empty, + .el-scrollbar__wrap, + .popper__arrow { + display: none !important; + } } +.user-popper.dept { + height: 400px; + overflow: auto; + +} .upload-user{ margin-bottom: 5px; .el-upload{ diff --git a/frontend/src/views/background/index.vue b/frontend/src/views/background/index.vue index fb078f4449..5b1ff9de34 100644 --- a/frontend/src/views/background/index.vue +++ b/frontend/src/views/background/index.vue @@ -132,7 +132,7 @@ import { queryBackground } from '@/api/background/background' import BackgroundItem from '@/views/background/BackgroundItem' import { mapState } from 'vuex' -import { deepCopy } from '@/components/canvas/utils/utils' +import {deepCopy, imgUrlTrans} from '@/components/canvas/utils/utils' import { COLOR_PANEL } from '@/views/chart/chart/chart' import { uploadFileResult } from '@/api/staticResource/staticResource' import { COMMON_BACKGROUND_NONE } from '@/components/canvas/custom-component/component-list' @@ -171,7 +171,7 @@ export default { methods: { init() { if (this.curComponent && this.curComponent.commonBackground && this.curComponent.commonBackground.outerImage && typeof (this.curComponent.commonBackground.outerImage) === 'string') { - this.fileList.push({ url: this.curComponent.commonBackground.outerImage }) + this.fileList.push({ url: imgUrlTrans(this.curComponent.commonBackground.outerImage) }) } this.backgroundOrigin = deepCopy(this.curComponent.commonBackground ? this.curComponent.commonBackground : COMMON_BACKGROUND_NONE) this.queryBackground() diff --git a/frontend/src/views/panel/SubjectSetting/PanelStyle/BackgroundSelector.vue b/frontend/src/views/panel/SubjectSetting/PanelStyle/BackgroundSelector.vue index 9d091f55e4..687d98a346 100644 --- a/frontend/src/views/panel/SubjectSetting/PanelStyle/BackgroundSelector.vue +++ b/frontend/src/views/panel/SubjectSetting/PanelStyle/BackgroundSelector.vue @@ -52,6 +52,8 @@ import { mapState } from 'vuex' import { deepCopy } from '@/components/canvas/utils/utils' import { COLOR_PANEL } from '@/views/chart/chart/chart' import { uploadFileResult } from '@/api/staticResource/staticResource' +import {imgUrlTrans} from "@/components/canvas/utils/utils"; + export default { name: 'BackgroundSelector', @@ -77,7 +79,7 @@ export default { // 初始化赋值 this.panel = this.canvasStyleData.panel if (this.panel.imageUrl && typeof (this.panel.imageUrl) === 'string') { - this.fileList.push({ url: this.panel.imageUrl }) + this.fileList.push({ url: imgUrlTrans(this.panel.imageUrl) }) } }, methods: { @@ -111,7 +113,7 @@ export default { uploadFileResult(file.file, (fileUrl) => { _this.$store.commit('canvasChange') _this.panel.imageUrl = fileUrl - _this.fileList = [{ url: this.panel.imageUrl }] + _this.fileList = [{ url: imgUrlTrans(this.panel.imageUrl) }] _this.commitStyle() }) }, diff --git a/frontend/src/views/system/SysParam/BasicSetting.vue b/frontend/src/views/system/SysParam/BasicSetting.vue index 685b230111..91309eaead 100644 --- a/frontend/src/views/system/SysParam/BasicSetting.vue +++ b/frontend/src/views/system/SysParam/BasicSetting.vue @@ -15,10 +15,9 @@ - +