diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/bean/Chart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/bean/Chart.java index bb80ffef..2f1e0db0 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/bean/Chart.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/bean/Chart.java @@ -88,4 +88,7 @@ public class Chart { @ApiModelProperty(notes = "边框配置") private Map border; + @ApiModelProperty(notes = "计算表达式") + private String expression; + } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenDateTimePickerChart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenDateTimePickerChart.java index 1a9deefb..28242c92 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenDateTimePickerChart.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenDateTimePickerChart.java @@ -43,6 +43,9 @@ public class ScreenDateTimePickerChart extends Chart { @ApiModelProperty(notes = "绑定值的格式") private String valueFormat; + @ApiModelProperty(notes = "显示的格式") + private String format; + @ApiModelProperty(notes = "下拉框") private Map dropDownBox; diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenTimePickerChart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenTimePickerChart.java index 1b8d0aee..4c085f1c 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenTimePickerChart.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenTimePickerChart.java @@ -53,6 +53,9 @@ public class ScreenTimePickerChart extends Chart { @ApiModelProperty(notes = "绑定值的格式") private String valueFormat; + @ApiModelProperty(notes = "显示的格式") + private String format; + } diff --git a/data-room-ui/packages/BasicComponents/DateTimePicker/index.vue b/data-room-ui/packages/BasicComponents/DateTimePicker/index.vue index c75b1605..5f3d7ef9 100644 --- a/data-room-ui/packages/BasicComponents/DateTimePicker/index.vue +++ b/data-room-ui/packages/BasicComponents/DateTimePicker/index.vue @@ -8,6 +8,7 @@ :class="['basic-component-date-picker', `date-picker-${config.code}`]" :popper-class="'basic-component-date-picker date-picker-popper-' + config.code" :value-format="config.customize.valueFormat" + :format="config.customize.format" :default-value="value" size="large" @focus="focusEvent" diff --git a/data-room-ui/packages/BasicComponents/DateTimePicker/setting.vue b/data-room-ui/packages/BasicComponents/DateTimePicker/setting.vue index df413f32..5523bbaf 100644 --- a/data-room-ui/packages/BasicComponents/DateTimePicker/setting.vue +++ b/data-room-ui/packages/BasicComponents/DateTimePicker/setting.vue @@ -21,6 +21,20 @@ 基础
+ + + + +
- 时间格式 + 日期时间格式
- - - +
+ - + + +
+ 年:yyyy,表示年份,例如:2017
+ 月:M,表示月份,不补0,例如:1
+ 月:MM,表示月份,补0,例如:01
+ 日:d,表示日期,不补0,例如:2
+ 日:dd,表示日期,补0,例如:02
+ 小时:H,表示小时(24小时制),不补0,例如:3
+ 小时:HH,表示小时(24小时制),补0,例如:03
+ 小时:h,表示小时(12小时制),须和 A 或 a 使用,不补0,例如:3
+ 小时:hh,表示小时(12小时制),须和 A 或 a 使用,补0,例如:03
+ 分钟:m,表示分钟,不补0,例如:4
+ 分钟:mm,表示分钟,补0,例如:04
+ 秒:s,表示秒钟,不补0,例如:5
+ 秒:ss,表示秒钟,补0,例如:05
+ AM/PM:A,仅 format 可用,大写,例如:AM
+ am/pm:a,仅 format 可用,小写,例如:am
+ JS时间戳:timestamp,仅 value-format 可用,组件绑定值为number类型,例如:1483326245000
+ 不需要格式化字符:[MM],使用方括号标识不需要格式化的字符,例如:MM
+ 具体的时间格式化字符和使用方式,可以参考Element-UI官网的日期选择器的时间格式化部分。 +
+
+
- - - - + +
+ + + + + +
+ 时间戳:从1970年1月1日开始计算的秒数,数据类型为数值型,例如:1483326245000。
+ 自定义:通过输入特定的格式字符串来指定时间的数据格式,例如:yyyy-MM-dd HH:mm:ss对应数据为 2023-10-08 09:30:00。
+
+
+
-
+
- 时间格式示例:
- yyyy:表示年份,
- MM:表示月份,
- dd:表示日期,
- HH:表示小时(24小时制),
- mm:表示分钟,
- ss:表示秒,
- 具体可参考Element-UI官网的日期选择器的时间格式化部分。 +
+ 年:yyyy,表示年份,例如:2017
+ 月:M,表示月份,不补0,例如:1
+ 月:MM,表示月份,补0,例如:01
+ 日:d,表示日期,不补0,例如:2
+ 日:dd,表示日期,补0,例如:02
+ 小时:H,表示小时(24小时制),不补0,例如:3
+ 小时:HH,表示小时(24小时制),补0,例如:03
+ 小时:h,表示小时(12小时制),须和 A 或 a 使用,不补0,例如:3
+ 小时:hh,表示小时(12小时制),须和 A 或 a 使用,补0,例如:03
+ 分钟:m,表示分钟,不补0,例如:4
+ 分钟:mm,表示分钟,补0,例如:04
+ 秒:s,表示秒钟,不补0,例如:5
+ 秒:ss,表示秒钟,补0,例如:05
+ AM/PM:A,仅 format 可用,大写,例如:AM
+ am/pm:a,仅 format 可用,小写,例如:am
+ JS时间戳:timestamp,仅 value-format 可用,组件绑定值为number类型,例如:1483326245000
+ 不需要格式化字符:[MM],使用方括号标识不需要格式化的字符,例如:MM
+ 具体的时间格式化字符和使用方式,可以参考Element-UI官网的日期选择器的时间格式化部分。 +
@@ -162,7 +225,6 @@
+ \ No newline at end of file diff --git a/data-room-ui/packages/BigScreenDesign/RightSetting/RotateSetting.vue b/data-room-ui/packages/BigScreenDesign/RightSetting/RotateSetting.vue new file mode 100644 index 00000000..513db668 --- /dev/null +++ b/data-room-ui/packages/BigScreenDesign/RightSetting/RotateSetting.vue @@ -0,0 +1,74 @@ + + + + + + \ No newline at end of file diff --git a/data-room-ui/packages/BigScreenDesign/RightSetting/index.vue b/data-room-ui/packages/BigScreenDesign/RightSetting/index.vue index 085fe496..2570d79c 100644 --- a/data-room-ui/packages/BigScreenDesign/RightSetting/index.vue +++ b/data-room-ui/packages/BigScreenDesign/RightSetting/index.vue @@ -56,6 +56,7 @@ import { resolveComponentType } from 'data-room-ui/js/utils' import DataSetting from './DataSetting.vue' import rightSetting from 'data-room-ui/js/utils/rightSettingImport' import CustomComponent from './G2CustomSetting.vue' +import EchartsCustomSetting from './EchartsCustomSetting.vue' import Svgs from 'data-room-ui/Svgs/setting.vue' import { mapState, mapMutations } from 'vuex' // import _ from 'lodash' @@ -78,7 +79,7 @@ export default { Svgs, // 远程组件的样式配置也和g2Plot的样式配置一样,采用属性配置, 故使用一个组件 RemoteComponent: CustomComponent, - EchartsComponent: CustomComponent + EchartsComponent: EchartsCustomSetting }, data () { return { @@ -114,6 +115,9 @@ export default { x: this.config?.x, y: this.config?.y, z: this.config?.z, + rotateX: this.config?.rotateX, + rotateY: this.config?.rotateY, + rotateZ: this.config?.rotateZ, setting: cloneDeep(this.config?.setting), customize: cloneDeep(this.config?.customize), url: this.config?.url, diff --git a/data-room-ui/packages/BizComponent/index.vue b/data-room-ui/packages/BizComponent/index.vue index e0f33cfd..82862a25 100644 --- a/data-room-ui/packages/BizComponent/index.vue +++ b/data-room-ui/packages/BizComponent/index.vue @@ -339,69 +339,57 @@ export default { } }) }, - save (pageJump = false) { + async save (pageJump = false) { this.loading = true + let dataUrl = '' const node = document.querySelector('.remote-preview-inner-wrap') // 获取node下的第一个子节点 const childrenNode = node.children[0] - toJpeg(childrenNode, { quality: 0.2 }) - .then((dataUrl) => { - const that = this - if (showSize(dataUrl) > 200) { - const url = dataURLtoBlob(dataUrl) - // 压缩到500KB,这里的500就是要压缩的大小,可自定义 - imageConversion - .compressAccurately(url, { - size: 200, // 图片大小压缩到100kb - width: 1280, // 宽度压缩到1280 - height: 720 // 高度压缩到720 - }) - .then((res) => { - translateBlobToBase64(res, function (e) { - this.form.coverPicture = e.result - updateBizComponent(this.form) - .then(() => { - this.$message({ - message: '保存成功', - type: 'success', - duration: 800, - onClose: () => { - // 此处写提示关闭后需要执行的函数 - if (pageJump) { - this.pageJump() - } - } - }) - }) - .finally(() => { - that.loading = false - }) - }) - }) - } else { - this.form.coverPicture = dataUrl - updateBizComponent(this.form) - .then(() => { - this.$message({ - message: '保存成功', - type: 'success', - duration: 800, - onClose: () => { - // 此处写提示关闭后需要执行的函数 - if (pageJump) { - this.pageJump() - } - } - }) - }) - .finally(() => { - this.loading = false - }) + try { + dataUrl = await toJpeg(childrenNode, { quality: 0.2 }) + } catch (error) { + console.info(error) + } + console.log(dataUrl) + if (dataUrl) { + if (showSize(dataUrl) > 200) { + const url = dataURLtoBlob(dataUrl) + // 压缩到500KB,这里的500就是要压缩的大小,可自定义 + imageConversion.compressAccurately( + url, + { + size: 200, // 图片大小压缩到100kb + width: 1280, // 宽度压缩到1280 + height: 720 // 高度压缩到720 + } + ).then((res) => { + translateBlobToBase64(res, (e) => { + this.form.coverPicture = e.result + }) + }) + } else { + this.form.coverPicture = dataUrl + } + } else { + this.form.coverPicture = '' + } + updateBizComponent(this.form).then(() => { + this.$message({ + message: '保存成功', + type: 'success', + duration: 800, + onClose: () => { + // 此处写提示关闭后需要执行的函数 + if (pageJump) { + this.pageJump() + } } }) - .catch(() => { - this.loading = false - }) + this.loading = false + }).catch((error) => { + console.info(error) + this.loading = false + }) }, createdImg () { this.loading = true @@ -421,7 +409,8 @@ export default { }) this.loading = false }) - .catch(() => { + .catch((error) => { + console.info(error) this.$message.warning('出现未知错误,请重试') this.loading = false }) @@ -446,7 +435,7 @@ export default { background: var(--bs-background-2); overflow: hidden; - > * { + >* { box-sizing: border-box; } @@ -523,11 +512,13 @@ export default { flex-direction: row; align-items: center; justify-content: space-between; - .code-tab-btn{ + + .code-tab-btn { // width: 90px; cursor: pointer; text-align: center; } + .code-tab { font-size: 14px; align-items: center; @@ -569,12 +560,14 @@ export default { height: 100%; background: var(--bs-background-1); position: relative; - .code-tab-header{ + + .code-tab-header { height: 40px; display: flex; flex-direction: row; align-items: center; background-color: var(--bs-background-2); + .code-tab { font-size: 14px; align-items: center; @@ -593,16 +586,61 @@ export default { } diff --git a/data-room-ui/packages/ComponentList/EditForm.vue b/data-room-ui/packages/ComponentList/EditForm.vue index 87fecd05..677766fb 100644 --- a/data-room-ui/packages/ComponentList/EditForm.vue +++ b/data-room-ui/packages/ComponentList/EditForm.vue @@ -477,7 +477,7 @@ export default { // 跳转设计态 toDesign (form) { const path = this.type === 'component' ? (window.BS_CONFIG?.routers?.designUrl || '/big-screen/design') : 'big-screen-biz-component-design' - const { href: bigScreenHref } = this.type == 'bizComponent' ? this.$router.resolve({ + const { href: bigScreenHref } = this.type === 'bizComponent' ? this.$router.resolve({ path, query: { code: form.code, @@ -490,7 +490,7 @@ export default { } }) // 新窗口打开 - window.open(bigScreenHref, '_blank') + window.open(bigScreenHref, '_self') } } } diff --git a/data-room-ui/packages/ComponentList/index.vue b/data-room-ui/packages/ComponentList/index.vue index 406c04f0..8765a15e 100644 --- a/data-room-ui/packages/ComponentList/index.vue +++ b/data-room-ui/packages/ComponentList/index.vue @@ -353,7 +353,7 @@ export default { } }) // 新窗口打开 - window.open(href, '_blank') + window.open(href, '_self') }, add () { const page = { diff --git a/data-room-ui/packages/DataSetManagement/src/HttpEditForm.vue b/data-room-ui/packages/DataSetManagement/src/HttpEditForm.vue index 2f39a86d..7e4b0fa0 100644 --- a/data-room-ui/packages/DataSetManagement/src/HttpEditForm.vue +++ b/data-room-ui/packages/DataSetManagement/src/HttpEditForm.vue @@ -885,7 +885,7 @@ export default { this.newParamsList = cloneDeep(paramsList) this.codemirrorOption.mode = this.dataForm.config.requestType === 'frontend' ? 'text/javascript' : 'text/x-groovy' // this.replaceParams(paramsList) - this.scriptExecute(true) + // this.scriptExecute(true) }) } }, diff --git a/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue b/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue index e09b9571..bd0ec75a 100644 --- a/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue +++ b/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue @@ -358,7 +358,7 @@ diff --git a/data-room-ui/packages/DataSetManagement/src/ScriptEditForm.vue b/data-room-ui/packages/DataSetManagement/src/ScriptEditForm.vue index a3febe04..44fe91c6 100644 --- a/data-room-ui/packages/DataSetManagement/src/ScriptEditForm.vue +++ b/data-room-ui/packages/DataSetManagement/src/ScriptEditForm.vue @@ -1166,3 +1166,49 @@ return ElasticsearchDsService.query(host, port, username, password, path, dsl); width: 100% !important; } + + diff --git a/data-room-ui/packages/DataSourceManagement/src/setDatasource.vue b/data-room-ui/packages/DataSourceManagement/src/setDatasource.vue index 92ec8ffa..95329d9d 100644 --- a/data-room-ui/packages/DataSourceManagement/src/setDatasource.vue +++ b/data-room-ui/packages/DataSourceManagement/src/setDatasource.vue @@ -339,7 +339,7 @@ export default { case 'com.ibm.db2.jcc.DB2Driver': return 'jdbc:db2://localhost:5000/db_name' case 'com.microsoft.sqlserver.jdbc.SQLServerDriver': - return 'jdbc:sqlserver://localhost:1433;databaseName=db_name' + return 'jdbc:sqlserver://localhost:1433;databaseName=db_name;encrypt=false' case 'org.postgresql.Driver': return 'jdbc:postgresql://localhost:13308/db_name' case 'org.apache.hive.jdbc.HiveDriver': diff --git a/data-room-ui/packages/Echarts/echartList.js b/data-room-ui/packages/Echarts/echartList.js index dea9fd30..b04855bb 100644 --- a/data-room-ui/packages/Echarts/echartList.js +++ b/data-room-ui/packages/Echarts/echartList.js @@ -31,6 +31,9 @@ function getEchartsList (files) { h: config?.option?.height || 320, x: 0, y: 0, + rotateX: 0, + rotateY: 0, + rotateZ: 0, type: 'echartsComponent', loading: false, // 把默认右侧配置与自定义右侧配置集合 diff --git a/data-room-ui/packages/EchartsRender/index.vue b/data-room-ui/packages/EchartsRender/index.vue index 46d266a2..4b414bce 100644 --- a/data-room-ui/packages/EchartsRender/index.vue +++ b/data-room-ui/packages/EchartsRender/index.vue @@ -71,6 +71,42 @@ export default { this.changeStyle(this.config, true) } } + }, + 'config.rotateX': { + deep: true, + handler (val) { + const rotate = `rotateX(${this.config.rotateX}deg) rotateY(${this.config.rotateY}deg) rotateZ(${this.config.rotateZ}deg)` + const dom1 = document.querySelector('.bs-design-wrap') + const dom2 = document.querySelector('.render-item-wrap') + dom1.setAttribute('style', 'perspective: 500px;') + dom2.setAttribute('style', 'perspective: 500px;') + dom1.setAttribute('style', 'transform:' + rotate) + dom2.setAttribute('style', 'transform:' + rotate) + } + }, + 'config.rotateY': { + deep: true, + handler (val) { + const rotate = `rotateX(${this.config.rotateX}deg) rotateY(${this.config.rotateY}deg) rotateZ(${this.config.rotateZ}deg)` + const dom1 = document.querySelector('.bs-design-wrap') + const dom2 = document.querySelector('.render-item-wrap') + dom1.setAttribute('style', 'perspective: 500px;') + dom2.setAttribute('style', 'perspective: 500px;') + dom1.setAttribute('style', 'transform:' + rotate) + dom2.setAttribute('style', 'transform:' + rotate) + } + }, + 'config.rotateZ': { + deep: true, + handler (val) { + const rotate = `rotateX(${this.config.rotateX}deg) rotateY(${this.config.rotateY}deg) rotateZ(${this.config.rotateZ}deg)` + const dom1 = document.querySelector('.bs-design-wrap') + const dom2 = document.querySelector('.render-item-wrap') + dom1.setAttribute('style', 'perspective: 500px;') + dom2.setAttribute('style', 'perspective: 500px;') + dom1.setAttribute('style', 'transform:' + rotate) + dom2.setAttribute('style', 'transform:' + rotate) + } } }, mounted () { @@ -410,8 +446,8 @@ export default { seriesStyle (config) { const _config = CloneDeep(config) const seriesCustom = _config.option.seriesCustom - // const ids = ['barTopColor', 'barColor', 'barBottomColor', 'shadowColor', 'shadowTopColor'] const ids = Object.keys(config.option.seriesCustom) + // 判断是否是分组柱状图 const isGroup = _config.option.series.length !== 5 // 宽度配置 _config.option.series.forEach(item => { diff --git a/data-room-ui/packages/Render/Configuration.vue b/data-room-ui/packages/Render/Configuration.vue index c2064869..fe7a7fd5 100644 --- a/data-room-ui/packages/Render/Configuration.vue +++ b/data-room-ui/packages/Render/Configuration.vue @@ -127,6 +127,6 @@ export default { border: 1px dashed var(--bs-el-color-primary); } .active { - border: 1px solid #c8ff00; + border: -1px solid #c8ff00; }